"""WorksheetTaxCorrectionVAT schemas.""" from abacus_common_logic.marshalling.custom_fields import ma from payment.constants.constants import VAT_CATEGORIES class WorksheetTaxCorrectionVATCreateSchema(ma.Schema): """Schema for WorksheetTaxCorrectionVAT.""" payable_detail_type_id = ma.NonNegativeInteger(required=True) account_id = ma.NonNegativeInteger(required=True) contract_id = ma.NonNegativeInteger(required=True) correction_statement_period_id = ma.NonNegativeInteger(required=True) base_amount_payee_currency = ma.Decimal(as_string=True, required=True) payee_currency_code = ma.NonemptyString(required=True) vat_category = ma.Enum(options=VAT_CATEGORIES) vat_currency_code = ma.NonemptyString(required=True) vat_rate = ma.Decimal(as_string=True, required=True) vat_amount_payee_currency = ma.Decimal(as_string=True, required=True) vat_amount_vat_currency = ma.Decimal(as_string=True, required=True) net_amount_payee_currency = ma.Decimal(as_string=True, required=True) wht_rate = ma.Decimal(as_string=True, allow_none=True) wht_amount_payee_currency = ma.Decimal(as_string=True, allow_none=True) wht_amount_vat_currency = ma.Decimal(as_string=True, allow_none=True) note = ma.String(required=False, allow_none=True) class WorksheetTaxCorrectionVATDetailSchema(WorksheetTaxCorrectionVATCreateSchema): """Schema for WorksheetTaxCorrectionVAT detail.""" worksheet_tax_correction_vat_id = ma.NonNegativeInteger(required=True) class WorksheetTaxCorrectionsVATListSchema(ma.Schema): """ WorksheetTaxCorrectionVAT records list. Attributes: items ([WorksheetTaxCorrectionVATDetailSchema]): list of items. total_count (int): Total count. """ items = ma.Nested(WorksheetTaxCorrectionVATDetailSchema, many=True) total_count = ma.NonNegativeInteger(required=True) class WorksheetTaxCorrectionsVATDeleteSchema(ma.Schema): """Worksheet tax correction VAT ids for deleting.""" worksheet_tax_correction_vat_ids = ma.List(ma.NonNegativeInteger(), required=True) class WorksheetTaxCorrectionsVATFilterKeySchema(ma.Schema): """Filter key for filtering vat corrections.""" correction_statement_period_id = ma.NonNegativeInteger(required=False) contract_ids = ma.List(ma.NonNegativeInteger(), required=False) worksheet_tax_correction_vat_ids = ma.List(ma.NonNegativeInteger(), required=False) class WorksheetTaxCorrectionsVATFilterParamsPostSchema(ma.Schema): """Post request params for vat entries filtering.""" filters = ma.Nested( WorksheetTaxCorrectionsVATFilterKeySchema, required=False, load_default={} )