From 45b7d17ee8dee90dff12150461f5967fc852535e Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 5 Aug 2014 17:01:35 +0530 Subject: [PATCH 1/4] Employee can be reselected but not changed in salary structure --- .../hr/doctype/salary_structure/salary_structure.js | 2 -- .../hr/doctype/salary_structure/salary_structure.py | 12 +++++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js index ee42d0cf8b0..ddaf88cad78 100644 --- a/erpnext/hr/doctype/salary_structure/salary_structure.js +++ b/erpnext/hr/doctype/salary_structure/salary_structure.js @@ -14,8 +14,6 @@ cur_frm.cscript.refresh = function(doc, dt, dn){ if((!doc.__islocal) && (doc.is_active == 'Yes')){ cur_frm.add_custom_button(__('Make Salary Slip'), cur_frm.cscript['Make Salary Slip']); } - - cur_frm.toggle_enable('employee', doc.__islocal); } cur_frm.cscript['Make Salary Slip'] = function() { diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py index f3d2eb11845..97935e6ba4d 100644 --- a/erpnext/hr/doctype/salary_structure/salary_structure.py +++ b/erpnext/hr/doctype/salary_structure/salary_structure.py @@ -54,18 +54,28 @@ class SalaryStructure(Document): def check_existing(self): ret = frappe.db.sql("""select name from `tabSalary Structure` where is_active = 'Yes' and employee = %s and name!=%s""", (self.employee,self.name)) + if ret and self.is_active=='Yes': - frappe.throw(_("Another Salary Structure {0} is active for employee {0}. Please make its status 'Inactive' to proceed.").format(cstr(ret), self.employee)) + frappe.throw(_("Another Salary Structure {0} is active for employee {1}. Please make its status 'Inactive' to proceed.").format(cstr(ret[0][0]), self.employee)) def validate_amount(self): if flt(self.net_pay) < 0: frappe.throw(_("Net pay cannot be negative")) + def validate_employee(self): + old_employee = frappe.db.get_value("Salary Structure", self.name, "employee") + print old_employee + if old_employee and self.employee != old_employee: + frappe.throw(_("Employee can not be changed")) + + def validate(self): self.check_existing() self.validate_amount() + self.validate_employee() set_employee_name(self) + @frappe.whitelist() def make_salary_slip(source_name, target_doc=None): def postprocess(source, target): From 9f7e00bb3a1bb0f8baf4259ba99bb599cd27df1b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 5 Aug 2014 17:02:20 +0530 Subject: [PATCH 2/4] Send salary slip mail after submit via Salary Manager --- erpnext/hr/doctype/salary_manager/salary_manager.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py index 7d962e3c693..61e6f6988df 100644 --- a/erpnext/hr/doctype/salary_manager/salary_manager.py +++ b/erpnext/hr/doctype/salary_manager/salary_manager.py @@ -128,11 +128,8 @@ class SalaryManager(Document): for ss in ss_list: ss_obj = frappe.get_doc("Salary Slip",ss[0]) try: - frappe.db.set(ss_obj, 'email_check', cint(self.send_email)) - if cint(self.send_email) == 1: - ss_obj.send_mail_funct() - - frappe.db.set(ss_obj, 'docstatus', 1) + ss_obj.email_check = self.send_email + ss_obj.submit() except Exception,e: not_submitted_ss.append(ss[0]) frappe.msgprint(e) From fd90571d49700ec2da72a4a4aacbc91355bff8fd Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 6 Aug 2014 15:47:55 +0530 Subject: [PATCH 3/4] fiscal year validation in financial statement --- erpnext/accounts/report/financial_statements.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 30a0fa700e6..9978bb44d47 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -11,9 +11,12 @@ def get_period_list(fiscal_year, periodicity, from_beginning=False): """Get a list of dict {"to_date": to_date, "key": key, "label": label} Periodicity can be (Yearly, Quarterly, Monthly)""" - start_date, end_date = frappe.db.get_value("Fiscal Year", fiscal_year, ["year_start_date", "year_end_date"]) - start_date = getdate(start_date) - end_date = getdate(end_date) + fy_start_end_date = frappe.db.get_value("Fiscal Year", fiscal_year, ["year_start_date", "year_end_date"]) + if not fy_start_end_date: + frappe.throw(_("Fiscal Year {0} not found.").format(fiscal_year)) + + start_date = getdate(fy_start_end_date[0]) + end_date = getdate(fy_start_end_date[1]) if periodicity == "Yearly": period_list = [_dict({"to_date": end_date, "key": fiscal_year, "label": fiscal_year})] From 7881df21383c13861b313538151fd268de979156 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 6 Aug 2014 17:29:07 +0530 Subject: [PATCH 4/4] minor fix --- erpnext/hr/doctype/salary_structure/salary_structure.py | 1 - 1 file changed, 1 deletion(-) diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py index 97935e6ba4d..93b0c2645fd 100644 --- a/erpnext/hr/doctype/salary_structure/salary_structure.py +++ b/erpnext/hr/doctype/salary_structure/salary_structure.py @@ -64,7 +64,6 @@ class SalaryStructure(Document): def validate_employee(self): old_employee = frappe.db.get_value("Salary Structure", self.name, "employee") - print old_employee if old_employee and self.employee != old_employee: frappe.throw(_("Employee can not be changed"))