Example #1
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))
Example #2
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))
Example #3
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))