From 049a88cc403efca6ffc0c32551684421f311bb14 Mon Sep 17 00:00:00 2001 From: suyashphadtare Date: Thu, 12 Jan 2017 17:49:37 +0530 Subject: [PATCH] [minor] Show item quantity in warehouse set query --- erpnext/controllers/queries.py | 27 +++++++++++++++++++ erpnext/public/js/queries.js | 16 +++++++++++ .../doctype/sales_order/sales_order.js | 2 ++ .../doctype/delivery_note/delivery_note.js | 9 +------ .../stock/doctype/warehouse/warehouse.json | 4 ++- 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index cc3f27724e..be0cb02417 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -348,3 +348,30 @@ def get_expense_account(doctype, txt, searchfield, start, page_len, filters): 'company': filters.get("company", ""), 'txt': "%%%s%%" % frappe.db.escape(txt) }) + + +@frappe.whitelist() +def warehouse_query(doctype, txt, searchfield, start, page_len, filters): + # Should be used when item code is passed in filters. + conditions = [] + response = frappe.db.sql("""select distinct `tabWarehouse`.name, + CONCAT_WS(" : ", "Actual Qty", ifnull(round(`tabBin`.actual_qty, 2), 0)) + from `tabWarehouse` INNER JOIN `tabBin` + on `tabWarehouse`.name = `tabBin`.warehouse + where + `tabWarehouse`.`{key}` like %(txt)s + {fcond} {mcond} + order by + `tabWarehouse`.name, `tabBin`.actual_qty desc + limit + %(start)s, %(page_len)s """.format( + key=frappe.db.escape(searchfield), + fcond=get_filters_cond(doctype, filters, conditions), + mcond=get_match_cond(doctype) + ), + { + "txt": "%%%s%%" % frappe.db.escape(txt), + "start": start, + "page_len": page_len, + }) + return response diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js index f3167bb620..bf7143a10e 100644 --- a/erpnext/public/js/queries.js +++ b/erpnext/public/js/queries.js @@ -133,3 +133,19 @@ erpnext.queries.setup_queries = function(frm, options, query_fn) { set_query(df.options, df.fieldname); }); } + +/* if item code is selected in child table + then list down warehouses with its quantity + else apply default filters. +*/ +erpnext.queries.setup_warehouse_query = function(frm){ + frm.set_query('warehouse', 'items', function(doc, cdt, cdn) { + var row = locals[cdt][cdn]; + var filters = erpnext.queries.warehouse(frm.doc); + if(row.item_code){ + $.extend(filters, {"query":"erpnext.controllers.queries.warehouse_query"}); + filters["filters"].push(["Bin", "item_code", "=", row.item_code]); + } + return filters + }); +} diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index f01e4848e3..8130ce848b 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -24,6 +24,8 @@ frappe.ui.form.on("Sales Order", { // formatter for material request item frm.set_indicator_formatter('item_code', function(doc) { return (doc.qty<=doc.delivered_qty) ? "green" : "orange" }) + + erpnext.queries.setup_warehouse_query(frm); } }); diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index 8f871987f0..23806d48c3 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -13,14 +13,7 @@ frappe.ui.form.on("Delivery Note", { return (doc.docstatus==1 || doc.qty<=doc.actual_qty) ? "green" : "orange" }) - frm.set_query("warehouse", "items", function() { - return { - filters: [ - ["Warehouse", "company", "in", ["", cstr(frm.doc.company)]], - ["Warehouse", "is_group", "=", 0] - ] - } - }) + erpnext.queries.setup_warehouse_query(frm); } }); diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json index 477041fc66..913d133b8c 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.json +++ b/erpnext/stock/doctype/warehouse/warehouse.json @@ -655,7 +655,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-11-07 05:06:39.128312", + "modified": "2017-01-12 16:08:01.207466", "modified_by": "Administrator", "module": "Stock", "name": "Warehouse", @@ -791,7 +791,9 @@ "quick_entry": 1, "read_only": 0, "read_only_onload": 0, + "search_fields": "", "sort_order": "DESC", "title_field": "warehouse_name", + "track_changes": 0, "track_seen": 0 } \ No newline at end of file