"""Factories for abacus_worksheet unit tests.""" from decimal import Decimal import factory from abacus_common_logic.test_utils.factories import BaseModelFactoryWithTimestamps from abacus_worksheet.constants import constants from abacus_worksheet.models.worksheet_adjustment import WorksheetAdjustment from abacus_worksheet.models.worksheet_adjustment_detail import ( WorksheetAdjustmentDetail, ) from abacus_worksheet.models.worksheet_correction import WorksheetCorrection class WorksheetCorrectionFactory(BaseModelFactoryWithTimestamps): """Factory to create worksheet corrections for testing.""" class Meta: """Meta definition for the factory.""" model = WorksheetCorrection worksheet_correction_id = factory.Sequence(lambda n: n + 1) account_id = 1 statement_period_id = 2 correction_statement_period_id = 1 correction_type = constants.CORRECTION_TYPES.ROYALTY_CORRECTION currency_code = 'USD' gross_revenue = Decimal('9876.5432') distribution_fee = Decimal('1975.30864') net_revenue = Decimal('7901.23456') created_by = 'user-id' last_modified_by = 'user-id' class WorksheetAdjustmentFactory(BaseModelFactoryWithTimestamps): """Factory to create worksheet adjustments for testing.""" class Meta: """Meta definition for the factory.""" model = WorksheetAdjustment statement_period_adjustment_file_id = 1 abacus_event_id = 1 account_id = 1 contract_id = 1 activity_statement_period_id = 1 apply_to_statement_period_id = 2 reference_adjustment_type_id = 1 apply_to_flowthrough_payment = None adjustment_amount = Decimal('125.42') adjustment_currency_code = 'USD' note = 'informative message' class WorksheetAdjustmentDetailFactory(BaseModelFactoryWithTimestamps): """Factory to create worksheet adjustments detail for testing.""" class Meta: """Meta definition for the factory.""" model = WorksheetAdjustmentDetail statement_period_adjustment_file_id = 1 worksheet_adjustment = factory.SubFactory(WorksheetAdjustmentFactory) account_id = 1 contract_id = 1 activity_statement_period_id = 1 apply_to_statement_period_id = 2 reference_adjustment_type_id = 1 apply_to_flowthrough_payment = None currency_code = 'USD' amount = Decimal('125.42') upc = '555444333222111' distribution_type = 'digital' note = 'informative message' internal_note = 'internal informative message'