[batch modal] bind serial_no field in onchange
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index c7a2f77..735f5c4 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -155,14 +155,10 @@
},
bind_qty: function() {
- let serial_no_link = this.dialog.fields_dict.serial_no_select;
- let serial_no_list_field = this.dialog.fields_dict.serial_no;
let batches_field = this.dialog.fields_dict.batches;
-
let qty_field = this.dialog.fields_dict.qty;
-
- let update_quantity = (batch) => {
- if(batch) {
+ if(batches_field) {
+ batches_field.grid.wrapper.on('change', function() {
let total_qty = 0;
batches_field.grid.wrapper.find(
'input[data-fieldname="selected_qty"]').each(function() {
@@ -170,48 +166,6 @@
total_qty += Number($(this).val());
});
qty_field.set_input(total_qty);
- } else {
- let serial_numbers = serial_no_list_field.get_value()
- .replace(/\n/g, ' ').match(/\S+/g) || [];
- qty_field.set_input(serial_numbers.length);
- }
- };
-
- if(serial_no_link) {
- let serial_list = [];
- serial_no_link.$input.on('awesomplete-selectcomplete', function() {
- if(serial_no_link.get_value().length > 0) {
- let new_no = serial_no_link.get_value();
- let list_value = serial_no_list_field.get_value();
- let new_line = '\n';
- if(!serial_no_list_field.get_value()) {
- new_line = '';
- } else {
- serial_list = list_value.replace(/\s+/g, ' ').split(' ');
- }
- if(!serial_list.includes(new_no)) {
- serial_no_link.set_new_description('');
- serial_no_list_field.set_value(list_value + new_line + new_no);
- update_quantity(0);
- } else {
- serial_no_link.set_new_description(new_no + ' is already selected.');
- }
- }
-
- // Should, but doesn't work
- serial_no_link.set_input('');
- serial_no_link.$input.blur();
- });
-
- serial_no_list_field.$input.on('input', function() {
- serial_list = serial_no_list_field.get_value().replace(/\s+/g, ' ').split(' ');
- update_quantity(0);
- });
- }
-
- if(batches_field) {
- batches_field.grid.wrapper.on('change', function() {
- update_quantity(1);
});
}
},
@@ -319,6 +273,7 @@
get_serial_no_fields: function() {
var me = this;
+ this.serial_list = [];
return [
{fieldtype: 'Section Break', label: __('Serial No')},
{
@@ -326,10 +281,46 @@
label: __('Select'),
get_query: function() {
return { filters: {item_code: me.item_code}};
+ },
+ onchange: function(e) {
+ if(this.in_local_change) return;
+ this.in_local_change = 1;
+
+ let serial_no_list_field = this.layout.fields_dict.serial_no;
+ let qty_field = this.layout.fields_dict.qty;
+
+ let new_number = this.get_value();
+ let list_value = serial_no_list_field.get_value();
+ let new_line = '\n';
+ if(!list_value) {
+ new_line = '';
+ } else {
+ me.serial_list = list_value.replace(/\n/g, ' ').match(/\S+/g) || [];
+ }
+
+ if(!me.serial_list.includes(new_number)) {
+ this.set_new_description('');
+ serial_no_list_field.set_value(me.serial_list.join('\n') + new_line + new_number);
+ me.serial_list = serial_no_list_field.get_value().replace(/\n/g, ' ').match(/\S+/g) || [];
+ } else {
+ this.set_new_description(new_number + ' is already selected.');
+ }
+
+ qty_field.set_input(me.serial_list.length);
+ this.$input.val("");
+ this.in_local_change = 0;
}
},
{fieldtype: 'Column Break'},
- {fieldname: 'serial_no', fieldtype: 'Small Text'}
+ {
+ fieldname: 'serial_no',
+ fieldtype: 'Small Text',
+ onchange: function() {
+ me.serial_list = this.get_value()
+ .replace(/\n/g, ' ').match(/\S+/g) || [];
+ this.layout.fields_dict.qty.set_input(me.serial_list.length);
+ }
+ }
];
}
});
\ No newline at end of file