You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.0 KiB
46 lines
2.0 KiB
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from django.db.models import Sum
|
|
|
|
# Create your models here.
|
|
class RegistrarCompra(models.Model):
|
|
nombre_compra = models.CharField(max_length=100)
|
|
monto_pago = models.DecimalField(max_digits=10, decimal_places=2)
|
|
observacion = models.TextField(blank=True)
|
|
user_compra = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
|
|
|
|
def calcular_estado(self):
|
|
# Usamos 'pagos' en lugar de 'registropagos_set' y sumamos 'monto_extra'
|
|
pagos = self.pagos.aggregate(total_pagado=Sum('monto_pagado'))['total_pagado'] or 0
|
|
pagos_extra = self.pagos.aggregate(total_extra=Sum('monto_extra'))['total_extra'] or 0
|
|
total_pagado = pagos + pagos_extra
|
|
|
|
if total_pagado == 0:
|
|
return "Pendiente"
|
|
elif total_pagado < self.monto_pago:
|
|
return "Pagado Parcialmente"
|
|
else:
|
|
return "Completado"
|
|
|
|
def calcular_restante(self):
|
|
# Usamos 'pagos' en lugar de 'registropagos_set' y sumamos 'monto_extra'
|
|
pagos = self.pagos.aggregate(total_pagado=Sum('monto_pagado'))['total_pagado'] or 0
|
|
pagos_extra = self.pagos.aggregate(total_extra=Sum('monto_extra'))['total_extra'] or 0
|
|
total_pagado = pagos + pagos_extra
|
|
return max(self.monto_pago - total_pagado, 0)
|
|
|
|
|
|
class RegistroPagos(models.Model):
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
registro_compra = models.ForeignKey(RegistrarCompra, on_delete=models.CASCADE, related_name='pagos') # Aquí agregamos `related_name`
|
|
fecha_pago = models.DateField(auto_now_add=True)
|
|
monto_pagado = models.DecimalField(max_digits=10, decimal_places=2, null=True)
|
|
monto_extra = models.DecimalField(max_digits=10, decimal_places=2, null=True)
|
|
observaciones = models.TextField(blank=True)
|
|
|
|
def __str__(self):
|
|
return f"Pago de {self.user.username} - {self.monto_pagado} (+{self.monto_extra})"
|
|
|
|
@property
|
|
def total_pagado(self):
|
|
return self.monto_pagado + self.monto_extra |