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)