[refacator] added dashboard in item

This commit is contained in:
Rushabh Mehta
2016-04-25 17:53:42 +05:30
parent 0fa7b7c4f2
commit 3d2622ce91
14 changed files with 230 additions and 183 deletions

View File

@@ -1,7 +0,0 @@
<div class="padding">
<div class="result list-group">
</div>
<div class="more hidden" style="padding-top: 15px;">
<a class="btn btn-default btn-xs btn-more">More</a>
</div>
</div>

View File

@@ -1,4 +1,4 @@
{% include 'erpnext/stock/doctype/item/item_dashboard.html' %}
frappe.require('assets/js/item-dashboard.min.js');
frappe.pages['stock-balance'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({
@@ -6,6 +6,7 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
title: 'Stock Balance',
single_column: true
});
page.start = 0;
page.warehouse_field = page.add_field({
fieldname: 'wareshouse',
@@ -13,8 +14,8 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
fieldtype:'Link',
options:'Warehouse',
change: function() {
page.start = 0;
refresh()
page.item_dashboard.start = 0;
page.item_dashboard.refresh();
}
});
@@ -24,35 +25,11 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
fieldtype:'Link',
options:'Item',
change: function() {
page.start = 0;
refresh()
page.item_dashboard.start = 0;
page.item_dashboard.refresh();
}
});
page.start = 0;
page.sort_by = 'projected_qty';
page.sort_order = 'asc';
page.content = $(frappe.render_template('stock_balance')).appendTo(page.main);
page.result = page.content.find('.result');
// more
page.content.find('.btn-more').on('click', function() {
page.start += 20;
refresh();
});
// move
page.content.on('click', '.btn-move', function() {
erpnext.inventory.move_item($(this).attr('data-item'), $(this).attr('data-warehouse'),
null, $(this).attr('data-actual_qty'), function() { refresh(); });
});
page.content.on('click', '.btn-add', function() {
erpnext.inventory.move_item($(this).attr('data-item'), null, $(this).attr('data-warehouse'),
$(this).attr('data-actual_qty'), function() { refresh(); });
});
page.sort_selector = new frappe.ui.SortSelector({
parent: page.wrapper.find('.page-form'),
args: {
@@ -66,68 +43,36 @@ frappe.pages['stock-balance'].on_page_load = function(wrapper) {
]
},
change: function(sort_by, sort_order) {
page.sort_by = sort_by;
page.sort_order = sort_order;
page.start = 0;
refresh();
page.item_dashboard.sort_by = sort_by;
page.item_dashboard.sort_order = sort_order;
page.item_dashboard.start = 0;
page.item_dashboard.refresh();
}
});
page.sort_selector.wrapper.css({'margin-right': '15px', 'margin-top': '4px'});
var refresh = function() {
var item_code = page.item_field.get_value();
var warehouse = page.warehouse_field.get_value();
frappe.call({
method: 'erpnext.stock.page.stock_balance.stock_balance.get_data',
args: {
item_code: item_code,
warehouse: warehouse,
start: page.start,
sort_by: page.sort_by,
sort_order: page.sort_order,
},
callback: function(r) {
render(r.message);
}
});
page.item_dashboard = new erpnext.stock.ItemDashboard({
parent: page.main,
})
page.item_dashboard.before_refresh = function() {
this.item_code = page.item_field.get_value();
this.warehouse = page.warehouse_field.get_value();
}
var render = function(data) {
if(page.start===0) {
page.max_count = 0;
page.result.empty();
}
var context = erpnext.get_item_dashboard_data(data, page.max_count, true);
page.max_count = context.max_count;
// show more button
if(data.length===21) {
page.content.find('.more').removeClass('hidden');
// remove the last element
data.splice(-1);
} else {
page.content.find('.more').addClass('hidden');
}
$(frappe.render_template('item_dashboard', context)).appendTo(page.result);
}
refresh();
page.item_dashboard.refresh();
// item click
var setup_click = function(doctype) {
page.result.on('click', 'a[data-type="'+ doctype.toLowerCase() +'"]', function() {
page.main.on('click', 'a[data-type="'+ doctype.toLowerCase() +'"]', function() {
var name = $(this).attr('data-name');
var field = page[doctype.toLowerCase() + '_field'];
if(field.get_value()===name) {
frappe.set_route('Form', doctype, name)
} else {
field.set_input(name);
refresh();
page.item_dashboard.refresh();
}
});
}

View File

@@ -1,14 +0,0 @@
from __future__ import unicode_literals
import frappe
@frappe.whitelist()
def get_data(item_code=None, warehouse=None, start=0, sort_by='actual_qty', sort_order='desc'):
filters = {}
if item_code:
filters['item_code'] = item_code
if warehouse:
filters['warehouse'] = warehouse
return frappe.get_list("Bin", filters=filters, fields=['item_code', 'warehouse',
'projected_qty', 'reserved_qty', 'reserved_qty_for_production', 'actual_qty'],
order_by='{0} {1}'.format(sort_by, sort_order), start=start, page_length = 21)