"""Sales File marshmallow schema.""" from abacus_common_logic.marshalling.custom_fields import ma class BaseSalesFileSchema(ma.Schema): """Base sales file schema.""" accounting_period_id = ma.IntegerId() file_name = ma.NonemptyString(required=True) main_url = ma.String(allow_none=True) row_count = ma.NonNegativeInteger(required=True) class SalesFileDetailSchema(BaseSalesFileSchema): """Sales file detail response.""" sales_file_id = ma.IntegerId() amount_usd = ma.MoneyAmount(required=True, data_key='amount_usd') class AccountingPeriodSalesFileSchema(SalesFileDetailSchema): """Sales file body for royalty calculation workflows.""" accounting_period_name = ma.Pluck( 'AccountingPeriodDetailSchema', 'accounting_period_name', attribute='accounting_period', ) class SalesFileUpdateSchema(BaseSalesFileSchema): """Sales file update schema.""" amount_usd = ma.MoneyAmount(required=False) row_count = ma.NonNegativeInteger(required=False) main_url = ma.String(allow_none=True)