refactor: configurable reactivity

This commit is contained in:
ruthra kumar
2024-12-06 12:01:24 +05:30
parent b21d5934e6
commit 67b28a7864

View File

@@ -497,25 +497,36 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
} }
item_code(doc, cdt, cdn) { 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; 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; var update_stock = 0, show_batch_dialog = 0;
item.weight_per_unit = 0; item.weight_per_unit = 0;
@@ -527,7 +538,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
show_batch_dialog = update_stock; show_batch_dialog = update_stock;
} else if((this.frm.doc.doctype === 'Purchase Receipt') || } else if((this.frm.doc.doctype === 'Purchase Receipt') ||
this.frm.doc.doctype === 'Delivery Note') { this.frm.doc.doctype === 'Delivery Note') {
show_batch_dialog = 1; show_batch_dialog = 1;
} }
@@ -600,10 +611,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
frappe.run_serially([ frappe.run_serially([
() => { () => {
if (item.docstatus === 0 if (item.docstatus === 0
&& frappe.meta.has_field(item.doctype, "use_serial_batch_fields") && frappe.meta.has_field(item.doctype, "use_serial_batch_fields")
&& !item.use_serial_batch_fields && !item.use_serial_batch_fields
&& cint(frappe.user_defaults?.use_serial_batch_fields) === 1 && cint(frappe.user_defaults?.use_serial_batch_fields) === 1
) { ) {
item["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 // 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) { 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.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 { } else {
me.frm.script_manager.trigger("price_list_rate", cdt, cdn); 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) 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"]) return frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"])
.then((r) => { .then((r) => {
if (r.message && if (r.message &&
(r.message.has_batch_no || r.message.has_serial_no)) { (r.message.has_batch_no || r.message.has_serial_no)) {
frappe.flags.hide_serial_batch_dialog = false; frappe.flags.hide_serial_batch_dialog = false;
} else { } else {
show_batch_dialog = false; show_batch_dialog = false;
} }
}); });
}, },
() => { () => {
// check if batch serial selector is disabled or not // check if batch serial selector is disabled or not
if (show_batch_dialog && !frappe.flags.hide_serial_batch_dialog) if (show_batch_dialog && !frappe.flags.hide_serial_batch_dialog)
return frappe.db.get_single_value('Stock Settings', 'disable_serial_no_and_batch_selector') return frappe.db.get_single_value('Stock Settings', 'disable_serial_no_and_batch_selector')
.then((value) => { .then((value) => {
if (value) { if (value) {
frappe.flags.hide_serial_batch_dialog = true; frappe.flags.hide_serial_batch_dialog = true;
} }
}); });
}, },
() => { () => {
if(show_batch_dialog && !frappe.flags.hide_serial_batch_dialog && !frappe.flags.dialog_set) { 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) { price_list_rate(doc, cdt, cdn) {
var item = frappe.get_doc(cdt, cdn); var item = frappe.get_doc(cdt, cdn);
frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]); frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);