1871
1871
'state':'draft',
1872
1872
'prest_calc':False,
1875
def _check_dates(self, cr, uid, ids, context=None):
1876
for hol in self.browse(cr, uid, ids, context=context):
1877
if hol.corresp_to_start > hol.corresp_to_end:
1881
_constraints = [(_check_dates, "Periodo inicio debe ser menor a periodo fin.", ['corresp_to_start', 'corresp_to_end'])]
1875
1883
_sql_constraints = [('unique_name','unique(name)', _('Name must be unique'))]
1877
1885
def create(self, cr, uid, vals, context=None):
1878
1886
if not 'menu' in context: #Se premite la creacion solo desde los procesos
1879
1887
return super(hr_employee_holidays, self).create(cr, uid, vals, context)
1881
raise osv.except_osv(_('Warning!'),_('No se permite crear registros de vacaciones'))
1889
holidays_employee_ids = self.search(cr, uid, [('employee_id','=',vals['employee_id'])], order='corresp_to_start desc')
1890
if holidays_employee_ids and vals['corresp_to_start'] >= self.browse(cr, uid, holidays_employee_ids[0]).corresp_to_start:
1891
raise osv.except_osv(_('Warning!'),_('No se permite crear registros de vacaciones a futuro, solo historicos'))
1892
holidays_employee_ids = self.search(cr, uid, [('employee_id','=',vals['employee_id']),
1893
'|','&',('corresp_to_start','<=',vals['corresp_to_start']),('corresp_to_end','>=',vals['corresp_to_start']),
1894
'&',('corresp_to_start','<=',vals['corresp_to_end']),('corresp_to_end','>=',vals['corresp_to_end'])])
1895
if holidays_employee_ids:
1896
raise osv.except_osv(_('Warning!'),_('Ya existe un registro de asignacion de vacaciones solapado con estas fechas'))
1898
return super(hr_employee_holidays, self).create(cr, uid, vals, context)
1883
1902
def unlink(self, cr, uid, ids, context=None):
1884
1903
if not 'menu' in context: #Se premite la eliminacion solo desde los procesos
1885
1904
return super(hr_employee_holidays, self).unlink(cr, uid, ids, context)
1890
1909
if not 'menu' in context: #Se premite la modificacion solo desde los procesos
1891
1910
return super(hr_employee_holidays, self).write(cr, uid, ids, vals, context)
1893
raise osv.except_osv(_('Warning!'),_('No se permite modificar registros de vacaciones'))
1912
if not isinstance(ids, list):
1914
hol_emp = self.browse(cr, uid, ids)
1916
employee = vals['employee_id'] if 'employee_id' in vals else h.employee_id.id
1917
corresp_to_start = vals['corresp_to_start'] if 'corresp_to_start' in vals else h.corresp_to_start
1918
corresp_to_end = vals['corresp_to_end'] if 'corresp_to_end' in vals else h.corresp_to_end
1919
holidays_employee_ids = self.search(cr, uid, [('id', '<>',h.id),('employee_id','=',employee)], order='corresp_to_start desc')
1920
if holidays_employee_ids and corresp_to_start >= self.browse(cr, uid, holidays_employee_ids[0]).corresp_to_start:
1921
raise osv.except_osv(_('Warning!'),_('No se permite crear registros de vacaciones a futuro, solo historicos'))
1922
holidays_employee_ids = self.search(cr, uid, [('employee_id','=',employee),
1923
'|','&',('corresp_to_start','<=',corresp_to_start),('corresp_to_end','>=',corresp_to_start),
1924
'&',('corresp_to_start','<=',corresp_to_end),('corresp_to_end','>=',corresp_to_end)])
1925
if holidays_employee_ids:
1926
raise osv.except_osv(_('Warning!'),_('Ya existe un registro de asignacion de vacaciones solapado con estas fechas'))
1928
super(hr_employee_holidays, self).write(cr, uid, ids, vals, context)
1895
1932
hr_employee_holidays()
1897
1934
class hr_holidays_status(osv.osv):
1922
1959
res[record.id]['remaining_leaves'] = max_leaves - leaves_taken
1925
def create(self, cr, uid, vals, context):
1926
if 'res_log_read' in context: #Se premite la creacion solo desde los archivos xml
1927
return super(hr_holidays_status, self).create(cr, uid, vals, context)
1929
raise osv.except_osv(_('Warning!'),_('No se permite crear nuevos tipos de ausencias. El sistemas cuenta con los tipos predefinidos.'))
1931
def unlink(self, cr, uid, ids, context):
1932
if 'res_log_read' in context:#Se premite la eliminacion solo desde los archivos xml
1933
return super(hr_holidays_status, self).unlink(cr, uid, ids, context)
1935
raise osv.except_osv(_('Warning!'),_('No se permite eliminar tipos de ausencias.'))
1937
def write(self, cr, uid, ids, vals, context):
1938
if 'res_log_read' in context:#Se premite la modificacion solo desde los archivos xml
1939
return super(hr_holidays_status, self).write(cr, uid, ids, vals, context)
1941
raise osv.except_osv(_('Warning!'),_('No se permite modificar los tipos de ausencias.'))
1943
1962
hr_holidays_status()
1945
1964
class hr_holidays(osv.osv):
1949
1968
def _type_holidays_status(self, cr, uid, ids, name, args, context=None):
1951
1970
for hol in self.browse(cr, uid, ids, context=context):
1952
result[hol.id] = hol.holiday_status_id.name
1971
result[hol.id] = hol.holiday_status_id.name
2038
2059
def create(self, cr, uid, vals, context=None):
2039
2060
if not context:
2042
if not 'employee_holidays_add_id' in vals:
2062
if 'employee_holidays_add_id' in vals:
2063
holiday_old = self.search(cr, uid, [('name','=',vals['name']),('employee_id','=',vals['employee_id']),
2064
('employee_holidays_add_id','=',vals['employee_holidays_add_id'])])
2066
raise osv.except_osv(_('Acción Denegada!'), _('Ya existe un registro de asignacion \
2067
de vacaciones para el periodo de vacaciones seleccionado'))
2069
if 'type' in vals and vals['type'] <> 'add':
2043
2070
holiday_old = self.search(cr, uid, [('employee_id','=',vals['employee_id']),
2044
2071
'|','&',('date_from','<=',vals['date_from']),('date_to','>=',vals['date_from']),
2045
2072
'&',('date_from','<=',vals['date_to']),('date_to','>=',vals['date_to'])])
2046
2073
if holiday_old:
2047
raise osv.except_osv(_('Acción Denegada!'), _('Ya existe un registro de asignacion de vacaciones solapado con estas fechas'))
2074
raise osv.except_osv(_('Acción Denegada!'), _('Ya existe un registro de asignacion de \
2075
vacaciones solapado con estas fechas'))
2049
2077
if (not 'number_of_days_temp' in vals or not vals['number_of_days_temp']) \
2050
2078
and (not 'date_to' in vals or not vals['date_to'] == None):
2051
2079
raise osv.except_osv(_('Warning!'),_('Debe ingresar Fecha final o Numero de dias'))
2053
2081
return super(hr_holidays, self).create(cr, uid, vals, context)