From 002429f3cabbce73e8fc267d4e3aad5eaaa3b570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Fri, 10 Feb 2006 15:42:32 +0000 Subject: [PATCH] fix debit == credit for destination added a test for automatic use of mirror accounts. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5673 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testAccounting.py | 79 ++++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 3 deletions(-) diff --git a/product/ERP5/tests/testAccounting.py b/product/ERP5/tests/testAccounting.py index acdbc4df69..85edb9cffe 100755 --- a/product/ERP5/tests/testAccounting.py +++ b/product/ERP5/tests/testAccounting.py @@ -68,6 +68,8 @@ class TestAccounting(ERP5TypeTestCase): account_portal_type = 'Account' accounting_period_portal_type = 'Accounting Period' + accounting_transaction_portal_type = 'Accounting Transaction' + accounting_transaction_line_portal_type = 'Accounting Transaction Line' currency_portal_type = 'Currency' organisation_portal_type = 'Organisation' sale_invoice_portal_type = 'Sale Invoice Transaction' @@ -273,9 +275,68 @@ class TestAccounting(ERP5TypeTestCase): income_account = income, collected_vat_account = collected_vat, refundable_vat_account = refundable_vat, - bank = bank, + bank_account = bank, account_list = account_list ) + + def stepCreateAccountingTransactionAndCheckMirrorAccount(self, + sequence, **kw): + """Check that mirror account are set automatically. """ + account_list = sequence.get('account_list') + + for account in account_list : + self.assertNotEquals(account.getDestinationValue(), None) + + transaction = self.getAccountingModule().newContent( + portal_type = self.accounting_transaction_portal_type, + source_section_value = sequence.get('client'), + resource_value = sequence.get('EUR'), + bypass_init_script = 1, + ) + + # setting both source and destination shouldn't use mirror accounts + destination = sequence.get('receivable_account') + for account in account_list : + transaction_line = transaction.newContent( + portal_type = self.accounting_transaction_line_portal_type, + source = account.getRelativeUrl(), + destination = destination.getRelativeUrl(), + ) + self.assertEquals( destination.getRelativeUrl(), + transaction_line.getDestination() ) + + # setting only a source must use mirror account as destination + for account in account_list : + transaction_line = transaction.newContent( + portal_type = self.accounting_transaction_line_portal_type, + source = account.getRelativeUrl(), + ) + self.assertEquals( account.getDestination(), + transaction_line.getDestination() ) + + # editing the destination later should not change the source once + # the mirror account has been set. + account = sequence.get('receivable_account') + destination = sequence.get('bank_account') + another_destination = sequence.get('expense_account') + account.setDestinationValueList(account_list) + + transaction_line = transaction.newContent( + portal_type = self.accounting_transaction_line_portal_type, + source = account.getRelativeUrl(), ) + automatically_set_destination = transaction_line.getDestinationValue() + # get another account. + if automatically_set_destination == destination : + forced_destination = destination + else : + forced_destination = another_destination + # set all other accounts as mirror account to this one. + forced_destination.setDestinationValueList(account_list) + + # change the destination and check the source didn't change. + transaction_line.edit(destination = forced_destination.getRelativeUrl()) + self.assertEquals( transaction_line.getSourceValue(), account ) + def getInvoicePropertyList(self): """Returns the list of properties for invoices, stored as a list of dictionnaries. """ @@ -290,12 +351,12 @@ class TestAccounting(ERP5TypeTestCase): # in currency of source, converted for destination { 'income' : -100, 'destination_converted_expense' : -200, - 'collected_vat' : 10, 'destination_converted_refundable_vat' : -100, + 'collected_vat' : 10, 'destination_converted_refundable_vat' : 100, 'receivable' : 90, 'destination_converted_payable' : 100, 'currency' : 'currency_module/EUR' }, { 'income' : -100, 'destination_converted_expense' : -200, - 'collected_vat' : 10, 'destination_converted_refundable_vat' : -100, + 'collected_vat' : 10, 'destination_converted_refundable_vat' : 100, 'receivable' : 90, 'destination_converted_payable' : 100, 'currency' : 'currency_module/EUR' }, @@ -605,7 +666,19 @@ class TestAccounting(ERP5TypeTestCase): stepCheckInvoicesAreDraft """) + def test_MirrorAccounts(self, quiet=0, run=RUN_ALL_TESTS): + """Tests using an account on one sides uses the mirror account + on the other size. """ + self.playSequence(""" + stepCreateEntities + stepCreateAccounts + stepCreateAccountingTransactionAndCheckMirrorAccount + """) + +# TODO: +# test transaction validation from accounting workflow. + if __name__ == '__main__': framework() else: -- 2.30.9