fix: validate uom is integer for PR item
This commit is contained in:
@@ -539,9 +539,6 @@ class SubcontractingController(StockController):
|
||||
return serial_nos
|
||||
|
||||
def __add_supplied_item(self, item_row, bom_item, qty):
|
||||
if bom_item.get("qty"):
|
||||
bom_item.pop("qty")
|
||||
|
||||
bom_item.conversion_factor = item_row.conversion_factor
|
||||
rm_obj = self.append(self.raw_material_table, bom_item)
|
||||
if rm_obj.get("qty"):
|
||||
|
||||
@@ -239,8 +239,7 @@ class PurchaseReceipt(BuyingController):
|
||||
self.po_required()
|
||||
self.validate_items_quality_inspection()
|
||||
self.validate_with_previous_doc()
|
||||
self.validate_uom_is_integer("uom", ["qty", "received_qty"])
|
||||
self.validate_uom_is_integer("stock_uom", "stock_qty")
|
||||
self.validate_uom_is_integer()
|
||||
self.validate_cwip_accounts()
|
||||
self.validate_provisional_expense_account()
|
||||
|
||||
@@ -254,6 +253,10 @@ class PurchaseReceipt(BuyingController):
|
||||
self.reset_default_field_value("rejected_warehouse", "items", "rejected_warehouse")
|
||||
self.reset_default_field_value("set_from_warehouse", "items", "from_warehouse")
|
||||
|
||||
def validate_uom_is_integer(self):
|
||||
super().validate_uom_is_integer("uom", ["qty", "received_qty"], "Purchase Receipt Item")
|
||||
super().validate_uom_is_integer("stock_uom", "stock_qty", "Purchase Receipt Item")
|
||||
|
||||
def validate_cwip_accounts(self):
|
||||
for item in self.get("items"):
|
||||
if item.is_fixed_asset and is_cwip_accounting_enabled(item.asset_category):
|
||||
|
||||
@@ -30,8 +30,8 @@ class TransactionBase(StatusUpdater):
|
||||
except ValueError:
|
||||
frappe.throw(_("Invalid Posting Time"))
|
||||
|
||||
def validate_uom_is_integer(self, uom_field, qty_fields):
|
||||
validate_uom_is_integer(self, uom_field, qty_fields)
|
||||
def validate_uom_is_integer(self, uom_field, qty_fields, child_dt=None):
|
||||
validate_uom_is_integer(self, uom_field, qty_fields, child_dt)
|
||||
|
||||
def validate_with_previous_doc(self, ref):
|
||||
self.exclude_fields = ["conversion_factor", "uom"] if self.get("is_return") else []
|
||||
@@ -210,12 +210,13 @@ def validate_uom_is_integer(doc, uom_field, qty_fields, child_dt=None):
|
||||
for f in qty_fields:
|
||||
qty = d.get(f)
|
||||
if qty:
|
||||
if abs(cint(qty) - flt(qty, d.precision(f))) > 0.0000001:
|
||||
precision = d.precision(f)
|
||||
if abs(cint(qty) - flt(qty, precision)) > 0.0000001:
|
||||
frappe.throw(
|
||||
_(
|
||||
"Row {1}: Quantity ({0}) cannot be a fraction. To allow this, disable '{2}' in UOM {3}."
|
||||
).format(
|
||||
flt(qty, d.precision(f)),
|
||||
flt(qty, precision),
|
||||
d.idx,
|
||||
frappe.bold(_("Must be Whole Number")),
|
||||
frappe.bold(d.get(uom_field)),
|
||||
|
||||
Reference in New Issue
Block a user