diff --git a/product/Coramy/tests/testFusion.py b/product/Coramy/tests/testFusion.py
index b8eff2fced1c4ac7ed46dcfac93965137f2001e8..1863a0beb8d1a8a96bf9b540e64be8cde69a372c 100755
--- a/product/Coramy/tests/testFusion.py
+++ b/product/Coramy/tests/testFusion.py
@@ -64,7 +64,7 @@ class TestFusion(ERP5TypeTestCase):
       - livraison_fabrication (Production Packing List)
       - rapport_fabrication (Production Report)
   """
-  run_all_test = 0
+  run_all_test = 1
   # Various variables used for this test
   customer_organisation_id = 'nexedi'
   customer_person_id = 'yo'
@@ -107,7 +107,7 @@ class TestFusion(ERP5TypeTestCase):
   def getSalesPackingListModule(self):
     return getattr(self.getPortal(), 'livraison_vente', None)
 
-  def getSaleInvoiceModule(self):
+  def getSaleInvoiceTransactionModule(self):
     return getattr(self.getPortal(), 'facture_vente', None)
 
   def getPurchaseOrderModule(self):
@@ -125,6 +125,12 @@ class TestFusion(ERP5TypeTestCase):
   def getProductionReportModule(self):
     return getattr(self.getPortal(), 'rapport_fabrication', None)
 
+  def getComposantModule(self):
+    return getattr(self.getPortal(), 'composant', None)
+
+  def getAssortimentModule(self):
+    return getattr(self.getPortal(), 'assortiment', None)
+
   def afterSetUp(self, quiet=1, run=1):
     self.login()
     portal = self.getPortal()
@@ -161,39 +167,13 @@ class TestFusion(ERP5TypeTestCase):
     self.model1.newContent(id='noir_gris', portal_type='Variante Modele')
     self.model2 = modele_module.newContent(id='004C401')
 
-    # Create some modules which contain deliveries.
-    if 0:
-      portal.portal_types.constructContent(type_name='Sales Order Module',
-                                          container=portal,
-                                          id='commande_vente')
-      portal.portal_types.constructContent(type_name='Sales Packing List Module',
-                                          container=portal,
-                                          id='livraison_vente')
-      portal.portal_types.constructContent(type_name='Sale Invoice Module',
-                                          container=portal,
-                                          id='facture_vente')
-      portal.portal_types.constructContent(type_name='Purchase Order Module',
-                                          container=portal,
-                                          id='commande_achat')
-      portal.portal_types.constructContent(type_name='Purchase Packing List Module',
-                                          container=portal,
-                                          id='livraison_achat')
-      portal.portal_types.constructContent(type_name='Production Order Module',
-                                          container=portal,
-                                          id='ordre_fabrication')
-      portal.portal_types.constructContent(type_name='Production Packing List Module',
-                                          container=portal,
-                                          id='livraison_fabrication')
-      portal.portal_types.constructContent(type_name='Production Report Module',
-                                          container=portal,
-                                          id='rapport_fabrication')
-
   def login(self, quiet=0, run=run_all_test):
     uf = self.getPortal().acl_users
     uf._doAddUser('seb', '', ['Manager'], [])
     user = uf.getUserById('seb').__of__(uf)
     newSecurityManager(None, user)
 
+  """
   def test_01_SanityCheck(self, quiet=0, run=run_all_test):
     # Test if the environment is not broken
     if not run: return
@@ -276,6 +256,7 @@ class TestFusion(ERP5TypeTestCase):
     self.assertEqual(c2.getPaymentTerm(), 90)
     # Now fusion must succeed.
     portal_simulation.mergeDeliveryList([d1, d2])
+  """
 
   def setCell(self, line, category_list, **kw):
     category_list = list(category_list)
@@ -293,21 +274,25 @@ class TestFusion(ERP5TypeTestCase):
       if module.hasContent(id):
         module.deleteContent(id)
     d1 = module.newContent(id='1', portal_type=delivery_type)
+    self.assertEqual(d1.getPortalType(), delivery_type)
     d1_line1 = d1.newContent(id='1', portal_type=delivery_line_type,
-                               resource='modele/004C401',
-                               price=2.0,
-                               quantity=1.0,
-                               target_quantity=1.0)
+                             resource='modele/004C401',
+                             price=2.0,
+                             quantity=1.0,
+                             target_quantity=1.0)
+    self.assertEqual(d1_line1.getPortalType(), delivery_line_type)
     d1_line2 = d1.newContent(id='2', portal_type=delivery_line_type,
-                               resource='modele/060E404',
-                               variation_base_category_list = ['morphologie', 'taille', 'coloris'],
-                               variation_category_list = ['morphologie/modele/060E404/C', 'morphologie/modele/060E404/B', 'taille/adulte/38', 'taille/adulte/40', 'taille/adulte/42', 'coloris/modele/060E404/Violet_rose', 'coloris/modele/060E404/noir_gris'])
+                             resource='modele/060E404',
+                             variation_base_category_list = ['morphologie', 'taille', 'coloris'],
+                             variation_category_list = ['morphologie/modele/060E404/C', 'morphologie/modele/060E404/B', 'taille/adulte/38', 'taille/adulte/40', 'taille/adulte/42', 'coloris/modele/060E404/Violet_rose', 'coloris/modele/060E404/noir_gris'])
+    self.assertEqual(d1_line2.getPortalType(), delivery_line_type)
     cell = self.setCell(d1_line2,
                         ('coloris/modele/060E404/Violet_rose', 'morphologie/modele/060E404/C', 'taille/adulte/38'),
                         price = 5.0,
                         quantity = 1.0,
                         target_quantity = 1.0)
     self.assertNotEqual(cell, None)
+    #self.assertNotEqual(cell.getPortalType(), 'Delivery Cell')
     cell = self.setCell(d1_line2,
                         ('coloris/modele/060E404/noir_gris', 'morphologie/modele/060E404/C', 'taille/adulte/40'),
                         price = 5.0,
@@ -436,8 +421,8 @@ class TestFusion(ERP5TypeTestCase):
     pl.recursiveImmediateReindexObject()
     self._checkDeliveries(module['3'], module['1'], module['2'])
 
-  #def test_03_SalesOrders(self, quiet=0, run=run_all_test):
-  def test_03_SalesOrders(self, quiet=0, run=1):
+  """
+  def test_03_SalesOrders(self, quiet=0, run=run_all_test):
     # Test mergeDeliveryList with Sales Orders
     module = self.getSalesOrderModule()
     self._testDeliveries(module, 'Sales Order', 'Sales Order Line', quiet=quiet, run=run)
@@ -472,6 +457,124 @@ class TestFusion(ERP5TypeTestCase):
     module = self.getProductionReportModule()
     self._testDeliveries(module, 'Production Report', 'Production Report Component', quiet=quiet, run=run)
 
+  """
+  def test_11_Containers(self, quiet=0, run=run_all_test):
+    # Test Containers with Sales Packing Lists.
+    module = self.getComposantModule()
+    composant = module.newContent(id='CAame', portal_type='Composant',
+                                  type_composant = 'Carton')
+    variante = composant.newContent(id='A', portal_type='Variante Composant',
+                                    source_base_price = 0.6,
+                                    default_source_reference = 'A',
+                                    base_height = 400.0,
+                                    base_length = 600.0,
+                                    base_width = 300.0,
+                                    base_price = None,
+                                    base_weight = None)
+    composant.recursiveImmediateReindexObject()
+    LOG('test_11_Containers', 0, 'composant = %s, composant.showDict() = %s, variante = %s, variante.showDict() = %s' % (repr(composant), repr(composant.showDict()), repr(variante), repr(variante.showDict())))
+    module = self.getSalesPackingListModule()
+    for id in ('1', '2'):
+      if module.hasContent(id):
+        module.deleteContent(id)
+      d = module.newContent(id=id, portal_type='Sales Packing List')
+      c = d.newContent(id='c1', portal_type='Container',
+                       resource='composant/CAame',
+                       serial_number = '0000640009',
+                       gross_weight = 0.0,
+                       price = 0.0,
+                       variation_base_category_list = ['variante'],
+                       variation_category_list = ['variante/composant/CAame/A'])
+      l = c.newContent(id='1', portal_type='Container Line',
+                       resource = 'modele/060E404',
+                       price = 0.0,
+                       variation_base_category_list = ['coloris', 'taille'],
+                       variation_category_list = ['taille/adulte/42', 'coloris/modele/060E404/Violet_rose'])
+      cell = self.setCell(l,
+                          ('taille/adulte/42', 'coloris/modele/060E404/Violet_rose'),
+                          target_quantity = 53.0)
+      self.assertNotEqual(cell, None)
+      d.recursiveImmediateReindexObject()
+      self.assertAlmostEqual(d.getTargetTotalQuantity(), 53.0)
+    portal_simulation = self.getSimulationTool()
+    d = portal_simulation.mergeDeliveryList([module['1'], module['2']])
+    d.recursiveImmediateReindexObject()
+    self.assertEqual(len(d.objectIds()), 2)
+    self.assertAlmostEqual(d.getTargetTotalQuantity(), 53.0 * 2)
+
+  def test_12_SaleInvoiceTransactions(self, quiet=0, run=run_all_test):
+    # Test Sale Invoice Transacations.
+    module = self.getAssortimentModule()
+    assortiment = module.newContent(id='712C405UNI_12P', portal_type='Assortiment')
+    assortiment = module.newContent(id='GALEC_067C403GLC(38-48)_12p', portal_type='Assortiment')
+    assortiment.newContent(id='aura')
+    assortiment.newContent(id='curaco')
+    module = self.getSaleInvoiceTransactionModule()
+    for id in ('1', '2'):
+      if module.hasContent(id):
+        module.deleteContent(id)
+    i1 = module.newContent(id='1', portal_type='Sale Invoice Transaction')
+    l = i1.newContent(id='1', portal_type='Invoice Line',
+                      resource = 'assortiment/712C405UNI_12P',
+                      quantity_unit = 'Unite',
+                      price = 52.8,
+                      quantity = 2.0,
+                      variation_base_category_list = (),
+                      variation_category_list = ())
+    self.assertAlmostEqual(l.getPrice(), 52.8)
+    self.assertAlmostEqual(l.getQuantity(), 2.0)
+    l = i1.newContent(id='2', portal_type='Invoice Line',
+                      resource = 'assortiment/GALEC_067C403GLC(38-48)_12p',
+                      quantity_unit = 'Unite',
+                      price = 0.0,
+                      variation_base_category_list = ('coloris',),
+                      variation_category_list = ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/aura', 'coloris/assortiment/GALEC_067C403GLC(38-48)_12p/curaco'))
+    cell = self.setCell(l,
+                        ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/aura',),
+                        price = 67.0,
+                        quantity = 1.0)
+    self.assertNotEqual(cell, None)
+    self.assertAlmostEqual(cell.getPrice(), 67.0)
+    self.assertAlmostEqual(cell.getQuantity(), 1.0)
+    cell = self.setCell(l,
+                        ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/curaco',),
+                        price = 67.0,
+                        quantity = 1.0)
+    self.assertNotEqual(cell, None)
+    i1.recursiveImmediateReindexObject()
+    i2 = module.newContent(id='2', portal_type='Sale Invoice Transaction')
+    i2.newContent(id='1', portal_type='Invoice Line',
+                  resource = 'assortiment/712C405UNI_12P',
+                  quantity_unit = 'Unite',
+                  price = 32.8,
+                  quantity = 2.0,
+                  variation_base_category_list = (),
+                  variation_category_list = ())
+    l = i2.newContent(id='2', portal_type='Invoice Line',
+                      resource = 'assortiment/GALEC_067C403GLC(38-48)_12p',
+                      quantity_unit = 'Unite',
+                      price = 0.0,
+                      variation_base_category_list = ('coloris',),
+                      variation_category_list = ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/aura', 'coloris/assortiment/GALEC_067C403GLC(38-48)_12p/curaco'))
+    cell = self.setCell(l,
+                        ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/aura',),
+                        price = 67.0,
+                        quantity = 2.0)
+    self.assertNotEqual(cell, None)
+    cell = self.setCell(l,
+                        ('coloris/assortiment/GALEC_067C403GLC(38-48)_12p/curaco',),
+                        price = 67.0,
+                        quantity = 3.0)
+    self.assertNotEqual(cell, None)
+    i2.recursiveImmediateReindexObject()
+    portal_simulation = self.getSimulationTool()
+    d = portal_simulation.mergeDeliveryList([i1, i2])
+    d.recursiveImmediateReindexObject()
+    LOG('test_12_SaleInvoiceTransactions', 0, 'd.getUid() = %s' % repr(d.getUid()))
+    self.assertEqual(len(d.objectIds()), 3)
+    self.assertAlmostEqual(d.getTotalPrice(), 52.8 * 2.0 + 32.8 * 2.0 + 67.0 * (1.0 + 1.0 + 2.0 + 3.0))
+
+
 
 if __name__ == '__main__':
     framework()