Merge branch 'master' into edge

This commit is contained in:
Anand Doshi 2013-03-05 17:06:36 +05:30
commit 95bba2e492
26 changed files with 364 additions and 627 deletions

View File

@ -64,13 +64,8 @@ class DocType:
def validate_fiscal_year(self): def validate_fiscal_year(self):
fy=sql("select year_start_date from `tabFiscal Year` where name='%s'" % \ from accounts.utils import validate_fiscal_year
self.doc.fiscal_year) validate_fiscal_year(self.doc.att_date, self.doc.fiscal_year)
ysd=fy and fy[0][0] or ""
yed=add_days(str(ysd),365)
if str(self.doc.att_date) < str(ysd) or str(self.doc.att_date) > str(yed):
msgprint("'%s' Not Within The Fiscal Year selected"%(self.doc.att_date))
raise Exception
def validate_att_date(self): def validate_att_date(self):
import datetime import datetime

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,66 +0,0 @@
// ERPNext - web based ERP (http://erpnext.com)
// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
cur_frm.cscript.onload = function(doc,cdt,cdn){
cur_frm.log_div = $a(cur_frm.fields_dict['import_log1'].wrapper,'div','',{border:'1px solid #CCC', backgroundColor:'#DDD',width : '100%', height : '300px', overflow : 'auto'});
hide_field('import_log1')
doc.att_fr_date = get_today();
doc.file_list = '';
doc.overwrite = 0;
refresh_many(['att_fr_date','file_list','overwrite']);
}
//download attendance template - csv file
cur_frm.cscript.get_template = function(doc,cdt,cdn){
if(doc.att_to_date && !doc.att_fr_date)
alert("Please enter 'Attendance To Date'");
else if(doc.att_to_date && doc.att_fr_date && doc.att_to_date < doc.att_fr_date)
alert("Attendance to date cannot be less than from date.");
else
$c_obj_csv(make_doclist(cdt,cdn),'get_att_list','');
}
//---------------------------------------------------------
cur_frm.cscript.import = function(doc,cdt,cdn){
if(!doc.file_list){
alert("Please upload attendance data CSV file");
}
else{
var call_back = function(r,rt){
cur_frm.log_div.innerHTML = '';
if(r.message)
cur_frm.log_div.innerHTML = r.message;
cur_frm.cscript.refresh(doc,cdt,cdn);
}
$c_obj(make_doclist(cdt,cdn),'import_att_data','',call_back);
}
cur_frm.cscript.refresh(doc,cdt,cdn);
}
//====================================================
cur_frm.cscript.refresh = function(doc,cdt,cdn){
if(cur_frm.log_div.innerHTML == '')
hide_field('import_log1');
else
unhide_field('import_log1');
refresh_field('import_log1');
}

View File

@ -1,100 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, cstr, formatdate, getdate
from webnotes import msgprint
sql = webnotes.conn.sql
class DocType:
def __init__(self,d,dt):
self.doc, self.doclist = d,dt
def get_att_list(self):
lst = [['Attendance','','','Please fill columns which are Mandatory.',' Please do not modify the structure','',''],['','','','','','',''],['[Mandatory]','','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]'],['Employee','Employee Name','Attendance Date','Status','Fiscal Year','Company','Naming Series']]
dt = self.date_diff_list() # get date list inbetween from date and to date
att_dt = self.get_att_data() # get default attendance data like fiscal yr, company, naming series
fy, comp, sr = att_dt['fy'], att_dt['comp'], att_dt['sr']
res = sql("select name, employee_name from `tabEmployee` where status = 'Active' and docstatus !=2")
for d in dt:
for r in res:
lst.append([r[0],r[1],d,'',fy,comp,sr])
return lst
# get date list inbetween from date and to date
def date_diff_list(self):
import datetime
if self.doc.att_to_date:
r = (getdate(self.doc.att_to_date)+datetime.timedelta(days=1)-getdate(self.doc.att_fr_date)).days
else:
r = 1
dateList = [getdate(self.doc.att_fr_date)+datetime.timedelta(days=i) for i in range(0,r)]
dt=([formatdate(cstr(date)) for date in dateList])
return dt
def get_att_data(self):
import webnotes.defaults
fy = webnotes.defaults.get_global_default('fiscal_year')
comp = webnotes.defaults.get_user_default('company')
#get naming series of attendance
import webnotes.model.doctype
docfield = webnotes.model.doctype.get('Attendance')
series = [d.options for d in docfield if d.doctype == 'DocField' and d.fieldname == 'naming_series']
if not series:
msgprint("Please create naming series for Attendance.\nGo to Setup--> Numbering Series.")
raise Exception
else:
sr = series[0] or ''
return {'fy':fy,'comp':comp,'sr':sr}
def import_att_data(self):
filename = self.doc.file_list.split(',')
if not filename:
msgprint("Please attach a .CSV File.")
raise Exception
if filename[0].find('.csv') < 0:
raise Exception
if not filename and filename[0] and file[1]:
msgprint("Please Attach File. ")
raise Exception
from webnotes.utils import file_manager
fn, content = file_manager.get_file(filename[1])
# NOTE: Don't know why this condition exists
if not isinstance(content, basestring) and hasattr(content, 'tostring'):
content = content.tostring()
import webnotes.model.import_docs
im = webnotes.model.import_docs.CSVImport()
out = im.import_csv(content,self.doc.import_date_format, cint(self.doc.overwrite))
return out

View File

@ -1,136 +0,0 @@
[
{
"creation": "2013-01-10 16:34:13",
"docstatus": 0,
"modified": "2013-01-22 14:55:57",
"modified_by": "Administrator",
"owner": "harshada@webnotestech.com"
},
{
"allow_attach": 1,
"doctype": "DocType",
"issingle": 1,
"max_attachments": 1,
"module": "HR",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Attendance Control Panel",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Attendance Control Panel",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0,
"write": 1
},
{
"doctype": "DocType",
"name": "Attendance Control Panel"
},
{
"description": "Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.\nFill data in the template. Save the template in CSV format.\nAll attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.",
"doctype": "DocField",
"fieldname": "download_template",
"fieldtype": "Section Break",
"label": "Download Template"
},
{
"description": "Selected Attendance date will comes in the attendance template.",
"doctype": "DocField",
"fieldname": "att_fr_date",
"fieldtype": "Date",
"label": "Attendance From Date",
"oldfieldname": "attenadnce_date",
"oldfieldtype": "Date"
},
{
"doctype": "DocField",
"fieldname": "get_template",
"fieldtype": "Button",
"label": "Get Template",
"oldfieldtype": "Button"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break"
},
{
"description": "All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.",
"doctype": "DocField",
"fieldname": "att_to_date",
"fieldtype": "Date",
"label": "Attendance To Date"
},
{
"description": "To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".\nSelect the date format as attendance date format in CSV file.\nClick on \"Import\".",
"doctype": "DocField",
"fieldname": "upload_attendance_data",
"fieldtype": "Section Break",
"label": "Upload Attendance Data"
},
{
"doctype": "DocField",
"fieldname": "import_date_format",
"fieldtype": "Select",
"label": "Import Date Format ",
"options": "yyyy-mm-dd\nmm/dd/yyyy\nmm/dd/yy\ndd-mm-yyyy\ndd/mm/yyyy"
},
{
"doctype": "DocField",
"fieldname": "overwrite",
"fieldtype": "Check",
"label": "Overwrite"
},
{
"doctype": "DocField",
"fieldname": "import",
"fieldtype": "Button",
"label": "Import"
},
{
"doctype": "DocField",
"fieldname": "file_list",
"fieldtype": "Text",
"hidden": 1,
"label": "File List",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "import_log",
"fieldtype": "Section Break",
"label": "Import Log"
},
{
"doctype": "DocField",
"fieldname": "import_log1",
"fieldtype": "HTML",
"label": "Import Log1"
},
{
"doctype": "DocPerm",
"role": "System Manager"
},
{
"doctype": "DocPerm",
"role": "HR User"
},
{
"doctype": "DocPerm",
"role": "HR Manager"
}
]

View File

@ -1,24 +0,0 @@
[
"Attendance From Date",
"Import Date Format ",
"HR",
"Attendance To Date",
"Upload Attendance Data",
"Import",
"Get Template",
"mm/dd/yyyy",
"File List",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".\nSelect the date format as attendance date format in CSV file.\nClick on \"Import\".",
"Import Log",
"dd-mm-yyyy",
"Attendance Control Panel",
"Import Log1",
"dd/mm/yyyy",
"Selected Attendance date will comes in the attendance template.",
"yyyy-mm-dd",
"mm/dd/yy",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.\nFill data in the template. Save the template in CSV format.\nAll attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.",
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.",
"Overwrite",
"Download Template"
]

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "\u062c\u0645\u064a\u0639 \u0627\u0644\u062d\u0636\u0648\u0631 \u064a\u0639\u0648\u062f \u0641\u064a \u0627\u0644\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u062d\u0636\u0648\u0631 \u0645\u062e\u062a\u0627\u0631\u0629 \u0645\u0646 \u062a\u0627\u0631\u064a\u062e \u0648\u0627\u0644\u062d\u0636\u0648\u0631 \u062d\u062a\u0649 \u0627\u0644\u0622\u0646 \u0648\u0633\u0648\u0641 \u062a\u0623\u062a\u064a \u0641\u064a \u0627\u0644\u0642\u0627\u0644\u0628 \u0645\u0639 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646.",
"Attendance Control Panel": "\u0627\u0644\u062d\u0636\u0648\u0631 \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645",
"Attendance From Date": "\u0627\u0644\u062d\u0636\u0648\u0631 \u0645\u0646 \u062a\u0627\u0631\u064a\u062e",
"Attendance To Date": "\u0627\u0644\u062d\u0636\u0648\u0631 \u0625\u0644\u0649 \u062a\u0627\u0631\u064a\u062e",
"Download Template": "\u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0644\u0628",
"File List": "\u0645\u0644\u0641 \u0642\u0627\u0626\u0645\u0629",
"Get Template": "\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0644\u0628",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0644\u0628 \u0645\u0646 \u0627\u0644\u062d\u0636\u0648\u0631 \u0627\u0644\u0630\u064a \u062a\u0631\u064a\u062f \u0627\u0633\u062a\u064a\u0631\u0627\u062f CSV \u0641\u064a (\u0627\u0644\u0642\u064a\u0645 \u0627\u0644\u0645\u0641\u0635\u0648\u0644\u0629 \u0641\u0635\u0644) format.Fill \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u064a \u0627\u0644\u0642\u0627\u0644\u0628. \u062d\u0641\u0638 \u0627\u0644\u0642\u0627\u0644\u0628 \u0641\u064a \u0627\u0644\u062d\u0636\u0648\u0631 format.All CSV \u064a\u0639\u0648\u062f &#39;\u0627\u0644\u062d\u0636\u0648\u0631 \u0645\u0646 \u062a\u0627\u0631\u064a\u062e&#39; \u0627\u0644\u0645\u0646\u062a\u0635\u0641 \u0648 &quot;\u0627\u0644\u062d\u0636\u0648\u0631 \u0625\u0644\u0649 \u062a\u0627\u0631\u064a\u062e&quot; \u0633\u064a\u0623\u062a\u064a \u0641\u064a \u0627\u0644\u0642\u0627\u0644\u0628 \u0645\u0639 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646.",
"HR": "HR",
"Import": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f",
"Import Date Format ": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f \u062a\u0646\u0633\u064a\u0642 \u0627\u0644\u062a\u0627\u0631\u064a\u062e",
"Import Log": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f \u062f\u062e\u0648\u0644",
"Import Log1": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f Log1",
"Overwrite": "\u0627\u0644\u0643\u062a\u0627\u0628\u0629",
"Selected Attendance date will comes in the attendance template.": "\u0633\u0648\u0641 \u064a\u0623\u062a\u064a \u0645\u062e\u062a\u0627\u0631\u0629 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062d\u0636\u0648\u0631 \u0641\u064a \u0642\u0627\u0644\u0628 \u0627\u0644\u062d\u0636\u0648\u0631.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062d\u0636\u0648\u0631\u060c \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0632\u0631 &quot;\u0625\u0636\u0627\u0641\u0629&quot;\u060c \u062d\u062f\u062f \u0627\u0644\u0645\u0644\u0641 CSV \u062d\u0641\u0638 \u0648\u0627\u0646\u0642\u0631 \u0639\u0644\u0649 &quot;\u062a\u062d\u0645\u064a\u0644&quot;. \u062d\u062f\u062f \u062a\u0646\u0633\u064a\u0642 \u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0648\u062a\u0646\u0633\u064a\u0642 \u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062d\u0636\u0648\u0631 \u0641\u064a file.Click CSV \u0639\u0644\u0649 &quot;\u0627\u0633\u062a\u064a\u0631\u0627\u062f&quot;.",
"Upload Attendance Data": "\u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062d\u0636\u0648\u0631",
"dd-mm-yyyy": "DD-MM-YYYY",
"dd/mm/yyyy": "\u0627\u0644\u064a\u0648\u0645 / \u0627\u0644\u0634\u0647\u0631 / \u0627\u0644\u0633\u0646\u0629",
"mm/dd/yy": "\u0634\u0647\u0631 / \u064a\u0648\u0645 / \u0633\u0646\u0629",
"mm/dd/yyyy": "\u0645\u0645 / \u0627\u0644\u064a\u0648\u0645 / \u0627\u0644\u0633\u0646\u0629",
"yyyy-mm-dd": "YYYY-MM-DD"
}

View File

@ -1,21 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "All die Teilnahme datiert dazwischen gew\u00e4hlt Teilnahme ab Datum und die Teilnahme an Datum wird in der Vorlage mit den Mitarbeitern Liste kommen.",
"Attendance Control Panel": "Teilnahme Control Panel",
"Attendance From Date": "Teilnahme ab-Datum",
"Attendance To Date": "Teilnahme To Date",
"Download Template": "Vorlage herunterladen",
"File List": "Dateiliste",
"Get Template": "Holen Template",
"HR": "HR",
"Import": "Importieren",
"Import Log": "Import-Logbuch",
"Import Log1": "Importieren Log1",
"Overwrite": "\u00dcberschreiben",
"Selected Attendance date will comes in the attendance template.": "Ausgew\u00e4hlte Datum wird Teilnahme in der Anwesenheitsliste Vorlage essen.",
"Upload Attendance Data": "Hochladen Teilnahme Daten",
"dd-mm-yyyy": "dd-mm-yyyy",
"dd/mm/yyyy": "dd / mm / yyyy",
"mm/dd/yy": "mm / tt / jj",
"mm/dd/yyyy": "mm / dd / yyyy",
"yyyy-mm-dd": "yyyy-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Todas las fechas de asistencia Asistencia inbetween seleccionada Desde la fecha y asistencia hasta la fecha se vienen en la plantilla con la lista de empleados.",
"Attendance Control Panel": "La asistencia del Panel de control",
"Attendance From Date": "Desde la fecha de Asistencia",
"Attendance To Date": "Asistencia hasta la fecha",
"Download Template": "Descargue la plantilla",
"File List": "Lista de archivos",
"Get Template": "C\u00f3mo Plantilla",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "Obtener la plantilla de la Asistencia para el que desea importar en formato CSV (valores separada por comas) format.Fill datos en la plantilla. Guarde la plantilla en formato CSV asistencia format.All data &#39;Asistencia De Date&#39; entre medio y &quot;asistencia hasta la fecha&quot; vendr\u00e1 en la plantilla con la lista de empleados.",
"HR": "HR",
"Import": "Importar",
"Import Date Format ": "Importar formato de fecha",
"Import Log": "Importar sesi\u00f3n",
"Import Log1": "Importar Registro1",
"Overwrite": "Sobrescribir",
"Selected Attendance date will comes in the attendance template.": "Asistencia fecha seleccionada se presenta en la plantilla de la asistencia.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "Para importar los datos de asistencia, haga clic en el bot\u00f3n &quot;Agregar&quot;, seleccione el archivo CSV guardado y haga clic en &quot;Upload&quot;. Seleccione el formato de fecha en formato de fecha en formato CSV asistencia file.Click en &quot;Importar&quot;.",
"Upload Attendance Data": "Subir los datos de asistencia",
"dd-mm-yyyy": "dd-mm-aaaa",
"dd/mm/yyyy": "dd / mm / aaaa",
"mm/dd/yy": "mm / dd / aa",
"mm/dd/yyyy": "mm / dd / aaaa",
"yyyy-mm-dd": "aaaa-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Toutes les dates de pr\u00e9sence de pr\u00e9sence inbetween s\u00e9lectionn\u00e9 Date de d\u00e9but et de pr\u00e9sence \u00e0 ce jour viendra dans le mod\u00e8le avec la liste des employ\u00e9s.",
"Attendance Control Panel": "Panneau de configuration de pr\u00e9sence",
"Attendance From Date": "Participation De Date",
"Attendance To Date": "La participation \u00e0 ce jour",
"Download Template": "T\u00e9l\u00e9charger le mod\u00e8le",
"File List": "Liste des fichiers",
"Get Template": "Obtenez mod\u00e8le",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "Obtenez le gabarit de la Participation pour lequel vous voulez importer au format CSV (valeurs s\u00e9par\u00e9es par des virgules) format.Fill donn\u00e9es dans le mod\u00e8le. Enregistrez le mod\u00e8le au format CSV format.All pr\u00e9sence remonte \u00abFr\u00e9quentation De Date &#39;inbetween et\u00ab Participation \u00e0 jour \u00bbviendra dans le mod\u00e8le avec la liste des employ\u00e9s.",
"HR": "RH",
"Import": "Importer",
"Import Date Format ": "Format de la date d&#39;importation",
"Import Log": "Importer Connexion",
"Import Log1": "Importer Log1",
"Overwrite": "\u00c9craser",
"Selected Attendance date will comes in the attendance template.": "Date de Participation est s\u00e9lectionn\u00e9 dans le mod\u00e8le de participation.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "Pour importer les donn\u00e9es de fr\u00e9quentation, cliquez sur &quot;Ajouter&quot;, s\u00e9lectionnez le fichier CSV enregistr\u00e9 et cliquez sur &quot;Upload&quot;. S\u00e9lectionnez le format de date au format CSV date de fr\u00e9quentation dans file.Click sur &quot;Importer&quot;.",
"Upload Attendance Data": "Envoyez donn\u00e9es sur la fr\u00e9quentation",
"dd-mm-yyyy": "jj-mm-aaaa",
"dd/mm/yyyy": "jj / mm / aaaa",
"mm/dd/yy": "jj / mm / aa",
"mm/dd/yyyy": "jj / mm / aaaa",
"yyyy-mm-dd": "aaaa-mm-jj"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "\u0938\u092d\u0940 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0924\u093f\u0925\u093f\u092f\u093e\u0901 inbetween \u0924\u093f\u0925\u093f \u0914\u0930 \u0924\u093f\u0925\u093f \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u092e\u0947\u0902 \u0915\u0930\u094d\u092e\u091a\u093e\u0930\u093f\u092f\u094b\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940 \u0915\u0947 \u0938\u093e\u0925 \u0906 \u091c\u093e\u090f\u0917\u093e \u0938\u0947 \u091a\u092f\u0928\u093f\u0924 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f.",
"Attendance Control Panel": "\u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923 \u0915\u0915\u094d\u0937",
"Attendance From Date": "\u0926\u093f\u0928\u093e\u0902\u0915 \u0938\u0947 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f",
"Attendance To Date": "\u0924\u093f\u0925\u093f \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f",
"Download Template": "\u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u0921\u093e\u0909\u0928\u0932\u094b\u0921 \u0915\u0930\u0947\u0902",
"File List": "\u092b\u093c\u093e\u0907\u0932 \u0938\u0942\u091a\u0940",
"Get Template": "\u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u091c\u093e\u0913",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "\u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0915\u0940 \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u091c\u093f\u0938\u0915\u0947 \u0932\u093f\u090f \u0906\u092a CSV \u092e\u0947\u0902 \u0906\u092f\u093e\u0924 \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f (\u0915\u0949\u092e\u093e \u0938\u0947 \u0905\u0932\u0917 \u092e\u093e\u0928) \u092e\u0947\u0902 format.Fill \u0921\u0947\u091f\u093e \u091a\u093e\u0939\u0924\u0947. CSV format.All \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u092e\u0947\u0902 \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u0938\u0939\u0947\u091c\u0947\u0902 \u0924\u093f\u0925\u093f\u092f\u093e\u0901 inbetween \u0914\u0930 \u0915\u0930\u094d\u092e\u091a\u093e\u0930\u093f\u092f\u094b\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940 \u0915\u0947 \u0938\u093e\u0925 \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u092e\u0947\u0902 \u0906 \u091c\u093e\u090f\u0917\u093e &#39;\u0924\u093f\u0925\u093f&#39; \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f &#39;\u0924\u093f\u0925\u093f \u0938\u0947 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f&#39;.",
"HR": "\u092e\u093e\u0928\u0935 \u0938\u0902\u0938\u093e\u0927\u0928",
"Import": "\u0906\u092f\u093e\u0924",
"Import Date Format ": "\u0906\u092f\u093e\u0924 \u0926\u093f\u0928\u093e\u0902\u0915 \u0938\u094d\u0935\u0930\u0942\u092a",
"Import Log": "\u092a\u094d\u0930\u0935\u0947\u0936 \u0915\u0930\u0947\u0902 \u0906\u092f\u093e\u0924",
"Import Log1": "Log1 \u0906\u092f\u093e\u0924",
"Overwrite": "\u0905\u0927\u093f\u0932\u0947\u0916\u093f\u0924 \u0915\u0930\u0947\u0902",
"Selected Attendance date will comes in the attendance template.": "\u091a\u092f\u0928\u093f\u0924 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0924\u093e\u0930\u0940\u0916 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u092e\u0947\u0902 \u0906\u0924\u093e \u0939\u0948.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "\u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0921\u0947\u091f\u093e \u0906\u092f\u093e\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f, &quot;\u091c\u094b\u0921\u093c\u0947\u0902&quot; \u092c\u091f\u0928 \u092a\u0930 \u0915\u094d\u0932\u093f\u0915 \u0915\u0930\u0947\u0902, \u092c\u091a\u093e\u092f\u093e CSV \u092b\u093c\u093e\u0907\u0932 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902 \u0914\u0930 &quot;\u0905\u092a\u0932\u094b\u0921&quot; \u092a\u0930 \u0915\u094d\u0932\u093f\u0915 \u0915\u0930\u0947\u0902 CSV file.Click \u092e\u0947\u0902 &quot;\u0906\u092f\u093e\u0924&quot; \u092a\u0930 \u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0926\u093f\u0928\u093e\u0902\u0915 \u0938\u094d\u0935\u0930\u0942\u092a \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0926\u093f\u0928\u093e\u0902\u0915 \u0938\u094d\u0935\u0930\u0942\u092a \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902.",
"Upload Attendance Data": "\u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0921\u0947\u091f\u093e \u0905\u092a\u0932\u094b\u0921",
"dd-mm-yyyy": "\u0921\u0940\u0921\u0940-mm-yyyy",
"dd/mm/yyyy": "dd / mm / yyyy",
"mm/dd/yy": "dd / mm / yy",
"mm/dd/yyyy": "dd / mm / yyyy",
"yyyy-mm-dd": "yyyy-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Sve stadionu datira izme\u0111u ta dva odabrana Gledatelji od datuma i posje\u0107enost do danas \u0107e do\u0107i u predlo\u0161ku sa zaposlenicima popisu.",
"Attendance Control Panel": "Gledatelja Upravlja\u010dka plo\u010da",
"Attendance From Date": "Gledatelja Od datuma",
"Attendance To Date": "Gledatelja do danas",
"Download Template": "Preuzmite predlo\u017eak",
"File List": "Popis datoteka",
"Get Template": "Nabavite predlo\u0161ka",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "Nabavite slikovni Gledatelji za koje \u017eelite uvesti u CSV (vrijednosti odvojenih zarezom) format.Fill podataka u predlo\u017eak. Spremi predlo\u017eak u CSV format.All prisustvo datira izme\u0111u ta dva &#39;Gledatelji od datuma&#39; i &#39;posje\u0107enost do danas&#39; \u0107e do\u0107i u predlo\u0161ku sa zaposlenicima popisu.",
"HR": "HR",
"Import": "Uvoz",
"Import Date Format ": "Uvoz Datum Format",
"Import Log": "Uvoz Prijavite",
"Import Log1": "Uvoz Log1",
"Overwrite": "Pisati preko",
"Selected Attendance date will comes in the attendance template.": "Odabrani posje\u0107enost datum dolazi u posje\u0107enosti predlo\u0161ku.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "Za uvoz poha\u0111anje podatke, kliknite na &quot;Dodaj&quot; gumb, odaberite spremljenu CSV datoteku i kliknite na &quot;Prenesi&quot;. Odaberite format datuma kao posje\u0107enosti datumu formatu CSV file.Click na &quot;uvoz&quot;.",
"Upload Attendance Data": "Prenesi Gledatelji podataka",
"dd-mm-yyyy": "dd-mm-yyyy",
"dd/mm/yyyy": "dd / mm / gggg",
"mm/dd/yy": "dd / mm / gg",
"mm/dd/yyyy": "dd / mm / gggg",
"yyyy-mm-dd": "gggg-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Alle aanwezigheid dateert inbetween geselecteerd Aanwezigheid Van Datum en Aanwezigheid graag: zal komen in de sjabloon met de medewerkers lijst.",
"Attendance Control Panel": "Aanwezigheid Control Panel",
"Attendance From Date": "Aanwezigheid Van Datum",
"Attendance To Date": "Aanwezigheid graag:",
"Download Template": "Download Template",
"File List": "File List",
"Get Template": "Get Sjabloon",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "Klik hier voor de template van de Aanwezigheid waarvoor u wilt importeren in CSV (Comma gescheiden waarden) format.Fill gegevens in het sjabloon. Sla de sjabloon op in CSV format.All aanwezigheid dateert inbetween &#39;Aanwezigheid Van Datum&#39; en &#39;Aanwezigheid graag:&#39; zal komen in de sjabloon met de medewerkers lijst.",
"HR": "HR",
"Import": "Importeren",
"Import Date Format ": "Import Datumnotatie",
"Import Log": "Importeren Inloggen",
"Import Log1": "Importeren Log1",
"Overwrite": "Beschrijven",
"Selected Attendance date will comes in the attendance template.": "Geselecteerde Aanwezigheid datum komt in de aanwezigheid sjabloon.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "Om aanwezigheid gegevens te importeren, klikt u op &quot;Add&quot; knop, selecteer het opgeslagen CSV-bestand en klik op &quot;Upload&quot;. Selecteer de datumnotatie als bewijs van datum formaat in CSV file.Click op &quot;Importeren&quot;.",
"Upload Attendance Data": "Upload Aanwezigheid gegevens",
"dd-mm-yyyy": "dd-mm-jjjj",
"dd/mm/yyyy": "dd / mm / yyyy",
"mm/dd/yy": "mm / dd / jj",
"mm/dd/yyyy": "dd / mm / yyyy",
"yyyy-mm-dd": "yyyy-mm-dd"
}

View File

@ -1,22 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Todas as datas de comparecimento selecionadas entre a Data Inicial de Comparecimento e a Data Final de Comparecimento vir\u00e3o no modelo com a lista de funcion\u00e1rios.",
"Attendance Control Panel": "Painel de Controle de Comparecimento",
"Attendance From Date": "Data Inicial de Comparecimento",
"Attendance To Date": "Data Final de Comparecimento",
"Download Template": "Baixar o Modelo",
"File List": "Lista de Arquivos",
"Get Template": "Obter Modelo",
"HR": "RH",
"Import": "Importar",
"Import Date Format ": "Formato de importa\u00e7\u00e3o de data",
"Import Log": "Importar Log",
"Import Log1": "Importar Log1",
"Overwrite": "Sobrescrever",
"Selected Attendance date will comes in the attendance template.": "Data de comparecimento selecionada vir\u00e1 no modelo de comparecimento.",
"Upload Attendance Data": "Carregar dados de comparecimento",
"dd-mm-yyyy": "dd-mm-aaaa",
"dd/mm/yyyy": "dd/mm/aaaa",
"mm/dd/yy": "mm/dd/aa",
"mm/dd/yyyy": "mm/dd/aaaa",
"yyyy-mm-dd": "aaaa-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "Todos atendimento data inbetween Atendimento selecionada De Data e atendimento a Data vir\u00e1 no modelo com lista de funcion\u00e1rios.",
"Attendance Control Panel": "Painel de Controle de Presen\u00e7a",
"Attendance From Date": "Presen\u00e7a de Data",
"Attendance To Date": "Atendimento para a data",
"Download Template": "Baixe Template",
"File List": "Lista de Arquivos",
"Get Template": "Obter modelo",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "Obter o modelo do atendimento para o qual voc\u00ea deseja importar no formato CSV (valores separados por v\u00edrgulas) format.Fill dados no modelo. Salve o modelo na CSV atendimento format.All data &#39;Presen\u00e7a De Data&#39; inbetween e &#39;Atendimento Conhecer&#39; vir\u00e1 no modelo com lista de funcion\u00e1rios.",
"HR": "HR",
"Import": "Importar",
"Import Date Format ": "Formato de data de importa\u00e7\u00e3o",
"Import Log": "Importar Log",
"Import Log1": "Importar Log1",
"Overwrite": "Sobrescrever",
"Selected Attendance date will comes in the attendance template.": "Data de comparecimento selecionado vem no modelo de atendimento.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "Para importar dados de atendimento, clique no bot\u00e3o &quot;Adicionar&quot;, selecione o arquivo CSV salvo e clique em &quot;Upload&quot;. Selecione o formato de data no formato de data em atendimento CSV file.Click em &quot;Importar&quot;.",
"Upload Attendance Data": "Carregar dados do comparecimento",
"dd-mm-yyyy": "dd-mm-aaaa",
"dd/mm/yyyy": "dd / mm / aaaa",
"mm/dd/yy": "dd / mm / aa",
"mm/dd/yyyy": "dd / mm / aaaa",
"yyyy-mm-dd": "aaaa-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "\u0421\u0432\u0435 \u043f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e \u0434\u0430\u0442\u0438\u0440\u0430 \u0418\u043d\u0431\u0435\u0442\u0432\u0435\u0435\u043d \u0438\u0437\u0430\u0431\u0440\u0430\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e\u0432\u0430\u045a\u0435 \u043e\u0434 \u0434\u0430\u0442\u0443\u043c\u0430 \u0438 \u041f\u043e\u0445\u0430\u0452\u0430\u045a\u0435 \u0414\u0430\u0442\u0443\u043c \u045b\u0435 \u0434\u043e\u045b\u0438 \u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0448\u043a\u0443 \u0441\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0437\u0430\u043f\u043e\u0441\u043b\u0435\u043d\u0438\u0445.",
"Attendance Control Panel": "\u0413\u043b\u0435\u0434\u0430\u043b\u0430\u0446\u0430 \u0426\u043e\u043d\u0442\u0440\u043e\u043b \u041f\u0430\u043d\u0435\u043b",
"Attendance From Date": "\u0413\u043b\u0435\u0434\u0430\u043b\u0430\u0446\u0430 \u041e\u0434 \u0434\u0430\u0442\u0443\u043c\u0430",
"Attendance To Date": "\u041f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e \u0414\u0430\u0442\u0435",
"Download Template": "\u041f\u0440\u0435\u0443\u0437\u043c\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d",
"File List": "\u0424\u0438\u043b\u0435 \u041b\u0438\u0441\u0442",
"Get Template": "\u0413\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "\u041d\u0430\u0431\u0430\u0432\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u043e \u043f\u043e\u0445\u0430\u0452\u0430\u045a\u0443 \u0437\u0430 \u043a\u043e\u0458\u0438 \u0436\u0435\u043b\u0438\u0442\u0435 \u0434\u0430 \u0443\u0432\u0435\u0437\u0435\u0442\u0435 \u0443 \u0426\u0421\u0412 (\u0426\u043e\u043c\u043c\u0430 \u043e\u0434\u0432\u0430\u0458\u0430\u043e \u0432\u0440\u0435\u0434\u043d\u043e\u0441\u0442\u0438) \u043f\u043e\u0434\u0430\u0442\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442.\u0424\u0438\u043b\u043b \u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0448\u043a\u0443. \u0421\u0430\u0447\u0443\u0432\u0430\u0458\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u0443 \u0426\u0421\u0412 \u0444\u043e\u0440\u043c\u0430\u0442.\u0410\u043b\u043b \u043f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e \u0434\u0430\u0442\u0438\u0440\u0430 \u0418\u043d\u0431\u0435\u0442\u0432\u0435\u0435\u043d &#39;\u043f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e\u0432\u0430\u045a\u0435 \u043e\u0434 \u0434\u0430\u0442\u0443\u043c\u0430 &quot;\u0438&quot; \u041f\u0440\u0438\u0441\u0443\u0441\u0442\u0432\u043e \u0414\u0430\u0442\u0443\u043c&#39; \u045b\u0435 \u0434\u043e\u045b\u0438 \u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0448\u043a\u0443 \u0441\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0437\u0430\u043f\u043e\u0441\u043b\u0435\u043d\u0438\u0445.",
"HR": "\u0425\u0420",
"Import": "\u0423\u0432\u043e\u0437",
"Import Date Format ": "\u0423\u0432\u043e\u0437 \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u0443\u043c\u0430",
"Import Log": "\u0423\u0432\u043e\u0437 \u0441\u0435",
"Import Log1": "\u0423\u0432\u043e\u0437 \u041b\u043e\u04331",
"Overwrite": "\u041e\u0432\u0435\u0440\u0432\u0440\u0438\u0442\u0435",
"Selected Attendance date will comes in the attendance template.": "\u0418\u0437\u0430\u0431\u0440\u0430\u043d\u0438 \u0434\u0430\u0442\u0443\u043c \u045b\u0435 \u0413\u043b\u0435\u0434\u0430\u043b\u0430\u0446\u0430 \u0434\u043e\u043b\u0430\u0437\u0438 \u0443 \u043f\u043e\u0441\u0458\u0435\u045b\u0435\u043d\u043e\u0441\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0448\u043a\u0443.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "\u0414\u0430 \u0431\u0438\u0441\u0442\u0435 \u0443\u0432\u0435\u0437\u043b\u0438 \u043f\u043e\u0434\u0430\u0442\u043a\u0435 \u043f\u043e\u0445\u0430\u0452\u0430\u045a\u0435, \u043a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 \u043d\u0430 &quot;\u0410\u0434\u0434&quot; \u0434\u0443\u0433\u043c\u0435, \u0438\u0437\u0430\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0430\u0447\u0443\u0432\u0430\u043d\u0443 \u0434\u0430\u0442\u043e\u0442\u0435\u043a\u0443 \u0426\u0421\u0412 \u0438 \u043a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 \u043d\u0430 &quot;\u0423\u043f\u043b\u043e\u0430\u0434&quot; \u0418\u0437\u0430\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u0443\u043c\u0430 \u043a\u0430\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0440\u0430\u0434\u043d\u043e\u0433 \u0434\u0430\u0442\u0443\u043c \u0443 \u0426\u0421\u0412 \u0444\u0438\u043b\u0435.\u0426\u043b\u0438\u0446\u043a \u043d\u0430 &quot;\u0423\u0432\u043e\u0437&quot;..",
"Upload Attendance Data": "\u041e\u0442\u043f\u0440\u0435\u043c\u0430\u045a\u0435 \u043f\u043e\u0434\u0430\u0442\u0430\u043a\u0430 \u0413\u043b\u0435\u0434\u0430\u043b\u0430\u0446\u0430",
"dd-mm-yyyy": "\u0434\u0434-\u043c\u043c-\u0433\u0433\u0433\u0433",
"dd/mm/yyyy": "\u0434\u0434 / \u043c\u043c / \u0433\u0433\u0433\u0433",
"mm/dd/yy": "\u0434\u0434 / \u043c\u043c / \u0433\u0433\u0433\u0433",
"mm/dd/yyyy": "\u043c\u043c / \u0434\u0434 / \u0438\u0438\u0438\u0438",
"yyyy-mm-dd": "\u0433\u0433\u0433\u0433-\u043c\u043c-\u0434\u0434"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb0\u0bc1\u0b95\u0bc8 \u0ba4\u0bc7\u0ba4\u0bbf \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0bb0\u0bc8 \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0b8a\u0bb4\u0bbf\u0baf\u0bb0\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd\u0b9f\u0bc8 \u0bb5\u0bb0\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1 inbetween \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0ba4\u0bbf\u0b95\u0bb3\u0bcd.",
"Attendance Control Panel": "\u0bb5\u0bb0\u0bc1\u0b95\u0bc8 \u0b95\u0ba3\u0bcd\u0b9f\u0bcd\u0bb0\u0bc7\u0bbe\u0bb2\u0bcd \u0baa\u0bc7\u0ba9\u0bb2\u0bcd",
"Attendance From Date": "\u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1 \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0bb0\u0bc1\u0b95\u0bc8",
"Attendance To Date": "\u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0bb0\u0bc1\u0b95\u0bc8",
"Download Template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0baa\u0ba4\u0bbf\u0bb5\u0bbf\u0bb1\u0b95\u0bcd\u0b95",
"File List": "\u0b95\u0bc7\u0bbe\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Get Template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0b95\u0bbf\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "\u0ba8\u0bc0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd\u0b9f\u0bc8 (\u0b95\u0bae\u0bbe seperated \u0bae\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd) CSV \u0b89\u0bb3\u0bcd\u0bb3 format.Fill \u0ba4\u0bb0\u0bb5\u0bc1 \u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0baf \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0bae\u0bcd \u0b8e\u0ba8\u0bcd\u0ba4 \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0b92\u0bb0\u0bc1 \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd \u0b95\u0bbf\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. CSV format.All \u0b95\u0bc2\u0b9f\u0bcd\u0b9f\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b8a\u0bb4\u0bbf\u0baf\u0bb0\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd\u0b9f\u0bc8 \u0bb5\u0bb0\u0bc1\u0bae\u0bcd &#39;\u0ba4\u0bc7\u0ba4\u0bbf \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd&#39; inbetween &#39;\u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1 \u0ba4\u0bc7\u0ba4\u0bbf \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd&#39; \u0ba4\u0bc7\u0ba4\u0bbf\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95.",
"HR": "\u0b85\u0bb2\u0bc1\u0bb5\u0bb2\u0b95",
"Import": "\u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf \u0baa\u0bc6\u0bbe\u0bb0\u0bc1\u0bb3\u0bcd\u0b95\u0bb3\u0bcd",
"Import Date Format ": "\u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Import Log": "\u0baa\u0bc1\u0b95\u0bc1\u0baa\u0ba4\u0bbf\u0b95\u0bc8 \u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf",
"Import Log1": "Log1 \u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf",
"Overwrite": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bbf\u0baf\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc7\u0bb2\u0bc7\u0baf\u0bc7 \u0b8e\u0bb4\u0bc1\u0ba4\u0bc1",
"Selected Attendance date will comes in the attendance template.": "\u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0bb0\u0bc1\u0b95\u0bc8 \u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bcd\u0bb3\u0bc7\u0b9f\u0bcd\u0b9f\u0bc8 \u0bb5\u0bb0\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1.",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "\u0bb5\u0bb0\u0bc1\u0b95\u0bc8 \u0ba4\u0bb0\u0bb5\u0bc1 \u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0baf, &quot;\u0b9a\u0bc7\u0bb0\u0bcd&quot; \u0baa\u0bc6\u0bbe\u0ba4\u0bcd\u0ba4\u0bbe\u0ba9\u0bc8 \u0b95\u0bbf\u0bb3\u0bbf\u0b95\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0ba4\u0bcd\u0ba4 \u0b95\u0bc7\u0bbe\u0baa\u0bcd\u0baa\u0bc8 \u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 &quot;\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1&quot; \u0b8e\u0ba9\u0bcd\u0baa\u0ba4\u0bc8 \u0b95\u0bbf\u0bb3\u0bbf\u0b95\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb5\u0bc1\u0bae\u0bcd. &quot;\u0b87\u0bb1\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0ba4\u0bbf&quot; \u0bae\u0bc0\u0ba4\u0bc1 CSV file.Click \u0b89\u0bb3\u0bcd\u0bb3 \u0bb5\u0bb0\u0bc1\u0b95\u0bc8 \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bcd \u0b8e\u0ba9 \u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd.",
"Upload Attendance Data": "\u0baa\u0b99\u0bcd\u0b95\u0bc7\u0bb1\u0bcd\u0bb1\u0ba4\u0bbe\u0b95 \u0ba4\u0b95\u0bb5\u0bb2\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1",
"dd-mm-yyyy": "dd-mm-yyyy",
"dd/mm/yyyy": "dd / mm / yyyy",
"mm/dd/yy": "dd / mm / yy",
"mm/dd/yyyy": "dd / mm / yyyy",
"yyyy-mm-dd": "yyyy-mm-dd"
}

View File

@ -1,24 +0,0 @@
{
"All attendance dates inbetween selected Attendance From Date and Attendance To Date will come in the template with employees list.": "\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e27\u0e31\u0e19 inbetween \u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e30\u0e21\u0e32\u0e43\u0e19\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19",
"Attendance Control Panel": "\u0e41\u0e1c\u0e07\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21",
"Attendance From Date": "\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e08\u0e32\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48",
"Attendance To Date": "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21\u0e40\u0e1e\u0e37\u0e48\u0e2d",
"Download Template": "\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"File List": "\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c",
"Get Template": "\u0e23\u0e31\u0e1a\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"Get the template of the Attendance for which you want to import in CSV (Comma seperated values) format.Fill data in the template. Save the template in CSV format.All attendance dates inbetween 'Attendance From Date' and 'Attendance To Date' will come in the template with employees list.": "\u0e23\u0e31\u0e1a\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a CSV (\u0e04\u0e48\u0e32\u0e41\u0e22\u0e01\u0e08\u0e38\u0e25\u0e20\u0e32\u0e04) \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 format.Fill \u0e43\u0e19\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21 CSV format.All \u0e27\u0e31\u0e19 &#39;\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e08\u0e32\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48&#39; inbetween \u0e41\u0e25\u0e30 &#39;\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e19\u0e31\u0e14&#39; \u0e08\u0e30\u0e21\u0e32\u0e43\u0e19\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1e\u0e19\u0e31\u0e01\u0e07\u0e32\u0e19",
"HR": "\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e1a\u0e38\u0e04\u0e04\u0e25",
"Import": "\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32",
"Import Date Format ": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32",
"Import Log": "\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a",
"Import Log1": "\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32 Log1",
"Overwrite": "\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a",
"Selected Attendance date will comes in the attendance template.": "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e21\u0e32\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21\u0e41\u0e21\u0e48",
"To import attendance data, click on \"Add\" button, select the saved CSV file and click on \"Upload\".Select the date format as attendance date format in CSV file.Click on \"Import\".": "\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21\u0e43\u0e2b\u0e49\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e21 &quot;\u0e40\u0e1e\u0e34\u0e48\u0e21&quot; \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c CSV \u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48 &quot;\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14&quot;. \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21\u0e43\u0e19 CSV file.Click \u0e17\u0e35\u0e48 &quot;\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32&quot;",
"Upload Attendance Data": "Upload \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21",
"dd-mm-yyyy": "dd-mm-yyyy",
"dd/mm/yyyy": "\u0e27\u0e31\u0e19 / \u0e40\u0e14\u0e37\u0e2d\u0e19 / \u0e1b\u0e35",
"mm/dd/yy": "dd / mm / yyyy",
"mm/dd/yyyy": "dd / mm / \u0e1b\u0e35",
"yyyy-mm-dd": "YYYY-MM-DD"
}

View File

@ -126,8 +126,10 @@ class DocType(DocListController):
self.doc.leave_type, self.doc.fiscal_year)["leave_balance"] self.doc.leave_type, self.doc.fiscal_year)["leave_balance"]
if self.doc.leave_balance - self.doc.total_leave_days < 0: if self.doc.leave_balance - self.doc.total_leave_days < 0:
#check if this leave type allow the remaining balance to be in negative. If yes then warn the user and continue to save else warn the user and don't save.
msgprint("There is not enough leave balance for Leave Type: %s" % \ msgprint("There is not enough leave balance for Leave Type: %s" % \
(self.doc.leave_type,), raise_exception=1) (self.doc.leave_type,),
raise_exception=not(webnotes.conn.get_value("Leave Type", self.doc.leave_type,"allow_negative") or None))
def validate_leave_overlap(self): def validate_leave_overlap(self):
if not self.doc.name: if not self.doc.name:

View File

@ -1,8 +1,8 @@
[ [
{ {
"creation": "2013-01-10 16:34:15", "creation": "2013-02-21 09:55:58",
"docstatus": 0, "docstatus": 0,
"modified": "2013-01-22 14:47:02", "modified": "2013-03-05 08:06:43",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -91,6 +91,12 @@
"fieldtype": "Check", "fieldtype": "Check",
"label": "Is LWP" "label": "Is LWP"
}, },
{
"doctype": "DocField",
"fieldname": "allow_negative",
"fieldtype": "Check",
"label": "Allow Negative Balance"
},
{ {
"doctype": "DocPerm", "doctype": "DocPerm",
"role": "System Manager" "role": "System Manager"

View File

View File

@ -0,0 +1,107 @@
// ERPNext - web based ERP (http://erpnext.com)
// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
wn.require("public/app/js/utils.js");
wn.provide("erpnext.hr");
erpnext.hr.AttendanceControlPanel = erpnext.utils.Controller.extend({
onload: function() {
this.frm.set_value("att_fr_date", get_today());
this.frm.set_value("att_to_date", get_today());
},
refresh: function() {
this.show_upload();
},
get_template:function() {
if(!this.frm.doc.att_fr_date || !this.frm.doc.att_to_date) {
msgprint("Attendance From Date and Attendance To Date is mandatory");
return;
}
window.location.href = repl(wn.request.url +
'?cmd=%(cmd)s&from_date=%(from_date)s&to_date=%(to_date)s', {
cmd: "hr.doctype.upload_attendance.upload_attendance.get_template",
from_date: this.frm.doc.att_fr_date,
to_date: this.frm.doc.att_to_date,
});
},
show_upload: function() {
var me = this;
var $wrapper = $(cur_frm.fields_dict.upload_html.wrapper).empty();
var upload_area = $('<div id="dit-upload-area"></div>').appendTo($wrapper);
// upload
wn.upload.make({
parent: $('#dit-upload-area'),
args: {
method: 'hr.doctype.upload_attendance.upload_attendance.upload'
},
sample_url: "e.g. http://example.com/somefile.csv",
callback: function(r) {
var $log_wrapper = $(cur_frm.fields_dict.import_log.wrapper).empty();
var log_area = $('<div id="dit-output"></div>').appendTo($log_wrapper);
$wrapper.find(".dit-progress-area").toggle(false);
if(!r.messages) r.messages = [];
// replace links if error has occured
if(r.exc || r.error) {
r.messages = $.map(r.messages, function(v) {
var msg = v.replace("Inserted", "Valid")
.replace("Updated", "Valid").split("<");
if (msg.length > 1) {
v = msg[0] + (msg[1].split(">").slice(-1)[0]);
} else {
v = msg[0];
}
return v;
});
r.messages = ["<h4 style='color:red'>Import Failed!</h4>"]
.concat(r.messages)
} else {
r.messages = ["<h4 style='color:green'>Import Successful!</h4>"].
concat(r.messages)
}
console.log(r.messages);
$.each(r.messages, function(i, v) {
var $p = $('<p>').html(v).appendTo('#dit-output');
if(v.substr(0,5)=='Error') {
$p.css('color', 'red');
} else if(v.substr(0,8)=='Inserted') {
$p.css('color', 'green');
} else if(v.substr(0,7)=='Updated') {
$p.css('color', 'green');
} else if(v.substr(0,5)=='Valid') {
$p.css('color', '#777');
}
});
}
});
// rename button
$('#dit-upload-area form input[type="submit"]')
.attr('value', 'Upload and Import')
.click(function() {
$wrapper.find(".dit-progress-area").toggle(true);
});
}
})
cur_frm.cscript = new erpnext.hr.AttendanceControlPanel({frm: cur_frm});

View File

@ -0,0 +1,136 @@
# For license information, please see license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, add_days, date_diff
from webnotes import msgprint, _
from webnotes.utils.datautils import UnicodeWriter
doclist = None
class DocType():
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist
@webnotes.whitelist(allow_roles=['System Manager', 'HR Manager', "HR User"])
def get_template():
args = webnotes.form_dict
global doclist
doclist = webnotes.model.doctype.get("Attendance")
w = UnicodeWriter()
w = add_header(w)
w = add_data(w, args)
# write out response as a type csv
webnotes.response['result'] = cstr(w.getvalue())
webnotes.response['type'] = 'csv'
webnotes.response['doctype'] = "Attendance"
def getdocfield(fieldname):
"""get docfield from doclist of doctype"""
l = [d for d in doclist if d.doctype=='DocField' and d.fieldname==fieldname]
return l and l[0] or None
def add_header(w):
status = ", ".join(getdocfield("status").options.strip().split("\n"))
w.writerow(["Notes:"])
w.writerow(["Please do not change the template headings"])
w.writerow(["Status should be one of these values: " + status])
w.writerow(["If you are overwriting existing attendance records, 'ID' column mandatory"])
w.writerow(["ID", "Employee", "Employee Name", "Date", "Status",
"Fiscal Year", "Company", "Naming Series"])
return w
def add_data(w, args):
from accounts.utils import get_fiscal_year
dates = get_dates(args)
employees = get_active_employees()
existing_attendance_records = get_existing_attendance_records(args)
for date in dates:
for employee in employees:
existing_attendance = {}
if existing_attendance_records \
and tuple([date, employee.name]) in existing_attendance_records:
existing_attendance = existing_attendance_records[tuple([date, employee.name])]
row = [
existing_attendance and existing_attendance.name or "",
employee.name, employee.employee_name, date,
existing_attendance and existing_attendance.status or "",
get_fiscal_year(date)[0], employee.company,
existing_attendance and existing_attendance.naming_series or get_naming_series(),
]
w.writerow(row)
return w
def get_dates(args):
"""get list of dates in between from date and to date"""
no_of_days = date_diff(add_days(args["to_date"], 1), args["from_date"])
dates = [add_days(args["from_date"], i) for i in range(0, no_of_days)]
return dates
def get_active_employees():
employees = webnotes.conn.sql("""select name, employee_name, company
from tabEmployee where docstatus < 2 and status = 'Active'""", as_dict=1)
return employees
def get_existing_attendance_records(args):
attendance = webnotes.conn.sql("""select name, att_date, employee, status, naming_series
from `tabAttendance` where att_date between %s and %s and docstatus < 2""",
(args["from_date"], args["to_date"]), as_dict=1)
existing_attendance = {}
for att in attendance:
existing_attendance[tuple([att.att_date, att.employee])] = att
return existing_attendance
def get_naming_series():
series = getdocfield("naming_series").options.strip().split("\n")
if not series:
msgprint("""Please create naming series for Attendance \
through Setup -> Numbering Series.""", raise_exception=1)
return series[0]
@webnotes.whitelist(allow_roles=['System Manager', 'HR Manager', "HR User"])
def upload():
from webnotes.utils.datautils import read_csv_content_from_uploaded_file
from webnotes.modules import scrub
from core.page.data_import_tool.data_import_tool import check_record, import_doc
rows = read_csv_content_from_uploaded_file()
if not rows:
msg = [_("Please select a csv file")]
return {"messages": msg, "error": msg}
columns = [scrub(f) for f in rows[4]]
columns[0] = "name"
columns[3] = "att_date"
ret = []
error = False
for i, row in enumerate(rows[5:]):
if not row: continue
row_idx = i + 5
d = webnotes._dict(zip(columns, row))
d["doctype"] = "Attendance"
if d.name:
d["docstatus"] = webnotes.conn.get_value("Attendance", d.name, "docstatus")
try:
check_record(d)
ret.append(import_doc(d, "Attendance", 1, row_idx, submit=True))
except Exception, e:
error = True
ret.append('Error for row (#%d) %s : %s' % (row_idx,
len(row)>1 and row[1] or "", cstr(e)))
webnotes.errprint(webnotes.getTraceback())
if error:
webnotes.conn.rollback()
else:
webnotes.conn.commit()
return {"messages": ret, "error": error}

View File

@ -0,0 +1,99 @@
[
{
"creation": "2013-01-25 11:34:53",
"docstatus": 0,
"modified": "2013-03-05 15:50:03",
"modified_by": "Administrator",
"owner": "harshada@webnotestech.com"
},
{
"allow_attach": 0,
"doctype": "DocType",
"issingle": 1,
"max_attachments": 1,
"module": "HR",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Upload Attendance",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Upload Attendance",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 0,
"submit": 0,
"write": 1
},
{
"doctype": "DocType",
"name": "Upload Attendance"
},
{
"description": "Download the Template, fill appropriate data and attach the modified file.\nAll dates and employee combination in the selected period will come in the template, with existing attendance records",
"doctype": "DocField",
"fieldname": "download_template",
"fieldtype": "Section Break",
"label": "Download Template"
},
{
"doctype": "DocField",
"fieldname": "att_fr_date",
"fieldtype": "Date",
"label": "Attendance From Date",
"oldfieldname": "attenadnce_date",
"oldfieldtype": "Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "att_to_date",
"fieldtype": "Date",
"label": "Attendance To Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "get_template",
"fieldtype": "Button",
"label": "Get Template",
"oldfieldtype": "Button"
},
{
"doctype": "DocField",
"fieldname": "upload_attendance_data",
"fieldtype": "Section Break",
"label": "Import Attendance"
},
{
"doctype": "DocField",
"fieldname": "upload_html",
"fieldtype": "HTML",
"label": "Upload HTML"
},
{
"doctype": "DocField",
"fieldname": "import_log",
"fieldtype": "HTML",
"hidden": 0,
"label": "Import Log"
},
{
"doctype": "DocPerm",
"role": "HR User"
},
{
"doctype": "DocPerm",
"role": "HR Manager"
}
]

View File

@ -54,10 +54,10 @@ wn.module_page["HR"] = [
icon: "icon-cog", icon: "icon-cog",
items: [ items: [
{ {
"route":"Form/Attendance Control Panel/Attendance Control Panel", "route":"Form/Upload Attendance/Upload Attendance",
"label":wn._("Upload attendance"), "label":wn._("Upload Attendance"),
"description":wn._("Upload attendance from a .csv file"), "description":wn._("Upload attendance from a .csv file"),
doctype: "Attendance Control Panel" doctype: "Upload Attendance"
}, },
{ {
"route":"Form/Leave Control Panel/Leave Control Panel", "route":"Form/Leave Control Panel/Leave Control Panel",

View File

@ -205,5 +205,7 @@ patch_list = [
"patches.february_2013.p09_timesheets", "patches.february_2013.p09_timesheets",
"execute:(not webnotes.conn.exists('UOM', 'Hour')) and webnotes.doc({'uom_name': 'Hour', 'doctype': 'UOM', 'name': 'Hour'}).insert()", "execute:(not webnotes.conn.exists('UOM', 'Hour')) and webnotes.doc({'uom_name': 'Hour', 'doctype': 'UOM', 'name': 'Hour'}).insert()",
"patches.march_2013.p01_c_form", "patches.march_2013.p01_c_form",
"execute:webnotes.conn.sql('update tabDocPerm set `submit`=1, `cancel`=1, `amend`=1 where parent=\"Time Log\"')" "execute:webnotes.conn.sql('update tabDocPerm set `submit`=1, `cancel`=1, `amend`=1 where parent=\"Time Log\"')",
"execute:webnotes.delete_doc('DocType', 'Attendance Control Panel')",
"execute:webnotes.reload_doc('hr', 'doctype', 'upload_attendance')",
] ]