feat: Allow to edit stock UOM qty for Stock Entry

(cherry picked from commit b0e9ad198f)
This commit is contained in:
Rohit Waghchaure
2026-06-13 19:32:39 +05:30
committed by Mergify
parent d69464ebdf
commit ece43bd79b
3 changed files with 59 additions and 2 deletions

View File

@@ -9,6 +9,8 @@ frappe.ui.form.on("Stock Entry", {
setup: function (frm) {
frm.ignore_doctypes_on_cancel_all = ["Serial and Batch Bundle"];
frm.trigger("toggle_enable_for_stock_uom_qty");
frm.set_indicator_formatter("item_code", function (doc) {
if (!doc.s_warehouse) {
return "blue";
@@ -276,6 +278,20 @@ frappe.ui.form.on("Stock Entry", {
});
},
toggle_enable_for_stock_uom_qty: function (frm) {
frappe.call({
method: "erpnext.stock.doctype.stock_settings.stock_settings.get_enable_stock_uom_editing",
callback: (r) => {
if (r.message) {
frm.fields_dict["items"].grid.toggle_enable(
"transfer_qty",
r.message.allow_to_edit_stock_uom_qty_for_stock_entry
);
}
},
});
},
refresh: function (frm) {
frm.trigger("get_items_from_transit_entry");
frm.trigger("toggle_warehouse_fields");
@@ -1016,6 +1032,21 @@ frappe.ui.form.on("Stock Entry Detail", {
frm.events.set_basic_rate(frm, cdt, cdn);
},
transfer_qty(frm, cdt, cdn) {
let item = locals[cdt][cdn];
let old_conversion_factor = item.conversion_factor;
let conversion_factor = 1.0;
if (flt(item.qty) && flt(item.transfer_qty)) {
conversion_factor = flt(item.transfer_qty) / flt(item.qty);
}
if (old_conversion_factor !== conversion_factor) {
item.conversion_factor = conversion_factor;
refresh_field("conversion_factor", item.name, item.parentfield);
frm.events.set_basic_rate(frm, cdt, cdn);
}
},
s_warehouse(frm, cdt, cdn) {
frm.events.get_warehouse_details(frm, cdt, cdn);

View File

@@ -21,6 +21,7 @@
"stock_uom",
"allow_to_edit_stock_uom_qty_for_sales",
"allow_to_edit_stock_uom_qty_for_purchase",
"allow_to_edit_stock_uom_qty_for_stock_entry",
"allow_uom_with_conversion_rate_defined_in_item",
"warehouse_defaults_section",
"default_warehouse",
@@ -404,6 +405,13 @@
"fieldtype": "Check",
"label": "Allow to edit stock UOM qty for Purchase documents"
},
{
"default": "0",
"documentation_url": "https://docs.frappe.io/erpnext/stock-settings#why-to-edit-stock-qty-qty-as-per-stock-uom",
"fieldname": "allow_to_edit_stock_uom_qty_for_stock_entry",
"fieldtype": "Check",
"label": "Allow to edit stock UOM qty for Stock Entry"
},
{
"default": "0",
"depends_on": "eval: doc.enable_stock_reservation",
@@ -594,7 +602,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2026-06-03 12:38:02.202183",
"modified": "2026-06-13 12:38:02.202183",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Settings",

View File

@@ -32,6 +32,7 @@ class StockSettings(Document):
allow_partial_reservation: DF.Check
allow_to_edit_stock_uom_qty_for_purchase: DF.Check
allow_to_edit_stock_uom_qty_for_sales: DF.Check
allow_to_edit_stock_uom_qty_for_stock_entry: DF.Check
allow_to_make_quality_inspection_after_purchase_or_delivery: DF.Check
allow_uom_with_conversion_rate_defined_in_item: DF.Check
auto_create_serial_and_batch_bundle_for_outward: DF.Check
@@ -112,6 +113,7 @@ class StockSettings(Document):
self.validate_auto_insert_price_list_rate_if_missing()
self.change_precision_for_for_sales()
self.change_precision_for_purchase()
self.change_precision_for_stock_entry()
self.validate_do_not_use_batchwise_valuation()
def validate_do_not_use_batchwise_valuation(self):
@@ -290,6 +292,18 @@ class StockSettings(Document):
]
self.make_property_setter_for_precision(doctypes)
def change_precision_for_stock_entry(self):
doc_before_save = self.get_doc_before_save()
if doc_before_save and (
doc_before_save.allow_to_edit_stock_uom_qty_for_stock_entry
== self.allow_to_edit_stock_uom_qty_for_stock_entry
):
return
if self.allow_to_edit_stock_uom_qty_for_stock_entry:
doctypes = ["Stock Entry Detail"]
self.make_property_setter_for_precision(doctypes)
@staticmethod
def make_property_setter_for_precision(doctypes):
for doctype in doctypes:
@@ -322,6 +336,10 @@ def clean_all_descriptions():
def get_enable_stock_uom_editing():
return frappe.get_single_value(
"Stock Settings",
["allow_to_edit_stock_uom_qty_for_sales", "allow_to_edit_stock_uom_qty_for_purchase"],
[
"allow_to_edit_stock_uom_qty_for_sales",
"allow_to_edit_stock_uom_qty_for_purchase",
"allow_to_edit_stock_uom_qty_for_stock_entry",
],
as_dict=1,
)