[ Fix ] UOM Conversion fix (#14768)
* increase precision for conversion value * inverse the conversion data * update uom data * rectify conversion logic according to inversion of values * rectify test case for uom conversion * patch improv to correct conversion data
This commit is contained in:
parent
4dc5721ba5
commit
dfe897b888
@ -520,7 +520,7 @@ erpnext.patches.v11_0.move_leave_approvers_from_employee #13-06-2018
|
||||
erpnext.patches.v11_0.update_department_lft_rgt
|
||||
erpnext.patches.v11_0.add_default_email_template_for_leave
|
||||
erpnext.patches.v11_0.set_default_email_template_in_hr #08-06-2018
|
||||
erpnext.patches.v11_0.uom_conversion_data
|
||||
erpnext.patches.v11_0.uom_conversion_data #30-06-2018
|
||||
erpnext.patches.v10_0.taxes_issue_with_pos
|
||||
erpnext.patches.v11_0.update_account_type_in_party_type
|
||||
erpnext.patches.v10_1.transfer_subscription_to_auto_repeat
|
||||
|
@ -9,3 +9,13 @@ def execute():
|
||||
|
||||
if not frappe.db.a_row_exists("UOM Conversion Factor"):
|
||||
add_uom_data()
|
||||
else:
|
||||
# delete conversion data and insert again
|
||||
frappe.db.sql("delete from `tabUOM Conversion Factor`")
|
||||
try:
|
||||
frappe.delete_doc('UOM', 'Hundredweight')
|
||||
frappe.delete_doc('UOM', 'Pound Cubic Yard')
|
||||
except frappe.LinkExistsError:
|
||||
pass
|
||||
|
||||
add_uom_data()
|
||||
|
@ -163,7 +163,7 @@
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"precision": "9",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
@ -186,7 +186,7 @@
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2018-06-05 12:50:02.648100",
|
||||
"modified": "2018-06-29 15:35:34.580831",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Setup",
|
||||
"name": "UOM Conversion Factor",
|
||||
@ -220,5 +220,6 @@
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 1,
|
||||
"track_seen": 0
|
||||
"track_seen": 0,
|
||||
"track_views": 0
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -261,7 +261,11 @@
|
||||
"must_be_whole_number": 0
|
||||
},
|
||||
{
|
||||
"uom_name": "Hundredweight",
|
||||
"uom_name": "Hundredweight (UK)",
|
||||
"must_be_whole_number": 0
|
||||
},
|
||||
{
|
||||
"uom_name": "Hundredweight (US)",
|
||||
"must_be_whole_number": 0
|
||||
},
|
||||
{
|
||||
@ -789,7 +793,7 @@
|
||||
"must_be_whole_number": 0
|
||||
},
|
||||
{
|
||||
"uom_name": "Pound Cubic Yard",
|
||||
"uom_name": "Pound/Cubic Yard",
|
||||
"must_be_whole_number": 0
|
||||
},
|
||||
{
|
||||
|
@ -934,15 +934,16 @@ def get_uom_conv_factor(uom, stock_uom):
|
||||
|
||||
for d in uom_details:
|
||||
if d.from_uom == stock_uom and d.to_uom == uom:
|
||||
value = d.value
|
||||
elif d.from_uom == uom and d.to_uom == stock_uom:
|
||||
value = 1/flt(d.value)
|
||||
else:
|
||||
uom_stock = frappe.db.get_value("UOM Conversion Factor", {"to_uom": stock_uom}, ["from_uom", "value"], as_dict=1)
|
||||
uom_row = frappe.db.get_value("UOM Conversion Factor", {"to_uom": uom}, ["from_uom", "value"], as_dict=1)
|
||||
elif d.from_uom == uom and d.to_uom == stock_uom:
|
||||
value = d.value
|
||||
|
||||
if uom_stock and uom_row:
|
||||
if uom_stock.from_uom == uom_row.from_uom:
|
||||
value = flt(uom_stock.value) * 1/flt(uom_row.value)
|
||||
if not value:
|
||||
uom_stock = frappe.db.get_value("UOM Conversion Factor", {"to_uom": stock_uom}, ["from_uom", "value"], as_dict=1)
|
||||
uom_row = frappe.db.get_value("UOM Conversion Factor", {"to_uom": uom}, ["from_uom", "value"], as_dict=1)
|
||||
|
||||
if uom_stock and uom_row:
|
||||
if uom_stock.from_uom == uom_row.from_uom:
|
||||
value = flt(uom_stock.value) * 1/flt(uom_row.value)
|
||||
|
||||
return value
|
||||
|
@ -255,9 +255,9 @@ class TestItem(unittest.TestCase):
|
||||
d.conversion_factor = value
|
||||
|
||||
self.assertEqual(item_doc.uoms[0].uom, "Carat")
|
||||
self.assertEqual(item_doc.uoms[0].conversion_factor, 5)
|
||||
self.assertEqual(item_doc.uoms[0].conversion_factor, 0.2)
|
||||
self.assertEqual(item_doc.uoms[1].uom, "Kg")
|
||||
self.assertEqual(item_doc.uoms[1].conversion_factor, 0.001)
|
||||
self.assertEqual(item_doc.uoms[1].conversion_factor, 1000)
|
||||
|
||||
def test_item_variant_by_manufacturer(self):
|
||||
fields = [{'field_name': 'description'}, {'field_name': 'variant_based_on'}]
|
||||
|
Loading…
x
Reference in New Issue
Block a user