diff --git a/erpnext/__init__.py b/erpnext/__init__.py index e9bdbf94a3..a81cc85625 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.1.58' +__version__ = '10.1.59' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index 1401a4d465..cb4c1908fb 100755 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -49,8 +49,7 @@ class Employee(NestedSet): self.validate_onboarding_process() if self.user_id: - self.validate_for_enabled_user_id() - self.validate_duplicate_user_id() + self.validate_user_details() else: existing_user_id = frappe.db.get_value("Employee", self.name, "user_id") if existing_user_id: @@ -60,6 +59,14 @@ class Employee(NestedSet): def set_employee_name(self): self.employee_name = ' '.join(filter(lambda x: x, [self.first_name, self.middle_name, self.last_name])) + def validate_user_details(self): + data = frappe.db.get_value('User', + self.user_id, ['enabled', 'user_image'], as_dict=1) + + self.image = data.get("user_image") + self.validate_for_enabled_user_id(data.get("enabled", 0)) + self.validate_duplicate_user_id() + def update_nsm_model(self): frappe.utils.nestedset.update_nsm(self) @@ -143,10 +150,10 @@ class Employee(NestedSet): if self.status == 'Left' and not self.relieving_date: throw(_("Please enter relieving date.")) - def validate_for_enabled_user_id(self): + def validate_for_enabled_user_id(self, enabled): if not self.status == 'Active': return - enabled = frappe.db.get_value("User", self.user_id, "enabled") + if enabled is None: frappe.throw(_("User {0} does not exist").format(self.user_id)) if enabled == 0: diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py index 5cf95701a0..09cdd547f5 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.py +++ b/erpnext/hr/doctype/expense_claim/expense_claim.py @@ -215,10 +215,11 @@ class ExpenseClaim(AccountsController): self.total_advance_amount += flt(d.allocated_amount) if self.total_advance_amount: - if flt(self.total_advance_amount) > flt(self.total_claimed_amount): + precision = self.precision("total_advance_amount") + if flt(self.total_advance_amount, precision) > flt(self.total_claimed_amount, precision): frappe.throw(_("Total advance amount cannot be greater than total claimed amount")) if self.total_sanctioned_amount \ - and flt(self.total_advance_amount) > flt(self.total_sanctioned_amount): + and flt(self.total_advance_amount, precision) > flt(self.total_sanctioned_amount, precision): frappe.throw(_("Total advance amount cannot be greater than total sanctioned amount")) def validate_sanctioned_amount(self): diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 26c33061a9..9c569488c9 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -571,3 +571,4 @@ erpnext.patches.v11_0.add_sales_stages erpnext.patches.v11_0.ewaybill_fields_gst_india erpnext.patches.v11_0.drop_column_max_days_allowed erpnext.patches.v11_0.change_healthcare_desktop_icons +erpnext.patches.v10_0.update_user_image_in_employee diff --git a/erpnext/patches/v10_0/update_user_image_in_employee.py b/erpnext/patches/v10_0/update_user_image_in_employee.py new file mode 100644 index 0000000000..72d5d2a857 --- /dev/null +++ b/erpnext/patches/v10_0/update_user_image_in_employee.py @@ -0,0 +1,19 @@ +# Copyright (c) 2017, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + frappe.reload_doc('hr', 'doctype', 'employee') + + frappe.db.sql(""" + UPDATE + `tabEmployee`, `tabUser` + SET + `tabEmployee`.image = `tabUser`.user_image + WHERE + `tabEmployee`.user_id = `tabUser`.name and + `tabEmployee`.user_id is not null and + `tabEmployee`.user_id != '' and `tabEmployee`.image is null + """)