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) {
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"]);