diff --git a/product/ERP5/Document/Transformation.py b/product/ERP5/Document/Transformation.py
index 1f464f233cfc2ab92ba2fab7a38df162d0aa83a3..bc5ab9bdfa565d7956079b12e483c1bdd08bf6f2 100644
--- a/product/ERP5/Document/Transformation.py
+++ b/product/ERP5/Document/Transformation.py
@@ -250,6 +250,7 @@ class Transformation(XMLObject, Predicate, Variated):
       # At this moment, we only consider 1 dependency
       template_transformation_list = self.getSpecialiseValueList()
       result = AggregatedAmountList()
+
       # Browse all involved transformations and create one line per 
       # line of transformation
       # Currently, we do not consider abstractions, we just add 
@@ -257,31 +258,49 @@ class Transformation(XMLObject, Predicate, Variated):
       transformation_line_list = []
       for transformation in ([self]+template_transformation_list):
         transformation_line_list.extend(transformation.objectValues())
+
+      # A list of functions taking a transformation_line as sole argument
+      # and returning True iif the line should be kept in the result
+      filter_list = []
+
       # Get only lines related to a precise trade_phase
       if trade_phase_list is not None:
-        transformation_line_list = filter(
-            lambda line: line.getTradePhase() in trade_phase_list,
-            transformation_line_list)
+        def trade_phase_filter(line):
+          return line.getTradePhase() in trade_phase_list
+
+        filter_list.append(trade_phase_filter)
+
       # Get only lines related to a precise industrial_phase
       if ind_phase_url_list is not None:
         LOG("Transformation", WARNING, "ind_phase_list is obsolete")
-        new_transf_line_list = []
-        for line in transformation_line_list:
+        def industrial_phase_filter(line):
           ind_ph = line.getIndustrialPhaseValue()
           if ind_ph is not None:
-            if ind_ph.getRelativeUrl() in ind_phase_url_list:
-              new_transf_line_list.append(line)
-        transformation_line_list = new_transf_line_list
+            return ind_ph.getRelativeUrl() in ind_phase_url_list
+          return False
+
+        filter_list.append(industrial_phase_filter)
+
       # Filter lines with resource we do not want to see
       if rejected_resource_uid_list is not None:
-        transformation_line_list = filter(
-                        lambda x: x.getResourceUid() not in\
-                                                   rejected_resource_uid_list,
-                        transformation_line_list)
+        def rejected_uid_filter(line):
+          return line.getResourceUid() not in rejected_resource_uid_list
+
+        filter_list.append(rejected_uid_filter)
+
+      def line_is_included(line):
+        # XXX > 2.5 : all(f(line) for f in filter_list)
+        for filterr in filter_list:
+          if not filterr(line):
+            return False
+        return True
+
       for transformation_line in transformation_line_list:
-        # Browse each transformed or assorted resource of the current 
+        # Browse each transformed or assorted resource of the current
         # transformation
-        result.extend(transformation_line.getAggregatedAmountList(context))
+        if line_is_included(transformation_line):
+          result.extend(transformation_line.getAggregatedAmountList(context))
+
       if context_quantity:
         result.multiplyQuantity(context=context)
       return result