fix: Usability fixes to Serial No and batch selector (#18071)
* fix: Usability fixes to Serial No and batch selector
* fix: Codacy
* Update sales_common.js
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index 7da7478..045a046 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -44,6 +44,13 @@
label: __(me.warehouse_details.type),
default: me.warehouse_details.name,
onchange: function(e) {
+
+ if(me.has_batch) {
+ fields = fields.concat(me.get_batch_fields());
+ } else {
+ fields = fields.concat(me.get_serial_no_fields());
+ }
+
me.warehouse_details.name = this.get_value();
var batches = this.layout.fields_dict.batches;
if(batches) {
@@ -263,6 +270,15 @@
get_batch_fields: function() {
var me = this;
+
+ let filters = {
+ item_code: me.item_code
+ }
+
+ if (me.warehouse || me.warehouse_details.name) {
+ filters['warehouse'] = me.warehouse || me.warehouse_details.name;
+ }
+
return [
{fieldtype:'Section Break', label: __('Batches')},
{fieldname: 'batches', fieldtype: 'Table', label: __('Batch Entries'),
@@ -276,8 +292,8 @@
'in_list_view': 1,
get_query: function () {
return {
- filters: { item: me.item_code },
- query: 'erpnext.controllers.queries.get_batch_numbers'
+ filters: filters,
+ query: 'erpnext.controllers.queries.get_batch_no'
};
},
change: function () {
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 23dcaa1..9bae58b 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -229,6 +229,9 @@
},
callback:function(r){
if (in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+
+ if (doc.doctype === 'Sales Invoice' && (!doc.update_stock)) return;
+
me.set_batch_number(cdt, cdn);
me.batch_no(doc, cdt, cdn);
}
@@ -372,13 +375,18 @@
this._super(doc, cdt, cdn, dont_fetch_price_list_rate);
if(frappe.meta.get_docfield(cdt, "stock_qty", cdn) &&
in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
- this.set_batch_number(cdt, cdn);
- }
+ if (doc.doctype === 'Sales Invoice' && (!doc.update_stock)) return;
+ this.set_batch_number(cdt, cdn);
+ }
},
qty: function(doc, cdt, cdn) {
this._super(doc, cdt, cdn);
- this.set_batch_number(cdt, cdn);
+
+ if(in_list(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+ if (doc.doctype === 'Sales Invoice' && (!doc.update_stock)) return;
+ this.set_batch_number(cdt, cdn);
+ }
},
/* Determine appropriate batch number and set it in the form.