import uuid

from django.db import models

from apps.accounts.models import TimeStampedModel
from apps.invoicing.models import Invoice
from apps.payments.models import Payment


class Receipt(TimeStampedModel):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    receipt_number = models.CharField(max_length=64, unique=True)
    invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='receipts')
    payment = models.ForeignKey(Payment, on_delete=models.CASCADE, related_name='receipts')
    amount_paid = models.DecimalField(max_digits=14, decimal_places=2)
    balance = models.DecimalField(max_digits=14, decimal_places=2, default=0)
    payment_method = models.CharField(max_length=20)
    payment_date = models.DateField()
    authorized_signature = models.ImageField(upload_to='receipt_signatures/', blank=True, null=True)

    class Meta:
        ordering = ['-created_at']

    def __str__(self):
        return self.receipt_number
