"""Contract Reserve schemas.""" from abacus_common_logic.marshalling.custom_fields import ma from marshmallow import fields, validate class ContractReserveSchema(ma.Schema): """Schema for contract reserve details.""" contract_id = ma.IntegerId(required=True) contract_reserve_id = ma.IntegerId(required=True) installments_in_months = fields.Int( required=True, validate=validate.Range(min=1, max=24) ) reserve_rate = ma.Decimal(as_string=True, required=True) reserve_release_offset_in_months = fields.Int( required=True, validate=validate.Range(min=1, max=24) ) release_schedule = ma.List(ma.Decimal(as_string=True), required=True) class ContractReservePostSchema(ma.Schema): """Schema for contract reserve POST request.""" installments_in_months = fields.Int( required=True, validate=validate.Range(min=1, max=24) ) reserve_rate = ma.Decimal( as_string=True, required=True, validate=validate.Range(min=1, max=100) ) reserve_release_offset_in_months = fields.Int( required=True, validate=validate.Range(min=1, max=24) ) release_schedule = ma.List(ma.Decimal(as_string=True)) class ContractReserveWithAccountIdSchema(ContractReserveSchema): """Schema for contract reserve details with account Id.""" account_id = ma.IntegerId(required=True)