From 20628f5bd801e358f2dc195162268c946be79b81 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 18 Nov 2015 12:18:59 +0530 Subject: [PATCH] [patch] mo drop shipment from purchase order to purchase order item --- erpnext/patches.txt | 1 + .../v6_8/move_drop_ship_to_po_items.py | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 erpnext/patches/v6_8/move_drop_ship_to_po_items.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 05723caaad..1bf3e4bdd7 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -233,3 +233,4 @@ erpnext.patches.v6_6.fix_website_image erpnext.patches.v6_6.remove_fiscal_year_from_leave_allocation execute:frappe.delete_doc_if_exists("DocType", "Stock UOM Replace Utility") erpnext.patches.v6_8.make_webform_standard +erpnext.patches.v6_8.move_drop_ship_to_po_items diff --git a/erpnext/patches/v6_8/move_drop_ship_to_po_items.py b/erpnext/patches/v6_8/move_drop_ship_to_po_items.py new file mode 100644 index 0000000000..8163e8f125 --- /dev/null +++ b/erpnext/patches/v6_8/move_drop_ship_to_po_items.py @@ -0,0 +1,36 @@ +import frappe + +def execute(): + for po in frappe.get_all("Purchase Order", filters={"delivered_by_supplier": 1}, fields=["name"]): + purchase_order = frappe.get_doc("Purchase Order", po) + + for item in purchase_order.items: + if item.prevdoc_doctype == "Sales Order": + delivered_by_supplier = frappe.get_value("Sales Order Item", {"parent": item.prevdoc_docname, + "item_code": item.item_code}, "delivered_by_supplier") + + if delivered_by_supplier: + frappe.db.set_value("Purchase Order Item", item.name, "delivered_by_supplier", 1) + frappe.db.set_value("Purchase Order Item", item.name, "billed_amt", item.amount) + frappe.db.set_value("Purchase Order Item", item.name, "received_qty", item.qty) + + update_per_received(purchase_order) + update_per_billed(purchase_order) + +def update_per_received(po): + frappe.db.sql(""" update `tabPurchase Order` + set per_received = round((select sum(if(qty > ifnull(received_qty, 0), + ifnull(received_qty, 0), qty)) / sum(qty) *100 + from `tabPurchase Order Item` + where parent = "%(name)s"), 2) + where name = "%(name)s" """ % po.as_dict()) + +def update_per_billed(po): + frappe.db.sql(""" update `tabPurchase Order` + set per_billed = round((select sum( if(amount > ifnull(billed_amt, 0), + ifnull(billed_amt, 0), amount)) / sum(amount) *100 + from `tabPurchase Order Item` + where parent = "%(name)s"), 2) + where name = "%(name)s" """ % po.as_dict()) + + \ No newline at end of file