Beispiel #1
0
def cuentas_bancarias(request,id_comunidad,id_banco=''):
    print request.user.has_perm(USUARIO_LIMITADO)

    if request.user.has_perm(USUARIO_LIMITADO):
        if get_comunidad(request.user) != int(id_comunidad):
            return HttpResponseRedirect('/admin')
    bancos=CuentaBancaria.objects.filter(comunidad_id=id_comunidad)
    if id_banco == '':
         if len(bancos) > 0:
            actual=bancos[0]
         else:
            actual=CuentaBancaria(pk=0)
    else:
        actual=CuentaBancaria.objects.get(pk=id_banco)
    if actual.id == 0:
        asientos_contables=[]
    else: 
        asientos_contables=AsientoContableDetalle.objects.filter(asiento_contable__comunidad_id=id_comunidad,cuenta_bancaria_id=actual.id)
    if id_banco != '':
        actual=CuentaBancaria.objects.get(pk=id_banco)
    
    comunidad=Comunidad.objects.get(pk=id_comunidad)
    
    return render_to_response('balance/cuentas_bancarias.html', {'comunidad': comunidad,'bancos':bancos,
                        'actual':actual,'asientos_contables':asientos_contables},
                              context_instance=RequestContext(request))
Beispiel #2
0
def mayor(request,tipo):
    vector_cuentas = Cuenta.objects.filter(tipo=tipo).order_by('codigo_ordenado')
    usuario= request.user
    id_comunidad= get_comunidad(usuario)
    if request.user.has_perm(USUARIO_LIMITADO):
       anho = Ejercicio.objects.get(actual=True).anho
    else:
       anho = request.session['ejercicio']
    if id_comunidad == 0:
        return HttpResponseRedirect('/admin')
#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 and asiento.anho() == anho:
                    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,'id_comunidad':id_comunidad ,
                                        'tipo':tipo}, context_instance=RequestContext(request))
Beispiel #3
0
def movimiento_list(request,id_detalle):   
    movimientos=CategoriaDetalleMovimiento.objects.filter(categoria_detalle_id=id_detalle)
    detalle=CategoriaDetalle.objects.get(pk=id_detalle)
    usuario=request.user
    if usuario.has_perm(USUARIO_LIMITADO):
        if get_comunidad(usuario) != detalle.comunidad_id:
            return HttpResponseRedirect('/admin')
    return render_to_response('balance/movimiento_list.html',
                              {'movimientos':movimientos,'detalle':detalle},
                                  context_instance=RequestContext(request))
Beispiel #4
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))
Beispiel #5
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))
Beispiel #6
0
def inventario_comunidad(request,id_comunidad,id=0):
    usuario=request.user
    if usuario.has_perm(USUARIO_LIMITADO):
        if get_comunidad(usuario) != int(id_comunidad):
            messages.error(request, 'No Pertenece a la Comunidad a la que desea Acceder!')
            return HttpResponseRedirect('/admin')
    categorias=Categoria.objects.all().order_by('nombre')
    comunidad=Comunidad.objects.get(pk=id_comunidad)
    if id == 0:
        id=categorias[0].id
    categoria_actual=Categoria.objects.get(pk=id)
    form=MovimientoForm
    categoria_detalles=CategoriaDetalle.objects.filter(comunidad_id=id_comunidad,categoria_id=id)
    return render_to_response('balance/inventario_comunidad.html',
                              {'categorias':categorias,'actual':categoria_actual,
                               'categoria_detalles':categoria_detalles,'form':form,'comunidad':comunidad},
                                  context_instance=RequestContext(request))
Beispiel #7
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))
Beispiel #8
0
def categoria_detalle(request,id_comunidad,id_categoria,id=0):
    usuario=request.user
    if get_comunidad(usuario) != int(id_comunidad) and usuario.has_perm(USUARIO_LIMITADO):
        return HttpResponseRedirect('/admin')
    categoria=Categoria.objects.get(pk=id_categoria)
    
    if id == 0:
        categoria_detalle=CategoriaDetalle()
        categoria_detalle.descripcion=""
        modo="Registrar Descripcion"
        precio_unitario=PrecioForm()
    else:
        categoria_detalle=CategoriaDetalle.objects.get(pk=id)
        if int(categoria_detalle.categoria_id) != int(id_categoria):
            return HttpResponseRedirect('/admin')
        categoria_detalle.precio_unitario=str(categoria_detalle.precio_unitario)
        modo="Modificar Descripcion"
    if request.method == 'POST':            
            categoria_detalle.cantidad=int(request.POST.get('cantidad',0))
            categoria_detalle.precio_unitario=request.POST.get('precio_unitario',0.00)
            categoria_detalle.categoria_id=categoria.id
            categoria_detalle.descripcion = request.POST.get('descripcion','') 
            categoria_detalle.comunidad_id=id_comunidad
            if id != 0:
                categoria_detalle.id=id
            categoria_detalle.save()
            if id == 0:
                movimiento=CategoriaDetalleMovimiento()
                movimiento.movimiento='INI'
                movimiento.observacion="carga del stock inicial"
                movimiento.categoria_detalle=categoria_detalle
                movimiento.cantidad=categoria_detalle.cantidad
                fecha=request.POST.get('fecha')
                movimiento.fecha=datetime.datetime.strptime(fecha, "%d/%m/%Y")
                movimiento.save()
               
            
            return HttpResponseRedirect('/inventario/categoria/'+str(id_comunidad)+'/'+str(categoria.id))
    
    return render_to_response('balance/categoria_detalle.html',
                              {'categoria_detalle':categoria_detalle,'categoria':categoria,
                               'modo':modo,'id_comunidad':id_comunidad},
                                  context_instance=RequestContext(request))
Beispiel #9
0
def movimiento(request,id_detalle,id=0):
    detalle=CategoriaDetalle.objects.get(pk=id_detalle)
    usuario=request.user
    
    if get_comunidad(usuario) != detalle.comunidad_id and usuario.has_perm(USUARIO_LIMITADO):
        return HttpResponseRedirect('/admin')
    if id == 0:
        movimiento=CategoriaDetalleMovimiento()
        movimiento.observacion=""
        modo="Registrar Movimiento"
    else:
        movimiento=CategoriaDetalleMovimiento.objects.get(pk=id)
        modo="Modificar Movimiento"
    if request.method == 'POST':
            movimiento.cantidad=int(request.POST.get('cantidad',0))
            movimiento.categoria_detalle_id=id_detalle
            movimiento.observacion=request.POST.get('observacion',0)
            movimiento.movimiento=request.POST.get('movimiento','INI')
            fecha=request.POST.get('fecha','')
            fecha=datetime.datetime.strptime(fecha, "%d/%m/%Y")
            movimiento.fecha=fecha
            if id != 0:
                movimiento.id=id
            movimiento.save()
            if movimiento.movimiento == 'ENT':
                detalle.cantidad+=movimiento.cantidad
            elif movimiento.movimiento == 'SAL':
                detalle.cantidad-=movimiento.cantidad
            else:
                detalle.cantidad=movimiento.cantidad
            detalle.save()
            
            return HttpResponseRedirect('/inventario/movimiento_list/'+str(detalle.id))
    
    return render_to_response('balance/movimiento.html',
                              {'detalle':detalle,'modo':modo,'tipo_movimientos':TIPO_MOVIMIENTO,'movimiento':movimiento},
                                context_instance=RequestContext(request)) 
Beispiel #10
0
def listar(request):
    
    q=request.GET.get('q','')
    fecha__gte=request.GET.get('fecha__gte','1900-01-01')
    fecha__lt=request.GET.get('fecha__lt','2050-01-01')
    usuario=request.user
        
    if not usuario.has_perm(USUARIO_LIMITADO):
           objeto_total=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q,
                                                          asiento_contable__fecha__gt=fecha__gte,
                                                       asiento_contable__fecha__lt=fecha__lt).count()
    else:
        id_comunidad=get_comunidad(usuario)
        objeto_total=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q,
                                                          asiento_contable__fecha__gt=fecha__gte,
                                                       asiento_contable__fecha__lt=fecha__lt,asiento_contable__comunidad_id=id_comunidad).count()
    page=request.GET.get('page',1)
    
    lines=[]
    for i in range(objeto_total):
        lines.append(u'Line %s' % (i + 1))
    nro_lineas=100
    paginator = Paginator(lines, nro_lineas)
    try:
        page=int(page)
    except:
        page=1
    if int(page)*nro_lineas>objeto_total or int(page)>0:
        try:
            items = paginator.page(page)
            fin=int(page)*nro_lineas
            ini =fin-nro_lineas
        except PageNotAnInteger or EmptyPage:
            fin=nro_lineas
            ini=0
            items = paginator.page(1)
    else:
        fin=nro_lineas
        ini=0
        items = paginator.page(1)
        
    if not usuario.has_perm(USUARIO_LIMITADO):
           asientos=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q,
                                                          asiento_contable__fecha__gt=fecha__gte,
                                                       asiento_contable__fecha__lt=fecha__lt)[ini:fin]
    else:
        id_comunidad=get_comunidad(usuario)
        if id_comunidad == 0:
            pass
        asientos=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q,
                                                          asiento_contable__fecha__gt=fecha__gte,
                                                       asiento_contable__fecha__lt=fecha__lt,asiento_contable__comunidad_id=id_comunidad)

    hoy = datetime.datetime.today()
    ayer=hoy+datetime.timedelta(days=-1)
    ultimos_7dias = hoy + datetime.timedelta(days=-7)
    manana = hoy + datetime.timedelta(days=1)
    today=timezone_today()
    
    cant_dias=calendar.monthrange(today.year,1)[1]
    ultimos_30dias_max=  str(today.year)+'-'+str(today.month)+'-'+str(today.day)
    ultimos_30dias_min = str(today.year) + '-' + str(today.month) + '-01'
    este_anho_max=str(today.year+1) + '-01-01'
    este_anho_min=str(today.year) + '-01-01'
    
    return render_to_response('asientos/nuevo_asientos_list.html',
    {'asientos':asientos,'hoy':str(hoy.date()),'ultimos_30dias_max':ultimos_30dias_max,'page' : page,
     'ayer':str(ayer.date()),'ultimos_30dias_min':ultimos_30dias_min,'este_anho_max':este_anho_max,'este_anho_min':este_anho_min
        ,'ultimo_7dias':str(ultimos_7dias.date()),'manana':str(manana.date())},
    context_instance=RequestContext(request,{ 'lines': items }))
Beispiel #11
0
def editar(request,id):
    asiento=AsientoContable.objects.get(pk=id)
    asientos_detalles=AsientoContableDetalle.objects.filter(asiento_contable_id=id)
    
    if request.user.has_perm(USUARIO_LIMITADO):
        id_comunidad = get_comunidad(request.user)
    else:
        id_comunidad=asiento.comunidad_id
    
    bancos = CuentaBancaria.objects.filter(comunidad_id=id_comunidad)
    
    if request.method == 'POST':
        addOther=request.POST.get('_addanother','').encode('utf8')
        save=request.POST.get('_save','')
        total_rows=int(request.POST.get('cantidad_rows',0))
        fecha=request.POST.get('fecha','')
        fecha=datetime.datetime.strptime(fecha, "%d/%m/%Y")
        asiento.fecha = fecha
        asiento.save()

        for a in asientos_detalles:
           a.delete()
        fields=""
        for i in range(total_rows):            
            id_cuenta = request.POST.get('asientocontabledetalle_set-' + str(i) + '-cuenta', '')
            debe = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-debe', 0.00))
            haber = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-haber', 0.00))
            obs = request.POST.get('asientocontabledetalle_set-' + str(i) + '-observacion', '')
            print 'id_cuenta: '+str(id_cuenta)+'  debe: '+str(debe)+'  haber:  '+str(haber)+'  obs: '+str(obs)
            
            if id_cuenta != '':
                id_cuenta=int(id_cuenta)
                cuenta=Cuenta.objects.get(pk=id_cuenta)
                asiento_detalle=AsientoContableDetalle()
                asiento_detalle.cuenta_id=id_cuenta
                asiento_detalle.debe=debe
                asiento_detalle.haber=haber
                asiento_detalle.asiento_contable=asiento
                asiento_detalle.observacion=obs
                if cuenta.codigo == '1.2.5.2':
                    banco_id = request.POST.get('asientocontabledetalle_set-' + str(i) + '-banco', 0)
                    asiento_detalle.cuenta_bancaria_id=banco_id
                asiento_detalle.save()
                fields+='id:'+str(id_cuenta)+'-'+str(debe)+'-'+str(haber)+"\n"
        LogEntry.objects.log_action(
            user_id=request.user.id,
            content_type_id=ContentType.objects.get_for_model(AsientoContable).pk,
            object_id=asiento.id,
            object_repr=unicode(fields),
            action_flag=CHANGE)

        return HttpResponseRedirect('/asiento/editar/'+str(id))
        if save == 'Grabar':
                return HttpResponseRedirect('/asiento/listar/')
    filas=[]
    for i in range(len(asientos_detalles),50):
         filas.append(i)
    asiento.fecha=str(asiento.fecha.strftime('%d/%m/%Y'))
    if not request.user.has_perm(USUARIO_LIMITADO):
        return render_to_response('balance/admin_edit_asiento.html',{'filas':filas,'bancos': bancos,
              'asiento':asiento, 'asientos_detalles':asientos_detalles}, context_instance=RequestContext(request))
    else:
        return render_to_response('balance/edit_change_form.html', {'asiento':asiento,'filas':filas,
           'asientos_detalles':asientos_detalles,'bancos':bancos}, context_instance=RequestContext(request))
Beispiel #12
0
def nuevo(request,id_comunidad=''): 
    usuario=request.user
    if usuario.has_perm(USUARIO_LIMITADO) and id_comunidad=='':
        id_comunidad = get_comunidad(usuario)
        if id_comunidad == 0:
            return HttpResponseRedirect('/admin')
    else:
        if id_comunidad == '':
            return HttpResponseRedirect('/admin')
    bancos = CuentaBancaria.objects.filter(comunidad_id=id_comunidad)
    
    if request.method == 'POST':
        addOther = request.POST.get('_addanother', '').encode('utf8')
        save=request.POST.get('_save','')
        total_rows=int(request.POST.get('cantidad_rows',0))
        print 'asdf: '+str(total_rows)
        fecha=request.POST.get('fecha','')
        fecha=datetime.datetime.strptime(fecha, "%d/%m/%Y")
        asiento = AsientoContable()
        asiento.fecha = fecha
        asiento.comunidad_id = id_comunidad
        asiento.save()

        
        fields=""
        for i in range(0,total_rows):
            id_cuenta = request.POST.get('asientocontabledetalle_set-' + str(i) + '-cuenta', '')
            debe = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-debe', ''))
            haber = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-haber', ''))
            obs = request.POST.get('asientocontabledetalle_set-' + str(i) + '-observacion', '')
            if id_cuenta != '':
                id_cuenta=int(id_cuenta)
                cuenta=Cuenta.objects.get(pk=id_cuenta)
                asiento_detalle=AsientoContableDetalle()
                asiento_detalle.cuenta_id=id_cuenta
                asiento_detalle.debe=debe
                asiento_detalle.haber=haber
                asiento_detalle.asiento_contable=asiento
                asiento_detalle.observacion=obs
                if cuenta.codigo == '1.2.5.2':
                    banco_id = request.POST.get('asientocontabledetalle_set-' + str(i) + '-banco', 0)
                    asiento_detalle.cuenta_bancaria_id=banco_id
                asiento_detalle.save()
                fields+='id:'+str(id_cuenta)+'-'+str(debe)+'-'+str(haber)+"\n"
        LogEntry.objects.log_action(
            user_id=request.user.id,
            content_type_id=ContentType.objects.get_for_model(AsientoContable).pk,
            object_id=asiento.id,
            object_repr=unicode(fields),
            action_flag=ADDITION)
    cuentas=Cuenta.objects.all()
    filas=[]
    for i in range(0,50):
         filas.append(i)
    if not request.user.has_perm(USUARIO_LIMITADO):
        return render_to_response('balance/admin_change_form.html',
                                  {'add': True, 'filas':filas,'bancos': bancos, 'hoy': str(timezone_today().strftime('%d/%m/%Y'))},
                                  context_instance=RequestContext(request))
    else:
        return render_to_response('balance/nuevo_change_form.html', {'add':True,'filas':filas,'bancos':bancos,'hoy':str(timezone_today().strftime('%d/%m/%Y'))},
                              context_instance=RequestContext(request))
Beispiel #13
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))
Beispiel #14
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))