Merge pull request #3822 from neilLasrado/item-uom

Changed UOM validation for Item Master
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 8081459..7edd69f 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -50,7 +50,7 @@
 			merged_gl_map.append(entry)
 
 	# filter zero debit and credit entries
-	merged_gl_map = filter(lambda x: flt(x.debit)!=0 or flt(x.credit)!=0, merged_gl_map)
+	merged_gl_map = filter(lambda x: flt(x.debit, 9)!=0 or flt(x.credit, 9)!=0, merged_gl_map)
 	return merged_gl_map
 
 def check_if_in_list(gle, gl_map):
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 24079c1..12fdc20 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -152,8 +152,8 @@
 		self.gross_pay = flt(self.arrear_amount) + flt(self.leave_encashment_amount)
 		for d in self.get("earnings"):
 			if cint(d.e_depends_on_lwp) == 1:
-				d.e_modified_amount = rounded(flt(d.e_amount) * flt(self.payment_days)
-					/ cint(self.total_days_in_month), 2)
+				d.e_modified_amount = rounded((flt(d.e_amount) * flt(self.payment_days)
+					/ cint(self.total_days_in_month)), self.precision("e_modified_amount", "earnings"))
 			elif not self.payment_days:
 				d.e_modified_amount = 0
 			elif not d.e_modified_amount:
@@ -164,8 +164,8 @@
 		self.total_deduction = 0
 		for d in self.get('deductions'):
 			if cint(d.d_depends_on_lwp) == 1:
-				d.d_modified_amount = rounded(flt(d.d_amount) * flt(self.payment_days)
-					/ cint(self.total_days_in_month), 2)
+				d.d_modified_amount = rounded((flt(d.d_amount) * flt(self.payment_days)
+					/ cint(self.total_days_in_month)), self.precision("d_modified_amount", "deductions"))
 			elif not self.payment_days:
 				d.d_modified_amount = 0
 			elif not d.d_modified_amount:
@@ -174,10 +174,13 @@
 			self.total_deduction += flt(d.d_modified_amount)
 
 	def calculate_net_pay(self):
+		disable_rounded_total = cint(frappe.db.get_value("Global Defaults", None, "disable_rounded_total"))
+
 		self.calculate_earning_total()
 		self.calculate_ded_total()
 		self.net_pay = flt(self.gross_pay) - flt(self.total_deduction)
-		self.rounded_total = rounded(self.net_pay)
+		self.rounded_total = rounded(self.net_pay,
+			self.precision("net_pay") if disable_rounded_total else 0)
 
 	def on_submit(self):
 		if(self.email_check == 1):
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 4982ba5..8e3aab1 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -191,3 +191,4 @@
 erpnext.patches.v5_4.fix_missing_item_images
 erpnext.patches.v5_4.stock_entry_additional_costs
 erpnext.patches.v5_4.cleanup_journal_entry
+execute:frappe.db.sql("update `tabProduction Order` pro set description = (select description from tabItem where name=pro.production_item) where ifnull(description, '') = ''")
diff --git a/erpnext/patches/v5_4/cleanup_journal_entry.py b/erpnext/patches/v5_4/cleanup_journal_entry.py
index 5de17c7..442132a 100644
--- a/erpnext/patches/v5_4/cleanup_journal_entry.py
+++ b/erpnext/patches/v5_4/cleanup_journal_entry.py
@@ -1,7 +1,7 @@
 import frappe
 
 def execute():
-	frappe.reload_doctype("Journal Entry")
+	frappe.reload_doctype("Journal Entry Account")
 	for doctype, fieldname in (
 		("Sales Order", "against_sales_order"),
 		("Purchase Order", "against_purchase_order"),
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 62f5b88..f263f34 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -98,7 +98,7 @@
 					if f in ["stock_uom", "conversion_factor"] or not item.get(f):
 						item.set(f, item_details.get(f))
 
-			if self.difference_account:
+			if self.difference_account and not item.expense_account:
 				item.expense_account = self.difference_account
 
 			if not item.transfer_qty:
diff --git a/erpnext/utilities/doctype/address/address.json b/erpnext/utilities/doctype/address/address.json
index a4d7a55..7f4143a 100644
--- a/erpnext/utilities/doctype/address/address.json
+++ b/erpnext/utilities/doctype/address/address.json
@@ -1,268 +1,268 @@
 {
- "allow_import": 1, 
- "allow_rename": 1, 
- "creation": "2013-01-10 16:34:32", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Master", 
+ "allow_import": 1,
+ "allow_rename": 1,
+ "creation": "2013-01-10 16:34:32",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Master",
  "fields": [
   {
-   "fieldname": "address_details", 
-   "fieldtype": "Section Break", 
-   "label": "", 
-   "options": "icon-map-marker", 
+   "fieldname": "address_details",
+   "fieldtype": "Section Break",
+   "label": "",
+   "options": "icon-map-marker",
    "permlevel": 0
-  }, 
+  },
   {
-   "description": "Name of person or organization that this address belongs to.", 
-   "fieldname": "address_title", 
-   "fieldtype": "Data", 
-   "in_list_view": 0, 
-   "label": "Address Title", 
-   "permlevel": 0, 
+   "description": "Name of person or organization that this address belongs to.",
+   "fieldname": "address_title",
+   "fieldtype": "Data",
+   "in_list_view": 0,
+   "label": "Address Title",
+   "permlevel": 0,
    "reqd": 0
-  }, 
+  },
   {
-   "fieldname": "address_type", 
-   "fieldtype": "Select", 
-   "in_list_view": 1, 
-   "label": "Address Type", 
-   "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther", 
-   "permlevel": 0, 
+   "fieldname": "address_type",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "label": "Address Type",
+   "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther",
+   "permlevel": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "fieldname": "address_line1", 
-   "fieldtype": "Data", 
-   "label": "Address Line 1", 
-   "permlevel": 0, 
+   "fieldname": "address_line1",
+   "fieldtype": "Data",
+   "label": "Address Line 1",
+   "permlevel": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "fieldname": "address_line2", 
-   "fieldtype": "Data", 
-   "label": "Address Line 2", 
+   "fieldname": "address_line2",
+   "fieldtype": "Data",
+   "label": "Address Line 2",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "city", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "City/Town", 
-   "permlevel": 0, 
-   "reqd": 1, 
+   "fieldname": "city",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "in_list_view": 1,
+   "label": "City/Town",
+   "permlevel": 0,
+   "reqd": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "fieldname": "state", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "State", 
-   "permlevel": 0, 
+   "fieldname": "state",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "State",
+   "permlevel": 0,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "pincode", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Pincode", 
-   "permlevel": 0, 
+   "fieldname": "pincode",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Postal Code",
+   "permlevel": 0,
    "search_index": 1
-  }, 
+  },
   {
-   "fieldname": "country", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Country", 
-   "options": "Country", 
-   "permlevel": 0, 
-   "reqd": 1, 
+   "fieldname": "country",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Country",
+   "options": "Country",
+   "permlevel": 0,
+   "reqd": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 0, 
+   "fieldname": "column_break0",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
+   "print_hide": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "email_id", 
-   "fieldtype": "Data", 
-   "label": "Email Id", 
+   "fieldname": "email_id",
+   "fieldtype": "Data",
+   "label": "Email Id",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "phone", 
-   "fieldtype": "Data", 
-   "label": "Phone", 
-   "permlevel": 0, 
+   "fieldname": "phone",
+   "fieldtype": "Data",
+   "label": "Phone",
+   "permlevel": 0,
    "reqd": 0
-  }, 
+  },
   {
-   "fieldname": "fax", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "label": "Fax", 
+   "fieldname": "fax",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "label": "Fax",
    "permlevel": 0
-  }, 
+  },
   {
-   "default": "0", 
-   "description": "", 
-   "fieldname": "is_primary_address", 
-   "fieldtype": "Check", 
-   "label": "Preferred Billing Address", 
+   "default": "0",
+   "description": "",
+   "fieldname": "is_primary_address",
+   "fieldtype": "Check",
+   "label": "Preferred Billing Address",
    "permlevel": 0
-  }, 
+  },
   {
-   "default": "0", 
-   "description": "", 
-   "fieldname": "is_shipping_address", 
-   "fieldtype": "Check", 
-   "in_list_view": 0, 
-   "label": "Preferred Shipping Address", 
+   "default": "0",
+   "description": "",
+   "fieldname": "is_shipping_address",
+   "fieldtype": "Check",
+   "in_list_view": 0,
+   "label": "Preferred Shipping Address",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "linked_with", 
-   "fieldtype": "Section Break", 
-   "label": "Reference", 
-   "options": "icon-pushpin", 
+   "fieldname": "linked_with",
+   "fieldtype": "Section Break",
+   "label": "Reference",
+   "options": "icon-pushpin",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "customer", 
-   "fieldtype": "Link", 
-   "label": "Customer", 
-   "options": "Customer", 
+   "fieldname": "customer",
+   "fieldtype": "Link",
+   "label": "Customer",
+   "options": "Customer",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Customer Name", 
-   "permlevel": 0, 
+   "fieldname": "customer_name",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Customer Name",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "supplier", 
-   "fieldtype": "Link", 
-   "label": "Supplier", 
-   "options": "Supplier", 
+   "fieldname": "supplier",
+   "fieldtype": "Link",
+   "label": "Supplier",
+   "options": "Supplier",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "supplier_name", 
-   "fieldtype": "Data", 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Supplier Name", 
-   "permlevel": 0, 
-   "read_only": 1, 
+   "fieldname": "supplier_name",
+   "fieldtype": "Data",
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Supplier Name",
+   "permlevel": 0,
+   "read_only": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "sales_partner", 
-   "fieldtype": "Link", 
-   "label": "Sales Partner", 
-   "options": "Sales Partner", 
+   "fieldname": "sales_partner",
+   "fieldtype": "Link",
+   "label": "Sales Partner",
+   "options": "Sales Partner",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break_22", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_22",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.supplier && !doc.sales_partner", 
-   "fieldname": "lead", 
-   "fieldtype": "Link", 
-   "label": "Lead", 
-   "options": "Lead", 
+   "depends_on": "eval:!doc.supplier && !doc.sales_partner",
+   "fieldname": "lead",
+   "fieldtype": "Link",
+   "label": "Lead",
+   "options": "Lead",
    "permlevel": 0
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.supplier && !doc.sales_partner", 
-   "fieldname": "lead_name", 
-   "fieldtype": "Data", 
-   "label": "Lead Name", 
-   "permlevel": 0, 
+   "depends_on": "eval:!doc.supplier && !doc.sales_partner",
+   "fieldname": "lead_name",
+   "fieldtype": "Data",
+   "label": "Lead Name",
+   "permlevel": 0,
    "read_only": 1
   }
- ], 
- "icon": "icon-map-marker", 
- "idx": 1, 
- "in_dialog": 0, 
- "modified": "2015-08-10 19:42:18.331818", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Address", 
- "owner": "Administrator", 
+ ],
+ "icon": "icon-map-marker",
+ "idx": 1,
+ "in_dialog": 0,
+ "modified": "2015-08-10 19:42:18.331819",
+ "modified_by": "Administrator",
+ "module": "Utilities",
+ "name": "Address",
+ "owner": "Administrator",
  "permissions": [
   {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "share": 1, 
-   "submit": 0, 
+   "apply_user_permissions": 1,
+   "create": 1,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "share": 1,
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase User", 
-   "share": 1, 
-   "submit": 0, 
+   "apply_user_permissions": 1,
+   "create": 1,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Purchase User",
+   "share": 1,
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance User", 
-   "share": 1, 
-   "submit": 0, 
+   "apply_user_permissions": 1,
+   "create": 1,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Maintenance User",
+   "share": 1,
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Accounts User", 
-   "share": 1, 
-   "submit": 0, 
+   "apply_user_permissions": 1,
+   "create": 1,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Accounts User",
+   "share": 1,
+   "submit": 0,
    "write": 1
   }
- ], 
- "search_fields": "customer, supplier, sales_partner, country, state", 
- "sort_field": "modified", 
+ ],
+ "search_fields": "customer, supplier, sales_partner, country, state",
+ "sort_field": "modified",
  "sort_order": "DESC"
-}
\ No newline at end of file
+}