feat: allow UOMs to select for which converstion rate defined in item master

This commit is contained in:
Rohit Waghchaure
2025-03-31 15:53:55 +05:30
parent 646cf54679
commit b1dfbbe85e
4 changed files with 59 additions and 2 deletions

View File

@@ -905,3 +905,32 @@ def get_filtered_child_rows(doctype, txt, searchfield, start, page_len, filters)
)
return query.run(as_dict=False)
@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
def get_item_uom_query(doctype, txt, searchfield, start, page_len, filters):
if frappe.db.get_single_value("Stock Settings", "allow_uom_with_conversion_rate_defined_in_item"):
query_filters = {"parent": filters.get("item_code")}
if txt:
query_filters["uom"] = ["like", f"%{txt}%"]
return frappe.get_all(
"UOM Conversion Detail",
filters=query_filters,
fields=["uom", "conversion_factor"],
limit_start=start,
limit_page_length=page_len,
order_by="idx",
as_list=1,
)
return frappe.get_all(
"UOM",
filters={"name": ["like", f"%{txt}%"]},
fields=["name"],
limit_start=start,
limit_page_length=page_len,
as_list=1,
)

View File

@@ -150,6 +150,19 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
});
}
if (this.frm.fields_dict["items"].grid.get_field("uom")) {
this.frm.set_query("uom", "items", function(doc, cdt, cdn) {
let row = locals[cdt][cdn];
return {
query: "erpnext.controllers.queries.get_item_uom_query",
filters: {
"item_code": row.item_code
}
};
});
}
if(
this.frm.docstatus < 2
&& this.frm.fields_dict["payment_terms_template"]

View File

@@ -22,6 +22,8 @@
"allow_to_edit_stock_uom_qty_for_sales",
"column_break_lznj",
"allow_to_edit_stock_uom_qty_for_purchase",
"section_break_ylhd",
"allow_uom_with_conversion_rate_defined_in_item",
"stock_validations_tab",
"section_break_9",
"over_delivery_receipt_allowance",
@@ -498,6 +500,17 @@
{
"fieldname": "column_break_wslv",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_ylhd",
"fieldtype": "Section Break"
},
{
"default": "0",
"description": "If enabled, the system will allow selecting UOMs in sales and purchase transactions only if the conversion rate is set in the item master.",
"fieldname": "allow_uom_with_conversion_rate_defined_in_item",
"fieldtype": "Check",
"label": "Allow UOM with Conversion Rate Defined in Item"
}
],
"icon": "icon-cog",
@@ -505,7 +518,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2025-02-28 15:08:35.938840",
"modified": "2025-03-31 15:34:20.752065",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Settings",
@@ -526,8 +539,9 @@
}
],
"quick_entry": 1,
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
}

View File

@@ -33,6 +33,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_uom_with_conversion_rate_defined_in_item: DF.Check
auto_create_serial_and_batch_bundle_for_outward: DF.Check
auto_indent: DF.Check
auto_insert_price_list_rate_if_missing: DF.Check