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 = ''' ''' #text = format_html('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