[Erp5-report] r7140 - /erp5/trunk/products/ERP5/tests/testInvoice.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed May 10 01:58:58 CEST 2006
Author: jerome
Date: Wed May 10 01:58:56 2006
New Revision: 7140
URL: http://svn.erp5.org?rev=7140&view=rev
Log:
Check delivery rules are not applied on builder created movements, which are already simulated
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=7140&r1=7139&r2=7140&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInvoice.py (original)
+++ erp5/trunk/products/ERP5/tests/testInvoice.py Wed May 10 01:58:56 2006
@@ -98,7 +98,7 @@
def getNeededCategoryList(self):
"""return a list of categories that should be created."""
- return ('region/%s' % self.default_region,
+ return ('region/%s' % self.default_region,
'gap/%s' % self.vat_gap,
'gap/%s' % self.sale_gap,
'gap/%s' % self.customer_gap,
@@ -448,7 +448,7 @@
sequence.get('order').getStartDate())
self.assertEquals(simulation_movement.getStopDate(),
sequence.get('order').getStopDate())
-
+
def stepCheckDeliveryRuleForDeferred(
self, sequence=None, sequence_list=None, **kw):
""" Checks that a delivery rule has been created when we took 'split
@@ -603,16 +603,16 @@
for key in found_dict.keys():
self.assertAlmostEquals(expected_dict[key], found_dict[key], places=2)
-
-
def stepRebuildAndCheckNothingIsCreated(self, sequence=None,
sequence_list=None, **kw):
"""Rebuilds with sale_invoice_builder and checks nothing more is
created. """
- return 'TODO' #XXX
accounting_module = self.getAccountingModule()
- sale_invoice_transaction_list = accounting_module.objectValues()
- self.assertEquals(len(sale_invoice_transaction_list), 1)
+ sale_invoice_transaction_count = len(accounting_module.objectValues())
+ for builder in self.getPortal().portal_deliveries.objectValues():
+ builder.build()
+ self.assertEquals(sale_invoice_transaction_count,
+ len(accounting_module.objectValues()))
def stepModifyInvoicesDate(self, sequence=None,
sequence_list=None, **kw):
@@ -626,7 +626,7 @@
stop_date=self.datetime+1)
def stepRemoveDateMovementGroupForTransactionBuilder(self, sequence=None,
- sequence_list=None,**kw):
+ sequence_list=None, **kw):
"""
Remove DateMovementGroup
"""
@@ -636,6 +636,52 @@
new_list = [x for x in previous_list if x != 'DateMovementGroup']
new_list.append('ParentExplanationMovementGroup')
builder.setDeliveryCollectOrderList(new_list)
+
+ def stepEditInvoice(self, sequence=None, sequence_list=None, **kw):
+ """Edit the current invoice, to trigger updateAppliedRule."""
+ invoice = sequence.get('invoice')
+ invoice.edit()
+
+ # call updateAppliedRule directly, don't rely on edit interactions
+ rule_id = 'default_invoice_rule'
+ self.failUnless(rule_id in
+ self.getPortal().portal_rules.objectIds())
+ invoice.updateAppliedRule(rule_id=rule_id)
+
+ def stepCheckInvoiceRuleNotAppliedOnInvoiceEdit(self,
+ sequence=None, sequence_list=None, **kw):
+ """If we call edit on the invoice, invoice rule should not be
+ applied on lines created by delivery builder."""
+ invoice = sequence.get('invoice')
+ # FIXME: empty applied rule should not be created
+ #self.assertEquals(len(invoice.getCausalityRelatedValueList(
+ # portal_type=self.applied_rule_portal_type)), 0)
+ for invoice_mvt in invoice.getMovementList():
+ self.assertEquals(len(invoice_mvt.getOrderRelatedValueList(
+ portal_type=self.simulation_movement_portal_type)), 0)
+
+ def stepEditPackingList(self, sequence=None, sequence_list=None, **kw):
+ """Edit the current packing list, to trigger updateAppliedRule."""
+ packing_list = sequence.get('packing_list')
+ packing_list.edit()
+
+ # call updateAppliedRule directly, don't rely on edit interactions
+ rule_id = 'default_delivery_rule'
+ self.failUnless(rule_id in
+ self.getPortal().portal_rules.objectIds())
+ packing_list.updateAppliedRule(rule_id=rule_id)
+
+ def stepCheckDeliveryRuleNotAppliedOnPackingListEdit(self,
+ sequence=None, sequence_list=None, **kw):
+ """If we call edit on the packing list, delivery rule should not be
+ applied on lines created by delivery builder."""
+ packing_list = sequence.get('packing_list')
+ # FIXME: empty applied rule should not be created
+ #self.assertEquals(len(packing_list.getCausalityRelatedValueList(
+ # portal_type=self.applied_rule_portal_type)), 0)
+ for delivery_mvt in packing_list.getMovementList():
+ self.assertEquals(len(delivery_mvt.getOrderRelatedValueList(
+ portal_type=self.simulation_movement_portal_type)), 0)
# default sequence for one line of not varianted resource.
PACKING_LIST_DEFAULT_SEQUENCE = """
@@ -744,6 +790,43 @@
stepCheckTwoInvoicesTransactionLines
""")
+ def test_InvoiceEditAndInvoiceRule(self, quiet=0, run=1):
+ """Invoice Rule should not be applied on invoice lines created from\
+ Packing List.
+
+ We went to prevent this from happening:
+ - Create a packing list
+ - An invoice is created from packing list
+ - Invoice is edited, updateAppliedRule is called
+ - A new Invoice Rule is created for this invoice, and accounting
+ movements for this invoice are present twice in the simulation.
+ """
+ for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) :
+ self.playSequence(
+ base_sequence +
+ """
+ stepSetReadyPackingList
+ stepTic
+ stepStartPackingList
+ stepCheckInvoicingRule
+ stepTic
+ stepCheckInvoiceBuilding
+ stepEditInvoice
+ stepCheckInvoiceRuleNotAppliedOnInvoiceEdit
+ """)
+
+ def test_PackingListEditAndInvoiceRule(self, quiet=0, run=1):
+ """Delivery Rule should not be applied on packing list lines created\
+ from Order.
+ """
+ for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) :
+ self.playSequence(
+ base_sequence +
+ """
+ stepEditPackingList
+ stepCheckDeliveryRuleNotAppliedOnPackingListEdit
+ """)
+
def DISABLEDtest_InvoiceEditPackingListLine(self, quiet=0, run=RUN_ALL_TESTS):
"""Checks that editing a Packing List Line still creates a correct
Invoice"""
More information about the Erp5-report
mailing list