[Erp5-report] r13574 - /erp5/trunk/products/ERP5/tests/testAccountingReports.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Mar 22 17:25:08 CET 2007


Author: jerome
Date: Thu Mar 22 17:25:04 2007
New Revision: 13574

URL: http://svn.erp5.org?rev=13574&view=rev
Log:
Add complete test suite for the trial balance.


Modified:
    erp5/trunk/products/ERP5/tests/testAccountingReports.py

Modified: erp5/trunk/products/ERP5/tests/testAccountingReports.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testAccountingReports.py?rev=13574&r1=13573&r2=13574&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testAccountingReports.py (original)
+++ erp5/trunk/products/ERP5/tests/testAccountingReports.py Thu Mar 22 17:25:04 2007
@@ -362,13 +362,21 @@
     self.checkLineProperties(line_list[-1], debit=100, credit=100)
 
 
-  def createAccountStatementDataSet(self):
+  def createAccountStatementDataSet(self, use_two_bank_accounts=1):
     """Create transactions for Account statement report.
+
+    use_two_bank_accounts -- use two different bank accounts, otherwise always
+    use one bank account for all created transactions.
     """
     account_module = self.account_module
-
-    bank1 = self.section.newContent(portal_type='Bank Account')
+    bank1 = self.section.newContent(portal_type='Bank Account', title='Bank1')
     bank1.validate()
+    if use_two_bank_accounts:
+      bank2 = self.section.newContent(portal_type='Bank Account',
+                                      title='Bank2')
+      bank2.validate()
+    else:
+      bank2 = bank1
     
     # before
     t1 = self._makeOne(
@@ -429,6 +437,7 @@
               title='Transaction 5',
               source_reference='5',
               simulation_state='delivered',
+              source_payment_value=bank2,
               destination_section_value=self.person_module.john_smith,
               start_date=DateTime(2006, 2, 2, 0, 4),
               lines=(dict(source_value=account_module.receivable,
@@ -441,6 +450,7 @@
               title='Transaction 6',
               destination_reference='6',
               simulation_state='delivered',
+              destination_payment_value=bank2,
               source_section_value=self.organisation_module.client_1,
               stop_date=DateTime(2006, 2, 2, 0, 5),
               lines=(dict(destination_value=account_module.receivable,
@@ -454,6 +464,7 @@
               title='Transaction 7',
               source_reference='7',
               simulation_state='stopped',
+              source_payment_value=bank2,
               destination_section_value=self.organisation_module.client_1,
               start_date=DateTime(2006, 2, 2, 0, 6),
               lines=(dict(source_value=account_module.receivable,
@@ -467,6 +478,7 @@
               title='Transaction 8',
               source_reference='8',
               simulation_state='delivered',
+              source_payment_value=bank2,
               destination_section_value=self.organisation_module.client_1,
               start_date=DateTime(2006, 2, 3),
               lines=(dict(source_value=account_module.receivable,
@@ -737,7 +749,7 @@
   def testTrialBalance(self):
     # Simple test of trial balance
     # we will use the same data set as account statement
-    self.createAccountStatementDataSet()
+    self.createAccountStatementDataSet(use_two_bank_accounts=0)
 
     # set request variables and render
     request_form = self.portal.REQUEST.form
@@ -772,9 +784,10 @@
         final_balance_if_debit=0, final_balance_if_credit=0)
     
     self.checkLineProperties(data_line_list[1], node_id='2',
-        node_title='Fixed Assets', initial_debit_balance=0, initial_credit_balance=0,
-        debit=0, credit=0, final_debit_balance=0, final_credit_balance=0,
-        final_balance_if_debit=0, final_balance_if_credit=0)
+        node_title='Fixed Assets', initial_debit_balance=0,
+        initial_credit_balance=0, debit=0, credit=0, final_debit_balance=0,
+        final_credit_balance=0, final_balance_if_debit=0,
+        final_balance_if_credit=0)
     
     self.checkLineProperties(data_line_list[2], node_id='3',
         # XXX isn't "Inventory" a better name here ?
@@ -806,7 +819,7 @@
         final_balance_if_credit=0)
     
     self.checkLineProperties(data_line_list[7], node_id='5',
-        node_title='Bank', initial_debit_balance=0,
+        node_title='Bank (Bank1)', initial_debit_balance=0,
         initial_credit_balance=0, debit=0, credit=3300, final_debit_balance=0,
         final_credit_balance=3300, final_balance_if_debit=0,
         final_balance_if_credit=3300,)
@@ -829,7 +842,177 @@
         credit=3600, final_debit_balance=3600, final_credit_balance=3600,
         final_balance_if_debit=None, final_balance_if_credit=None)
 
-
+    
+  def testTrialBalanceExpandAccounts(self):
+    # Test of "expand accounts" feature of trial balance
+    self.createAccountStatementDataSet()
+
+    # set request variables and render
+    request_form = self.portal.REQUEST.form
+    request_form['from_date'] = DateTime(2006, 1, 1)
+    request_form['at_date'] = DateTime(2006, 2, 2)
+    request_form['section_category'] = 'group/demo_group'
+    request_form['simulation_state'] = ['delivered']
+    request_form['show_empty_accounts'] = 0
+    request_form['expand_accounts'] = 1
+
+    report_section_list = self.getReportSectionList(
+                                    'AccountModule_viewTrialBalanceReport')
+    self.assertEquals(1, len(report_section_list))
+    line_list = self.getListBoxLineList(report_section_list[0])
+    data_line_list = [l for l in line_list if l.isDataLine()]
+ 
+    self.assertEquals(6, len(data_line_list))
+
+    # account are sorted by GAP Id
+    self.checkLineProperties(data_line_list[0], node_id='40',
+        node_title='Payable (Client 1)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=200, credit=100,
+        final_debit_balance=200, final_credit_balance=100,
+        final_balance_if_debit=100, final_balance_if_credit=0)
+    
+    self.checkLineProperties(data_line_list[1], node_id='41',
+        node_title='Receivable (Client 1)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=1000, credit=200,
+        final_debit_balance=1000, final_credit_balance=200,
+        final_balance_if_debit=800, final_balance_if_credit=0)
+    
+    self.checkLineProperties(data_line_list[2], node_id='41',
+        node_title='Receivable (Client 2)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=400, credit=0, final_debit_balance=400,
+        final_credit_balance=0, final_balance_if_debit=400,
+        final_balance_if_credit=0)
+    
+    self.checkLineProperties(data_line_list[3], node_id='41',
+        node_title='Receivable (John Smith)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=500, credit=0,
+        final_debit_balance=500, final_credit_balance=0,
+        final_balance_if_debit=500, final_balance_if_credit=0,)
+    
+    self.checkLineProperties(data_line_list[4], node_id='5',
+        node_title='Bank (Bank1)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=0, credit=700,
+        final_debit_balance=0, final_credit_balance=700,
+        final_balance_if_debit=0, final_balance_if_credit=700,)
+    
+    self.checkLineProperties(data_line_list[5], node_id='5',
+        node_title='Bank (Bank2)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=0, credit=1100,
+        final_debit_balance=0, final_credit_balance=1100,
+        final_balance_if_debit=0, final_balance_if_credit=1100,)
+    
+    self.failUnless(line_list[-1].isStatLine())
+    self.checkLineProperties(line_list[-1], node_id=None, node_title=None,
+        initial_debit_balance=0, initial_credit_balance=0, debit=2100,
+        credit=2100, final_debit_balance=2100, final_credit_balance=2100,
+        final_balance_if_debit=None, final_balance_if_credit=None)
+
+
+  def testTrialBalancePreviousPeriod(self):
+    # Test of trial balance and previous period
+    self.createAccountStatementDataSet(use_two_bank_accounts=0)
+    account_module = self.portal.account_module
+    # previous period
+    self._makeOne(
+              portal_type='Accounting Transaction',
+              title='Transaction -1',
+              source_reference='-1',
+              simulation_state='delivered',
+              destination_section_value=self.organisation_module.client_1,
+              start_date=DateTime(2005, 2, 2),
+              lines=(dict(source_value=account_module.goods_purchase,
+                          source_debit=600.0),
+                     dict(source_value=account_module.goods_sales,
+                          source_credit=600.0),))
+  
+    # balance transaction
+    self._makeOne(
+              portal_type='Balance Transaction',
+              title='Transaction 0',
+              source_reference='0',
+              simulation_state='delivered',
+              start_date=DateTime(2006, 1, 1),
+              lines=(dict(source_value=account_module.payable,
+                          source_credit=600.0,
+                          destination_section_value=
+                              self.organisation_module.client_1,),
+                     dict(source_value=account_module.receivable,
+                          source_debit=400.0,
+                          destination_section_value=
+                              self.organisation_module.client_2,),
+                     dict(source_value=account_module.equity,
+                          source_debit=200)))
+    
+    # one more transaction in the period, because our testing data does not
+    # include the sales
+    self._makeOne(
+              portal_type='Sale Invoice Transaction',
+              title='Transaction 0.5',
+              source_reference='0.5',
+              simulation_state='delivered',
+              destination_section_value=self.organisation_module.client_2,
+              start_date=DateTime(2006, 1, 1),
+              lines=(dict(source_value=account_module.goods_sales,
+                          source_credit=50.0),
+                     dict(source_value=account_module.receivable,
+                          source_debit=50.0),))
+    
+    # set request variables and render
+    request_form = self.portal.REQUEST.form
+    request_form['from_date'] = DateTime(2006, 1, 1)
+    request_form['at_date'] = DateTime(2006, 2, 2)
+    request_form['section_category'] = 'group/demo_group'
+    request_form['simulation_state'] = ['delivered']
+    request_form['show_empty_accounts'] = 0
+    request_form['expand_accounts'] = 0
+
+    report_section_list = self.getReportSectionList(
+                                    'AccountModule_viewTrialBalanceReport')
+    self.assertEquals(1, len(report_section_list))
+    line_list = self.getListBoxLineList(report_section_list[0])
+    data_line_list = [l for l in line_list if l.isDataLine()]
+ 
+    self.assertEquals(5, len(data_line_list))
+
+    # account are sorted by GAP Id
+    # TODO: sort by "gap normalized path"
+    self.checkLineProperties(data_line_list[0], node_id='1',
+        node_title='Equity', initial_debit_balance=200,
+        initial_credit_balance=0, debit=0, credit=0,
+        final_debit_balance=200, final_credit_balance=0,
+        final_balance_if_debit=200, final_balance_if_credit=0)
+    
+    self.checkLineProperties(data_line_list[1], node_id='40',
+        node_title='Payable', initial_debit_balance=0,
+        initial_credit_balance=600, debit=200, credit=100,
+        final_debit_balance=200, final_credit_balance=700,
+        final_balance_if_debit=0, final_balance_if_credit=500)
+    
+    self.checkLineProperties(data_line_list[2], node_id='41',
+        node_title='Receivable', initial_debit_balance=400,
+        initial_credit_balance=0, debit=1950, credit=200,
+        final_debit_balance=2350, final_credit_balance=200,
+        final_balance_if_debit=2150, final_balance_if_credit=0)
+    
+    self.checkLineProperties(data_line_list[3], node_id='5',
+        node_title='Bank (Bank1)', initial_debit_balance=0,
+        initial_credit_balance=0, debit=0, credit=1800,
+        final_debit_balance=0, final_credit_balance=1800,
+        final_balance_if_debit=0, final_balance_if_credit=1800,)
+    
+    self.checkLineProperties(data_line_list[4], node_id='7',
+        node_title='Goods Sales', initial_debit_balance=0,
+        initial_credit_balance=0, debit=0, credit=50,
+        final_debit_balance=0, final_credit_balance=50,
+        final_balance_if_debit=0, final_balance_if_credit=50,)
+    
+    self.failUnless(line_list[-1].isStatLine())
+    self.checkLineProperties(line_list[-1], node_id=None, node_title=None,
+        initial_debit_balance=600, initial_credit_balance=600, debit=2150,
+        credit=2150, final_debit_balance=2750, final_credit_balance=2750,
+        final_balance_if_debit=None, final_balance_if_credit=None)
+
+    
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestAccountingReports))




More information about the Erp5-report mailing list