diff --git a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountBalance.py b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountBalance.py index e1983f8f5e6abba7ea07f0337d828bb1dddf6ed7..0129b852223c7a36094db934e6d42f4020fed896 100644 --- a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountBalance.py +++ b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountBalance.py @@ -1,5 +1,9 @@ +portal = context.getPortalObject() + kw = { - 'section_uid': context.getSourceSectionUid(), + 'section_uid': context.getSourceSection() + and portal.Base_getSectionUidListForSectionCategory( + context.getSourceSectionValue().getGroup(base=True)), 'payment_uid': context.getSourcePaymentUid(), 'node_category': 'account_type/asset/cash/bank', 'simulation_state': ('stopped', 'delivered', ), diff --git a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountingTransactionLineList.py b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountingTransactionLineList.py index f544f3b8774c2a56803eb0fcec4cc658c85fbb67..f1e1a05d12616c3a194bffb644061c6e93a93ca7 100644 --- a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountingTransactionLineList.py +++ b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getAccountingTransactionLineList.py @@ -2,7 +2,9 @@ from Products.ZSQLCatalog.SQLCatalog import SimpleQuery, NegatedQuery portal = context.getPortalObject() kw = { - 'section_uid': context.getSourceSectionUid(), + 'section_uid': context.getSourceSection() + and portal.Base_getSectionUidListForSectionCategory( + context.getSourceSectionValue().getGroup(base=True)), 'payment_uid': context.getSourcePaymentUid(), 'node_category': 'account_type/asset/cash/bank', 'simulation_state': ('stopped', 'delivered', ), diff --git a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getReconciledAccountBalance.py b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getReconciledAccountBalance.py index 2687837af2240816f5a2e6672216faaf38cb40d1..cdf8c116fceba7ae0f6f7ab1150b0edabe50e958 100644 --- a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getReconciledAccountBalance.py +++ b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_getReconciledAccountBalance.py @@ -2,7 +2,9 @@ from Products.ZSQLCatalog.SQLCatalog import SimpleQuery, NegatedQuery portal = context.getPortalObject() kw = { - 'section_uid': context.getSourceSectionUid(), + 'section_uid': context.getSourceSection() + and portal.Base_getSectionUidListForSectionCategory( + context.getSourceSectionValue().getGroup(base=True)), 'payment_uid': context.getSourcePaymentUid(), 'node_category': 'account_type/asset/cash/bank', 'simulation_state': ('stopped', 'delivered', ), diff --git a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_reconcileTransactionList.py b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_reconcileTransactionList.py index af88e5925074dc99baf15b3a26b2bda22aac5455..2d04fd5b819c8427ca05814b1b37e6d58430d54c 100644 --- a/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_reconcileTransactionList.py +++ b/bt5/erp5_bank_reconciliation/SkinTemplateItem/portal_skins/erp5_bank_reconciliation/BankReconciliation_reconcileTransactionList.py @@ -6,8 +6,8 @@ portal.portal_selections.updateSelectionCheckedUidList(list_selection_name, list selection_uid_list = portal.portal_selections.getSelectionCheckedUidsFor(list_selection_name) if mode == 'reconcile': - for uid in selection_uid_list: - line = portal.portal_catalog.getObject(uid) + for line in portal.portal_catalog(uid=selection_uid_list or -1): + line = line.getObject() if line.getAggregate(portal_type='Bank Reconciliation'): return context.Base_redirect(dialog_id, abort_transaction=True, @@ -27,8 +27,8 @@ if mode == 'reconcile': 'reconciled_uid_list': selection_uid_list}) assert mode == 'unreconcile' -for uid in selection_uid_list: - line = portal.portal_catalog.getObject(uid) +for line in portal.portal_catalog(uid=selection_uid_list or -1): + line = line.getObject() line.AccountingTransactionLine_setBankReconciliation(None, message=translateString("Reconciling Bank Line")) diff --git a/product/ERP5/tests/testBankReconciliation.py b/product/ERP5/tests/testBankReconciliation.py index cde93ab4172157c11ca175dbe5d4a309b89cb79b..eaabf7aa808a2a8ab71c8c9b6c3d3dff01c2e7c6 100644 --- a/product/ERP5/tests/testBankReconciliation.py +++ b/product/ERP5/tests/testBankReconciliation.py @@ -503,8 +503,61 @@ class TestBankReconciliation(AccountingTestCase, ERP5ReportTestCase): self.assertEqual(bank_reconciliation, payment1.bank.getAggregateValue()) self.assertEqual(None, payment2.bank.getAggregateValue()) + def test_BankReconciliation_multiple_section_using_same_bank_account(self): + account_module = self.account_module + self.bank_account.invalidate() + main_section_bank_account = self.main_section.newContent( + portal_type='Bank Account', + price_currency_value=self.portal.currency_module.euro) + main_section_bank_account.validate() + + payment1 = self._makeOne( + portal_type='Payment Transaction', + simulation_state='delivered', + source_payment_value=main_section_bank_account, + start_date=DateTime(2014, 1, 1), + lines=(dict(source_value=account_module.bank, + source_debit=100, + id='bank'), + dict(source_value=account_module.receivable, + source_credit=100))) + + payment2 = self._makeOne( + portal_type='Payment Transaction', + simulation_state='delivered', + source_section_value=self.main_section, + source_payment_value=main_section_bank_account, + start_date=DateTime(2014, 1, 2), + lines=(dict(source_value=account_module.bank, + source_debit=200, + id='bank'), + dict(source_value=account_module.receivable, + source_credit=200))) + + bank_reconciliation = self.portal.bank_reconciliation_module.newContent( + portal_type='Bank Reconciliation', + source_section_value=self.main_section, + source_payment_value=main_section_bank_account, + stop_date=DateTime(2014, 1, 31)) + self.tic() + + self.assertEqual(300, bank_reconciliation.BankReconciliation_getAccountBalance()) + self.assertEqual( + [payment1.bank, payment2.bank], + [x.getObject() for x in bank_reconciliation.BankReconciliation_getAccountingTransactionLineList()]) + + list_selection_name = bank_reconciliation\ + .BankReconciliation_viewBankReconciliationFastInputDialog.listbox.get_value( + 'selection_name') + bank_reconciliation.BankReconciliation_reconcileTransactionList( + list_selection_name=list_selection_name, + uids=(payment1.bank.getUid(), ), + mode='reconcile') + self.tic() + self.assertEqual(100, bank_reconciliation.BankReconciliation_getReconciledAccountBalance()) + + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestBankReconciliation)) return suite -