[Erp5-report] r7325 - /erp5/trunk/products/ERP5/tests/testInvoice.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed May 17 15:49:03 CEST 2006


Author: alex
Date: Wed May 17 15:49:01 2006
New Revision: 7325

URL: http://svn.erp5.org?rev=7325&view=rev
Log:
Added more tests for Invoice Transaction Rule generated movements.

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

Modified: erp5/trunk/products/ERP5/tests/testInvoice.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInvoice.py?rev=7325&r1=7324&r2=7325&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInvoice.py (original)
+++ erp5/trunk/products/ERP5/tests/testInvoice.py Wed May 17 15:49:01 2006
@@ -50,7 +50,7 @@
 from AccessControl.SecurityManagement import newSecurityManager, \
                                              noSecurityManager
 from DateTime import DateTime
-from Acquisition import aq_base, aq_inner
+from Acquisition import aq_base, aq_inner, aq_parent
 from zLOG import LOG
 from Products.ERP5Type.DateUtils import addToDate
 from Products.ERP5Type.tests.Sequence import Sequence, SequenceList
@@ -73,6 +73,19 @@
   vat_rate = 0.196
   sale_gap = 'fr/pcg/7/70/707/7071/70712'
   customer_gap = 'fr/pcg/4/41/411'
+
+  # (account_id, account_gap)
+  account_definition_list = (
+      ('receivable_vat', vat_gap),
+      ('sale', sale_gap),
+      ('customer', customer_gap),
+      )
+  # (line_id, source_account_id, line_quantity)
+  transaction_line_definition_list = (
+      ('income', 'sale', 1.0),
+      ('receivable', 'customer', -1.0 - vat_rate),
+      ('collected_vat', 'receivable_vat', vat_rate),
+      )
 
   invoice_portal_type = 'Sale Invoice Transaction'
   invoice_line_portal_type = 'Invoice Line'
@@ -166,19 +179,12 @@
 
     portal = self.getPortal()
     account_module = self.getAccountModule()
-    for account_id, account_gap in (('receivable_vat', self.vat_gap),
-                                    ('sale', self.sale_gap),
-                                    ('customer', self.customer_gap)):
+    for account_id, account_gap in self.account_definition_list:
       if not account_id in account_module.objectIds():
         account = account_module.newContent(id=account_id)
         account.setGap(account_gap)
         portal.portal_workflow.doActionFor(account,
             'validate_action', wf_id='account_workflow')
-
-    vat_account = account_module['receivable_vat']
-    sale_account = account_module['sale']
-    customer_account = account_module['customer']
-    
     invoice_rule = self.getPortal().portal_rules\
                           .default_invoice_transaction_rule
     invoice_rule.deleteContent([x.getId()
@@ -207,14 +213,12 @@
     self.assertEquals(len(cell_list),1)
     cell = cell_list[0]
 
-    for line_id, line_source, line_ratio in (('income', sale_account, 1.0),
-        ('receivable', customer_account, -1.0 - self.vat_rate),
-        ('collected_vat', vat_account, self.vat_rate)):
-
+    for line_id, line_source_id, line_ratio in \
+        self.transaction_line_definition_list:
       line = cell.newContent(id=line_id,
           portal_type=self.sale_invoice_transaction_portal_type)
       line.setQuantity(line_ratio)
-      line.setSourceValue(line_source)
+      line.setSourceValue(account_module[line_source_id])
 
   def modifyPackingListState(self, transition_name,
                              sequence,packing_list=None):
@@ -418,31 +422,61 @@
     """ Checks that the invoicing rule is applied and its values are
         correct. """
     order_rule_list = sequence.get('order_rule_list')
+    invoicing_rule_list = []
+    invoice_transaction_rule_list = []
     for order_rule in order_rule_list :
       for order_simulation_movement in order_rule.objectValues() :
-        invoicing_rule_list = order_simulation_movement.objectValues()
-        self.assertEquals(len(invoicing_rule_list), 1)
-        invoicing_rule = invoicing_rule_list[0]
-        sequence.edit(invoicing_rule = invoicing_rule)
-        self.assertEquals(invoicing_rule.getSpecialiseId(),
-                         'default_invoicing_rule')
-        self.assertEquals(invoicing_rule.getPortalType(),
-                         'Applied Rule')
-    
-        simulation_movement_list = invoicing_rule.objectValues()
-        self.assertNotEquals(len(simulation_movement_list), 0)
-        for simulation_movement in simulation_movement_list :
-          resource_list = sequence.get('resource_list')
-          self.assertEquals(simulation_movement.getPortalType(),
-                            'Simulation Movement')
-          self.assertTrue(simulation_movement.getResourceValue() in
-              resource_list)
-          # TODO: What is the invoice dates supposed to be ?
-          # is this done through profiles ?
-          self.assertEquals(simulation_movement.getStartDate(),
-                     sequence.get('order').getStartDate())
-          self.assertEquals(simulation_movement.getStopDate(),
-                      sequence.get('order').getStopDate())
+        temp_invoicing_rule_list = order_simulation_movement.objectValues()
+        self.assertEquals(len(temp_invoicing_rule_list), 1)
+        invoicing_rule_list.extend(order_simulation_movement.objectValues())
+    sequence.edit(invoicing_rule_list=invoicing_rule_list)
+    invoicing_rule = invoicing_rule_list[0]
+    sequence.edit(invoicing_rule = invoicing_rule)
+    for invoicing_rule in invoicing_rule_list:
+      self.assertEquals(invoicing_rule.getSpecialiseId(),
+          'default_invoicing_rule')
+      self.assertEquals(invoicing_rule.getPortalType(),
+          'Applied Rule')
+      simulation_movement_list = invoicing_rule.objectValues()
+      self.assertNotEquals(len(simulation_movement_list), 0)
+      for simulation_movement in simulation_movement_list :
+        invoice_transaction_rule_list.extend(simulation_movement.objectValues())
+        resource_list = sequence.get('resource_list')
+        self.assertEquals(simulation_movement.getPortalType(),
+                          'Simulation Movement')
+        self.assertTrue(simulation_movement.getResourceValue() in
+            resource_list)
+        self.assertTrue(simulation_movement.isConvergent())
+        # TODO: What is the invoice dates supposed to be ?
+        # is this done through profiles ?
+        self.assertEquals(simulation_movement.getStartDate(),
+                   sequence.get('order').getStartDate())
+        self.assertEquals(simulation_movement.getStopDate(),
+                    sequence.get('order').getStopDate())
+    sequence.edit(invoice_transaction_rule_list=invoice_transaction_rule_list)
+
+  def stepCheckInvoiceTransactionRule(self, sequence=None, sequence_list=None,
+      **kw):
+    """
+    Checks that the invoice_transaction_rule is expanded and its movements are
+    consistent with its parent movement
+    """
+    invoice_transaction_rule_list = \
+        sequence.get('invoice_transaction_rule_list')
+    for invoice_transaction_rule in invoice_transaction_rule_list:
+      parent_movement = aq_parent(invoice_transaction_rule)
+      self.assertEquals(3, len(invoice_transaction_rule.objectValues()))
+      for line_id, line_source_id, line_ratio in \
+          self.transaction_line_definition_list:
+        movement = getattr(invoice_transaction_rule, line_id, None)
+        self.assertTrue(movement is not None)
+        self.assertEquals(movement.getQuantity(), parent_movement.getPrice() *
+            parent_movement.getQuantity() * line_ratio)
+        self.assertEquals(movement.getSourceId(), line_source_id)
+        self.assertEquals(movement.getStartDate(),
+            parent_movement.getStartDate())
+        self.assertEquals(movement.getStopDate(),
+            parent_movement.getStopDate())
 
   def stepCheckDeliveryRuleForDeferred(
                       self, sequence=None, sequence_list=None, **kw):
@@ -545,9 +579,6 @@
     self.assertEquals(3,len(new_invoice.objectValues(
         portal_type=self.sale_invoice_transaction_line_portal_type)))
     account_module = self.getAccountModule()
-    vat_account=account_module['receivable_vat']
-    sale_account=account_module['sale']
-    customer_account=account_module['customer']
     found_dict = {}
     for line in invoice.objectValues(
         portal_type=self.sale_invoice_transaction_line_portal_type):
@@ -1024,6 +1055,7 @@
     stepTic
     stepStartPackingList
     stepCheckInvoicingRule
+    stepCheckInvoiceTransactionRule
     stepTic
     stepCheckInvoiceBuilding
 
@@ -1035,6 +1067,7 @@
     stepCheckInvoiceSplitted
     stepCheckPackingListIsDivergent
     stepCheckPackingListIsDiverged
+    stepCheckInvoiceTransactionRule
 
     stepRebuildAndCheckNothingIsCreated
     """
@@ -1051,6 +1084,7 @@
     stepTic
     stepStartPackingList
     stepCheckInvoicingRule
+    stepCheckInvoiceTransactionRule
     stepTic
     stepCheckInvoiceBuilding
 
@@ -1063,7 +1097,8 @@
     stepCheckPackingListIsDivergent
     stepCheckPackingListIsDiverged
     stepCheckSimulationStartDateUpdated
-
+    stepCheckInvoiceTransactionRule
+    
     stepRebuildAndCheckNothingIsCreated
     """
     self.playSequence(sequence)




More information about the Erp5-report mailing list