From af479c81920f427f7e57775de4409db3c5e6afd9 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 17 Jul 2018 16:49:32 +0530 Subject: [PATCH] set valid delivery date (#14890) * set valid delivery date * calculate delivery date based on diffrence in transation date and delivery date of ref doc --- .../doctype/sales_order/sales_order.py | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index ee6b1c7e2b..8d47416473 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -377,16 +377,26 @@ class SalesOrder(SellingController): return items def on_recurring(self, reference_doc, auto_repeat_doc): - self.set("delivery_date", get_next_schedule_date(reference_doc.delivery_date, - auto_repeat_doc.frequency, cint(auto_repeat_doc.repeat_on_day))) + + def _get_delivery_date(ref_doc_delivery_date, red_doc_transaction_date, transaction_date): + delivery_date = get_next_schedule_date(ref_doc_delivery_date, + auto_repeat_doc.frequency, cint(auto_repeat_doc.repeat_on_day)) + + if delivery_date <= transaction_date: + delivery_date_diff = frappe.utils.date_diff(ref_doc_delivery_date, red_doc_transaction_date) + delivery_date = frappe.utils.add_days(transaction_date, delivery_date_diff) + + return delivery_date + + self.set("delivery_date", _get_delivery_date(reference_doc.delivery_date, + reference_doc.transaction_date, self.transaction_date )) for d in self.get("items"): reference_delivery_date = frappe.db.get_value("Sales Order Item", {"parent": reference_doc.name, "item_code": d.item_code, "idx": d.idx}, "delivery_date") - d.set("delivery_date", get_next_schedule_date(reference_delivery_date, - auto_repeat_doc.frequency, cint(auto_repeat_doc.repeat_on_day))) - + d.set("delivery_date", _get_delivery_date(reference_delivery_date, + reference_doc.transaction_date, self.transaction_date)) def get_list_context(context=None): from erpnext.controllers.website_list_for_contact import get_list_context