[ 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:
Zarrar 2018-07-01 16:45:53 +05:30 committed by Nabin Hait
parent 4dc5721ba5
commit dfe897b888
7 changed files with 268 additions and 252 deletions

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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
},
{

View File

@ -934,10 +934,11 @@ 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:
elif d.from_uom == uom and d.to_uom == stock_uom:
value = d.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)

View File

@ -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'}]