Пример #1
0
def __salario_nominal_real__(request, ano_inicial=None, ano_final=None):
    mes = False
    resultados = [] 

    rango_nominal = SalarioNominal.objects.all().aggregate(minimo=Min('ano'), maximo=Max('ano'))
    rango_real = SalarioNominal.objects.all().aggregate(minimo=Min('ano'), maximo=Max('ano'))
    rango = {'minimo':0, 'maximo':0}

    if rango_nominal['minimo'] == None and rango_nominal['maximo']==None:
        rango_nominal={'minimo': 0, 'maximo': 0}
    if rango_real['minimo'] == None and rango_real['maximo']==None:
        rango_real={'minimo': 0, 'maximo': 0}

    if rango_nominal['minimo']<=rango_real['minimo']:
        rango['minimo']=rango_nominal['minimo']
    else:
        rango['minimo']=rango_real['minimo']

    if rango_nominal['maximo']<=rango_real['maximo']:
        rango['maximo']=rango_nominal['maximo']
    else:
        rango['maximo']=rango_real['maximo']
    
    rango_anos = range(rango['minimo'], rango['maximo']+1)


    if ano_inicial and ano_final:
        for ano in range(int(ano_inicial), int(ano_final)+1):
            fila = {'ano':ano ,'datos': []}
            try:
                salario_nominal = SalarioNominal.objects.filter(ano=ano).aggregate(asegurados=Avg('asegurados_inss'),
                                                                                   gobierno=Avg('gobierno_central'),
                                                                                   nacional=Avg('salario_nacional'))
                fila['datos'].append(salario_nominal['asegurados'])
                fila['datos'].append(salario_nominal['gobierno'])
                fila['datos'].append(salario_nominal['nacional'])
            except:
                salario_nominal = {'asegurados': 0, 'gobierno': 0, 'nacional':0}
                for key in salario_nominal.keys():
                    fila['datos'].append(0)
                
            try:
                salario_real= SalarioReal.objects.filter(ano=ano).aggregate(asegurados=Avg('asegurados_inss'),
                                                                                           gobierno=Avg('gobierno_central'),
                                                                                           nacional=Avg('salario_nacional'))
                fila['datos'].append(salario_real['asegurados'])
                fila['datos'].append(salario_real['gobierno'])
                fila['datos'].append(salario_real['nacional'])
            except:
                salario_real = {'asegurados': 0, 'gobierno': 0, 'nacional':0}
                for key in salario_real.keys():
                    fila['datos'].append(0)

            #variaciones del salario real 
            for key in salario_nominal.keys():
                variacion = ((salario_nominal[key] - salario_real[key])/salario_nominal[key])*100
                fila['datos'].append(variacion)
            temp = dict.copy(fila)
            resultados.append(temp)
            
    elif ano_inicial:
        fila = {'ano': ano_inicial, 'mes':0, 'datos': []}
        mes = True
        for i in range(1,13):
            fila['mes'] = convertir_mes(i)
            fila['datos']=[]
            try:
                dato_nominal = SalarioNominal.objects.get(ano=ano_inicial, mes=i)
                fila['datos'].append(dato_nominal.asegurados_inss)
                fila['datos'].append(dato_nominal.gobierno_central)
                fila['datos'].append(dato_nominal.salario_nacional)
            except:
                dato_nominal=None
                fila['datos'].append(0)
                fila['datos'].append(0)
                fila['datos'].append(0)
            try:
                dato_real = SalarioReal.objects.get(ano=ano_inicial, mes=i)
                fila['datos'].append(dato_real.asegurados_inss)
                fila['datos'].append(dato_real.gobierno_central)
                fila['datos'].append(dato_real.salario_nacional)
            except:
                dato_real = None
                fila['datos'].append(0)
                fila['datos'].append(0)
                fila['datos'].append(0)
            #variaciones
            try:
                variacion_inss = ((dato_nominal.asegurados_inss - dato_real.asegurados_inss)/dato_nominal.asegurados_inss)*100
                fila['datos'].append(variacion_inss)
            except:
                fila['datos'].append(0)
            try:
                variacion_central= ((dato_nominal.gobierno_central- dato_real.asegurados_inss)/dato_nominal.asegurados_inss)*100
                fila['datos'].append(variacion_central)
            except:
                fila['datos'].append(0)
            try:
                variacion_nacional= ((dato_nominal.salario_nacional- dato_real.salario_nacional)/dato_nominal.salario_nacional)*100
                fila['datos'].append(variacion_nacional)
            except:
                fila['datos'].append(0)
            
            temp = dict.copy(fila)
            resultados.append(temp)
    else:
        for ano in rango_anos: 
            fila = {'ano':ano ,'datos': []}
            try:
                salario_nominal = SalarioNominal.objects.filter(ano=ano).aggregate(asegurados=Avg('asegurados_inss'), 
                                                                                                 gobierno=Avg('gobierno_central'),
                                                                                                 nacional=Avg('salario_nacional'))
                for key in salario_nominal.keys():
                    fila['datos'].append(salario_nominal[key])
            except:
                salario_nominal = {'asegurados': 0, 'gobierno': 0, 'nacional':0}
                for key in salario_nominal.keys():
                    fila['datos'].append(0)
                
            try:
                salario_real= SalarioReal.objects.filter(ano=ano).aggregate(asegurados=Avg('asegurados_inss'),
                                                                                           gobierno=Avg('gobierno_central'),
                                                                                           nacional=Avg('salario_nacional'))
                for key in salario_real.keys():
                    fila['datos'].append(salario_real[key])
            except:
                salario_real = {'asegurados': 0, 'gobierno': 0, 'nacional':0}
                for key in salario_real.keys():
                    fila['datos'].append(0)
            #variaciones del salario real 
            for key in salario_nominal.keys():
                try:
                    variacion = ((salario_nominal[key] - salario_real[key])/salario_nominal[key])*100
                except TypeError:
                    variacion = 0
                fila['datos'].append(variacion)
            temp = dict.copy(fila)
            resultados.append(temp)
        

    #variaciones
    variaciones = []
    if fila.has_key('mes')==False:
        tope = len(resultados)-1
        for i in range(len(resultados[0]['datos'])):
            try:
                variacion = ((float(resultados[tope]['datos'][i]) - 
                              float(resultados[0]['datos'][i]))/float(resultados[0]['datos'][i])*100) 
            except:
                variacion=0
            variaciones.append(variacion)
    
    dicc = {'datos': resultados, 'variaciones': variaciones,
            'tiene_mes': mes, 'anos': rango_anos}
    return dicc
Пример #2
0
def __salario_minimo__(request, ano_inicial=None, ano_final=None, sector=None):
    rango = SalarioMinimo.objects.all().aggregate(minimo=Min('ano'), maximo=Max('ano'))
    sectores_all = Sector.objects.all()
    try:
        rango_anos = range(rango['minimo'], rango['maximo']+1)
    except:
        rango_anos=None
    mes = False
    if sector:
        sector = get_object_or_404(Sector, slug=sector)
        sectores = [sector]
    else:
        sectores = sectores_all 

    resultados = [] 
    promedios = []

    if ano_inicial and ano_final:
        for ano in range(int(ano_inicial), int(ano_final)+1):
            fila = {'ano':ano ,'datos': []}
            for sector in sectores:
                try:
                    salario = SalarioMinimo.objects.filter(ano=ano, sector=sector).aggregate(valor=Avg('salario'))
                    tmp = salario['valor']
                    fila['datos'].append("%.2f" % tmp)
                except:
                    fila['datos'].append(0)
            resultados.append(fila)
            
    elif ano_inicial:
        fila = {'ano': ano_inicial, 'mes':0, 'datos': []}
        mes = True
        for sector in sectores:
            promedio = SalarioMinimo.objects.filter(ano=ano_inicial, sector=sector).aggregate(prom=Avg('salario'))
            promedios.append(promedio['prom'])

        for i in range(1,13):
            fila['mes'] = convertir_mes(i)
            fila['datos']=[]
            for sector in sectores:
                try:
                    dato = SalarioMinimo.objects.get(ano=ano_inicial, mes=i, sector=sector)
                    fila['datos'].append(dato.salario)
                except:
                    fila['datos'].append(0)
            temp = dict.copy(fila)
            resultados.append(temp)
    else:
        try:
            for ano in rango_anos:
                fila = {'ano':ano ,'datos': []}
                for sector in sectores:
                    try:
                        salario = SalarioMinimo.objects.filter(ano=ano, sector=sector).aggregate(valor=Avg('salario'))
                        tmp = salario['valor']
                        fila['datos'].append("%.2f" % tmp)
                    except:
                        fila['datos'].append(0)
                resultados.append(fila)
        except TypeError:
                fila = {'ano':0 ,'datos': []}
    
    #variaciones
    variaciones = []
    if fila.has_key('mes')==False:
        tope = len(resultados)-1
        for i in range(len(sectores)):
            try:
                variacion = ((float(resultados[tope]['datos'][i]) - float(resultados[0]['datos'][i]))/float(resultados[0]['datos'][i])*100) if resultados[0]['datos'][i]!= None else 0
            except:
                variacion = 0
            variaciones.append("%.2f" % variacion)
    
    dicc = {'datos': resultados, 'sectores': sectores, 'rango': rango_anos, 'sectores_all': sectores_all,
            'variaciones': variaciones, 'tiene_mes': mes, 'promedios': promedios}
    return dicc
Пример #3
0
def __canasta_basica__(request, tipo=None, ano_inicial=None, ano_final=None):
    columnas = []
    anos = CanastaBasica.objects.all().aggregate(maximo=Max('ano'), minimo=Min('ano'))
    try:
        rango_anos = range(anos['minimo'], anos['maximo']+1)
    except:
        rango_anos = None

    tipos_all = TipoCanastaBasica.objects.all()

    if tipo:
        tipo = get_object_or_404(TipoCanastaBasica, slug__iexact=tipo)
        tipos = [tipo]
    else:
        tipos = tipos_all

    resultados = []
    template_name = 'economico/canasta_basica.html'
    if ano_inicial and ano_final:
        for ano in range(int(ano_inicial), int(ano_final)+1):
            filita = {'ano': ano, 'datos': []}
            for tipo in tipos:
                canastas = CanastaBasica.objects.filter(ano=ano, tipo=tipo).aggregate(costo=Avg('costo'))
                filita['datos'].append(canastas['costo'])
            resultados.append(filita)
    elif ano_inicial:
        filita = {'ano': ano_inicial,'mes': 0, 'datos': []}
        for i in range(1,13):
            filita['mes']=convertir_mes(i)
            filita['datos'] = []
            for tipo in tipos:
                try:
                    canastas = CanastaBasica.objects.get(ano=ano_inicial, tipo=tipo, mes=i)
                    filita['datos'].append(canastas.costo)
                except:
                    filita['datos'].append(0)
            temp = dict.copy(filita)#para romper la byref
            resultados.append(temp)
        template_name='economico/canasta_basica_mes.html'
    else:
        try:
            for ano in rango_anos:
                filita = {'ano': ano, 'datos': []}
                for tipo in tipos:
                    canastas = CanastaBasica.objects.filter(ano=ano, tipo=tipo).aggregate(costo=Avg('costo'))
                    filita['datos'].append(canastas['costo'])
                resultados.append(filita)
        except TypeError:
            pass
    
    variaciones = [] 
    for tipo in tipos:
        columnas.append(tipo.tipo)

    tope = len(resultados)-1
    for i in range(len(tipos)):
        #variaciones
        try:
            variacion = ((resultados[tope]['datos'][i] - resultados[0]['datos'][i])/ resultados[0]['datos'][i])*100
            variaciones.append(variacion)
        except:
            variaciones.append(0)
        
    dicc = {'datos':resultados, 'columnas': columnas, 'variaciones': variaciones,
            'tipos_all': tipos_all, 'rango': rango_anos, 'template': template_name}
    return dicc