コード例 #1
0
ファイル: forms.py プロジェクト: jmjacquet/laboralsalud
    def __init__(self, *args, **kwargs):
        request = kwargs.pop("request", None)
        super(AusentismoForm, self).__init__(*args, **kwargs)
        empresas = empresas_habilitadas(request)
        self.fields["empleado"].queryset = ent_empleado.objects.filter(
            baja=False, empresa__pk__in=empresas)
        self.fields["empresa"].queryset = ent_empresa.objects.filter(
            baja=False, pk__in=empresas)

        usuario = usuario_actual(request)
        # Si es médico no vé los últimos tipos
        if usuario.tipoUsr == 1:
            self.fields["tipo_ausentismo"].choices = TIPO_AUSENCIA_MEDICOS

        if not tiene_permiso(request, "pat_pantalla"):
            self.fields["aus_grupop"].queryset = aus_patologia.objects.filter(
                baja=False)
            self.fields["aus_grupop"].label = u"Grupo Patológico"
        if not tiene_permiso(request, "diag_pantalla"):
            self.fields["aus_diagn"].queryset = aus_diagnostico.objects.filter(
                baja=False)
            self.fields["aus_diagn"].label = u"Diagnóstico"
        if not tiene_permiso(request, "med_pantalla"):
            self.fields[
                "aus_medico"].queryset = ent_medico_prof.objects.filter(
                    baja=False)
            self.fields["aus_medico"].label = u"Médico Tratante/ART"
コード例 #2
0
def TareasDeleteView(request, id):
    t = get_object_or_404(gral_tareas, id=id)
    if not tiene_permiso(request, 'gral_tareas'):
        return redirect(reverse('tareas_listado'))
    t.delete()
    messages.success(request, u'Los datos se guardaron con éxito!')
    return redirect('tareas_listado')
コード例 #3
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def empresa_baja_alta(request,id):
    if not tiene_permiso(request,'emp_pantalla'):
            return redirect(reverse('principal'))
    ent = ent_empresa.objects.get(pk=id)     
    ent.baja = not ent.baja
    ent.save()       
    messages.success(request, u'¡Los datos se guardaron con éxito!')
    return HttpResponseRedirect(reverse("empresa_listado"))            
コード例 #4
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def art_baja_alta(request,id):
    if not tiene_permiso(request,'art_pantalla'):
            return redirect(reverse('principal'))
    art = ent_art.objects.get(pk=id)     
    art.baja = not art.baja
    art.save()       
    messages.success(request, u'¡Los datos se guardaron con éxito!')
    return HttpResponseRedirect(reverse("art_listado")) 
コード例 #5
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def turno_estado(request, id, estado):
    if not tiene_permiso(request, 'turnos_pantalla'):
        return redirect(reverse('principal'))
    ent = turnos.objects.get(pk=id)
    ent.estado = estado
    ent.save()
    messages.success(request, u'¡Los datos se guardaron con éxito!')
    return HttpResponseRedirect(reverse("turnos_listado"))
コード例 #6
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def ausentismo_eliminar_masivo(request):
    if not tiene_permiso(request, "aus_abm"):
        return redirect(reverse("principal"))
    listado = request.GET.getlist("id")
    ausentismos = ausentismo.objects.filter(
        id__in=listado, empleado__empresa__pk__in=empresas_habilitadas(request)
    ).delete()
    messages.success(request, "¡Los datos se eliminaron con éxito!")
    return HttpResponse(json.dumps(len(listado)), content_type="application/json")
コード例 #7
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
def VendedoresDeleteView(request, id):
    try:
        objeto = get_object_or_404(cpb_cuenta, id=id)
        if not tiene_permiso(request,'ent_vendedores_abm'):
                return redirect(reverse('principal'))       
        objeto.delete()
        messages.success(request, u'¡Los datos se guardaron con éxito!')
    except:
        messages.error(request, u'¡Los datos no pudieron eliminarse!')
    return redirect('vendedores_listado') 
コード例 #8
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def empleado_eliminar_masivo(request):        
    if not tiene_permiso(request,'empl_pantalla'):
            return redirect(reverse('principal'))
    listado = request.GET.getlist('id')    
    try:
        empleados = ent_empleado.objects.filter(id__in=listado).delete()   
        messages.success(request, u'¡Los datos se eliminaron con éxito!')
        recalcular_cantidad_empleados(self.object.empresa)
    except:
        messages.error(request, u'¡El Empleado no debe tener cargado Ausentismos a su nombre!<br>(elimínelos y vuelva a intentar)')
    
    return HttpResponse(json.dumps(len(listado)), content_type = "application/json")
コード例 #9
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def empleado_baja_alta(request,id):
    if not tiene_permiso(request,'empl_pantalla'):
            return redirect(reverse('principal'))
    try:
        ent = ent_empleado.objects.get(pk=id)     
        ent.baja = not ent.baja
        if ent.baja:
            ent.trab_fbaja=hoy()
        else:
            ent.trab_fbaja=None
        ent.save()       
        recalcular_cantidad_empleados(ent.empresa)
        messages.success(request, u'¡Los datos se guardaron con éxito!')
    except:
        pass
    return HttpResponseRedirect(reverse("empleado_listado"))   
コード例 #10
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, "pat_pantalla"):
         return redirect(reverse("principal"))
     return super(PatologiaEditView, self).dispatch(*args, **kwargs)
コード例 #11
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'ent_proveedores'):
         return redirect(reverse('principal'))
     return super(ProveedoresView, self).dispatch(*args, **kwargs)
コード例 #12
0
 def dispatch(self, *args, **kwargs):
     limpiar_sesion(self.request)
     if not tiene_permiso(self.request, 'gral_tareas'):
         return redirect(reverse('principal'))
     return super(TareasView, self).dispatch(*args, **kwargs)
コード例 #13
0
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'gral_tareas'):
         return redirect(reverse('tareas_listado'))
     return super(TareasEditView, self).dispatch(*args, **kwargs)
コード例 #14
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'trab_pedidos'):
         return redirect(reverse('principal'))
     return super(OPCreateView, self).dispatch(*args, **kwargs)
コード例 #15
0
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'gral_configuracion'):
         return redirect(reverse('prod_stock_listado'))
     return super(ProdStockEditView, self).dispatch(*args, **kwargs)
コード例 #16
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, "aus_pantalla"):
         return redirect(reverse("principal"))
     return super(AusentismoView, self).dispatch(*args, **kwargs)
コード例 #17
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'ent_clientes_abm'):
         return redirect(reverse('principal'))
     return super(ClientesCreateView, self).dispatch(*args, **kwargs)
コード例 #18
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'empl_pantalla'):
         return redirect(reverse('principal'))
     return super(EmpleadoCreateView, self).dispatch(*args, **kwargs)
コード例 #19
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def reporte_resumen_periodo(request):       
    if not tiene_permiso(request,'indic_pantalla'):
            return redirect(reverse('principal'))  
    template = 'reportes/resumen_periodo.html'     
    form = ConsultaPeriodo(request.POST or None,request=request)            
    fecha = date.today()        
    fdesde = ultimo_anio()
    fhasta = hoy()
    context = {}
    context = getVariablesMixin(request)  
    empresa = None
    filtro = u""
    if form.is_valid():                                                        
        periodo = form.cleaned_data['periodo']   
        # fdesde = form.cleaned_data['fdesde']   
        # fhasta = form.cleaned_data['fhasta']                                                 
        empresa = form.cleaned_data['empresa']                           
        empleado= form.cleaned_data['empleado']                           
        tipo_ausentismo = form.cleaned_data['tipo_ausentismo']     
        trab_cargo= form.cleaned_data['trab_cargo']                           
        fdesde =  date(periodo.year,periodo.month,1)
        fhasta = date(periodo.year,periodo.month,calendar.monthrange(periodo.year, periodo.month)[1])
        ausentismos = ausentismo.objects.filter(baja=False)                      
        filtro = u"Período: %s " % (periodo.strftime("%m/%Y"))


        if empresa:
            if empresa.casa_central:
                ausentismos= ausentismos.filter(empleado__empresa=empresa)
            else:
                ausentismos= ausentismos.filter(Q(empleado__empresa=empresa)|Q(empleado__empresa__casa_central=empresa))
        else:
            ausentismos= ausentismos.filter(empleado__empresa__pk__in=empresas_habilitadas(self.request))

        if empleado:
            ausentismos= ausentismos.filter(Q(empleado__apellido_y_nombre__icontains=empleado)|Q(empleado__nro_doc__icontains=empleado))
            filtro = filtro+u" - Empleado: %s" % (empleado)
        if trab_cargo:
            ausentismos= ausentismos.filter(empleado__trab_cargo=trab_cargo)            
            filtro = filtro+u" - Puesto de Trabajo: %s" % (trab_cargo)

        if int(tipo_ausentismo) > 0: 
            ausentismos = ausentismos.filter(tipo_ausentismo=int(tipo_ausentismo))

        ausentismos = ausentismos.filter(Q(aus_fcrondesde__gte=fdesde,aus_fcrondesde__lte=fhasta)|Q(aus_fcronhasta__gte=fdesde,aus_fcronhasta__lte=fhasta)
            |Q(aus_fcrondesde__lt=fdesde,aus_fcronhasta__gt=fhasta))  
    else:
        ausentismos = None            
    context['form'] = form
    context['fecha'] = fecha        
    context['fdesde'] = fdesde
    context['fhasta'] = fhasta
    context['ausentismos'] = ausentismos
    context['empresa'] = empresa
    context['titulo_reporte'] = u"REPORTE INDICADORES: %s  - %s"%(empresa,filtro)
              
    context['filtro'] = filtro
    context['pie_pagina'] = "Sistemas Laboral Salud - %s" % (fecha.strftime("%d/%m/%Y"))
    dias_laborales = 0
    dias_caidos_tot = 0
    empleados_tot = 0
    dias_trab_tot = 0
    tasa_ausentismo = 0
    aus_total = None
    aus_inc = None
    aus_acc = None
    aus_acc2 = None
    aus_x_grupop = None 
    max_grupop = 0
    dias_laborables = int((fhasta-fdesde).days+1)   
    empl_mas_faltadores = []
    porc_dias_trab_tot = 100
    if empresa:
        empleados_tot = empresa.cantidad_empleados()
    if ausentismos:
         
        dias_caidos_tot=dias_ausentes(fdesde,fhasta,ausentismos)               
        dias_trab_tot = (dias_laborables * empleados_tot)-dias_caidos_tot
        tasa_ausentismo = calcular_tasa_ausentismo(dias_caidos_tot,dias_laborables,empleados_tot)        
        porc_dias_trab_tot = 100 - tasa_ausentismo        
        
        ta_cant_empls = ausentismos.values('empleado').distinct().count()
        tp_cant_empls = empleados_tot- ta_cant_empls

        aus_total = {'dias_caidos_tot':dias_caidos_tot,'empleados_tot':empleados_tot,'dias_trab_tot':dias_trab_tot,'tasa_ausentismo':tasa_ausentismo,
        'dias_laborables':dias_laborables,'porc_dias_trab_tot':porc_dias_trab_tot, 'ta_cant_empls':ta_cant_empls,'tp_cant_empls':tp_cant_empls}
        
        #F('college_start_date') - F('school_passout_date')
        #AUSENTISMO INCULPABLE
        ausentismos_inc = ausentismos.filter(tipo_ausentismo=1)
        if ausentismos_inc:
            empleados_inc = ausentismos_inc.values('empleado').distinct().count()
            # empleados_tot = 77
            totales = tot_ausentes_inc(fdesde,fhasta,ausentismos_inc)
            dias_caidos_tot=totales[0] 
            # dias_caidos_tot = 67            
            dias_trab_tot = (dias_laborables * empleados_tot)-dias_caidos_tot

            tasa_ausentismo = calcular_tasa_ausentismo(dias_caidos_tot,dias_laborables,empleados_tot)                                      
            
            # agudos = ausentismos_inc.filter(aus_diascaidos__lte=30).aggregate(dias_caidos=Sum(Coalesce('aus_diascaidos', 0)))['dias_caidos'] or 0
            # graves = ausentismos_inc.filter(aus_diascaidos__gt=30).aggregate(dias_caidos=Sum(Coalesce('aus_diascaidos', 0)))['dias_caidos'] or 0
            agudos=totales[1] 
            graves=totales[2]   
            empl_agudos=totales[3] 
            empl_graves=totales[4]                 
            
            porc_agudos = (Decimal(agudos) / Decimal(dias_caidos_tot))*100 
            porc_cronicos = (Decimal(graves) / Decimal(dias_caidos_tot))*100 

            tot_agudos = int(empl_agudos)
            tot_cronicos = int(empl_graves)

            porc_agudos = Decimal(porc_agudos).quantize(Decimal("0.01"), decimal.ROUND_HALF_UP)
            porc_cronicos = Decimal(porc_cronicos).quantize(Decimal("0.01"), decimal.ROUND_HALF_UP)
            porc_dias_trab_tot = 100 - tasa_ausentismo        
            
            
            inc_cant_empls = empleados_inc
            noinc_cant_empls = empleados_tot- inc_cant_empls

            aus_inc = {'dias_caidos_tot':dias_caidos_tot,'empleados_tot':empleados_tot,'dias_trab_tot':dias_trab_tot,'tasa_ausentismo':tasa_ausentismo,
            'dias_laborables':dias_laborables,'porc_dias_trab_tot':porc_dias_trab_tot,'porc_agudos':porc_agudos,'porc_cronicos':porc_cronicos,
            'inc_cant_empls':inc_cant_empls,'noinc_cant_empls':noinc_cant_empls,'tot_agudos':tot_agudos,'tot_cronicos':tot_cronicos}

        #AUSENTISMO ACCIDENTES
        ausentismos_acc = ausentismos.filter(tipo_ausentismo=2)
        if ausentismos_acc:
            #empleados_tot = ausentismos_acc.values('empleado').distinct().count()
            # empleados_tot = 77
            dias_caidos_tot=dias_ausentes(fdesde,fhasta,ausentismos_acc) 
            # dias_caidos_tot = 67            
            dias_trab_tot = (dias_laborables * empleados_tot)-dias_caidos_tot
            tasa_ausentismo = calcular_tasa_ausentismo(dias_caidos_tot,dias_laborables,empleados_tot)                       
            if tasa_ausentismo > 0:

                porc_dias_trab_tot = 100 - tasa_ausentismo        

                tot_accidentes = ausentismos_acc.count()
                acc_empls = ausentismos_acc.values('empleado').distinct().count()
                noacc_empls = empleados_tot- acc_empls

                acc_denunciados = ausentismos_acc.exclude(Q(art_ndenuncia__isnull=True)|Q(art_ndenuncia__exact=''))
                denunciados_empl = acc_denunciados.values('empleado').distinct().count()
                acc_denunciados = (Decimal(acc_denunciados.count()) / Decimal(tot_accidentes))*100 
                acc_sin_denunciar = ausentismos_acc.filter(Q(art_ndenuncia__isnull=True)|Q(art_ndenuncia__exact=''))
                if not acc_sin_denunciar:
                    aus_acc2 = None
                else:
                    sin_denunciar_empl = acc_sin_denunciar.values('empleado').distinct().count()
                    acc_sin_denunciar = (Decimal(acc_sin_denunciar.count()) / Decimal(tot_accidentes))*100 
                    aus_acc2 = {'acc_denunciados':acc_denunciados,'acc_sin_denunciar':acc_sin_denunciar,'denunciados_empl':denunciados_empl,'sin_denunciar_empl':sin_denunciar_empl}

                acc_itinere = ausentismos_acc.filter(art_tipo_accidente=2)
                itinere_empl = acc_itinere.values('empleado').distinct().count()
                acc_itinere = (Decimal(acc_itinere.count()) / Decimal(tot_accidentes))*100                 
                acc_trabajo = ausentismos_acc.filter(art_tipo_accidente=1)
                trabajo_empl = acc_trabajo.values('empleado').distinct().count()
                acc_trabajo = (Decimal(acc_trabajo.count()) / Decimal(tot_accidentes))*100 

                
                aus_acc = {'dias_caidos_tot':dias_caidos_tot,'empleados_tot':empleados_tot,'dias_trab_tot':dias_trab_tot,'tasa_ausentismo':tasa_ausentismo,
                'dias_laborables':dias_laborables,'porc_dias_trab_tot':porc_dias_trab_tot,'tot_accidentes':tot_accidentes,
                'acc_itinere':acc_itinere,'acc_trabajo':acc_trabajo,'acc_empls':acc_empls,'noacc_empls':noacc_empls,'itinere_empl':itinere_empl,'trabajo_empl':trabajo_empl}
            else:
                aus_acc = None

        aus_x_grupop = ausentismos.values('aus_grupop__patologia').annotate(total=Count('aus_grupop')).order_by('-total')[:5]
        max_grupop = aus_x_grupop[0]['total']+1
        
        empl_mas_faltadores = []
        for a in ausentismos.select_related('empleado'):
            dias = dias_ausentes_empl(fdesde,fhasta,a)
            empl_mas_faltadores.append({'empleado':a.empleado,'dias':dias})
        
        empl_mas_faltadores = sorted(empl_mas_faltadores, key = lambda i: i['dias'],reverse=True) 


    context['aus_total']=  aus_total
    context['aus_inc']=  aus_inc
    context['aus_acc']=  aus_acc
    context['aus_acc2']=  aus_acc2
    context['aus_x_grupop']=  aus_x_grupop
    context['max_grupop']=  max_grupop
    context['dias_laborables']=  dias_laborables             
    context['empl_mas_faltadores']=  empl_mas_faltadores[:10]  
    if ('pdf' in request.POST)and(aus_total):         
            aus_tot_image = request.POST.get('aus_tot_image',None)
            aus_inc_image = request.POST.get('aus_inc_image',None)
            aus_inc2_image = request.POST.get('aus_inc2_image',None)
            aus_acc_image = request.POST.get('aus_acc_image',None)
            aus_acc2_image = request.POST.get('aus_acc2_image',None)
            aus_acc3_image = request.POST.get('aus_acc3_image',None)
            aus_grp_image = request.POST.get('aus_grp_image',None)

            template = 'reportes/reporte_periodo.html' 
            context['aus_tot_image'] = aus_tot_image     
            context['aus_inc_image'] = aus_inc_image     
            context['aus_inc2_image'] = aus_inc2_image     
            context['aus_acc_image'] = aus_acc_image     
            context['aus_acc2_image'] = aus_acc2_image     
            context['aus_acc3_image'] = aus_acc3_image     
            context['aus_grp_image'] = aus_grp_image     

            return render_to_pdf_response(request,template, context) 
    return render(request,template,context)
コード例 #20
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, "diag_pantalla"):
         return redirect(reverse("principal"))
     return super(DiagnosticoEditView, self).dispatch(*args, **kwargs)
コード例 #21
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'esp_pantalla'):
         return redirect(reverse('principal'))
     return super(EspecialidadView, self).dispatch(*args, **kwargs)
コード例 #22
0
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'prod_productos_abm'):
         return redirect(reverse('principal'))
     return super(ProductosCreateViewModal, self).dispatch(*args, **kwargs)
コード例 #23
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'ent_vendedores_abm'):
         return redirect(reverse('principal'))
     return super(VendedoresEditView, self).dispatch(*args, **kwargs)
コード例 #24
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def importar_empleados(request):           
    if not tiene_permiso(request,'empl_pantalla'):
            return redirect(reverse('principal'))
    ctx = {}
    ctx = getVariablesMixin(request) 
    
    if request.method == 'POST':
        form = ImportarEmpleadosForm(request.POST,request.FILES,request=request)
        if form.is_valid(): 
            csv_file = form.cleaned_data['archivo']
            empresa = form.cleaned_data['empresa']
            sobreescribir = form.cleaned_data['sobreescribir'] == 'S'
            
            if not csv_file.name.endswith('.csv'):
                messages.error(request,'¡El archivo debe tener extensión .CSV!')
                return HttpResponseRedirect(reverse("importar_empleados"))
            
            if csv_file.multiple_chunks():
                messages.error(request,"El archivo es demasiado grande (%.2f MB)." % (csv_file.size/(1000*1000),))
                return HttpResponseRedirect(reverse("importar_empleados"))

            decoded_file = csv_file.read().decode("latin1").replace(",", "").replace("'", "")
            io_string = io.StringIO(decoded_file)
            reader = unicode_csv_reader(io_string)                
            #DNI;LEGAJO/NRO;APELLIDO;NOMBRE;FECHA_NAC;DOMICILIO;CELULAR;TELEFONO;EMAIL;CP;LOCALIDAD;FECHA_INGR;ART;PUESTO            
            cant=0

            try:
                next(reader) #Omito el Encabezado                            
                for index,line in enumerate(reader):                      
                    campos = line[0].split(";")                               
                    cant_campos = len(campos)
                    if cant_campos<>14:
                        raise Exception(u'La cantidad de campos para el registro es incorrecta!(verifique que no existan ";" ni ")')

                    dni = campos[0].strip()              
                    # dni = str(random.randrange(29000000,40000000))
                    
                    if dni=='':
                        continue #Salta al siguiente                    
                    
                    empl = ent_empleado.objects.filter(nro_doc=dni,empresa=empresa).exists()
                    if empl and not sobreescribir:
                        continue

                    legajo = campos[1].strip()  #nro_legajo                                  
                    apellido = campos[2].strip()#apellido
                    if apellido=='':
                        raise Exception(u'El apellido no puede estar vacío!')
                    nombre = campos[3].strip() # nombre                
                    if nombre=='':
                        raise Exception(u'El nombre no puede estar vacío!')
                    nombre = apellido+' '+nombre
                    fecha=campos[4].strip()
                    if fecha=='':
                        fecha_nac=None
                    else:
                        fecha_nac = datetime.datetime.strptime(fecha, "%d/%m/%Y").date()   #fecha_nacim             
                    domicilio = campos[5].strip()  #DOMICILIO
                    celular =   campos[6].strip()  #celular
                    telefono =   campos[7].strip()  #telefono                    
                    email =   campos[8].strip()  #EMAIL                    
                    cp =   campos[9].strip()  #CP
                    localidad =   campos[10].strip()  #LOCALIDAD
                    fecha=campos[11].strip()
                    if fecha=='':
                        fecha_ingr=None
                    else:
                        fecha_ingr = datetime.datetime.strptime(fecha, "%d/%m/%Y").date()   #FECHA_INGR             
                    
                    art = campos[12].strip().upper().replace(",", "").replace(".", "") #ART               
                    if art=='':
                        art=None
                    else:
                        art = ent_art.objects.get_or_create(nombre=art)[0]                             
                    puesto = campos[13].strip().upper().replace(",", "").replace(".", "") #Puesto               
                    if puesto=='':
                        puesto=None
                    else:
                        puesto = ent_cargo.objects.get_or_create(cargo=puesto)[0]        
                    try:
                        ent_empleado.objects.update_or_create(nro_doc=dni,empresa=empresa,defaults={'legajo':legajo,'apellido_y_nombre':nombre,'fecha_nac':fecha_nac,'art':art,'trab_cargo':puesto,
                        'domicilio':domicilio,'celular':celular,'telefono':telefono,'email':email,'cod_postal':cp,'localidad':localidad,'empr_fingreso':fecha_ingr})                                                                 
                        cant+=1
                    except Exception as e:                    
                        error = u"Línea:%s -> %s" %(index,e)
                        messages.error(request,error)                                
                recalcular_cantidad_empleados(empresa)
                messages.success(request, u'Se importó el archivo con éxito!<br>(%s empleados creados/actualizados)'% cant )
            except Exception as e:
                messages.error(request,u"Línea:%s -> %s" %(index,e)) 
    else:
        form = ImportarEmpleadosForm(None,None,request=request)
    ctx.update(form=form)
    
    return render(request, 'entidades/importar_empleados.html',context=ctx)
コード例 #25
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
def ausentismo_eliminar(request, id):
    if not tiene_permiso(request, "aus_abm"):
        return redirect(reverse("principal"))
    aus = ausentismo.objects.get(pk=id, empleado__empresa__pk__in=empresas_habilitadas(request)).delete()
    messages.success(request, "¡Los datos se eliminaron con éxito!")
    return HttpResponseRedirect(reverse("ausentismo_listado"))
コード例 #26
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs): 
     if not tiene_permiso(self.request,'art_pantalla'):
         return redirect(reverse('principal'))
     return super(ARTEditView, self).dispatch(*args, **kwargs)
コード例 #27
0
ファイル: views.py プロジェクト: jmjacquet/laboralsalud
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, "aus_abm"):
         return redirect(reverse("ausentismo_listado"))
     return super(SeguimControlCreateView, self).dispatch(*args, **kwargs)
コード例 #28
0
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'gral_configuracion'):
         return redirect(reverse('principal'))
     return super(EmpresaEditView, self).dispatch(*args, **kwargs)
コード例 #29
0
ファイル: views.py プロジェクト: jmjacquet/IronWeb
 def dispatch(self, *args, **kwargs):
     if not tiene_permiso(self.request, 'trab_colocacion'):
         return redirect(reverse('principal'))
     return super(OCEstadoEditView, self).dispatch(*args, **kwargs)
コード例 #30
0
 def dispatch(self, *args, **kwargs):
     limpiar_sesion(self.request)
     if not tiene_permiso(self.request, 'gral_configuracion'):
         return redirect(reverse('principal'))
     return super(ProdStockView, self).dispatch(*args, **kwargs)