changeset acb445d64d94 in modules/purchase_requisition:default
details: 
https://hg.tryton.org/modules/purchase_requisition?cmd=changeset&node=acb445d64d94
description:
        Compute purchase date of request based on supplier and product

        issue10816
        review352901002
diffstat:

 CHANGELOG   |   2 ++
 purchase.py |  20 +++++++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diffs (59 lines):

diff -r b99e71ba0d8c -r acb445d64d94 CHANGELOG
--- a/CHANGELOG Mon Oct 04 18:52:01 2021 +0200
+++ b/CHANGELOG Sun Oct 10 22:16:27 2021 +0200
@@ -1,3 +1,5 @@
+* Compute purchase date of request based on supplier and product
+
 Version 6.0.0 - 2021-05-03
 * Bug fixes (see mercurial logs for details)
 * Add summary to requisition line
diff -r b99e71ba0d8c -r acb445d64d94 purchase.py
--- a/purchase.py       Mon Oct 04 18:52:01 2021 +0200
+++ b/purchase.py       Sun Oct 10 22:16:27 2021 +0200
@@ -545,9 +545,12 @@
             return self.requisition.rec_name
 
     def _get_purchase_request_product_supplier_pattern(self):
-        return {
+        pattern = {
             'company': self.requisition.company.id,
             }
+        if self.supplier:
+            pattern['party'] = self.supplier.id
+        return pattern
 
     def compute_request(self):
         """
@@ -562,15 +565,18 @@
             return
 
         supply_date = self.requisition.supply_date
-        purchase_date = supply_date
+        supplier = None
+        purchase_date = None
 
-        if not self.supplier and self.product:
+        if self.product:
             supplier, purchase_date = Request.find_best_supplier(
                 self.product, supply_date,
                 **self._get_purchase_request_product_supplier_pattern())
-        else:
-            supplier = self.supplier
-            # TODO compute purchase_date for product_supplier
+        elif self.supplier:
+            lead_time = self.supplier.get_multivalue(
+                'supplier_lead_time', company=self.requisition.company.id)
+            if lead_time is not None:
+                purchase_date = supply_date - lead_time
 
         uom = self.unit
         quantity = self.quantity
@@ -583,7 +589,7 @@
         return Request(
             product=self.product,
             description=self.description,
-            party=supplier,
+            party=supplier or self.supplier,
             quantity=quantity,
             uom=uom,
             computed_quantity=self.quantity,

Reply via email to