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='condo_130', 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_balcones_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('view', icon_url) return mark_safe( '%s' % ( self.id, text)) class Meta: managed = True db_table = 'condominio_balcones_condomino' ordering = ['depto'] class Movimiento(models.Model): cuenta_banco = models.ForeignKey(CuentaBanco, default=1,related_name='condo_131', 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='condo_139', 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_balcones_movimiento' ordering = ['fecha_movimiento'] class DetalleMovimiento(models.Model): movimiento = models.ForeignKey(Movimiento, verbose_name=('Movto'), related_name='condo_132', 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='condo_133', 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_balcones_detalle_movimiento' ordering = ['movimiento'] class Registro(models.Model): condomino = models.ForeignKey(Condomino, default=1, related_name='condo_134', 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='condo_135', 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_balcones_registro' ordering = ['fecha'] verbose_name_plural = "Registros" class Asiento(models.Model): condomino = models.ForeignKey(Condomino, default=1, on_delete=models.PROTECT, related_name='condo_140') 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='condo_136', 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_balcones_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='condo_137', on_delete=models.CASCADE) condomino = models.ManyToManyField(Condomino, related_name='condo_138') 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_balcones_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_balcones_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'