[fix] Item or Warehouse filter mandatory in Stock Balance if number of sle is greater than 500000

This commit is contained in:
Nabin Hait 2016-03-14 14:59:21 +05:30
parent 01a8473996
commit d1f85c4fe6
2 changed files with 12 additions and 29 deletions

View File

@ -22,40 +22,14 @@ frappe.query_reports["Stock Balance"] = {
"label": __("Item"),
"fieldtype": "Link",
"width": "80",
"options": "Item",
"reqd": 1,
"on_change": function(me) {
frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
}
"options": "Item"
},
{
"fieldname": "warehouse",
"label": __("Warehouse"),
"fieldtype": "Link",
"width": "80",
"options": "Warehouse",
"reqd": 1,
"on_change": function(me) {
frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
}
"options": "Warehouse"
},
],
"toggle_mandatory_filters": function(me) {
var values = me.get_values(false);
var item_filter = me.filters_by_name["item_code"];
var warehouse_filter = me.filters_by_name["warehouse"];
if (values.item_code) {
warehouse_filter.df.reqd = 0;
} else if (values.warehouse) {
item_filter.df.reqd = 0;
} else {
item_filter.df.reqd = 1;
warehouse_filter.df.reqd = 1;
}
item_filter.set_mandatory(values.item_code);
warehouse_filter.set_mandatory(values.warehouse);
}
]
}

View File

@ -8,6 +8,8 @@ from frappe.utils import flt, getdate
def execute(filters=None):
if not filters: filters = {}
validate_filters(filters)
columns = get_columns()
item_map = get_item_details(filters)
@ -137,3 +139,10 @@ def get_item_details(filters):
from tabItem {condition}""".format(condition=condition), value, as_dict=1)
return dict((d.name, d) for d in items)
def validate_filters(filters):
if not (filters.get("item_code") or filters.get("warehouse")):
sle_count = flt(frappe.db.sql("""select count(name) from `tabStock Ledger Entry`""")[0][0])
if sle_count > 500000:
frappe.throw(_("Please set filter based on Item or Warehouse"))