refactor: extract negative stock confirmation into shared util

Deduplicate the identical confirmation dialog used by Item and Stock
Settings into erpnext.utils.confirm_negative_stock, and collapse the
message into a single translatable string.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Raghav Ruia
2026-06-26 09:38:23 +05:30
parent 2bf9fcb817
commit 69d5d2bbc1
3 changed files with 14 additions and 38 deletions

View File

@@ -562,6 +562,18 @@ $.extend(erpnext.utils, {
},
});
erpnext.utils.confirm_negative_stock = function (frm) {
if (!frm.doc.allow_negative_stock) return;
frappe.confirm(
__(
"Using negative stock disables FIFO/Moving average valuation when inventory is negative. This is considered dangerous from accounting point of view.<br>Do you still want to enable negative inventory?"
),
() => {},
() => frm.set_value("allow_negative_stock", 0)
);
};
erpnext.utils.select_alternate_items = function (opts) {
const frm = opts.frm;
const warehouse_field = opts.warehouse_field || "warehouse";

View File

@@ -55,25 +55,7 @@ frappe.ui.form.on("Item", {
},
allow_negative_stock(frm) {
if (!frm.doc.allow_negative_stock) {
return;
}
let msg = __(
"Using negative stock disables FIFO/Moving average valuation when inventory is negative."
);
msg += " ";
msg += __("This is considered dangerous from accounting point of view.");
msg += "<br>";
msg += __("Do you still want to enable negative inventory?");
frappe.confirm(
msg,
() => {},
() => {
frm.set_value("allow_negative_stock", 0);
}
);
erpnext.utils.confirm_negative_stock(frm);
},
setup: function (frm) {

View File

@@ -96,25 +96,7 @@ frappe.ui.form.on("Stock Settings", {
},
allow_negative_stock: function (frm) {
if (!frm.doc.allow_negative_stock) {
return;
}
let msg = __(
"Using negative stock disables FIFO/Moving average valuation when inventory is negative."
);
msg += " ";
msg += __("This is considered dangerous from accounting point of view.");
msg += "<br>";
msg += __("Do you still want to enable negative inventory?");
frappe.confirm(
msg,
() => {},
() => {
frm.set_value("allow_negative_stock", 0);
}
);
erpnext.utils.confirm_negative_stock(frm);
},
auto_insert_price_list_rate_if_missing(frm) {
if (!frm.doc.auto_insert_price_list_rate_if_missing) return;