feat: Added auto fetch logic and button for client
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index b94cdd8..0e82b18 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -345,8 +345,26 @@
return [
{fieldtype: 'Section Break', label: __('Serial No')},
{
+ fieldname: 'auto_fetch_toggle',
+ fieldtype:'Check',
+ label: __('Fetch based on FIFO'),
+ default: 0,
+ onchange: function(e) {
+ const show_auto_fetch = this.get_value();
+ if (show_auto_fetch) {
+ this.layout.set_df_property('auto_qty', 'hidden', 0);
+ this.layout.set_df_property('auto_fetch_button', 'hidden', 0);
+ this.layout.set_df_property('serial_no_select', 'hidden', 1);
+ } else {
+ this.layout.set_df_property('serial_no_select', 'hidden', 0);
+ this.layout.set_df_property('auto_qty', 'hidden', 1);
+ this.layout.set_df_property('auto_fetch_button', 'hidden', 1);
+ }
+ }
+ },
+ {
fieldtype: 'Link', fieldname: 'serial_no_select', options: 'Serial No',
- label: __('Select'),
+ label: __('Select to add serial no.'),
get_query: function() {
return { filters: {item_code: me.item_code, warehouse: me.warehouse_details.name}};
},
@@ -379,6 +397,43 @@
this.in_local_change = 0;
}
},
+ {
+ fieldname: 'auto_qty',
+ fieldtype:'Float',
+ read_only: 0,
+ hidden: 1,
+ label: __('Auto Fetch Quantity'),
+ default: 0,
+ },
+ {
+ fieldname: 'auto_fetch_button',
+ fieldtype:'Button',
+ label: __('Fetch Serial Numbers'),
+ read_only: 0,
+ hidden: 1,
+ click: (e) => {
+ // window.abc = this.dialog
+ console.log(this.dialog.fields_dict.auto_qty.get_value())
+ let auto_fetch_qty_field = this.dialog.fields_dict.auto_qty;
+ let fetch_qty = auto_fetch_qty_field.get_value();
+ let numbers = frappe.call({
+ method: "erpnext.stock.doctype.serial_no.serial_no.auto_fetch_serial_number",
+ args: {
+ qty: fetch_qty,
+ item_code: me.item_code,
+ warehouse: me.warehouse_details.name
+ }
+ });
+
+ numbers.then((data) => {
+ let auto_fetched_serial_numbers = data.message;
+ let serial_no_list_field = this.layout.fields_dict.serial_no;
+ numbers = auto_fetched_serial_numbers.join('\n');
+ serial_no_list_field.set_value(numbers);
+ auto_fetch_qty_field.set_value("");
+ })
+ }
+ },
{fieldtype: 'Column Break'},
{
fieldname: 'serial_no',