Merge pull request #6861 from rmehta/item-dashboard-enhancements

[minor] enhancements to item dashboard, filter by item group and show item name fixes #6459
This commit is contained in:
Nabin Hait 2016-11-09 11:21:22 +05:30 committed by GitHub
commit 82d1b23dcb
4 changed files with 49 additions and 8 deletions

View File

@ -46,6 +46,7 @@ erpnext.stock.ItemDashboard = Class.extend({
args: { args: {
item_code: this.item_code, item_code: this.item_code,
warehouse: this.warehouse, warehouse: this.warehouse,
item_group: this.item_group,
start: this.start, start: this.start,
sort_by: this.sort_by, sort_by: this.sort_by,
sort_order: this.sort_order, sort_order: this.sort_order,

View File

@ -3,12 +3,38 @@ from __future__ import unicode_literals
import frappe import frappe
@frappe.whitelist() @frappe.whitelist()
def get_data(item_code=None, warehouse=None, start=0, sort_by='actual_qty', sort_order='desc'): def get_data(item_code=None, warehouse=None, item_group=None,
filters = {} start=0, sort_by='actual_qty', sort_order='desc'):
'''Return data to render the item dashboard'''
conditions = []
values = []
if item_code: if item_code:
filters['item_code'] = item_code conditions.append('b.item_code=%s')
values.append(item_code)
if warehouse: if warehouse:
filters['warehouse'] = warehouse conditions.append('b.warehouse=%s')
return frappe.get_list("Bin", filters=filters, fields=['item_code', 'warehouse', values.append(warehouse)
'projected_qty', 'reserved_qty', 'reserved_qty_for_production', 'actual_qty', 'valuation_rate'], if item_group:
order_by='{0} {1}'.format(sort_by, sort_order), start=start, page_length = 21) 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.actual_qty, b.valuation_rate, i.item_name
from
tabBin b, tabItem i
where
b.item_code = i.name
{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)

View File

@ -7,7 +7,9 @@
<div class="col-sm-3 small" style="margin-top: 8px;"> <div class="col-sm-3 small" style="margin-top: 8px;">
{% if show_item %} {% if show_item %}
<a data-type="item" <a data-type="item"
data-name="{{ d.item_code }}">{{ d.item_code }}</a> data-name="{{ d.item_code }}">{{ d.item_code }}
{% if d.item_name != d.item_code %}({{ d.item_name }}){% endif %}
</a>
{% endif %} {% endif %}
</div> </div>
<div class="col-sm-4 small"> <div class="col-sm-4 small">

View File

@ -28,6 +28,17 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
} }
}); });
page.item_group_field = page.add_field({
fieldname: 'item_group',
label: __('Item Group'),
fieldtype:'Link',
options:'Item Group',
change: function() {
page.item_dashboard.start = 0;
page.item_dashboard.refresh();
}
});
page.sort_selector = new frappe.ui.SortSelector({ page.sort_selector = new frappe.ui.SortSelector({
parent: page.wrapper.find('.page-form'), parent: page.wrapper.find('.page-form'),
args: { args: {
@ -58,6 +69,7 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
page.item_dashboard.before_refresh = function() { page.item_dashboard.before_refresh = function() {
this.item_code = page.item_field.get_value(); this.item_code = page.item_field.get_value();
this.warehouse = page.warehouse_field.get_value(); this.warehouse = page.warehouse_field.get_value();
this.item_group = page.item_group_field.get_value();
} }
page.item_dashboard.refresh(); page.item_dashboard.refresh();