async call to require, more validation

This commit is contained in:
pratu16x7 2017-06-26 15:31:46 +05:30
parent 5f389c999a
commit ae450fc23b
3 changed files with 55 additions and 25 deletions

View File

@ -1,8 +1,6 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt // License: GNU General Public License v3. See license.txt
frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js");
erpnext.TransactionController = erpnext.taxes_and_totals.extend({ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
setup: function() { setup: function() {
this._super(); this._super();
@ -272,7 +270,9 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
if(['Sales Invoice', 'Purchase Invoice'].includes(this.frm.doc.doctype)) { if(['Sales Invoice', 'Purchase Invoice'].includes(this.frm.doc.doctype)) {
update_stock = cint(me.frm.doc.update_stock); update_stock = cint(me.frm.doc.update_stock);
show_batch_dialog = update_stock; show_batch_dialog = update_stock;
} else if(this.frm.doc.doctype === 'Delivery Note') {
} else if((this.frm.doc.doctype === 'Purchase Receipt' && me.frm.doc.is_return) ||
this.frm.doc.doctype === 'Delivery Note') {
show_batch_dialog = 1; show_batch_dialog = 1;
} }
@ -323,19 +323,9 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
if(show_batch_dialog) { if(show_batch_dialog) {
var d = locals[cdt][cdn]; var d = locals[cdt][cdn];
$.each(r.message, function(k, v) { $.each(r.message, function(k, v) {
if(!d[k]) { if(!d[k]) d[k] = v;
d[k] = v;
}
}); });
let serial_no_batch_selector = new erpnext.SerialNoBatchSelector({ erpnext.show_serial_batch_selector(me.frm, d);
frm: me.frm,
item: d,
warehouse_details: {
type: "Warehouse",
name: d.warehouse
},
});
refresh_field("items");
} }
} }
} }
@ -1193,3 +1183,16 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
} }
}, },
}); });
erpnext.show_serial_batch_selector = function(frm, d) {
frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
let serial_no_batch_selector = new erpnext.SerialNoBatchSelector({
frm: frm,
item: d,
warehouse_details: {
type: "Warehouse",
name: d.warehouse
},
});
});
}

View File

@ -31,8 +31,14 @@ erpnext.SerialNoBatchSelector = Class.extend({
this.data = this.oldest ? this.oldest : []; this.data = this.oldest ? this.oldest : [];
let title = ""; let title = "";
let fields = [ let fields = [
{fieldname: 'item_code', read_only: 1, fieldtype:'Link', options: 'Item', {
label: __('Item Code'), 'default': me.item_code}, fieldname: 'item_code',
read_only: 1,
fieldtype:'Link',
options: 'Item',
label: __('Item Code'),
default: me.item_code
},
{fieldtype:'Column Break'}, {fieldtype:'Column Break'},
{ {
fieldname: 'warehouse', fieldname: 'warehouse',
@ -51,7 +57,13 @@ erpnext.SerialNoBatchSelector = Class.extend({
} }
}, },
{fieldtype:'Column Break'}, {fieldtype:'Column Break'},
{fieldname: 'qty', fieldtype:'Float', label: __(me.has_batch ? 'Total Qty' : 'Qty'), 'default': me.qty}, {
fieldname: 'qty',
fieldtype:'Float',
read_only: 1,
label: __(me.has_batch ? 'Total Qty' : 'Qty'),
default: me.qty
},
]; ];
if(this.has_batch) { if(this.has_batch) {
@ -226,11 +238,23 @@ erpnext.SerialNoBatchSelector = Class.extend({
return {filters: {item: me.item_code }}; return {filters: {item: me.item_code }};
}, },
onchange: function(e) { onchange: function(e) {
if(this.get_value().length === 0) { let val = this.get_value();
if(val.length === 0) {
this.grid_row.on_grid_fields_dict this.grid_row.on_grid_fields_dict
.available_qty.set_value(0); .available_qty.set_value(0);
return; return;
} }
let selected_batches = this.grid.grid_rows.map((row) => {
if(row === this.grid_row) {
return "";
}
return row.on_grid_fields_dict.batch_no.get_value();
});
if(selected_batches.includes(val)) {
this.set_value("");
frappe.throw(__(`Batch ${val} already selected.`));
return;
}
if(me.warehouse_details.name) { if(me.warehouse_details.name) {
frappe.call({ frappe.call({
method: 'erpnext.stock.doctype.batch.batch.get_batch_qty', method: 'erpnext.stock.doctype.batch.batch.get_batch_qty',
@ -246,6 +270,7 @@ erpnext.SerialNoBatchSelector = Class.extend({
}); });
} else { } else {
this.set_value("");
frappe.throw(__(`Please select a warehouse to get available frappe.throw(__(`Please select a warehouse to get available
quantities`)); quantities`));
} }

View File

@ -1,7 +1,6 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt
frappe.provide("erpnext.stock"); frappe.provide("erpnext.stock");
frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js");
frappe.ui.form.on('Stock Entry', { frappe.ui.form.on('Stock Entry', {
setup: function(frm) { setup: function(frm) {
@ -569,9 +568,12 @@ erpnext.stock.select_batch_and_serial_no = (frm, item) => {
return; return;
} }
frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
let serial_no_batch_selector = new erpnext.SerialNoBatchSelector({ let serial_no_batch_selector = new erpnext.SerialNoBatchSelector({
frm: frm, frm: frm,
item: item, item: item,
warehouse_details: get_warehouse_type_and_name(item), warehouse_details: get_warehouse_type_and_name(item),
}); });
});
} }