inicial
This commit is contained in:
178
condominio_sadicarnot81_Nvo/procesos.py
Normal file
178
condominio_sadicarnot81_Nvo/procesos.py
Normal file
@@ -0,0 +1,178 @@
|
||||
from django.db import transaction
|
||||
from django.db import connection
|
||||
|
||||
from .models import AcumuladoMes, Registro, CuotasCondominio, Movimiento, Condomino, CuentaBanco, Asiento
|
||||
|
||||
from catalogos.models import CuentaContable, PeriodoCorte
|
||||
|
||||
from ciec.procesos import dictfetchall, execsql
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
def run_acum_sadi81Nvo(condominio, shortname):
|
||||
print(" generando acumulados %s " % shortname)
|
||||
with transaction.atomic():
|
||||
borrado = ''
|
||||
nq1 = ''
|
||||
nq2 = ''
|
||||
#
|
||||
# Borra acumulados
|
||||
if shortname == "SADI81NVO":
|
||||
borrado = ''' delete from condominio_sadi81nvo_acumulado_mes '''
|
||||
nq1 = '''
|
||||
select nombre, clabe as cuenta, cb.saldo_inicial, min(fecha_movimiento) as fecha
|
||||
from condominio_sadi81nvo_movimiento m,
|
||||
condominio_sadi81nvo_cuenta_banco cb,
|
||||
periodo_corte p,
|
||||
condominio c
|
||||
where cb.id = m.cuenta_banco_id
|
||||
and m.fecha_movimiento >= p.fecha_inicial
|
||||
and m.fecha_movimiento <= p.fecha_final
|
||||
and c.nombre = 'SADI81NVO'
|
||||
and p.id = 9
|
||||
group by 1,2,3
|
||||
order by 4,2
|
||||
'''
|
||||
nq2 = '''
|
||||
select 'Condominio' as nombre, clabe as cuenta, to_char(fecha_movimiento,'MM-YYYY') as mes,
|
||||
min(fecha_movimiento) as fec_ini,
|
||||
max(fecha_movimiento) as fec_fin,
|
||||
round(sum(deposito),2) as depositos,
|
||||
round(sum(retiro),2) as retiros,
|
||||
round(sum(deposito)-sum(retiro),2) as diferencia
|
||||
from condominio_sadi81nvo_movimiento m,
|
||||
condominio_sadi81nvo_cuenta_banco cb,
|
||||
periodo_corte p
|
||||
where cb.id = m.cuenta_banco_id
|
||||
and fecha_movimiento >= p.fecha_inicial
|
||||
and fecha_movimiento <= p.fecha_final
|
||||
and p.id = 9
|
||||
group by 1,2,3
|
||||
order by 2,4,3
|
||||
'''
|
||||
#print(borrado,nq1,nq2)
|
||||
n = execsql(borrado)
|
||||
#
|
||||
# Trae saldo inicial de cada cuenta
|
||||
saldo_condominio = 0
|
||||
rows = execsql(nq1)
|
||||
print(rows)
|
||||
#
|
||||
# Por cada cuenta
|
||||
for r in rows:
|
||||
saldo = float(r['saldo_inicial'])
|
||||
#
|
||||
# Agrega depositos y retiros por cuenta y mes
|
||||
rows2 = execsql(nq2)
|
||||
for r2 in rows2:
|
||||
if r2['cuenta'] == r['cuenta']:
|
||||
saldo = round(saldo + float(r2['depositos']) - float(r2['retiros']), 2)
|
||||
|
||||
print(r2['cuenta'], r2['mes'], r2['depositos'], r2['retiros'], saldo)
|
||||
|
||||
reg = AcumuladoMes(cuenta_banco=r2['cuenta'], \
|
||||
mes=r2['mes'], \
|
||||
fecha_inicial=r2['fec_ini'], \
|
||||
fecha_final=r2['fec_fin'], \
|
||||
depositos=r2['depositos'], \
|
||||
retiros=r2['retiros'], \
|
||||
saldo=saldo)
|
||||
reg.save()
|
||||
if r['cuenta'] != '000000000000000000':
|
||||
saldo_condominio = saldo_condominio + saldo
|
||||
# print(saldo_condominio)
|
||||
#
|
||||
# Actualiza saldo en periodos
|
||||
oPer = PeriodoCorte.objects.get(id=9)
|
||||
oPer.saldo_final = saldo_condominio
|
||||
oPer.save()
|
||||
|
||||
def run_determinacionSaldos_sadi81Nvo(condomino):
|
||||
print(" determinando saldos %s " % condomino.depto)
|
||||
with transaction.atomic():
|
||||
# tipo = TipoMovimiento.objects.get(id=21)
|
||||
# prop = TipoMovimiento.objects.get(id=30)
|
||||
cuenta = CuentaContable.objects.get(id=82)
|
||||
# prove = Proveedore.objects.get(id=1)
|
||||
#
|
||||
# Borra asientos
|
||||
n = execsql(''' delete from condominio_sadi81nvo_registro where condomino_id = %s ''' % condomino.id)
|
||||
#
|
||||
# Agrega adeudo inicial
|
||||
if not condomino.depto == '0000':
|
||||
ade = condomino.adeudo_inicial
|
||||
sal = 0
|
||||
deb = 0
|
||||
sal = sal + deb - ade
|
||||
# adeudo = condomino.adeudo_inicial
|
||||
reg_i = Registro(fecha=condomino.fecha_adeudo_inicial, \
|
||||
descripcion='SALDO INICIAL A LA FECHA', \
|
||||
debe=deb, \
|
||||
haber=ade, \
|
||||
saldo=sal, \
|
||||
cuenta_contable=cuenta, \
|
||||
condomino=condomino)
|
||||
reg_i.save()
|
||||
#
|
||||
# Agrega adeudos por cuotas
|
||||
rows = CuotasCondominio.objects.all().order_by('mes_inicial')
|
||||
for r in rows:
|
||||
delta = (r.mes_final - r.mes_inicial)
|
||||
# print(r.descripcion,r.mes_inicial,r.mes_final,r.monto,r.cuenta_contable,delta.days)
|
||||
condom = r.condomino.filter(depto__contains=condomino.depto)
|
||||
if condom:
|
||||
base = r.mes_inicial
|
||||
for x in range(0, delta.days + 1):
|
||||
fecha = base + timedelta(days=x)
|
||||
if fecha.day == 1:
|
||||
reg_a = Registro(fecha=fecha, \
|
||||
descripcion='CARGO {}'.format(r.descripcion), \
|
||||
debe=0, \
|
||||
haber=r.monto, \
|
||||
saldo=0, \
|
||||
cuenta_contable=r.cuenta_contable, \
|
||||
condomino=condomino)
|
||||
reg_a.save()
|
||||
#
|
||||
# Agrega depositos por movimiento de banco
|
||||
if not condomino.depto == '0000':
|
||||
movtos = Movimiento.objects.filter(condomino__id=condomino.id).order_by('fecha_movimiento', 'id')
|
||||
for m in movtos:
|
||||
reg_m = Registro(fecha=m.fecha_movimiento, \
|
||||
descripcion=m.descripcion, \
|
||||
debe=m.deposito, \
|
||||
haber=0, \
|
||||
saldo=0, \
|
||||
cuenta_contable=r.cuenta_contable, \
|
||||
condomino=condomino)
|
||||
reg_m.save()
|
||||
asientos = Asiento.objects.filter(condomino_id=condomino.id).order_by('fecha', 'id')
|
||||
for a in asientos:
|
||||
reg_a = Registro(fecha=a.fecha, \
|
||||
descripcion=a.descripcion, \
|
||||
debe=a.debe, \
|
||||
haber=a.haber, \
|
||||
saldo=a.saldo, \
|
||||
cuenta_contable=a.cuenta_contable, \
|
||||
condomino=condomino)
|
||||
reg_a.save()
|
||||
# Recalcula saldos
|
||||
if not condomino.depto == '0000':
|
||||
sal = 0
|
||||
car = 0
|
||||
dep = 0
|
||||
rec = Registro.objects.filter(condomino__id=condomino.id).order_by('fecha', 'id')
|
||||
for rr in rec:
|
||||
car = car + rr.haber
|
||||
dep = dep + rr.debe
|
||||
sal = sal + rr.haber - rr.debe
|
||||
rr.saldo = sal
|
||||
rr.save()
|
||||
|
||||
reg_c = Condomino.objects.get(id=condomino.id)
|
||||
reg_c.cargos = car
|
||||
reg_c.abonos = dep
|
||||
reg_c.saldo = sal
|
||||
reg_c.save()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user