[Erp5-report] r24903 - /erp5/trunk/products/ERP5/tests/testConversionInSimulation.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Dec 16 11:16:03 CET 2008
Author: mame
Date: Tue Dec 16 11:16:01 2008
New Revision: 24903
URL: http://svn.erp5.org?rev=24903&view=rev
Log:
add stop_date in currency exchange line so that the correct CEL will be taken into consideration
Modified:
erp5/trunk/products/ERP5/tests/testConversionInSimulation.py
Modified: erp5/trunk/products/ERP5/tests/testConversionInSimulation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testConversionInSimulation.py?rev=24903&r1=24902&r2=24903&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testConversionInSimulation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testConversionInSimulation.py [utf8] Tue Dec 16 11:16:01 2008
@@ -67,6 +67,10 @@
vat_rate = 0.196
sale_gap = 'fr/pcg/7/70/707/7071/70712'
customer_gap = 'fr/pcg/4/41/411'
+ mail_delivery_mode = 'by_mail'
+ cpt_incoterm = 'cpt'
+ unit_piece_quantity_unit = 'unit/piece'
+ mass_quantity_unit = 'mass/kg'
# (account_id, account_gap, account_type)
account_definition_list = (
@@ -112,6 +116,10 @@
'gap/%s' % self.vat_gap,
'gap/%s' % self.sale_gap,
'gap/%s' % self.customer_gap,
+ 'delivery_mode/%s' % self.mail_delivery_mode,
+ 'incoterm/%s' % self.cpt_incoterm,
+ 'quantity_unit/%s' % self.unit_piece_quantity_unit,
+ 'quantity_unit/%s' % self.mass_quantity_unit,
)
def _solveDivergence(self, obj, property, decision, group='line'):
@@ -264,6 +272,7 @@
x_curr_ex_line.setTitle('Euro to Francs CFA')
x_curr_ex_line.setBasePrice(655.957)
x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
x_curr_ex_line.validate()
self.createInvoiceTransactionRule(currency)
get_transaction().commit()
@@ -271,12 +280,12 @@
client = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Client',
- price_currency=new_currency.getRelativeUrl(),
- default_address_region=self.default_region)
+ price_currency=new_currency.getRelativeUrl(),
+ default_address_region=self.default_region)
vendor = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Vendor',
- default_address_region=self.default_region)
+ default_address_region=self.default_region)
order = self.portal.sale_order_module.newContent(
portal_type='Sale Order',
source_value=vendor,
@@ -309,7 +318,7 @@
self.assertEquals(currency,
delivery_movement.getPriceCurrencyValue())
self.assertEquals\
- (invoice_transaction_movement_1.getDestinationTotalAssetPrice(),
+ (invoice_transaction_movement_1.getDestinationTotalAssetPrice(),
round(655.957*delivery_movement.getTotalPrice()))
self.assertEquals\
(invoice_transaction_movement_1.getSourceTotalAssetPrice(),
@@ -350,11 +359,12 @@
get_transaction().commit()
self.tic()#execute transaction
x_curr_ex_line = currency.newContent(
- portal_type='Currency Exchange Line',
- price_currency=new_currency.getRelativeUrl())
+ portal_type='Currency Exchange Line',
+ price_currency=new_currency.getRelativeUrl())
x_curr_ex_line.setTitle('Euro to Francs CFA')
x_curr_ex_line.setBasePrice(655.957)
x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
x_curr_ex_line.validate()
self.createInvoiceTransactionRule(currency)
get_transaction().commit()
@@ -439,6 +449,7 @@
x_curr_ex_line.setTitle('Euro to Francs CFA')
x_curr_ex_line.setBasePrice(655.957)
x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
x_curr_ex_line.validate()
self.createInvoiceTransactionRule(currency)
get_transaction().commit()
@@ -446,12 +457,12 @@
client = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Client',
- price_currency=new_currency.getRelativeUrl(),
- default_address_region=self.default_region)
+ price_currency=new_currency.getRelativeUrl(),
+ default_address_region=self.default_region)
vendor = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Vendor',
- default_address_region=self.default_region)
+ default_address_region=self.default_region)
order = self.portal.sale_order_module.newContent(
portal_type='Sale Order',
source_value=vendor,
@@ -479,13 +490,13 @@
portal_type='Applied Rule')
delivery_movement = related_applied_rule.contentValues()[0]
related_invoice = related_packing_list.getCausalityRelatedValue(
- portal_type='Sale Invoice Transaction')
+ portal_type='Sale Invoice Transaction')
self.assertNotEquals(related_invoice, None)
related_invoice.start()
get_transaction().commit()
self.tic()
line_list= related_invoice.contentValues(
- portal_type=self.portal.getPortalAccountingMovementTypeList())
+ portal_type=self.portal.getPortalAccountingMovementTypeList())
self.assertNotEquals(line_list, None)
for line in line_list:
self.assertEquals(line.getDestinationTotalAssetPrice(),
@@ -523,11 +534,12 @@
get_transaction().commit()
self.tic()#execute transaction
x_curr_ex_line = currency.newContent(
- portal_type='Currency Exchange Line',
- price_currency=new_currency.getRelativeUrl())
+ portal_type='Currency Exchange Line',
+ price_currency=new_currency.getRelativeUrl())
x_curr_ex_line.setTitle('Euro to Francs CFA')
x_curr_ex_line.setBasePrice(655.957)
x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
x_curr_ex_line.validate()
self.createInvoiceTransactionRule(currency)
get_transaction().commit()
@@ -535,12 +547,12 @@
client = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Client',
- price_currency=new_currency.getRelativeUrl(),
- default_address_region=self.default_region)
+ price_currency=new_currency.getRelativeUrl(),
+ default_address_region=self.default_region)
vendor = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Vendor',
- default_address_region=self.default_region)
+ default_address_region=self.default_region)
order = self.portal.sale_order_module.newContent(
portal_type='Sale Order',
source_value=vendor,
@@ -580,7 +592,7 @@
self.tic()
related_applied_rule = order.getCausalityRelatedValue(
- portal_type='Applied Rule')
+ portal_type='Applied Rule')
delivery_movement = related_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
@@ -588,7 +600,7 @@
invoice_transaction_movement =\
invoice_transaction_applied_rule.contentValues()[0]
self.assertEquals(
- invoice_transaction_movement.getDestinationTotalAssetPrice(),
+ invoice_transaction_movement.getDestinationTotalAssetPrice(),
old_destination_asset_price *(3.0/5.0))
@@ -615,18 +627,19 @@
title='euro')
currency.setBaseUnitQuantity(0.01)
new_currency = \
- self.portal.currency_module.newContent(portal_type='Currency')
+ self.portal.currency_module.newContent(portal_type='Currency')
new_currency.setReference('XOF')
new_currency.setTitle('Francs CFA')
new_currency.setBaseUnitQuantity(1.00)
get_transaction().commit()
self.tic()#execute transaction
x_curr_ex_line = currency.newContent(
- portal_type='Currency Exchange Line',
- price_currency=new_currency.getRelativeUrl())
+ portal_type='Currency Exchange Line',
+ price_currency=new_currency.getRelativeUrl())
x_curr_ex_line.setTitle('Euro to Francs CFA')
x_curr_ex_line.setBasePrice(655.957)
x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
x_curr_ex_line.validate()
self.createInvoiceTransactionRule(currency)
get_transaction().commit()
@@ -634,12 +647,12 @@
client = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Client',
- default_address_region=self.default_region)
+ default_address_region=self.default_region)
vendor = self.portal.organisation_module.newContent(
portal_type='Organisation',
title='Vendor',
- price_currency=new_currency.getRelativeUrl(),
- default_address_region=self.default_region)
+ price_currency=new_currency.getRelativeUrl(),
+ default_address_region=self.default_region)
order = self.portal.purchase_order_module.newContent(
portal_type='Purchase Order',
source_value=vendor,
@@ -671,7 +684,7 @@
self.assertEquals(related_packing_list.getCausalityState(),
'diverged')
- self._solveDivergence(related_packing_list, 'quantity', 'accept')
+ self._solveDivergence(related_packing_list, 'quantity','accept')
get_transaction().commit()
self.tic()
related_packing_list.start()
@@ -680,7 +693,7 @@
self.tic()
related_applied_rule = order.getCausalityRelatedValue(
- portal_type='Applied Rule')
+ portal_type='Applied Rule')
delivery_movement = related_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
@@ -688,8 +701,160 @@
invoice_transaction_movement =\
invoice_transaction_applied_rule.contentValues()[0]
self.assertEquals(invoice_transaction_movement.\
- getSourceTotalAssetPrice(),old_source_asset_price *(3.0/5.0))
+ getSourceTotalAssetPrice(),
+ old_source_asset_price *(3.0/5.0))
+
+ def test_01_delivery_mode_on_sale_packing_list_and_invoice(
+ self,quiet=0,run=run_all_test):
+ """
+ tests that when the sale packing list is divergent on the quantity and
+ that the resource on simulation movements is different
+ from the price currency of the source section,
+ source_asset_price is updated as we solve the divergence and
+ accept the decision
+ """
+ if not run: return
+ if not quiet:
+ printAndLog(
+ 'test_01_delivery_mode_on_sale_packing_list_and_invoice')
+
+ resource = self.portal.product_module.newContent(
+ portal_type='Product',
+ title='Resource',
+ product_line='apparel')
+ currency = self.portal.currency_module.newContent(
+ portal_type='Currency',
+ title='euro')
+ currency.setBaseUnitQuantity(0.01)
+ new_currency = \
+ self.portal.currency_module.newContent(portal_type='Currency')
+ new_currency.setReference('XOF')
+ new_currency.setTitle('Francs CFA')
+ new_currency.setBaseUnitQuantity(1.00)
+ get_transaction().commit()
+ self.tic()#execute transaction
+ x_curr_ex_line = currency.newContent(
+ portal_type='Currency Exchange Line',
+ price_currency=new_currency.getRelativeUrl())
+ x_curr_ex_line.setTitle('Euro to Francs CFA')
+ x_curr_ex_line.setBasePrice(655.957)
+ x_curr_ex_line.setStartDate(DateTime(2008,10,21))
+ x_curr_ex_line.setStopDate(DateTime(2008,10,22))
+ x_curr_ex_line.validate()
+ self.createInvoiceTransactionRule(currency)
+ get_transaction().commit()
+ self.tic()#execute transaction
+ client = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Client',
+ price_currency=new_currency.getRelativeUrl(),
+ default_address_region=self.default_region)
+ vendor = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Vendor',
+ default_address_region=self.default_region)
+ order = self.portal.sale_order_module.newContent(
+ portal_type='Sale Order',
+ source_value=vendor,
+ source_section_value=vendor,
+ destination_value=client,
+ destination_section_value=client,
+ start_date=DateTime(2008,10, 21),
+ price_currency_value=currency,
+ delivery_mode=self.mail_delivery_mode,
+ incoterm=self.cpt_incoterm,
+ title='Order')
+ order_line = order.newContent(portal_type='Sale Order Line',
+ resource_value=resource,
+ quantity=5,
+ price=2)
+ order.confirm()
+ get_transaction().commit()
+ self.tic()
+ related_packing_list = order.getCausalityRelatedValue(
+ portal_type='Sale Packing List')
+ self.assertNotEquals(related_packing_list, None)
+ self.assertEquals(related_packing_list.getDeliveryMode(),
+ order.getDeliveryMode())
+ self.assertEquals(related_packing_list.getIncoterm(),
+ order.getIncoterm())
+ related_packing_list.start()
+ related_packing_list.stop()
+ get_transaction().commit()
+ self.tic()
+ related_invoice = related_packing_list.getCausalityRelatedValue(
+ portal_type='Sale Invoice Transaction')
+ self.assertNotEquals(related_invoice, None)
+ self.assertEquals(related_invoice.getDeliveryMode(),
+ order.getDeliveryMode())
+ self.assertEquals(related_invoice.getIncoterm(),
+ order.getIncoterm())
+ def test_01_quantity_unit_on_sale_packing_list(
+ self,quiet=0,run=run_all_test):
+ """
+ tests that when a resource uses different quantity unit that the
+ """
+ if not run: return
+ if not quiet:
+ printAndLog(
+ 'test_01_quantity_unit_on_sale_packing_list')
+
+ resource = self.portal.product_module.newContent(
+ portal_type='Product',
+ title='Resource',
+ product_line='apparel')
+ resource.setQuantityUnitList([self.unit_piece_quantity_unit,
+ self.mass_quantity_unit])
+ currency = self.portal.currency_module.newContent(
+ portal_type='Currency',
+ title='euro')
+ currency.setBaseUnitQuantity(0.01)
+ get_transaction().commit()
+ self.tic()#execute transaction
+ client = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Client',
+ default_address_region=self.default_region)
+ vendor = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Vendor',
+ default_address_region=self.default_region)
+ order = self.portal.sale_order_module.newContent(
+ portal_type='Sale Order',
+ source_value=vendor,
+ source_section_value=vendor,
+ destination_value=client,
+ destination_section_value=client,
+ start_date=DateTime(2008,10, 21),
+ price_currency_value=currency,
+ delivery_mode=self.mail_delivery_mode,
+ incoterm=self.cpt_incoterm,
+ title='Order')
+ first_order_line = order.newContent(
+ portal_type='Sale Order Line',
+ resource_value=resource,
+ quantity_unit = self.unit_piece_quantity_unit,
+ quantity=5,
+ price=3)
+ second_order_line = order.newContent(
+ portal_type='Sale Order Line',
+ resource_value=resource,
+ quantity_unit=self.mass_quantity_unit,
+ quantity=1.5,
+ price=2)
+ order.confirm()
+ get_transaction().commit()
+ self.tic()
+ related_packing_list = order.getCausalityRelatedValue(
+ portal_type='Sale Packing List')
+ self.assertNotEquals(related_packing_list, None)
+ movement_list = related_packing_list.getMovementList()
+ self.assertEquals(len(movement_list),2)
+ self.assertEquals(movement_list[0].getQuantityUnit(),
+ first_order_line.getQuantityUnit())
+ self.assertEquals(movement_list[1].getQuantityUnit(),
+ second_order_line.getQuantityUnit())
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list