diff --git a/product/ERP5/tests/testResource.py b/product/ERP5/tests/testResource.py
index 7ff30cbaedba3d5db325baf0173d011b094e7ee5..8adf8a25b310c90cfde9db3027d7415fda276d8e 100755
--- a/product/ERP5/tests/testResource.py
+++ b/product/ERP5/tests/testResource.py
@@ -58,6 +58,8 @@ class TestResource(ERP5TypeTestCase):
 
   # Global variables
   resource_portal_type = 'Apparel Model'
+  product_portal_type = 'Product'
+  supply_line_portal_type = 'Supply Line'
   variation_base_category_list = ['colour', 'size', 'morphology', 
                                   'industrial_phase']
   size_list = ['size/Child','size/Man'] 
@@ -67,7 +69,8 @@ class TestResource(ERP5TypeTestCase):
     """
       Install needed business template
     """
-    return ('erp5_pdm','erp5_apparel')
+    # Trade is needeed for pricing
+    return ('erp5_pdm','erp5_apparel', 'erp5_trade')
 
   def getTitle(self):
     return "Resource"
@@ -462,6 +465,162 @@ class TestResource(ERP5TypeTestCase):
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
+  def getPriceConfig(self):
+    """
+    Define somes cases of pricing configuration to test.
+    """
+    config = [
+      {
+        'base_price': None,
+        'additional_price': [],
+        'surcharge_ratio': [],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': None,
+      },{
+        'base_price': 5,
+        'additional_price': [],
+        'surcharge_ratio': [],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': 5,
+      },{
+        'base_price': 5,
+        'additional_price': [1],
+        'surcharge_ratio': [],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': 6,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': 8,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [0.5],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': 12,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [0.5, 0.5],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': None,
+        'price': 16,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [0.25],
+        'exclusive_discount_ratio': None,
+        'price': 6,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [0.25, 0.25],
+        'exclusive_discount_ratio': None,
+        'price': 5,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [],
+        'exclusive_discount_ratio': 0.5,
+        'price': 4,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [0.25, 0.25],
+        'exclusive_discount_ratio': 0.75,
+        'price': 2,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [],
+        'discount_ratio': [0.25, 0.5],
+        'exclusive_discount_ratio': 0.25,
+        'price': 2,
+      },{
+        'base_price': 5,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [1],
+        'discount_ratio': [0.25, 0.5],
+        'exclusive_discount_ratio': 0.25,
+        'price': 3,
+      },{
+        'base_price': None,
+        'additional_price': [1, 2],
+        'surcharge_ratio': [1],
+        'discount_ratio': [0.25, 0.5],
+        'exclusive_discount_ratio': 0.25,
+        'price': None,
+      }
+    ]
+    return config
+
+  def logMessage(self, msg, tab=0):
+    """
+    Log a message.
+    """
+    if tab:
+      msg = '  %s' % msg
+    ZopeTestCase._print('\n%s' % msg)
+    LOG('testResource.play', 0, msg)
+
+  def test_09_getPrice(self, quiet=0, run=run_all_test):
+    """
+    Test the pricing model.
+    """
+    if not run: return
+    config_list = self.getPriceConfig()
+    for i in range(0, len(config_list)):
+      self.logMessage("Starting New Pricing Case %i..." % i)
+      config = config_list[i]
+      # Create product
+      self.logMessage("Creating product...", tab=1)
+      product_module = self.portal.getDefaultModule(self.product_portal_type)
+      product = product_module.newContent( \
+                                   portal_type=self.product_portal_type,
+                                   title='Product%i' % i)
+      # Configure pricing parameters
+      for key, value in config.items():
+        if key != 'price':
+          if value not in [None, []]:
+            if type(value) != type([]):
+              value_list = [value]
+            else:
+              value_list = value
+            # Create requested supply line
+            for pricing_param in value_list:
+              self.logMessage("Creating supply line...", tab=1)
+              supply_line = product.newContent(
+                    portal_type=self.supply_line_portal_type)
+              # Set pricing parameter
+              self.logMessage("Set %s on supply line with value %i..." % \
+                              (key, pricing_param), tab=1)
+              supply_line.setProperty(key, pricing_param)
+      # Commit transaction
+      self.logMessage("Commit transaction...", tab=1)
+      get_transaction().commit()
+      # Tic
+      self.logMessage("Tic...", tab=1)
+      self.tic()
+      # Check resource price
+      self.logMessage("Check product price...", tab=1)
+      self.assertEquals(config['price'], product.getPrice())
+#       try:
+#         self.assertEquals(config['price'], product.getPrice())
+#       except:
+#         import pdb
+#         pdb.set_trace()
+
 if __name__ == '__main__':
     framework()
 else: