121 lines
3.2 KiB
JavaScript
121 lines
3.2 KiB
JavaScript
frappe.pages['warehouse-capacity-summary'].on_page_load = function(wrapper) {
|
|
var page = frappe.ui.make_app_page({
|
|
parent: wrapper,
|
|
title: 'Warehouse Capacity Summary',
|
|
single_column: true
|
|
});
|
|
page.set_secondary_action('Refresh', () => page.capacity_dashboard.refresh(), 'refresh');
|
|
page.start = 0;
|
|
|
|
page.company_field = page.add_field({
|
|
fieldname: 'company',
|
|
label: __('Company'),
|
|
fieldtype: 'Link',
|
|
options: 'Company',
|
|
reqd: 1,
|
|
default: frappe.defaults.get_default("company"),
|
|
change: function() {
|
|
page.capacity_dashboard.start = 0;
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
|
|
page.warehouse_field = page.add_field({
|
|
fieldname: 'warehouse',
|
|
label: __('Warehouse'),
|
|
fieldtype: 'Link',
|
|
options: 'Warehouse',
|
|
change: function() {
|
|
page.capacity_dashboard.start = 0;
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
|
|
page.item_field = page.add_field({
|
|
fieldname: 'item_code',
|
|
label: __('Item'),
|
|
fieldtype: 'Link',
|
|
options: 'Item',
|
|
change: function() {
|
|
page.capacity_dashboard.start = 0;
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
|
|
page.parent_warehouse_field = page.add_field({
|
|
fieldname: 'parent_warehouse',
|
|
label: __('Parent Warehouse'),
|
|
fieldtype: 'Link',
|
|
options: 'Warehouse',
|
|
get_query: function() {
|
|
return {
|
|
filters: {
|
|
"is_group": 1
|
|
}
|
|
};
|
|
},
|
|
change: function() {
|
|
page.capacity_dashboard.start = 0;
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
|
|
page.sort_selector = new frappe.ui.SortSelector({
|
|
parent: page.wrapper.find('.page-form'),
|
|
args: {
|
|
sort_by: 'stock_capacity',
|
|
sort_order: 'desc',
|
|
options: [
|
|
{fieldname: 'stock_capacity', label: __('Capacity (Stock UOM)')},
|
|
{fieldname: 'percent_occupied', label: __('% Occupied')},
|
|
{fieldname: 'actual_qty', label: __('Balance Qty (Stock)')}
|
|
]
|
|
},
|
|
change: function(sort_by, sort_order) {
|
|
page.capacity_dashboard.sort_by = sort_by;
|
|
page.capacity_dashboard.sort_order = sort_order;
|
|
page.capacity_dashboard.start = 0;
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
|
|
frappe.require('item-dashboard.bundle.js', function() {
|
|
$(frappe.render_template('warehouse_capacity_summary_header')).appendTo(page.main);
|
|
|
|
page.capacity_dashboard = new erpnext.stock.ItemDashboard({
|
|
page_name: "warehouse-capacity-summary",
|
|
page_length: 10,
|
|
parent: page.main,
|
|
sort_by: 'stock_capacity',
|
|
sort_order: 'desc',
|
|
method: 'erpnext.stock.dashboard.warehouse_capacity_dashboard.get_data',
|
|
template: 'warehouse_capacity_summary'
|
|
});
|
|
|
|
page.capacity_dashboard.before_refresh = function() {
|
|
this.item_code = page.item_field.get_value();
|
|
this.warehouse = page.warehouse_field.get_value();
|
|
this.parent_warehouse = page.parent_warehouse_field.get_value();
|
|
this.company = page.company_field.get_value();
|
|
};
|
|
|
|
page.capacity_dashboard.refresh();
|
|
|
|
let setup_click = function(doctype) {
|
|
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);
|
|
page.capacity_dashboard.refresh();
|
|
}
|
|
});
|
|
};
|
|
|
|
setup_click('Item');
|
|
setup_click('Warehouse');
|
|
});
|
|
};
|