fix: remove all stock UOM conversion when changing stock UOM
This commit is contained in:
parent
5cda4ea39f
commit
eb8d08b411
@ -492,18 +492,20 @@ class Item(WebsiteGenerator):
|
|||||||
context.shopping_cart = get_product_info_for_website(self.name, skip_quotation_creation=True)
|
context.shopping_cart = get_product_info_for_website(self.name, skip_quotation_creation=True)
|
||||||
|
|
||||||
def add_default_uom_in_conversion_factor_table(self):
|
def add_default_uom_in_conversion_factor_table(self):
|
||||||
uom_conv_list = [d.uom for d in self.get("uoms")]
|
if not self.is_new() and self.has_value_changed("stock_uom"):
|
||||||
if self.stock_uom not in uom_conv_list:
|
self.uoms = []
|
||||||
ch = self.append('uoms', {})
|
frappe.msgprint(
|
||||||
ch.uom = self.stock_uom
|
_("Successfully changed Stock UOM, please redefine conversion factors for new UOM."),
|
||||||
ch.conversion_factor = 1
|
alert=True,
|
||||||
|
)
|
||||||
|
|
||||||
to_remove = []
|
uoms_list = [d.uom for d in self.get("uoms")]
|
||||||
for d in self.get("uoms"):
|
|
||||||
if d.conversion_factor == 1 and d.uom != self.stock_uom:
|
|
||||||
to_remove.append(d)
|
|
||||||
|
|
||||||
[self.remove(d) for d in to_remove]
|
if self.stock_uom not in uoms_list:
|
||||||
|
self.append("uoms", {
|
||||||
|
"uom": self.stock_uom,
|
||||||
|
"conversion_factor": 1
|
||||||
|
})
|
||||||
|
|
||||||
def update_show_in_website(self):
|
def update_show_in_website(self):
|
||||||
if self.disabled:
|
if self.disabled:
|
||||||
|
|||||||
@ -584,6 +584,16 @@ class TestItem(ERPNextTestCase):
|
|||||||
except frappe.ValidationError as e:
|
except frappe.ValidationError as e:
|
||||||
self.fail(f"UoM change not allowed even though no SLE / BIN with positive qty exists: {e}")
|
self.fail(f"UoM change not allowed even though no SLE / BIN with positive qty exists: {e}")
|
||||||
|
|
||||||
|
def test_erasure_of_old_conversions(self):
|
||||||
|
item = create_item("_item change uom")
|
||||||
|
item.stock_uom = "Gram"
|
||||||
|
item.append("uoms", frappe._dict(uom="Box", conversion_factor=2))
|
||||||
|
item.save()
|
||||||
|
item.reload()
|
||||||
|
item.stock_uom = "Nos"
|
||||||
|
item.save()
|
||||||
|
self.assertEqual(len(item.uoms), 1)
|
||||||
|
|
||||||
def test_validate_stock_item(self):
|
def test_validate_stock_item(self):
|
||||||
self.assertRaises(frappe.ValidationError, validate_is_stock_item, "_Test Non Stock Item")
|
self.assertRaises(frappe.ValidationError, validate_is_stock_item, "_Test Non Stock Item")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user