changeset 0015528ad4cc in modules/stock_supply:default
details: 
https://hg.tryton.org/modules/stock_supply?cmd=changeset;node=0015528ad4cc
description:
        Use a fresh product instance to find best product supplier

        This ensure to be able to read all the product suppliers.

        issue8723
        review284231002
diffstat:

 purchase_request.py |  16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diffs (54 lines):

diff -r 757d0442fd41 -r 0015528ad4cc purchase_request.py
--- a/purchase_request.py       Wed Oct 16 21:23:26 2019 +0200
+++ b/purchase_request.py       Thu Oct 24 19:08:07 2019 +0200
@@ -88,7 +88,8 @@
         # aggregate product by minimum supply date
         date2products = {}
         for product in products:
-            min_date, max_date = cls.get_supply_dates(product)
+            min_date, max_date = cls.get_supply_dates(
+                product, company=company.id)
             date2products.setdefault((min_date, max_date), []).append(product)
 
         # compute requests
@@ -211,7 +212,7 @@
         return new_requests
 
     @classmethod
-    def get_supply_dates(cls, product):
+    def get_supply_dates(cls, product, **pattern):
         """
         Return the minimal interval of earliest supply dates for a product.
         """
@@ -221,7 +222,7 @@
         max_date = None
         today = Date.today()
 
-        for product_supplier in product.product_suppliers_used():
+        for product_supplier in product.product_suppliers_used(**pattern):
             supply_date = product_supplier.compute_supply_date(date=today)
             next_day = today + product_supplier.get_supply_period()
             next_supply_date = product_supplier.compute_supply_date(
@@ -243,7 +244,8 @@
 
     @classmethod
     def compute_request(cls, product, location_id, shortage_date,
-            product_quantity, company, order_point=None):
+            product_quantity, company, order_point=None,
+            supplier_pattern=None):
         """
         Return the value of the purchase request which will answer to
         the needed quantity at the given date. I.e: the latest
@@ -254,6 +256,12 @@
         Uom = pool.get('product.uom')
         Request = pool.get('purchase.request')
 
+        if supplier_pattern is None:
+            supplier_pattern = {}
+        else:
+            supplier_pattern = supplier_pattern.copy()
+        supplier_pattern['company'] = company.id
+
         supplier, purchase_date = cls.find_best_supplier(product,
             shortage_date)
 

Reply via email to