diff --git a/product/ERP5/Document/SupplyLine.py b/product/ERP5/Document/SupplyLine.py
index 092060000253bdc99ca37178985b079ab22af0aa..f7ce31887100bd525309459e3dc78bb92d9f914f 100644
--- a/product/ERP5/Document/SupplyLine.py
+++ b/product/ERP5/Document/SupplyLine.py
@@ -177,8 +177,11 @@ class SupplyLine(Path, XMLMatrix):
         predicate_id_start_with = "%s_%s" % \
             (price_parameter, predicate_id_start_with)
       # XXX Hardcoded portal type name
-      predicate_list = self.contentIds(filter={'portal_type': 'Predicate'})
-      result = [x for x in predicate_list \
+      predicate_list = self.objectValues(portal_type='Predicate',
+              sort_on=('int_index', 'id'))
+      predicate_list.sort(key=lambda p: p.getIntIndex() or p.getId())
+      predicate_id_list = [x.getId() for x in predicate_list]
+      result = [x for x in predicate_id_list \
               if x.startswith(predicate_id_start_with)]
       return result
 
@@ -188,7 +191,7 @@ class SupplyLine(Path, XMLMatrix):
       """
         Return predicate related to a price parameter.
       """
-      result = [getattr(self, x) for x in \
+      result = [self[x] for x in \
               self.getQuantityPredicateIdList(price_parameter)]
       return result