[fix] recurring patch for purchase

This commit is contained in:
Rushabh Mehta 2016-03-22 11:01:31 +05:30
parent 97e523b4a4
commit 79a6fc9a84

View File

@ -11,41 +11,44 @@ def execute():
"stock_doctype": "Delivery Note", "stock_doctype": "Delivery Note",
"invoice_doctype": "Sales Invoice", "invoice_doctype": "Sales Invoice",
"stock_doctype_ref_field": "against_sales_order", "stock_doctype_ref_field": "against_sales_order",
"invoice_ref_field": "sales_order" "invoice_ref_field": "sales_order",
"qty_field": "delivered_qty"
}, },
{ {
"doctype": "Purchase Order", "doctype": "Purchase Order",
"stock_doctype": "Purchase Receipt", "stock_doctype": "Purchase Receipt",
"invoice_doctype": "Purchase Invoice", "invoice_doctype": "Purchase Invoice",
"stock_doctype_ref_field": "prevdoc_docname", "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}` order_list = frappe.db.sql("""select name from `tab{0}`
where docstatus=1 and is_recurring=1 where docstatus=1 and is_recurring=1
and ifnull(recurring_id, '') != name and creation >= '2016-01-25'""" and ifnull(recurring_id, '') != name and creation >= '2016-01-25'"""
.format(doc["doctype"]), as_dict=1) .format(doc["doctype"]), as_dict=1)
for order in order_list: for order in order_list:
frappe.db.sql("""update `tab{0} Item` frappe.db.sql("""update `tab{0} Item`
set delivered_qty=0, billed_amt=0 where parent=%s""".format(doc["doctype"]), order.name) set {1}=0, billed_amt=0 where parent=%s""".format(doc["doctype"],
doc["qty_field"]), order.name)
# Check against Delivery Note and Purchase Receipt # 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""" where docstatus=1 and ifnull({1}, '')=%s"""
.format(doc["stock_doctype"], doc["stock_doctype_ref_field"]), order.name) .format(doc["stock_doctype"], doc["stock_doctype_ref_field"]), order.name)
if stock_doc_list: if stock_doc_list:
for dn in stock_doc_list: for dn in stock_doc_list:
frappe.get_doc(doc["stock_doctype"], dn[0]).update_qty(update_modified=False) frappe.get_doc(doc["stock_doctype"], dn[0]).update_qty(update_modified=False)
# Check against Invoice # 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""" where docstatus=1 and ifnull({1}, '')=%s"""
.format(doc["invoice_doctype"], doc["invoice_ref_field"]), order.name) .format(doc["invoice_doctype"], doc["invoice_ref_field"]), order.name)
if invoice_list: if invoice_list:
for dn in invoice_list: for dn in invoice_list:
frappe.get_doc(doc["invoice_doctype"], dn[0]).update_qty(update_modified=False) 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) frappe.get_doc(doc["doctype"], order.name).set_status(update=True, update_modified=False)