182 lines
6.7 KiB
Python
182 lines
6.7 KiB
Python
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
|