"""AccountPaymentTerm Persister.""" from sqlalchemy import select from sqlalchemy.orm.session import Session from collaborator.connectors import snowflake from collaborator.models.snowflake.account_payment_term import AccountPaymentTerm class AccountPaymentTermPersister: """Handles read operations on the ACCOUNT_PAYMENT_TERM table.""" @classmethod @snowflake.db_session def get_currency_for_vendor(cls, vendor_id: int, session: Session) -> str: """Return the payment currency for a vendor from ACCOUNT_PAYMENT_TERM.""" rows = session.execute( select(AccountPaymentTerm.currency_code).where( AccountPaymentTerm.account_id == vendor_id ) ).all() if not rows: raise ValueError(f"No account_payment_term found for vendor {vendor_id}") if len(rows) > 1: raise ValueError( f"Multiple account_payment_term rows found for vendor {vendor_id}" ) return rows[0][0]