diff --git a/erpnext/patches/v6_27/fix_recurring_order_status.py b/erpnext/patches/v6_27/fix_recurring_order_status.py index c67973a43e..5843c9fbe5 100644 --- a/erpnext/patches/v6_27/fix_recurring_order_status.py +++ b/erpnext/patches/v6_27/fix_recurring_order_status.py @@ -11,41 +11,44 @@ def execute(): "stock_doctype": "Delivery Note", "invoice_doctype": "Sales Invoice", "stock_doctype_ref_field": "against_sales_order", - "invoice_ref_field": "sales_order" + "invoice_ref_field": "sales_order", + "qty_field": "delivered_qty" }, { "doctype": "Purchase Order", "stock_doctype": "Purchase Receipt", "invoice_doctype": "Purchase Invoice", "stock_doctype_ref_field": "prevdoc_docname", - "invoice_ref_field": "purchase_order" + "invoice_ref_field": "purchase_order", + "qty_field": "received_qty" }): - - order_list = frappe.db.sql("""select name from `tab{0}` - where docstatus=1 and is_recurring=1 + + order_list = frappe.db.sql("""select name from `tab{0}` + where docstatus=1 and is_recurring=1 and ifnull(recurring_id, '') != name and creation >= '2016-01-25'""" .format(doc["doctype"]), as_dict=1) - + for order in order_list: - frappe.db.sql("""update `tab{0} Item` - set delivered_qty=0, billed_amt=0 where parent=%s""".format(doc["doctype"]), order.name) - + frappe.db.sql("""update `tab{0} Item` + set {1}=0, billed_amt=0 where parent=%s""".format(doc["doctype"], + doc["qty_field"]), order.name) + # Check against Delivery Note and Purchase Receipt - stock_doc_list = frappe.db.sql("""select distinct parent from `tab{0} Item` + stock_doc_list = frappe.db.sql("""select distinct parent from `tab{0} Item` where docstatus=1 and ifnull({1}, '')=%s""" .format(doc["stock_doctype"], doc["stock_doctype_ref_field"]), order.name) - + if stock_doc_list: for dn in stock_doc_list: frappe.get_doc(doc["stock_doctype"], dn[0]).update_qty(update_modified=False) - + # Check against Invoice - invoice_list = frappe.db.sql("""select distinct parent from `tab{0} Item` + invoice_list = frappe.db.sql("""select distinct parent from `tab{0} Item` where docstatus=1 and ifnull({1}, '')=%s""" .format(doc["invoice_doctype"], doc["invoice_ref_field"]), order.name) - + if invoice_list: for dn in invoice_list: frappe.get_doc(doc["invoice_doctype"], dn[0]).update_qty(update_modified=False) - + frappe.get_doc(doc["doctype"], order.name).set_status(update=True, update_modified=False) \ No newline at end of file