inicial
This commit is contained in:
0
condominio_sadicarnot81_Nvo/__init__.py
Normal file
0
condominio_sadicarnot81_Nvo/__init__.py
Normal file
181
condominio_sadicarnot81_Nvo/admin.py
Normal file
181
condominio_sadicarnot81_Nvo/admin.py
Normal file
@@ -0,0 +1,181 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import Movimiento, DetalleMovimiento, CuentaBanco, CuotasCondominio, Condomino, AcumuladoMes, Registro, MovSinIdent, Asiento
|
||||
|
||||
from .procesos import run_determinacionSaldos_sadi81Nvo
|
||||
|
||||
from catalogos.models import PeriodoCorte
|
||||
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
# Register your models here.
|
||||
class DetalleMovtoInline(admin.TabularInline):
|
||||
model = DetalleMovimiento
|
||||
fields = ['cuenta_contable', 'monto', 'comentario']
|
||||
|
||||
def get_extra(self, request, obj=None, **kwargs):
|
||||
extra = 4
|
||||
return extra
|
||||
|
||||
@admin.register(Movimiento)
|
||||
class MovtoAdmin(admin.ModelAdmin):
|
||||
list_display = ('id','fecha_movimiento','descripcion','retiros','depositos','condomino', 'conciliacion')
|
||||
search_fields = ('descripcion',)
|
||||
date_hierarchy = 'fecha_movimiento'
|
||||
ordering = ('-fecha_movimiento',)
|
||||
save_on_top = True
|
||||
inlines = [DetalleMovtoInline]
|
||||
|
||||
def retiros(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.retiro)
|
||||
|
||||
def depositos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.deposito)
|
||||
|
||||
def conciliacion(self, request, obj=None, **kwargs):
|
||||
cantidades = DetalleMovimiento.objects.filter(movimiento_id=request.id).values_list('monto', flat=True)
|
||||
total = sum(cantidades)
|
||||
if (total != (request.retiro + request.deposito)):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
conciliacion.boolean = True
|
||||
|
||||
@admin.register(CuentaBanco)
|
||||
class CuentaBancoAdmin(admin.ModelAdmin):
|
||||
list_display = ('banco','clabe','apoderado')
|
||||
|
||||
@admin.register(CuotasCondominio)
|
||||
class CuotasAdmin(admin.ModelAdmin):
|
||||
list_display = ('descripcion', 'mes_inicial', 'mes_final', 'cantidad','cuenta_contable')
|
||||
ordering = ('-mes_inicial',)
|
||||
actions = ['cambiofechas',]
|
||||
|
||||
def cantidad(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.monto)
|
||||
|
||||
def cambiofechas(self, request, queryset):
|
||||
# condominio "SADI81NVO" tiene el id 9
|
||||
oPer = PeriodoCorte.objects.get(id=9)
|
||||
fecha_corte = oPer.fecha_final
|
||||
#print(fecha_corte)
|
||||
for obj in queryset:
|
||||
id = "%s" % obj.id
|
||||
obj.mes_final = fecha_corte
|
||||
obj.save()
|
||||
self.message_user(request, " Fin del proceso de cambio de fechas ")
|
||||
|
||||
cambiofechas.short_description = "Cambio de fecha de corte de cuotas "
|
||||
|
||||
@admin.register(Condomino)
|
||||
class CondominoAdmin(admin.ModelAdmin):
|
||||
list_display = ('depto', 'poseedor', 'adeudo_inicio', 'cuotas', 'depositos', 'adeudo_actual')
|
||||
search_fields = ('depto', 'propietario', 'poseedor')
|
||||
actions = ['determina_saldos']
|
||||
|
||||
def adeudo_inicio(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.adeudo_inicial)
|
||||
|
||||
def cuotas(self, request, obj=None, **kwargs):
|
||||
cargos = request.cargos - request.adeudo_inicial
|
||||
return "{:,}".format(cargos)
|
||||
|
||||
def depositos(self, request, obj=None, **kwargs):
|
||||
pagos = request.abonos
|
||||
return "{:,}".format(pagos)
|
||||
|
||||
def adeudo_actual(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.saldo)
|
||||
|
||||
def determina_saldos(self, request, queryset):
|
||||
for obj in queryset:
|
||||
# print(" determina saldos %s " % obj.depto)
|
||||
run_determinacionSaldos_sadi81Nvo(obj)
|
||||
#pass
|
||||
self.message_user(request, " Fin del proceso de determinacion de saldos ")
|
||||
|
||||
determina_saldos.short_description = "Determinacion de Saldos"
|
||||
|
||||
@admin.register(AcumuladoMes)
|
||||
class AcumuladoAdmin(admin.ModelAdmin):
|
||||
list_display = ('cuenta_banco', 'mes', 'fecha_inicial', 'fecha_final', 'Depositado', 'Retirado', 'Saldos')
|
||||
ordering = ('-fecha_inicial', 'cuenta_banco',)
|
||||
#actions = ['export_as_csv']
|
||||
#change_list_template = "admin/titulo_acumulados.html"
|
||||
|
||||
def Depositado(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.depositos)
|
||||
|
||||
def Retirado(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.retiros)
|
||||
|
||||
def Saldos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.saldo)
|
||||
|
||||
class dontLog:
|
||||
def log_deletion(self, **kwargs):
|
||||
return
|
||||
|
||||
@admin.register(Asiento)
|
||||
class AsientoAdmin(dontLog, admin.ModelAdmin):
|
||||
list_display = ('fecha','descripcion','condomino','Cargos','Depositos','Saldo')
|
||||
#change_list_template = "admin/titulo_registros.html"
|
||||
ordering = ('-fecha','-id')
|
||||
|
||||
def Depositos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.debe)
|
||||
|
||||
def Cargos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.haber)
|
||||
|
||||
def Saldo(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.saldo)
|
||||
|
||||
#@admin.register(Registro)
|
||||
class RegistroAdmin(dontLog, admin.ModelAdmin):
|
||||
list_display = ('fecha','E','descripcion','Cargos','Depositos','Saldo')
|
||||
change_list_template = "admin/titulo_registros.html"
|
||||
ordering = ('-fecha','-id')
|
||||
|
||||
def Depositos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.debe)
|
||||
|
||||
def Cargos(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.haber)
|
||||
|
||||
def Saldo(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.saldo)
|
||||
|
||||
def E(self, request, obj=None, **kwargs):
|
||||
icon = '''
|
||||
<svg width="16" height="16" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="right">
|
||||
<path d="M1413 896q0-27-18-45l-91-91-362-362q-18-18-45-18t-45 18l-91 91q-18 18-18 45t18 45l189 189h-502q-26 0-45 19t-19 45v128q0 26 19 45t45 19h502l-189 189q-19 19-19 45t19 45l91 91q18 18 45 18t45-18l362-362 91-91q18-18 18-45zm251 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use xlink:href="#right" x="0" y="0" fill="#447e9b" />
|
||||
</svg>
|
||||
'''
|
||||
#text = format_html('<img src="{}" alt="view">', icon)
|
||||
if(request.debe > 0):
|
||||
#return _boolean_icon(True)
|
||||
return mark_safe('%s' % icon)
|
||||
else:
|
||||
return ""
|
||||
|
||||
E.allow_tags = True
|
||||
|
||||
@admin.register(MovSinIdent)
|
||||
class MovSinIdentAdmin(admin.ModelAdmin):
|
||||
list_display = ('cuenta_banco', 'fecha_movimiento', 'descripcion', 'deposito')
|
||||
date_hierarchy = 'fecha_movimiento'
|
||||
save_on_top = True
|
||||
inlines = [DetalleMovtoInline]
|
||||
ordering = ('-fecha_movimiento',)
|
||||
|
||||
def get_queryset(self, request):
|
||||
query = super(MovSinIdentAdmin, self).get_queryset(request)
|
||||
filtered_query = query.filter(condomino__depto='0000').exclude(retiro__gt=0)
|
||||
return filtered_query
|
||||
5
condominio_sadicarnot81_Nvo/apps.py
Normal file
5
condominio_sadicarnot81_Nvo/apps.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class CondominioSadiCarnot81NvoConfig(AppConfig):
|
||||
name = 'condominio_sadicarnot81_Nvo'
|
||||
179
condominio_sadicarnot81_Nvo/models.py
Normal file
179
condominio_sadicarnot81_Nvo/models.py
Normal file
@@ -0,0 +1,179 @@
|
||||
from django.db import models
|
||||
|
||||
from django.db.models import Q
|
||||
from catalogos.models import Banco, CuentaContable
|
||||
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.templatetags.static import static
|
||||
from django.utils.html import format_html
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class CuentaBanco(models.Model):
|
||||
banco = models.ForeignKey(Banco, related_name='condominio_321', on_delete=models.PROTECT)
|
||||
clabe = models.CharField(max_length=18)
|
||||
apoderado = models.CharField(max_length=60)
|
||||
saldo_inicial = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True, default=0)
|
||||
fecha_saldo_inicial = models.DateField(blank=True, null=True)
|
||||
saldo_final = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True, default=0)
|
||||
fecha_saldo_final = models.DateField(blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s %d' % (self.clabe, self.apoderado[:10], self.saldo_final)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_cuenta_banco'
|
||||
verbose_name_plural = "Cuentas bancarias"
|
||||
|
||||
class Condomino(models.Model):
|
||||
depto = models.CharField(max_length=15, blank=True, null=True)
|
||||
propietario = models.CharField(max_length=60, blank=True, null=True)
|
||||
poseedor = models.CharField(max_length=60, blank=True, null=True)
|
||||
ubicacion = models.CharField(max_length=20, blank=True, null=True)
|
||||
email = models.CharField(max_length=25, blank=True, null=True)
|
||||
telefono = models.CharField(max_length=30, blank=True, null=True)
|
||||
fecha_escrituracion = models.DateField(blank=True, null=True)
|
||||
referencia = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
|
||||
indiviso = models.DecimalField(max_digits=10, decimal_places=4, blank=True, null=True)
|
||||
adeudo_inicial = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
fecha_adeudo_inicial = models.DateField(blank=True, null=True)
|
||||
cargos = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
abonos = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
saldo = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s' % (self.depto, self.poseedor)
|
||||
|
||||
def estado_cuenta(self):
|
||||
icon_url = static('admin/img/icon-viewlink.svg')
|
||||
text = format_html('<img src="{}" alt="view">', icon_url)
|
||||
return mark_safe(
|
||||
'<a href="/api-rest/estadocuenta/sadi81nvo/%d">%s</a>' % (
|
||||
self.id, text))
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_condomino'
|
||||
ordering = ['depto']
|
||||
|
||||
class Movimiento(models.Model):
|
||||
cuenta_banco = models.ForeignKey(CuentaBanco, default=1,related_name='condominio_322', on_delete=models.PROTECT)
|
||||
fecha_movimiento = models.DateField(blank=True, null=True)
|
||||
descripcion = models.CharField(max_length=250, blank=True, null=True)
|
||||
deposito = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
retiro = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
condomino = models.ForeignKey(Condomino, related_name='condominio_323', on_delete=models.PROTECT)
|
||||
|
||||
def __str__(self):
|
||||
return u'%d %s %d %s' % (
|
||||
self.id, self.fecha_movimiento.strftime('%d/%m/%Y'), self.deposito, self.descripcion[:15])
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_movimiento'
|
||||
ordering = ['fecha_movimiento']
|
||||
|
||||
class DetalleMovimiento(models.Model):
|
||||
movimiento = models.ForeignKey(Movimiento, verbose_name=('Movto'), related_name='condominio_324', on_delete=models.CASCADE)
|
||||
monto = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
cuenta_contable = models.ForeignKey(CuentaContable, verbose_name=('Cuenta Contable Ingreso/Egreso'),
|
||||
related_name='condominio_325',
|
||||
on_delete=models.CASCADE,
|
||||
limit_choices_to=Q(clave_mayor='41') | Q(clave_mayor='51') | Q(
|
||||
num_cuenta='2318'))
|
||||
comentario = models.CharField(max_length=20, blank=True, null=True, default=".")
|
||||
|
||||
def __str__(self):
|
||||
return '%s %d' % (self.cuenta_contable, self.monto)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_detalle_movimiento'
|
||||
ordering = ['movimiento']
|
||||
|
||||
class Registro(models.Model):
|
||||
condomino = models.ForeignKey(Condomino, default=1, related_name='condominio_326', on_delete=models.PROTECT)
|
||||
fecha = models.DateField(blank=True, null=True)
|
||||
descripcion = models.CharField(max_length=250, blank=True, null=True)
|
||||
debe = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0,
|
||||
verbose_name='Depositos')
|
||||
haber = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0, verbose_name='Cargos')
|
||||
saldo = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
cuenta_contable = models.ForeignKey(CuentaContable, verbose_name=('Cuenta Contable'), related_name='condominio_327', on_delete=models.CASCADE,
|
||||
limit_choices_to=Q(clave_mayor='23'))
|
||||
|
||||
def __str__(self):
|
||||
return u'%d %s %d %d %d' % (self.id, self.fecha.strftime('%d/%m/%Y'), self.debe, self.haber, self.saldo)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_registro'
|
||||
ordering = ['fecha']
|
||||
verbose_name_plural = "Registros"
|
||||
|
||||
class Asiento(models.Model):
|
||||
condomino = models.ForeignKey(Condomino, default=1, on_delete=models.PROTECT, related_name='condominio_396')
|
||||
fecha = models.DateField(blank=True, null=True)
|
||||
descripcion = models.CharField(max_length=250, blank=True, null=True)
|
||||
debe = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0,
|
||||
verbose_name='Depositos')
|
||||
haber = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0, verbose_name='Cargos')
|
||||
saldo = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
cuenta_contable = models.ForeignKey(CuentaContable, verbose_name=('Cuenta Contable'), on_delete=models.CASCADE, related_name='condominio_397',
|
||||
limit_choices_to=Q(clave_mayor='23'))
|
||||
|
||||
def __str__(self):
|
||||
return u'%d %s %d %d %d' % (self.id, self.fecha.strftime('%d/%m/%Y'), self.debe, self.haber, self.saldo)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_asiento'
|
||||
ordering = ['fecha']
|
||||
verbose_name_plural = "Auxiliar"
|
||||
|
||||
class CuotasCondominio(models.Model):
|
||||
descripcion = models.CharField(max_length=30, blank=True, null=True)
|
||||
mes_inicial = models.DateField(blank=True, null=True)
|
||||
mes_final = models.DateField(blank=True, null=True)
|
||||
dia_vencimiento = models.DecimalField(max_digits=2, decimal_places=0, blank=True, null=True, default=1)
|
||||
monto = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True, default=0)
|
||||
cuenta_contable = models.ForeignKey(CuentaContable, verbose_name=('Cuenta Contable'), related_name='condominio_328', on_delete=models.CASCADE)
|
||||
condomino = models.ManyToManyField(Condomino, related_name='condominio_329')
|
||||
|
||||
def __str__(self):
|
||||
return u'%s %s %s %d %s' % (
|
||||
self.descripcion, self.mes_inicial.strftime('%m-%Y'), self.mes_final.strftime('%m-%Y'), self.monto,
|
||||
self.cuenta_contable)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_cuotas'
|
||||
ordering = ['mes_inicial']
|
||||
verbose_name_plural = "Cuotas"
|
||||
|
||||
class AcumuladoMes(models.Model):
|
||||
cuenta_banco = models.CharField(max_length=20, blank=True, null=True)
|
||||
mes = models.CharField(max_length=7, blank=True, null=True)
|
||||
fecha_inicial = models.DateField(blank=True, null=True)
|
||||
fecha_final = models.DateField(blank=True, null=True)
|
||||
depositos = models.DecimalField(max_digits=12, decimal_places=2, blank=True, null=True, default=0)
|
||||
retiros = models.DecimalField(max_digits=12, decimal_places=2, blank=True, null=True, default=0)
|
||||
saldo = models.DecimalField(max_digits=12, decimal_places=2, blank=True, null=True, default=0)
|
||||
|
||||
def __str__(self):
|
||||
return u'%s %s %s %s %d %d %d' % (
|
||||
self.cuenta_banco, self.mes, self.fecha_inicial.strftime('%d/%m/%Y'), self.fecha_final.strftime('%d/%m/%Y'),
|
||||
self.depositos, self.retiros, self.saldo)
|
||||
|
||||
class Meta:
|
||||
managed = True
|
||||
db_table = 'condominio_sadi81nvo_acumulado_mes'
|
||||
verbose_name_plural = "Depositos y retiros por mes"
|
||||
|
||||
class MovSinIdent(Movimiento):
|
||||
class Meta:
|
||||
proxy = True
|
||||
verbose_name = 'Deposito sin identificar'
|
||||
verbose_name_plural = 'Depositos sin identificar'
|
||||
|
||||
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()
|
||||
|
||||
|
||||
3
condominio_sadicarnot81_Nvo/tests.py
Normal file
3
condominio_sadicarnot81_Nvo/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
0
condominio_sadicarnot81_Nvo/views.py
Normal file
0
condominio_sadicarnot81_Nvo/views.py
Normal file
Reference in New Issue
Block a user