"""Account Payment Term model.""" from abacus_common_logic.models.base import BaseModel, db from sqlalchemy import Enum from abacus_account.constants import constants class AccountPaymentTerm(BaseModel): """Account Payment Term model.""" __tablename__ = 'account_payment_term' account_payment_term_id = db.Column(db.Integer, primary_key=True) account_id = db.Column( db.Integer, db.ForeignKey('account.account_id'), nullable=False ) currency_code = db.Column(db.String(3), nullable=False) payment_minimum = db.Column(db.Numeric(10, 2), nullable=True) agreement_type_id = db.Column( db.Integer, db.ForeignKey('reference_agreement_type.reference_agreement_type_id'), nullable=True ) payment_schedule = db.Column( Enum( *constants.PAYMENT_SCHEDULE, name='payment_schedule', create_type=False ), nullable=True ) payment_entity_id = db.Column( db.Integer, nullable=True ) @classmethod def stream_all(cls, account_ids=None): """Stream all account payment terms.""" query = cls.query if account_ids: query = query.filter(cls.account_id.in_(account_ids)) return query