inicial
This commit is contained in:
205
condominio_coyoacan/admin.py
Normal file
205
condominio_coyoacan/admin.py
Normal file
@@ -0,0 +1,205 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import Movimiento, DetalleMovimiento, CuentaBanco, CuotasCondominio, Condomino, AcumuladoMes, Registro, MovSinIdent, Asiento
|
||||
|
||||
from .procesos import run_determinacionSaldos_coyoacan, run_detalle_ingresos_egresos, run_estado_cuenta
|
||||
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
from django.http import HttpResponse
|
||||
|
||||
# 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',)
|
||||
|
||||
def cantidad(self, request, obj=None, **kwargs):
|
||||
return "{:,}".format(request.monto)
|
||||
|
||||
@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', 'reporte_individual']
|
||||
|
||||
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_coyoacan(obj)
|
||||
#pass
|
||||
self.message_user(request, " Fin del proceso de determinacion de saldos ")
|
||||
|
||||
def reporte_individual(self, request, queryset):
|
||||
condominos = []
|
||||
for obj in queryset:
|
||||
item = {}
|
||||
item['id'] = obj.id
|
||||
item['depto'] = obj.depto
|
||||
item['poseedor'] = obj.poseedor
|
||||
item['adeudo'] = obj.saldo
|
||||
condominos.append(item)
|
||||
#print(condominos)
|
||||
filename = 'ciec_output_ec.xlsx'
|
||||
stream = BytesIO()
|
||||
data = run_estado_cuenta(condominos, stream)
|
||||
self.message_user(request, "Fin del proceso, verifique area de descargas ")
|
||||
response = HttpResponse(content_type='application/ms-excel')
|
||||
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
|
||||
response.write(data)
|
||||
return response
|
||||
|
||||
reporte_individual.short_description = "Descarga estado de cuenta"
|
||||
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 = ['detalle_ing_egr']
|
||||
#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)
|
||||
|
||||
def detalle_ing_egr(self, request, queryset):
|
||||
dates = []
|
||||
for obj in queryset:
|
||||
dates.append(obj.fecha_inicial)
|
||||
dates.append(obj.fecha_final)
|
||||
filename = 'ciec_output_ie.xlsx'
|
||||
stream = BytesIO()
|
||||
data = run_detalle_ingresos_egresos(min(dates), max(dates), stream)
|
||||
response = HttpResponse(content_type='application/ms-excel')
|
||||
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
|
||||
response.write(data)
|
||||
return(response)
|
||||
|
||||
detalle_ing_egr.short_description = "Descargar detalle de ingresos y egresos"
|
||||
#Detalle.allow_tags = True
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user