"""Ledger Contract Advance Applied model tests.""" from datetime import date from moneyhub.models.ledger_contract_advance_applied import LedgerContractAdvanceApplied from tests.unit.conftest import insert_mock_data def test_get_by_account_and_statement_period(): """Test to get applied advances for a specified account.""" account_id = 1235 contract_id = 4343 statement_period_ids = [12] insert_mock_data({ 'account': {'account_id': account_id}, 'reference_payment_entity': {'reference_payment_entity_id': 1}, 'reference_sap_profit_center': { 'reference_sap_profit_center_id': 1, 'profit_center': 'UK1234', 'company_code': '1234', 'business_group': 'ORC' }, 'reference_signing_entity': { 'reference_signing_entity_id': 1, 'reference_payment_entity_id': 1, 'reference_sap_profit_center_id': 1, 'company_code': '1234', 'tax_entity_company_code': '1234', 'legal_name': 'Company', 'vat_number': '12341234', 'company_registration_number': '12341234', 'address': None, }, 'contract': [ { 'contract_id': contract_id, 'reference_signing_entity_id': 1, }, { 'contract_id': 999, 'reference_signing_entity_id': 1, }, ], 'statement_period': [ {'statement_period_id': 12, 'statement_period_status': 'closed'}, {'statement_period_id': 14, 'statement_period_status': 'current'}, ], 'abacus_event': [ {'abacus_event_id': 1, 'statement_period_id': 12}, {'abacus_event_id': 2, 'statement_period_id': 14}, {'abacus_event_id': 3, 'statement_period_id': 14}, ], 'contract_advance': [ { 'contract_advance_id': 1, 'contract_id': contract_id, 'advance_description': 'test', 'amount': '1000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test', 'milestone_date': date(2022, 11, 2), 'advance_status': 'paid', }, { 'contract_advance_id': 2, 'contract_id': contract_id, 'advance_description': 'test 2', 'amount': '2000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test 2', 'milestone_date': date(2022, 12, 2), 'advance_status': 'paid', }, { 'contract_advance_id': 3, 'contract_id': contract_id, 'advance_description': 'test 3', 'amount': '4000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test 3', 'milestone_date': date(2022, 12, 3), 'advance_status': 'paid', } ], 'ledger_contract_advance_applied': [ { 'ledger_contract_advance_applied_id': 1, 'abacus_event_id': 1, 'account_id': account_id, 'contract_id': contract_id, 'contract_advance_id': 1, 'created_at': date(2022, 9, 6), 'statement_period_id': statement_period_ids[0], 'advance_amount': '-1000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-1000.00', 'advance_payee_currency_code': 'USD' }, { 'ledger_contract_advance_applied_id': 2, 'abacus_event_id': 2, 'account_id': account_id, 'contract_id': contract_id, 'contract_advance_id': 2, 'created_at': date(2022, 9, 6), 'statement_period_id': statement_period_ids[0], 'advance_amount': '-2000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-2000.00', 'advance_payee_currency_code': 'USD' }, { 'ledger_contract_advance_applied_id': 3, 'abacus_event_id': 3, 'account_id': account_id, 'contract_id': contract_id, 'contract_advance_id': 3, 'created_at': date(2022, 9, 6), 'statement_period_id': 14, 'advance_amount': '-4000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-4000.00', 'advance_payee_currency_code': 'USD' } ] }) res = LedgerContractAdvanceApplied.get_by_account_and_statement_periods( account_id, statement_period_ids, None) assert len(res) == 2 assert all(entry.account_id == account_id for entry in res) assert all(entry.statement_period_id == statement_period_ids[0] for entry in res) def test_get_by_account_and_contract_id(): """Test to get applied advances for a specified account and contract.""" account_id = 1235 contract_id = 4343 statement_period_ids = [12] insert_mock_data({ 'account': {'account_id': account_id}, 'reference_payment_entity': {'reference_payment_entity_id': 1}, 'reference_sap_profit_center': { 'reference_sap_profit_center_id': 1, 'profit_center': 'UK1234', 'company_code': '1234', 'business_group': 'ORC' }, 'reference_signing_entity': { 'reference_signing_entity_id': 1, 'reference_payment_entity_id': 1, 'reference_sap_profit_center_id': 1, 'company_code': '1234', 'tax_entity_company_code': '1234', 'legal_name': 'Company', 'vat_number': '12341234', 'company_registration_number': '12341234', 'address': None, }, 'contract': [ { 'contract_id': contract_id, 'reference_signing_entity_id': 1, }, { 'contract_id': 999, 'reference_signing_entity_id': 1, }, ], 'statement_period': [ {'statement_period_id': 12, 'statement_period_status': 'closed'}, {'statement_period_id': 14, 'statement_period_status': 'current'}, ], 'abacus_event': [ {'abacus_event_id': 1, 'statement_period_id': 12}, {'abacus_event_id': 2, 'statement_period_id': 14}, {'abacus_event_id': 3, 'statement_period_id': 14}, ], 'contract_advance': [ { 'contract_advance_id': 1, 'contract_id': contract_id, 'advance_description': 'test', 'amount': '1000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test', 'milestone_date': date(2022, 11, 2), 'advance_status': 'paid', }, { 'contract_advance_id': 2, 'contract_id': contract_id, 'advance_description': 'test 2', 'amount': '2000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test 2', 'milestone_date': date(2022, 12, 2), 'advance_status': 'paid', }, { 'contract_advance_id': 3, 'contract_id': contract_id, 'advance_description': 'test 3', 'amount': '4000.00', 'currency_code': 'USD', 'milestone': 'recoupment', 'milestone_description': 'test 3', 'milestone_date': date(2022, 12, 3), 'advance_status': 'paid', } ], 'ledger_contract_advance_applied': [ { 'ledger_contract_advance_applied_id': 1, 'abacus_event_id': 1, 'account_id': account_id, 'contract_id': contract_id, 'contract_advance_id': 1, 'created_at': date(2022, 9, 6), 'statement_period_id': statement_period_ids[0], 'advance_amount': '-1000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-1000.00', 'advance_payee_currency_code': 'USD' }, { 'ledger_contract_advance_applied_id': 2, 'abacus_event_id': 2, 'account_id': account_id, 'contract_id': 999, 'contract_advance_id': 2, 'created_at': date(2022, 9, 6), 'statement_period_id': statement_period_ids[0], 'advance_amount': '-2000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-2000.00', 'advance_payee_currency_code': 'USD' }, { 'ledger_contract_advance_applied_id': 3, 'abacus_event_id': 3, 'account_id': account_id, 'contract_id': contract_id, 'contract_advance_id': 3, 'created_at': date(2022, 9, 6), 'statement_period_id': 14, 'advance_amount': '-4000.00', 'advance_currency_code': 'USD', 'advance_amount_payee_currency': '-4000.00', 'advance_payee_currency_code': 'USD' } ] }) res = LedgerContractAdvanceApplied.get_by_account_and_statement_periods( account_id, statement_period_ids, contract_id) assert len(res) == 1 assert all(entry.account_id == account_id for entry in res) assert all(entry.statement_period_id == statement_period_ids[0] for entry in res) assert all(entry.contract_id == contract_id for entry in res)