Example #1
0
def inventario_general(request):
    usuario=request.user
    if usuario.has_perm(USUARIO_LIMITADO):
        return HttpResponseRedirect('/admin')
    
    query="select  c.id,c.nombre,(sum(cd.cantidad)::int) as cantidad ,"\
    " round(sum(cd.precio_unitario/cot.monto),2) as total from inventario_categoria c"\
    " join inventario_categoriadetalle cd on cd.categoria_id = c.id "\
    " join comunidades_comunidad com on com.id=cd.comunidad_id "\
    " join cotizaciones_cotizacion cot on cot.pais_id=com.pais_id "\
    " group by c.id, c.nombre "
    categorias=execute_all_query(query)

    return render_to_response('balance/inventario_general.html',
                              {'categorias':categorias,},
                                  context_instance=RequestContext(request))
Example #2
0
def mayor_detallado_pais(request,id,tipo='AC'):
    tipos = ['AC', 'PA', 'PN', 'IN', 'EG']
    if not tipos.__contains__(tipo):
        tipo = 'AC'
    if id == '':
        id = get_comunidad(request.user)
        if id == 0 :
            return HttpResponseRedirect('/admin')
        pais = Comunidad.objects.get(pk=id).pais
    else:
        pais = Pais.objects.get(pk=id)
    if request.user.has_perm(USUARIO_LIMITADO):
       ejercicio_anho = Ejercicio.objects.get(actual=True).anho
    else:
       ejercicio_anho = request.session['ejercicio']
    
    query = " select distinct c.id,c.cuenta from cuentas_cuenta c " \
            " join asientos_contables_asientocontabledetalle ad on ad.cuenta_id = c.id " \
            " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id " \
            " join comunidades_comunidad co on co.id = a.comunidad_id " \
            " where co.pais_id=" + str(id) + " and tipo='" + tipo + "' and extract( year from a.fecha) ="+str(ejercicio_anho)


    cuentas_list = execute_all_query(query)
    query_asiento="select ad.* from  asientos_contables_asientocontabledetalle ad "\
    " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\
    " join cuentas_cuenta c on c.id = ad.cuenta_id "\
    " join comunidades_comunidad co on co.id = a.comunidad_id "\
    " where c.tipo = '"+tipo+"' and co.pais_id = "+str(id)+" and extract( year from a.fecha) ="+str(ejercicio_anho)+" "\
    " order by c.codigo"
    print query_asiento

    asientos = AsientoContableDetalle.objects.raw(query_asiento)

    cuentas=[]
    for id_cuenta,cuenta in cuentas_list:
        debe=haber=0
        for asiento in asientos:
            if id_cuenta ==  asiento.cuenta_id:
                debe+=asiento.debe
                haber+=asiento.haber
        cuentas.append([id_cuenta,cuenta,debe-haber,asiento.cuenta.codigo])
    url = '/mayor_detalle_pais/' + str(id) + '/'
    return render_to_response('balance/mayor_detallado.html', {'asientos': asientos,'url':url,'cuentas':cuentas, 'tipo': tipo},
                              context_instance=RequestContext(request))
Example #3
0
def mayor_detalle(request,id_comunidad,desde,hasta):
    comunidad=Comunidad.objects.get(pk=id_comunidad)
     # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="Libro Mayor Detallado - '+comunidad.comunidad+'.pdf"'
 
    buffer = BytesIO()
 
    report = MyPrint(buffer, 'A4')
    if request.user.has_perm(USUARIO_LIMITADO):
       ejercicio_anho = Ejercicio.objects.get(actual=True).anho
    else:
       ejercicio_anho = request.session['ejercicio']
    
    aux_menor=Cuenta(codigo=desde)
    aux_mayor=Cuenta(codigo=hasta)
    
    query = " select distinct c.id,c.cuenta,c.codigo,c.codigo_ordenado from cuentas_cuenta c " \
            " join asientos_contables_asientocontabledetalle ad on ad.cuenta_id = c.id " \
            " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id " \
            " join ejercicios_ejercicio e on e.anho = extract(year from a.fecha) "\
            " where a.comunidad_id=" + str(id_comunidad) +"  and extract( year from a.fecha) ="+str(ejercicio_anho)+" "\
            " and c.codigo_ordenado >= "+str(aux_menor.codigo_conversion())+" and "\
            " c.codigo_ordenado <= "+str(aux_mayor.codigo_conversion())+"  "\
            " order by c.codigo_ordenado"
            
    cuentas_list = execute_all_query(query)
    asientos=AsientoContableDetalle.objects.filter(asiento_contable__fecha__year=ejercicio_anho,asiento_contable__comunidad_id=id_comunidad).order_by('cuenta__codigo_ordenado')
    cuentas=[]
    for id_cuenta,cuenta,codigo,aux in cuentas_list:
        debe=haber=0
        for asiento in asientos:
            if id_cuenta ==  asiento.cuenta_id:
                debe+=asiento.debe
                haber+=asiento.haber
        cuentas.append([id_cuenta,cuenta,debe-haber,codigo])
    for cuenta in cuentas:
        print cuenta
        
    pdf = report.print_mayor_detalle(cuentas,comunidad.comunidad,asientos)
    response.write(pdf)
    
    return response
Example #4
0
def mayor_detallado_consolidado(request,tipo='AC'):
    if request.user.has_perm(USUARIO_LIMITADO):
        return HttpResponseRedirect('/admin')
    tipos = ['AC', 'PA', 'PN', 'IN', 'EG']
    if not tipos.__contains__(tipo):
        tipo = 'AC'
    if request.user.has_perm(USUARIO_LIMITADO):
       ejercicio_anho = Ejercicio.objects.get(actual=True).anho
    else:
       ejercicio_anho = request.session['ejercicio']
    
    query_asiento="select distinct * from (select ad.* from  asientos_contables_asientocontabledetalle ad "\
    " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\
    " join cuentas_cuenta c on c.id = ad.cuenta_id "\
    " join cotizaciones_cotizacion cot on cot.fecha=a.fecha where c.tipo = '"+str(tipo)+"'" \
    " and extract( year from a.fecha) = "+str(ejercicio_anho)+" order by c.codigo) as T"


    asientos = AsientoContableDetalle.objects.raw(query_asiento)

    query_cuentas = " select distinct c.id,c.cuenta from cuentas_cuenta c " \
            " join asientos_contables_asientocontabledetalle ad on ad.cuenta_id = c.id " \
            " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id " \
            " where tipo='" + tipo + "' and extract( year from a.fecha) =" + str(ejercicio_anho)
    cuentas_list=execute_all_query(query_cuentas)
    cuentas = []
    for id_cuenta, cuenta in cuentas_list:
        debe = haber = 0
        for asiento in asientos:
            if id_cuenta == asiento.cuenta_id:
                debe += asiento.debe_en_dolares()
                haber += asiento.haber_en_dolares()
        cuentas.append([id_cuenta, cuenta, debe - haber, asiento.cuenta.codigo])
    #print query_cuentas
    #print cuentas
    url = '/mayor_detalle_consolidado/'
    return render_to_response('balance/mayor_detallado.html',
                              {'asientos': asientos, 'url': url, 'cuentas': cuentas, 'tipo': tipo,'consolidado':'true'},
                              context_instance=RequestContext(request))
Example #5
0
def mayor(request,id_comunidad,desde,hasta):
    comunidad=Comunidad.objects.get(pk=id_comunidad)
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="Libro Mayor - '+comunidad.comunidad+'.pdf"'
 
    buffer = BytesIO()
 
    report = MyPrint(buffer, 'A4')
    
    mayor=execute_all_query(get_query_mayor(id_comunidad, desde,hasta))
    lista=[]
        
    for m in mayor:
       aux=[m[0],m[1],m[2],m[3],m[4],m[5],m[6]]
       lista.append(aux)
        
    cuentas=procesar(lista)
    
    pdf = report.print_mayor(cuentas,comunidad.comunidad)
 
    response.write(pdf)
    return response
Example #6
0
def mayor_detallado_comunidad(request,id,tipo='AC'):
    tipos = ['AC', 'PA', 'PN', 'IN', 'EG']
    if not tipos.__contains__(tipo):
        tipo = 'AC'
    if request.user.has_perm(USUARIO_LIMITADO):
        if int(id)!= get_comunidad(request.user):
            return HttpResponseRedirect('/admin')
    else:
        id_comunidad=asiento.comunidad_id
    if id == '':
        id=get_comunidad(request.user)
    if request.user.has_perm(USUARIO_LIMITADO):
       ejercicio_anho = Ejercicio.objects.get(actual=True).anho
    else:
       ejercicio_anho = request.session['ejercicio']
    
   
    comunidad=Comunidad.objects.get(pk=id)
    query = " select distinct c.id,c.cuenta from cuentas_cuenta c " \
            " join asientos_contables_asientocontabledetalle ad on ad.cuenta_id = c.id " \
            " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id " \
            " where a.comunidad_id=" + str(id) + " and tipo='" + tipo + "'  and extract( year from a.fecha) ="+str(ejercicio_anho)
    cuentas_list = execute_all_query(query)
    asientos=AsientoContableDetalle.objects.filter(cuenta__tipo=tipo,asiento_contable__fecha__year=ejercicio_anho,asiento_contable__comunidad_id=id).order_by('cuenta')
    cuentas=[]
    for id_cuenta,cuenta in cuentas_list:
        debe=haber=0
        for asiento in asientos:
            if id_cuenta ==  asiento.cuenta_id:
                debe+=asiento.debe
                haber+=asiento.haber
        cuentas.append([id_cuenta,cuenta,debe-haber,asiento.cuenta.codigo])
    url='/mayor_detalle_comunidad/'+str(id)+'/'
    return render_to_response('balance/mayor_detallado.html', {'asientos': asientos,'url':url,'comunidad':comunidad,'detalle':'detalle',
                                                               'cuentas':cuentas, 'tipo': tipo},
                              context_instance=RequestContext(request))
Example #7
0
def cerrar_ejercicio(request):
    if Ejercicio.objects.filter(actual=True).exists():
        ejercicio=Ejercicio.objects.get(actual=True)
    else:
        ejercicio=Ejercicio()
    if request.method == 'POST':
        ejercicio.actual=False
        ejercicio.save()
        crear_ejercicio=request.POST.get('crear_ejercicio','No')
        print crear_ejercicio
        if crear_ejercicio == 'Si':
            nuevo_ejercicio = Ejercicio()
            nuevo_ejercicio.actual = True
            nuevo_ejercicio.anho = ejercicio.anho + 1
            nuevo_ejercicio.save()
            cuentas = Cuenta.objects.filter(numchild=0).filter(Q(tipo='IN') | Q(tipo='EG')).order_by('codigo_ordenado')
            comunidades = Comunidad.objects.all()
            for comunidad in comunidades:
                for cuenta in cuentas:
                    print cuenta
                    for i in range(1, 13):
                        presupuesto = Presupuesto()
                        presupuesto.ejercicio = nuevo_ejercicio
                        presupuesto.cuenta = cuenta
                        presupuesto.mes = i
                        presupuesto.monto = 0
                        presupuesto.comunidad = comunidad
                        presupuesto.save()
            crear_asiento=request.POST.get('crear_asiento','No')
            if crear_asiento == 'Si':
                query_comunidad="select distinct co.id  from asientos_contables_asientocontabledetalle ad "\
                " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\
                " join comunidades_comunidad co on co.id=a.comunidad_id "\
                " join cuentas_cuenta c on c.id=ad.cuenta_id "\
                " where extract(year from a.fecha)="+str(ejercicio.anho)+" and ad.debe-ad.haber != 0"
                comunidades=execute_all_query(query_comunidad)

                query="select co.id, c.id,sum(ad.debe)-sum(ad.haber) as saldo "\
                " from asientos_contables_asientocontabledetalle ad "\
                " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\
                " join comunidades_comunidad co on co.id=a.comunidad_id "\
                " join cuentas_cuenta c on c.id=ad.cuenta_id "\
                " where extract(year from a.fecha)="+str(ejercicio.anho)+" and ad.debe-ad.haber != 0"\
                " group by co.id,c.id, c.cuenta order by co.id"
                asientos_detalles=execute_all_query(query)

                for com in comunidades:
                    asiento_apertura=AsientoContable()
                    asiento_apertura.fecha=timezone_today()
                    asiento_apertura.comunidad_id=com[0]
                    asiento_apertura.observacion="Asiento de apertura correspodiente al ejercicio actual"
                    asiento_apertura.save()
                    for ad in asientos_detalles:
                        if ad[2] == com[0]:
                            asiento_detalle_apertura=AsientoContableDetalle()
                            asiento_detalle_apertura.cuenta_id=ad[1]
                            if ad[2]>0:
                                asiento_detalle_apertura.debe=ad[2]
                            else:
                                asiento_detalle_apertura.haber = ad[2]*-1
                            asiento_detalle_apertura.asiento_contable=asiento_apertura
                            asiento_detalle_apertura.observacion="Asiento de apertura"
                            asiento_detalle_apertura.save()
        return HttpResponseRedirect('/admin')
    return render_to_response('balance/cerrar_ejercicio.html', {'ejercicio':ejercicio},
                              context_instance=RequestContext(request))
Example #8
0
def presupuesto_comunidad(request,id,tipo):
    print "id: "+str(id)
    if tipo != 'IN' and tipo !='EG':
        tipo='IN'
    cuentas=Cuenta.objects.filter(tipo=tipo).order_by('codigo_ordenado')
    usuario=request.user
    
    if int(id)==0 and usuario.is_superuser:
        messages.error(request, 'Debe ingresar una comunidad')
        return HttpResponseRedirect('/admin')
    if usuario.has_perm(USUARIO_LIMITADO):
        if int(id) != int(get_comunidad(usuario)):
            messages.error(request, 'No Pertenece a la Comunidad a la que desea Acceder!')
            return HttpResponseRedirect('/admin')
    if id == 0:
        comunidad=Comunidad.objects.get(pk=request.user.get_comunidad())
    else:
        comunidad=get_object_or_404(Comunidad,pk=id)
    ejercicio=Ejercicio.objects.get(actual=True)
    query="select c.id, c.cuenta, p.mes,sum(p.monto) as monto,c.codigo from presupuestos_presupuesto p"\
    " join ejercicios_ejercicio e on e.id=p.ejercicio_id join cuentas_cuenta c on c.id=p.cuenta_id "\
    " where e.anho = "+str(ejercicio.anho)+" and p.comunidad_id = "+str(comunidad.id)+" and c.tipo like '"+tipo+"' group by c.id, c.cuenta,c.codigo,p.mes order by c.codigo_ordenado, p.mes"
    print query
    presupuestos=execute_all_query(query)
    presupuestos_list=[]
    cuentas_list=[]
    i=0


    while i < len(presupuestos):
        aux = [presupuestos[i][0], presupuestos[i][1]]
        for j in range(i, i+12):
            aux.append(str(presupuestos[j][3]))
        aux.append(presupuestos[i][4])
        presupuestos_list.append(aux)
        i+=12
    for c in presupuestos_list:
        print c

    for c in cuentas:
        existe=esta_en_presupuesto_list(c.id, presupuestos_list)
        if existe != None:
            existe.append(False)
            cuentas_list.append(existe)
        else:
            aux = [c.id, c.cuenta]
            for ii in range(1, 13):
                aux.append('0.00')
            aux.append(c.codigo)
            aux.append(True)
            cuentas_list.append(aux)
            
   
    if request.method == 'POST':
        for c in presupuestos_list:
            for k in range(1,13):
                monto=request.POST.get('cuenta-'+str(c[0])+'-'+str(k))
                cambiar = request.POST.get('cambiar-' + str(c[0])+'-'+str(k),'')
                if cambiar == "true":
                    print 'cambiaar: ' + str(cambiar)+'  monto: '+str(monto)
                    print ' monto: '+str(monto)+'   cuenta: '+str(c[0])+' comunidad: '+str(comunidad)+' mes:'+str(k)+' ejercicio_id: '+str(ejercicio.id)    
                    p=Presupuesto.objects.get(cuenta_id=c[0],mes=k,ejercicio_id=ejercicio.id,comunidad=comunidad)
                    print p.comunidad.comunidad
                    p.monto=Decimal(monto)
                    p.save()
                    print 'guardado'
        messages.info(request, 'Grabado exitosamente!')
        save_=request.POST.get('_save','')
        continue_=request.POST.get('_continue','')
        return HttpResponseRedirect('/presupuesto_comunidad/'+str(id)+"/"+tipo)
    return render_to_response('balance/presupuesto.html', {'presupuestos_list':cuentas_list,'tipo':tipo,
                                                        'comunidad':comunidad, 'MESES':MESES}, context_instance=RequestContext(request))
Example #9
0
def ejecucion_presupuestaria_comunidad(request,tipo):
    if tipo != 'IN' and tipo != 'EG':
        tipo = 'IN'
    id_comunidad=get_comunidad(request.user)
    if id_comunidad == 0:
        return HttpResponseRedirect('/admin')
    comunidad=Comunidad.objects.get(pk=id_comunidad)
    ejercicio=Ejercicio.objects.get(actual=True)
    query_ejecutados="select c.id,c.cuenta, (extract(month from fecha) :: int) as mes, "\
    " (case when c.tipo like 'IN' then sum(haber)-sum(debe) else sum(debe)-sum(haber) end) as saldo, "\
    "  c.codigo from  asientos_contables_asientocontabledetalle ad "\
    " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\
    " join cuentas_cuenta c on c.id=ad.cuenta_id join ejercicios_ejercicio e on e.anho=extract(year from a.fecha) "\
    " where e.actual is true and c.tipo = '"+str(tipo)+"' and a.comunidad_id = "+str(comunidad.id)+" group by extract(month from a.fecha),c.cuenta,c.id,c.codigo, "\
    " c.codigo_ordenado,c.tipo order by c.codigo_ordenado"
    ejecutados=execute_all_query(query_ejecutados)


    query_presupuestados = "select c.id, c.cuenta, p.mes,sum(p.monto) as monto,c.codigo from presupuestos_presupuesto p" \
            " join ejercicios_ejercicio e on e.id=p.ejercicio_id join cuentas_cuenta c on c.id=p.cuenta_id " \
            " where e.anho = " + str(ejercicio.anho) + " and c.tipo like '" + tipo + "' and p.comunidad_id="+str(comunidad.id)+" group by c.id, c.cuenta,c.codigo,p.mes" \
            " order by c.codigo_ordenado, mes"
    presupuestados = execute_all_query(query_presupuestados)

    presupuestados_list=[]
    i=0
    while i < len(presupuestados):
        aux = [presupuestados[i][0], presupuestados[i][1]]
        for j in range(i, i + 12):
            aux.append(str(presupuestados[j][3]))
        aux.append(presupuestados[i][4])
        presupuestados_list.append(aux)
        i += 12
    i=0

    ejecutados_list=[]
    while i<len(ejecutados):
        aux=[ejecutados[i][0],ejecutados[i][1]]
        for j in range(1,13):
            existe=get_monto_from_ejecutados(ejecutados[i][0],j,ejecutados)
            aux.append(existe)
        aux.append(ejecutados[i][4])
        ejecutados_list.append(aux)
        i+=1
    total_list=join_lists(presupuestados_list,ejecutados_list)


    cuentas=Cuenta.objects.filter(tipo=tipo).order_by('codigo_ordenado')
    cuentas_list = []
    for c in cuentas:
        existe=existe_en_lista(c.id,lista=total_list)
        if existe == None:
            aux=[c.id,c.cuenta]
            for i in range(2,26):
                aux.append('0.00')
            aux.append(c.codigo)
            aux.append(True)
            aux.append('no')
            cuentas_list.append(aux)
        else:
            existe.append(False)
            existe.append('si')
            cuentas_list.append(existe)
    sumar_padre(cuentas_list)
    url='/ejecucion_presupuestaria_comunidad/'
    return render_to_response('balance/ejecucion_presupuestaria.html', {'url':url,' vector_cuentas':cuentas_list,'tipo':tipo,
                                                                        'meses':MESES,'comunidad':comunidad},
                              context_instance=RequestContext(request))