From fd2aa667bea58ffa4378b6c26e34444371c18ebc Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Thu, 17 Feb 2005 09:34:41 +0000 Subject: [PATCH] fixed for new rules git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2492 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testInvoice.py | 141 +++++++++++++++++++++++------- 1 file changed, 108 insertions(+), 33 deletions(-) diff --git a/product/ERP5/tests/testInvoice.py b/product/ERP5/tests/testInvoice.py index 088abd805e..1d608d7275 100755 --- a/product/ERP5/tests/testInvoice.py +++ b/product/ERP5/tests/testInvoice.py @@ -67,6 +67,12 @@ class Test(ERP5TypeTestCase): - every monday and friday, at 6 and 15 - every 1st and 15th every month, at 12 and 14 - every 1st day of every 2 month, at 6 + + WARNING: + + make sure Coramy Product is not installed (because it changes the meta_types + of many order/delivery types) + """ # Different variables used for this test @@ -86,7 +92,7 @@ class Test(ERP5TypeTestCase): def getBusinessTemplateList(self): """ """ - return ('erp5_trade','erp5_accounting','erp5_pdm') + return ('erp5_accounting', 'erp5_trade', 'erp5_pdm') def enableLightInstall(self): """ @@ -100,6 +106,15 @@ class Test(ERP5TypeTestCase): """ return 1 + def getActivityTool(self): + return getattr(self.getPortal(), 'portal_activities', None) + + def getRuleTool(self): + return getattr(self.getPortal(), 'portal_rules', None) + + def getWorkflowTool(self): + return getattr(self.getPortal(), 'portal_workflow', None) + def getSaleOrderModule(self): return getattr(self.getPortal(),'sale_order',None) @@ -115,37 +130,58 @@ class Test(ERP5TypeTestCase): def getAccountingModule(self): return getattr(self.getPortal(),'accounting',None) + def getCurrencyModule(self): + return getattr(self.getPortal(), 'currency', None) + def login(self, quiet=0, run=run_all_test): uf = self.getPortal().acl_users - uf._doAddUser('seb', '', ['Manager'], []) - user = uf.getUserById('seb').__of__(uf) + uf._doAddUser('alex', '', ['Manager'], []) + user = uf.getUserById('alex').__of__(uf) newSecurityManager(None, user) def afterSetUp(self, quiet=1, run=1): """ """ - # Create categories - self.category_tool = self.getCategoryTool() - o = self.category_tool.region.newContent(portal_type='Category', id='europe') - o = o.newContent(portal_type='Category', id='west') - o.newContent(portal_type='Category', id='france') - - self.category_tool.pcg.newContent(portal_type='Category', id='1') - - o = self.category_tool.product_line.newContent(portal_type='Category', id='storever') - o.newContent(portal_type='Category', id='notebook') - # Create a product + self.login() + # Must add some accounts, accounting transactions, products, etc. + account_module = self.getAccountModule() + self.accounting_module = self.getAccountingModule() + self.currency_module = self.getCurrencyModule() + self.organisation_module = self.getOrganisationModule() product_module = self.getProductModule() - product = product_module.newContent(portal_type='Product',id='1', product_line='storever/notebook') - product.setPricedQuantity(1.0) - product.setBasePrice(self.price1) - # Create a destination with region - organisation_module = self.getOrganisationModule() - organisation = organisation_module.newContent(portal_type='Organisation',id=self.destination_company_id) - organisation.newContent(id='default_address', portal_type='Address', region='europe/west/france') - organisation = organisation_module.newContent(portal_type='Organisation',id=self.source_company_id) + self.activity_tool = self.getActivityTool() + self.catalog_tool = self.getCatalogTool() + self.category_tool = self.getCategoryTool() + self.simulation_tool = self.getSimulationTool() + self.workflow_tool = self.getWorkflowTool() + self.portal = self.getPortal() + # flush activities + get_transaction().commit() + self.tic() + # When using light install, only base categories are created + if len(self.category_tool.region.contentValues()) == 0 : + self.category_tool.region.newContent(portal_type='Category', id='africa') + o = self.category_tool.region.newContent(portal_type='Category', id='europe') + o = o.newContent(portal_type='Category', id='west') + o.newContent(portal_type='Category', id='france') + + self.category_tool.pcg.newContent(portal_type='Category', id='1') + + self.category_tool.product_line.newContent(portal_type='Category', id='erp5') + o = self.category_tool.product_line.newContent(portal_type='Category', id='storever') + o.newContent(portal_type='Category', id='barebone') + o.newContent(portal_type='Category', id='notebook') + o.newContent(portal_type='Category', id='openbrick') + # If currency/EUR already exists, it means that the afterSetUp actions were already commited. Then, we just need to link to them. + old_euro = getattr( self.currency_module, 'EUR', None) + if old_euro is not None : + self.invoice_transaction_rule = getattr(self.getRuleTool(), 'default_invoice_transaction_rule') + self.predicate_product1 = getattr(self.invoice_transaction_rule, 'product_1') + self.predicate_region1 = getattr(self.invoice_transaction_rule, 'region_1') + return + # Create some currencies + euro = self.currency_module.newContent(id='EUR', title='Euro', portal_type='Currency') # Create some accounts - account_module = self.getAccountModule() account_module.newContent(portal_type='Account',id='prestation_service') account_module.newContent(portal_type='Account',id='creance_client') account_module.newContent(portal_type='Account',id='tva_collectee_196') @@ -154,18 +190,49 @@ class Test(ERP5TypeTestCase): account_module.newContent(portal_type='Account',id='account1') account_module.newContent(portal_type='Account',id='account2') account_module.newContent(portal_type='Account',id='account3') - account_module.newContent(portal_type='Account',id='account4') + account_module.newContent(portal_type='Account',id='account4') + # Create a product + product_module = self.getProductModule() + product = product_module.newContent(portal_type='Product',id='1', product_line='storever/notebook') + product.setPricedQuantity(1.0) + product.setBasePrice(self.price1) + # Create a destination with region + organisation_module = self.getOrganisationModule() + organisation = organisation_module.newContent(portal_type='Organisation',id=self.destination_company_id) + organisation.newContent(id='default_address', portal_type='Address', region='europe/west/france') + organisation = organisation_module.newContent(portal_type='Organisation',id=self.source_company_id) # Create some predicates - self.invoice_transaction_rule = self.getPortal().portal_rules.default_invoice_transaction_rule + self.invoice_transaction_rule = self.getRuleTool().default_invoice_transaction_rule self.invoice_transaction_rule.deleteContent(self.invoice_transaction_rule.contentIds()) # delete anything inside the rule first - - self.predicate_product1 = self.invoice_transaction_rule.newContent(id='product_1', title='product_1', portal_type='Predicate Group', string_index='product', int_index='1', membership_criterion_base_category_list=['product_line',], membership_criterion_category_list=['product_line/storever/notebook'], immediate_reindex=1) - self.predicate_region1 = self.invoice_transaction_rule.newContent(id='region_1', title='region_1', portal_type='Predicate Group', string_index='region', int_index='1', membership_criterion_base_category_list=['region',], membership_criterion_category_list=['region/europe/west/france'], immediate_reindex=1) + self.predicate_product1 = self.invoice_transaction_rule.newContent( + id='product_1', + title='product_1', + portal_type='Predicate Group', + string_index='product', + int_index='1', + membership_criterion_base_category_list=['product_line',], + membership_criterion_category_list=['product_line/storever/notebook'], + immediate_reindex=1) + self.predicate_region1 = self.invoice_transaction_rule.newContent( + id='region_1', + title='region_1', + portal_type='Predicate Group', + string_index='region', + int_index='1', + membership_criterion_base_category_list=['destination_region',], + membership_criterion_category_list=['destination_region/region/europe/west/france'], + immediate_reindex=1) #self.invoice_transaction_rule.recursiveImmediateReindexObject() - # Update the matrix + # Update the matrix + + # flush activities + get_transaction().commit() + self.tic() + self.invoice_transaction_rule.updateMatrix() + # add some values to the transaction lines in the accounting rule cell - cell_list = self.invoice_transaction_rule.contentValues(filter={'portal_type':'Accounting Rule Cell'}) + cell_list = self.invoice_transaction_rule.contentValues(filter={'portal_type':'Accounting Rule Cell'}) self.assertEqual(len(cell_list), 1) # Check that the rule is here self.product1_region1_cell = getattr(self.invoice_transaction_rule, 'vat_per_region_0_0', None) self.failUnless(self.product1_region1_cell != None) @@ -177,9 +244,10 @@ class Test(ERP5TypeTestCase): self.product1_region1_line2 = getattr(self.product1_region1_cell, 'receivable', None) self.failUnless(self.product1_region1_line2 != None) self.product1_region1_line2.edit(title='receivable', source='account/prestation_service', destination='account/account2', quantity=0.5) + # flush activities - #get_transaction().commit() - #self.tic() + get_transaction().commit() + self.tic() def stepTic(self, **kw): self.tic() @@ -225,6 +293,7 @@ class Test(ERP5TypeTestCase): """ """ order = sequence.get('order') + order.plan() # Orders should be planned in order to be simulated order._createOrderRule() def stepCreateDeliveryRule(self,sequence=None, sequence_list=None,**kw): @@ -241,6 +310,9 @@ class Test(ERP5TypeTestCase): rule_list = [x for x in simulation_tool.objectValues() if x.getCausalityValue()==order] self.assertEquals(len(rule_list),1) order_rule = rule_list[0] + #order_rule.expand() + #ZopeTestCase._print('\norder_rule %s' % str(order_rule.getCausality())) + sequence.edit(order_rule=order_rule) rule_line_list = order_rule.objectValues() order_line_list = order.objectValues() @@ -300,7 +372,10 @@ class Test(ERP5TypeTestCase): def stepCheckInvoiceTransactionRule(self, sequence=None, sequence_list=None, **kw) : invoicing_rule_line = sequence.get('invoicing_rule_line') - invoice_transaction_rule_list = invoicing_rule_line.objectValues() + + + invoice_transaction_rule_list = invoicing_rule_line.objectValues() + self.assertEquals(invoicing_rule_line.getDestinationRegion(),'region/europe/west/france') self.assertEquals(len(invoice_transaction_rule_list),1) invoice_transaction_rule = invoice_transaction_rule_list[0] sequence.edit(invoice_transaction_rule=invoice_transaction_rule) -- 2.30.9