Update order reference in return entries and repost reserved / ordered qty
This commit is contained in:
parent
1f94fa25a8
commit
047ecd1eb9
@ -193,3 +193,4 @@ execute:frappe.db.sql("update `tabProduction Order` pro set description = (selec
|
||||
erpnext.patches.v5_7.item_template_attributes
|
||||
erpnext.patches.v4_2.repost_reserved_qty #2015-08-20
|
||||
erpnext.patches.v5_4.update_purchase_cost_against_project
|
||||
erpnext.patches.v5_7.update_order_reference_in_return_entries
|
@ -0,0 +1,76 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
# sales return
|
||||
return_entries = list(frappe.db.sql("""
|
||||
select dn.name as name, dn_item.name as row_id, dn.return_against,
|
||||
dn_item.item_code, "Delivery Note" as doctype
|
||||
from `tabDelivery Note Item` dn_item, `tabDelivery Note` dn
|
||||
where dn_item.parent=dn.name and dn.is_return=1 and dn.docstatus < 2
|
||||
""", as_dict=1))
|
||||
|
||||
return_entries += list(frappe.db.sql("""
|
||||
select si.name as name, si_item.name as row_id, si.return_against,
|
||||
si_item.item_code, "Sales Invoice" as doctype
|
||||
from `tabSales Invoice Item` si_item, `tabSales Invoice` si
|
||||
where si_item.parent=si.name and si.is_return=1 and si.update_stock=1 and si.docstatus < 2
|
||||
""", as_dict=1))
|
||||
|
||||
for d in return_entries:
|
||||
ref_field = "against_sales_order" if d.doctype == "Delivery Note" else "sales_order"
|
||||
order_details = frappe.db.sql("""
|
||||
select {0} as sales_order, so_detail
|
||||
from `tab{1} Item` item
|
||||
where
|
||||
parent=%s and item_code=%s
|
||||
and ifnull(so_detail, '') !=''
|
||||
order by
|
||||
(select transaction_date from `tabSales Order` where name=item.{3}) DESC
|
||||
""".format(ref_field, d.doctype, ref_field, ref_field), (d.return_against, d.item_code), as_dict=1)
|
||||
|
||||
if order_details:
|
||||
frappe.db.sql("""
|
||||
update `tab{0} Item`
|
||||
set {1}=%s, so_detail=%s
|
||||
where name=%s
|
||||
""".format(d.doctype, ref_field),
|
||||
(order_details[0].sales_order, order_details[0].so_detail, d.row_id))
|
||||
|
||||
doc = frappe.get_doc(d.doctype, d.name)
|
||||
doc.update_reserved_qty()
|
||||
|
||||
|
||||
#--------------------------
|
||||
# purchase return
|
||||
return_entries = frappe.db.sql("""
|
||||
select pr.name as name, pr_item.name as row_id, pr.return_against, pr_item.item_code
|
||||
from `tabPurchase Receipt Item` pr_item, `tabPurchase Receipt` pr
|
||||
where pr_item.parent=pr.name and pr.is_return=1 and pr.docstatus < 2
|
||||
""", as_dict=1)
|
||||
|
||||
for d in return_entries:
|
||||
order_details = frappe.db.sql("""
|
||||
select prevdoc_docname as purchase_order, prevdoc_detail_docname as po_detail
|
||||
from `tabPurchase Receipt Item` item
|
||||
where
|
||||
parent=%s and item_code=%s
|
||||
and ifnull(prevdoc_detail_docname, '') !=''
|
||||
and ifnull(prevdoc_doctype, '') = 'Purchase Order' and ifnull(prevdoc_detail_docname, '') != ''
|
||||
order by
|
||||
(select transaction_date from `tabPurchase Order` where name=item.prevdoc_detail_docname) DESC
|
||||
""", (d.return_against, d.item_code), as_dict=1)
|
||||
|
||||
if order_details:
|
||||
frappe.db.sql("""
|
||||
update `tabPurchase Receipt Item`
|
||||
set prevdoc_doctype='Purchase Order', prevdoc_docname=%s, prevdoc_detail_docname=%s
|
||||
where name=%s
|
||||
""", (order_details[0].purchase_order, order_details[0].po_detail, d.row_id))
|
||||
|
||||
pr = frappe.get_doc("Purchase Receipt", d.name)
|
||||
pr.update_ordered_qty()
|
||||
|
@ -214,15 +214,15 @@ class SalesOrder(SellingController):
|
||||
|
||||
def stop_sales_order(self):
|
||||
self.check_modified_date()
|
||||
self.update_reserved_qty()
|
||||
frappe.db.set(self, 'status', 'Stopped')
|
||||
self.update_reserved_qty()
|
||||
frappe.msgprint(_("{0} {1} status is Stopped").format(self.doctype, self.name))
|
||||
self.notify_modified()
|
||||
|
||||
def unstop_sales_order(self):
|
||||
self.check_modified_date()
|
||||
self.update_reserved_qty()
|
||||
frappe.db.set(self, 'status', 'Submitted')
|
||||
self.update_reserved_qty()
|
||||
frappe.msgprint(_("{0} {1} status is Unstopped").format(self.doctype, self.name))
|
||||
|
||||
def update_reserved_qty(self, so_item_rows=None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user