From afa93c624bd26707f3e4886df0e3cea185987b86 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Wed, 29 Mar 2017 17:29:20 +0530 Subject: [PATCH] [fix] Reserved qty is not calculating properly in BIN for multi sales UOM (#8203) --- erpnext/patches.txt | 2 +- erpnext/patches/v8_0/__init__.py | 1 + ...ost_reserved_qty_for_multiple_sales_uom.py | 19 +++++++++++++++++++ erpnext/stock/stock_balance.py | 6 +++--- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 erpnext/patches/v8_0/repost_reserved_qty_for_multiple_sales_uom.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 5c28b92e99c..4aa1f373881 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -379,5 +379,5 @@ erpnext.patches.v7_2.rename_att_date_attendance erpnext.patches.v7_2.update_attendance_docstatus erpnext.patches.v7_2.move_dates_from_salary_structure_to_employee erpnext.patches.v7_2.make_all_assessment_group - erpnext.patches.v8_0.manufacturer_childtable_migrate +erpnext.patches.v8_0.repost_reserved_qty_for_multiple_sales_uom \ No newline at end of file diff --git a/erpnext/patches/v8_0/__init__.py b/erpnext/patches/v8_0/__init__.py index e69de29bb2d..baffc488252 100644 --- a/erpnext/patches/v8_0/__init__.py +++ b/erpnext/patches/v8_0/__init__.py @@ -0,0 +1 @@ +from __future__ import unicode_literals diff --git a/erpnext/patches/v8_0/repost_reserved_qty_for_multiple_sales_uom.py b/erpnext/patches/v8_0/repost_reserved_qty_for_multiple_sales_uom.py new file mode 100644 index 00000000000..3030b8e2f37 --- /dev/null +++ b/erpnext/patches/v8_0/repost_reserved_qty_for_multiple_sales_uom.py @@ -0,0 +1,19 @@ +# 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 +from erpnext.stock.stock_balance import update_bin_qty, get_reserved_qty + +def execute(): + for doctype in ("Sales Order Item", "Bin"): + frappe.reload_doctype(doctype) + + repost_for = frappe.db.sql("""select distinct item_code, warehouse + from `tabSales Order Item` where docstatus=1 and uom != stock_uom and + exists(select name from tabItem where name=`tabSales Order Item`.item_code and ifnull(is_stock_item, 0)=1)""") + + for item_code, warehouse in repost_for: + update_bin_qty(item_code, warehouse, { + "reserved_qty": get_reserved_qty(item_code, warehouse) + }) \ No newline at end of file diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py index 4c8cc262881..a9d0522c031 100644 --- a/erpnext/stock/stock_balance.py +++ b/erpnext/stock/stock_balance.py @@ -67,13 +67,13 @@ def get_balance_qty_from_sle(item_code, warehouse): def get_reserved_qty(item_code, warehouse): reserved_qty = frappe.db.sql(""" select - sum((dnpi_qty / so_item_qty) * (so_item_qty - so_item_delivered_qty)) + sum(dnpi_qty * ((so_item_qty - so_item_delivered_qty) / so_item_qty)) from ( (select qty as dnpi_qty, ( - select stock_qty from `tabSales Order Item` + select qty from `tabSales Order Item` where name = dnpi.parent_detail_docname and (delivered_by_supplier is null or delivered_by_supplier = 0) ) as so_item_qty, @@ -94,7 +94,7 @@ def get_reserved_qty(item_code, warehouse): where name = dnpi_in.parent and docstatus = 1 and status != 'Closed') ) dnpi) union - (select qty as dnpi_qty, stock_qty as so_item_qty, + (select stock_qty as dnpi_qty, qty as so_item_qty, delivered_qty as so_item_delivered_qty, parent, name from `tabSales Order Item` so_item where item_code = %s and warehouse = %s