mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-03 12:19:12 +00:00
Merge pull request #7467 from suyashphadtare/develop
[minor] Show Actual Item quantity in warehouse set query
This commit is contained in:
@@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.desk.reportview import get_match_cond, get_filters_cond
|
from frappe.desk.reportview import get_match_cond, get_filters_cond
|
||||||
from frappe.utils import nowdate
|
from frappe.utils import nowdate
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
|
||||||
# searches for active employees
|
# searches for active employees
|
||||||
@@ -348,3 +349,46 @@ def get_expense_account(doctype, txt, searchfield, start, page_len, filters):
|
|||||||
'company': filters.get("company", ""),
|
'company': filters.get("company", ""),
|
||||||
'txt': "%%%s%%" % frappe.db.escape(txt)
|
'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, bin_conditions = [], []
|
||||||
|
filter_dict = get_doctype_wise_filters(filters)
|
||||||
|
|
||||||
|
sub_query = """ select round(`tabBin`.actual_qty, 2) from `tabBin`
|
||||||
|
where `tabBin`.warehouse = `tabWarehouse`.name
|
||||||
|
{bin_conditions} """.format(
|
||||||
|
bin_conditions=get_filters_cond(doctype, filter_dict.get("Bin"), bin_conditions))
|
||||||
|
|
||||||
|
response = frappe.db.sql("""select `tabWarehouse`.name,
|
||||||
|
CONCAT_WS(" : ", "Actual Qty", ifnull( ({sub_query}), 0) ) as actual_qty
|
||||||
|
from `tabWarehouse`
|
||||||
|
where
|
||||||
|
`tabWarehouse`.`{key}` like %(txt)s
|
||||||
|
{fcond} {mcond}
|
||||||
|
order by
|
||||||
|
`tabWarehouse`.name desc
|
||||||
|
limit
|
||||||
|
%(start)s, %(page_len)s
|
||||||
|
""".format(
|
||||||
|
sub_query=sub_query,
|
||||||
|
key=frappe.db.escape(searchfield),
|
||||||
|
fcond=get_filters_cond(doctype, filter_dict.get("Warehouse"), conditions),
|
||||||
|
mcond=get_match_cond(doctype)
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"txt": "%%%s%%" % frappe.db.escape(txt),
|
||||||
|
"start": start,
|
||||||
|
"page_len": page_len
|
||||||
|
})
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
def get_doctype_wise_filters(filters):
|
||||||
|
# Helper function to seperate filters doctype_wise
|
||||||
|
filter_dict = defaultdict(list)
|
||||||
|
for row in filters:
|
||||||
|
filter_dict[row[0]].append(row)
|
||||||
|
return filter_dict
|
||||||
|
|||||||
@@ -133,3 +133,19 @@ erpnext.queries.setup_queries = function(frm, options, query_fn) {
|
|||||||
set_query(df.options, df.fieldname);
|
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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
// formatter for material request item
|
// formatter for material request item
|
||||||
frm.set_indicator_formatter('item_code',
|
frm.set_indicator_formatter('item_code',
|
||||||
function(doc) { return (doc.qty<=doc.delivered_qty) ? "green" : "orange" })
|
function(doc) { return (doc.qty<=doc.delivered_qty) ? "green" : "orange" })
|
||||||
|
|
||||||
|
erpnext.queries.setup_warehouse_query(frm);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,14 +13,7 @@ frappe.ui.form.on("Delivery Note", {
|
|||||||
return (doc.docstatus==1 || doc.qty<=doc.actual_qty) ? "green" : "orange"
|
return (doc.docstatus==1 || doc.qty<=doc.actual_qty) ? "green" : "orange"
|
||||||
})
|
})
|
||||||
|
|
||||||
frm.set_query("warehouse", "items", function() {
|
erpnext.queries.setup_warehouse_query(frm);
|
||||||
return {
|
|
||||||
filters: [
|
|
||||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
|
||||||
["Warehouse", "is_group", "=", 0]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -807,6 +807,7 @@
|
|||||||
"quick_entry": 1,
|
"quick_entry": 1,
|
||||||
"read_only": 0,
|
"read_only": 0,
|
||||||
"read_only_onload": 0,
|
"read_only_onload": 0,
|
||||||
|
"search_fields": "",
|
||||||
"show_name_in_global_search": 1,
|
"show_name_in_global_search": 1,
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
"title_field": "warehouse_name",
|
"title_field": "warehouse_name",
|
||||||
|
|||||||
Reference in New Issue
Block a user