"""Model for ledger_vat_summary. NOTE: This model also exists in ows-moneyhub.""" from abacus_common_logic.connectors.database import db from abacus_common_logic.models.base import BaseModel from sqlalchemy import Enum from ledger.constants.constants import VAT_CATEGORIES class LedgerVatSummary(BaseModel): """Model for ledger_vat_summary. NOTE: This model also exists in ows-moneyhub.""" __tablename__ = 'ledger_vat_summary' ledger_vat_summary_id = db.Column(db.Integer, primary_key=True) statement_period_id = db.Column(db.Integer, nullable=False) activity_statement_period_id = db.Column(db.Integer, nullable=False) abacus_event_id = db.Column(db.Integer, nullable=False) account_id = db.Column(db.Integer, nullable=False) contract_id = db.Column(db.Integer, nullable=False) vat_category = db.Column( Enum(*VAT_CATEGORIES, name='vat_category', create_type=False), nullable=False ) payee_currency_code = db.Column(db.String(3), nullable=False) vat_currency_code = db.Column(db.String(3), nullable=False) base_amount_payee_currency = db.Column(db.Numeric(20, 2), nullable=False) vat_rate = db.Column(db.Numeric(5, 2), nullable=True) vat_amount_payee_currency = db.Column(db.Numeric(20, 2), nullable=True) vat_amount_vat_currency = db.Column(db.Numeric(20, 2), nullable=True) net_amount_payee_currency = db.Column(db.Numeric(20, 2), nullable=False) wht_rate = db.Column(db.Numeric(5, 2), nullable=True) wht_amount_vat_currency = db.Column(db.Numeric(20, 2), nullable=True) wht_amount_payee_currency = db.Column(db.Numeric(20, 2), nullable=True) abacus_exempt_reason = db.Column(db.String(120), nullable=True) description = db.Column(db.String(255), nullable=True)