from __future__ import unicode_literals import frappe @frappe.whitelist() def get_data(item_code=None, warehouse=None, item_group=None, start=0, sort_by='actual_qty', sort_order='desc'): '''Return data to render the item dashboard''' conditions = [] values = [] if item_code: conditions.append('b.item_code=%s') values.append(item_code) if warehouse: conditions.append('b.warehouse=%s') values.append(warehouse) if item_group: conditions.append('i.item_group=%s') values.append(item_group) if conditions: conditions = ' and ' + ' and '.join(conditions) else: conditions = '' return frappe.db.sql(''' select b.item_code, b.warehouse, b.projected_qty, b.reserved_qty, b.reserved_qty_for_production, b.reserved_qty_for_sub_contract, b.actual_qty, b.valuation_rate, i.item_name from tabBin b, tabItem i where b.item_code = i.name and (b.projected_qty != 0 or b.reserved_qty != 0 or b.reserved_qty_for_production != 0 or b.reserved_qty_for_sub_contract != 0 or b.actual_qty != 0) {conditions} order by {sort_by} {sort_order} limit {start}, 21 '''.format(conditions=conditions, sort_by=sort_by, sort_order=sort_order, start=start), values, as_dict=True)