"""Schema for WorksheetPaymentContractAdvance serialization.""" from abacus_common_logic.marshalling.custom_fields import ma from marshmallow import validate class WorksheetPaymentContractAdvancePostSchema(ma.Schema): """Post WorksheetPaymentContractAdvance schema.""" exchange_rate_id = ma.NonNegativeInteger(required=False, allow_none=True) statement_period_id = ma.NonNegativeInteger(required=True) payment_name = ma.NonemptyString(required=True) amount = ma.Decimal(as_string=True, required=True) currency_code = ma.NonemptyString(required=True) payee_currency_code = ma.NonemptyString(required=True) vat_amount = ma.Decimal( as_string=True, required=True, validate=validate.Range(min=0, min_inclusive=True), ) withholding_tax_amount = ma.Decimal( as_string=True, required=True, validate=validate.Range(max=0, max_inclusive=True), ) amount_after_withholding_and_vat = ma.Decimal( as_string=True, required=True, validate=validate.Range(min=0, min_inclusive=True), ) us_source_income_rate = ma.Decimal( as_string=True, required=False, allow_none=True, validate=validate.Range(min=0, min_inclusive=True, max=100, max_inclusive=True), ) is_internal = ma.Boolean(required=True) class WorksheetPaymentContractAdvanceDetailSchema(ma.Schema): """WorksheetPaymentContractAdvance detail schema.""" worksheet_payment_contract_advance_id = ma.NonNegativeInteger(required=True) contract_advance_id = ma.NonNegativeInteger(required=True) statement_period_id = ma.NonNegativeInteger(required=True) exchange_rate_statement_period_id = ma.NonNegativeInteger(required=True) payment_name = ma.NonemptyString(required=True) amount = ma.Decimal(as_string=True, required=True) amount_payee_currency = ma.Decimal(as_string=True, required=True) currency_code = ma.NonemptyString(required=True) payee_currency_code = ma.NonemptyString(required=True) exchange_rate = ma.Decimal(as_string=True, required=True) withholding_tax_amount = ma.Decimal(as_string=True, required=True) vat_amount = ma.Decimal(as_string=True, required=True) amount_after_withholding_and_vat = ma.Decimal(as_string=True, required=True) withholding_tax_amount_payee_currency = ma.Decimal(as_string=True, required=True) vat_amount_payee_currency = ma.Decimal(as_string=True, required=True) amount_after_withholding_and_vat_payee_currency = ma.Decimal( as_string=True, required=True ) us_source_income_rate = ma.Decimal(as_string=True, required=True) salesforce_id = ma.NonemptyString(required=True) is_internal = ma.Boolean(required=True) class WorksheetPaymentContractAdvancePutSchema(ma.Schema): """WorksheetPaymentContractAdvance PUT schema.""" salesforce_id = ma.String(required=True, allow_none=True) class WorksheetPaymentContractAdvanceListQuerySchema(ma.Schema): """WorksheetPaymentContractAdvance list query params schema.""" offset = ma.Integer(load_default=0) limit = ma.Integer(load_default=100) salesforce_id = ma.String(load_default=None, allow_none=True) contract_advance_id = ma.Integer(load_default=None, allow_none=True) payment_statuses = ma.List(ma.String(), load_default=[]) class WorksheetPaymentContractAdvanceListSchema(ma.Schema): """WorksheetPaymentContractAdvance list response schema.""" items = ma.List(ma.Nested(WorksheetPaymentContractAdvanceDetailSchema)) total_count = ma.Integer() class WorksheetPaymentContractAdvanceDataloaderItemSchema(ma.Schema): """Schema for a single dataloader item.""" data = ma.Nested(WorksheetPaymentContractAdvanceDetailSchema, allow_none=True) class WorksheetPaymentContractAdvanceDataloaderResponseSchema(ma.Schema): """Schema for dataloader response.""" items = ma.List(ma.Nested(WorksheetPaymentContractAdvanceDataloaderItemSchema))