diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py index 62cf7c6cc0..0a2178acc6 100644 --- a/accounts/page/voucher_import_tool/voucher_import_tool.py +++ b/accounts/page/voucher_import_tool/voucher_import_tool.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals import webnotes +from webnotes import _ from webnotes.utils import flt, comma_and @webnotes.whitelist() @@ -244,7 +245,10 @@ def get_data(rows, company_abbr): accounts = [c for c in rows[i+1] if c.endswith(" - " + company_abbr)] if accounts and (len(columns) != rows[i+1].index(accounts[0])): - raise Exception, """All account columns should be after standard columns and \ - on the right. Please rectify it in the file and try again.""" + raise Exception, _("""All account columns should be after \ + standard columns and on the right. + If you entered it properly, next probable reason \ + could be wrong account name. + Please rectify it in the file and try again.""") return data, start_row_idx \ No newline at end of file diff --git a/hr/doctype/attendance/attendance.py b/hr/doctype/attendance/attendance.py index 289a14eebf..67af429dd0 100644 --- a/hr/doctype/attendance/attendance.py +++ b/hr/doctype/attendance/attendance.py @@ -17,87 +17,70 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import add_days, getdate, now -from webnotes.model import db_exists +from webnotes.utils import getdate, nowdate from webnotes.model.doc import make_autoname -from webnotes.model.bean import copy_doclist -from webnotes import msgprint +from webnotes import msgprint, _ sql = webnotes.conn.sql - - class DocType: def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - #autoname function def autoname(self): self.doc.name = make_autoname(self.doc.naming_series+'.#####') - - #get employee name based on employee id selected + def get_emp_name(self): - emp_nm = sql("select employee_name from `tabEmployee` where name=%s", self.doc.employee) - - #this is done because sometimes user entered wrong employee name while uploading employee attendance - webnotes.conn.set(self.doc, 'employee_name', emp_nm and emp_nm[0][0] or '') - - ret = { 'employee_name' : emp_nm and emp_nm[0][0] or ''} - return ret + return { + "employee_name": webnotes.conn.get_value("Employee", + self.doc.employee_name, "employee_name") + } - #validation for duplicate record def validate_duplicate_record(self): - res = sql("select name from `tabAttendance` where employee = '%s' and att_date = '%s' and not name = '%s' and docstatus = 1"%(self.doc.employee,self.doc.att_date, self.doc.name)) + res = sql("""select name from `tabAttendance` where employee = %s and att_date = %s + and name != %s and docstatus = 1""", + (self.doc.employee, self.doc.att_date, self.doc.name)) if res: - msgprint("Employee's attendance already marked.") - raise Exception + msgprint(_("Attendance for the employee: ") + self.doc.employee + + _(" already marked"), raise_exception=1) - - #check for already record present in leave transaction for same date def check_leave_record(self): if self.doc.status == 'Present': - chk = sql("select name from `tabLeave Application` where employee=%s and (from_date <= %s and to_date >= %s) and docstatus!=2", (self.doc.employee, self.doc.att_date, self.doc.att_date)) - if chk: - msgprint("Leave Application created for employee "+self.doc.employee+" whom you are trying to mark as 'Present' ") - raise Exception + leave = sql("""select name from `tabLeave Application` + where employee = %s and %s between from_date and to_date and status = 'Approved' + and docstatus = 1""", (self.doc.employee, self.doc.att_date)) + + if leave: + webnotes.msgprint(_("Employee: ") + self.doc.employee + _(" was on leave on ") + + self.doc.att_date + _(". You can not mark his attendance as 'Present'"), + raise_exception=1) - def validate_fiscal_year(self): from accounts.utils import validate_fiscal_year validate_fiscal_year(self.doc.att_date, self.doc.fiscal_year) def validate_att_date(self): - import datetime - if getdate(self.doc.att_date)>getdate(datetime.datetime.now().date().strftime('%Y-%m-%d')): - msgprint("Attendance can not be marked for future dates") - raise Exception + if getdate(self.doc.att_date) > getdate(nowdate()): + msgprint(_("Attendance can not be marked for future dates"), raise_exception=1) - # Validate employee - #------------------- def validate_employee(self): - emp = sql("select name, status from `tabEmployee` where name = '%s'" % self.doc.employee) + emp = sql("select name from `tabEmployee` where name = %s and status = 'Active'", + self.doc.employee) if not emp: - msgprint("Employee: %s does not exists in the system" % self.doc.employee, raise_exception=1) - elif emp[0][1] != 'Active': - msgprint("Employee: %s is not Active" % self.doc.employee, raise_exception=1) + msgprint(_("Employee: ") + self.doc.employee + + _(" not active or does not exists in the system"), raise_exception=1) def validate(self): import utilities utilities.validate_status(self.doc.status, ["Present", "Absent", "Half Day"]) - self.validate_fiscal_year() self.validate_att_date() self.validate_duplicate_record() self.check_leave_record() def on_update(self): - #self.validate() - - #this is done because sometimes user entered wrong employee name while uploading employee attendance - x=self.get_emp_name() - - def on_submit(self): - #this is done because while uploading attendance chnage docstatus to 1 i.e. submit - webnotes.conn.set(self.doc,'docstatus',1) - pass + # this is done because sometimes user entered wrong employee name + # while uploading employee attendance + employee_name = webnotes.conn.get_value("Employee", self.doc.employee, "employee_name") + webnotes.conn.set(self.doc, 'employee_name', employee_name) \ No newline at end of file