diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 0187b9b21e6..d56670035df 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -497,25 +497,36 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } item_code(doc, cdt, cdn) { - var item = frappe.get_doc(cdt, cdn); - frappe.call({ - doc: doc, - method: "process_item_selection", - args: { - item: item.name - }, - callback: function(r) { - if(!r.exc) { - cur_frm.refresh_fields(); - refresh_field("items"); - } - } - }); - - return; - var me = this; + // Experimental: This will be removed once stability is achieved. + frappe.db.get_single_value('Selling Settings', 'use_server_side_reactivity') + .then((value) => { + if (value) { + var item = frappe.get_doc(cdt, cdn); + frappe.call({ + doc: doc, + method: "process_item_selection", + args: { + item: item.name + }, + callback: function(r) { + if(!r.exc) { + cur_frm.refresh_fields(); + refresh_field("items"); + } + } + }); + } else { + me.process_item_selection(doc, cdt, cdn); + } + }); + + } + + process_item_selection(doc, cdt, cdn) { + var item = frappe.get_doc(cdt, cdn); + var me = this; var update_stock = 0, show_batch_dialog = 0; item.weight_per_unit = 0; @@ -527,7 +538,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe show_batch_dialog = update_stock; } else if((this.frm.doc.doctype === 'Purchase Receipt') || - this.frm.doc.doctype === 'Delivery Note') { + this.frm.doc.doctype === 'Delivery Note') { show_batch_dialog = 1; } @@ -600,10 +611,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe frappe.run_serially([ () => { if (item.docstatus === 0 - && frappe.meta.has_field(item.doctype, "use_serial_batch_fields") - && !item.use_serial_batch_fields - && cint(frappe.user_defaults?.use_serial_batch_fields) === 1 - ) { + && frappe.meta.has_field(item.doctype, "use_serial_batch_fields") + && !item.use_serial_batch_fields + && cint(frappe.user_defaults?.use_serial_batch_fields) === 1 + ) { item["use_serial_batch_fields"] = 1; } }, @@ -618,7 +629,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe // for internal customer instead of pricing rule directly apply valuation rate on item if ((me.frm.doc.is_internal_customer || me.frm.doc.is_internal_supplier) && me.frm.doc.represents_company === me.frm.doc.company) { me.get_incoming_rate(item, me.frm.posting_date, me.frm.posting_time, - me.frm.doc.doctype, me.frm.doc.company); + me.frm.doc.doctype, me.frm.doc.company); } else { me.frm.script_manager.trigger("price_list_rate", cdt, cdn); } @@ -632,24 +643,24 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe () => { if (show_batch_dialog && !frappe.flags.trigger_from_barcode_scanner) return frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"]) - .then((r) => { - if (r.message && - (r.message.has_batch_no || r.message.has_serial_no)) { - frappe.flags.hide_serial_batch_dialog = false; - } else { - show_batch_dialog = false; - } - }); + .then((r) => { + if (r.message && + (r.message.has_batch_no || r.message.has_serial_no)) { + frappe.flags.hide_serial_batch_dialog = false; + } else { + show_batch_dialog = false; + } + }); }, () => { // check if batch serial selector is disabled or not if (show_batch_dialog && !frappe.flags.hide_serial_batch_dialog) return frappe.db.get_single_value('Stock Settings', 'disable_serial_no_and_batch_selector') - .then((value) => { - if (value) { - frappe.flags.hide_serial_batch_dialog = true; - } - }); + .then((value) => { + if (value) { + frappe.flags.hide_serial_batch_dialog = true; + } + }); }, () => { if(show_batch_dialog && !frappe.flags.hide_serial_batch_dialog && !frappe.flags.dialog_set) { @@ -693,6 +704,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } + price_list_rate(doc, cdt, cdn) { var item = frappe.get_doc(cdt, cdn); frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);