Reviewers: ,


Please review this at http://codereview.tryton.org/695002/

Affected files:
  M purchase_request.py


Index: purchase_request.py
===================================================================

--- a/purchase_request.py
+++ b/purchase_request.py
@@ -137,7 +137,7 @@
         return res

     @classmethod
-    def generate_requests(cls):
+    def generate_requests(cls, products=None):
         """
         For each product compute the purchase request that must be
         create today to meet product outputs.
@@ -165,13 +165,14 @@
                 (order_point.warehouse_location.id, order_point.product.id)
                 ] = order_point

-        # fetch goods and assets
-        # ordered by ids to speedup reduce_ids in products_by_location
-        products = Product.search([
-                ('type', 'in', ['goods', 'assets']),
-                ('consumable', '=', False),
-                ('purchasable', '=', True),
-                ], order=[('id', 'ASC')])
+        if products is None:
+            # fetch goods and assets
+            # ordered by ids to speedup reduce_ids in products_by_location
+            products = Product.search([
+                    ('type', 'in', ['goods', 'assets']),
+                    ('consumable', '=', False),
+                    ('purchasable', '=', True),
+                    ], order=[('id', 'ASC')])
         product_ids = [p.id for p in products]
         #aggregate product by minimum supply date
         date2products = {}
@@ -210,6 +211,14 @@
                             company, order_point)
                         new_requests.append(request)

+        # delete purchase request without a purchase line
+        products = set(products)
+        reqs = cls.search([
+                ('purchase_line', '=', None),
+                ('origin', 'like', 'stock.order_point,%'),
+                ])
+        reqs = [r for r in reqs if r.product in products]
+        cls.delete(reqs)
         new_requests = cls.compare_requests(new_requests)

         cls.create_requests(new_requests)
@@ -228,15 +237,9 @@
         Compare new_requests with already existing request to avoid
         to re-create existing requests.
         """
-        # delete purchase request without a purchase line
         pool = Pool()
         Uom = pool.get('product.uom')
         Request = pool.get('purchase.request')
-        reqs = Request.search([
-            ('purchase_line', '=', None),
-            ('origin', 'like', 'stock.order_point,%'),
-            ])
-        Request.delete(reqs)

         requests = Request.search([
                 ('purchase_line.moves', '=', None),



--
--
[email protected] mailing list

--- You received this message because you are subscribed to the Google Groups "tryton-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to