Beispiel #1
0
def get_query_mayor(id_comunidad,codigo_menor,codigo_mayor):
    aux_menor=Cuenta(codigo=codigo_menor)
    aux_mayor=Cuenta(codigo=codigo_mayor)
    
    
    QUERY_MAYOR="with T AS (select c.id,c.cuenta, sum(ad.debe) as debe , sum(ad.haber) as haber, "\
    "sum(ad.debe)-sum(ad.haber)  as saldo,c.codigo,c.codigo_ordenado "\
    "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 comu on comu.id = a.comunidad_id "\
    "join ejercicios_ejercicio e on e.anho = extract(year from a.fecha) "\
    "where comu.id = "+str(id_comunidad)+" and e.actual is True group by c.id, c.cuenta, c.tipo , "\
    " c.codigo_ordenado,c.codigo order by c.codigo_ordenado) "\
    "select c.codigo,c.cuenta, "\
    "(case when c.tipo like 'AC' then 'ACTIVO' "\
    "when c.tipo like 'PA' then 'PASIVO' "\
    "when c.tipo like 'IN' then 'INGRESO'"\
    "when c.tipo like 'EG' then 'EGRESO' "\
    "else c.tipo end ) as tipo,"\
    "(case when T.debe is null then 0 else T.debe end) as debe, "\
    "(case when T.haber is null then 0 else T.haber end) as haber, "\
    "(case when T.saldo is null then 0 else T.saldo end) as saldo,"\
    "(case when c.numchild > 0 then False else True end) as hijo from cuentas_cuenta c "\
    "full join T on T.id = c.id "\
    " where c.codigo_ordenado >= "+str(aux_menor.codigo_conversion())+" and "\
    " c.codigo_ordenado <= "+str(aux_mayor.codigo_conversion())+"  "\
    "order by c.codigo_ordenado "
    return QUERY_MAYOR
Beispiel #2
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
Beispiel #3
0
def mayores(request):
    vector_cuentas = Cuenta.get_tree()
    usuario = request.user
    id_comunidad=get_comunidad(usuario)

    #Optimizar la consulta   
    for cuenta in vector_cuentas:
        if cuenta.numchild == 0:
            cuenta_id = cuenta.id
            asientos = AsientoContableDetalle.objects.filter(cuenta=cuenta_id)
            for asiento in asientos:
                if asiento.comunidad_id() == id_comunidad:
                    cuenta.debe += asiento.debe
                    cuenta.haber += asiento.haber
            cuenta.cargado = True


    seguir = True
    longitud = len(vector_cuentas)
  
    while seguir:
        contador = 0
        for cuenta in vector_cuentas:
            if cuenta.cargado == False:
                debe = 0
                haber = 0
                hijos = cuenta.get_children()
                cargar = True
                salir = False
                for hijo in hijos:
                    for cuenta_aux in vector_cuentas:
                        if cuenta_aux.id == hijo.id:
                            if cuenta_aux.cargado:
                                debe += cuenta_aux.debe
                                haber += cuenta_aux.haber
                            else:
                                cargar = False
                                salir = True
                                break
                    if salir:
                        break
                if cargar:
                    cuenta.debe = debe
                    cuenta.haber = haber
                    cuenta.cargado = True
            else:
                contador += 1
        if contador == longitud:
            seguir = False

    return render_to_response('balance/mayores.html', {'vector_cuentas':vector_cuentas}, context_instance=RequestContext(request))