from django.db import models


class OutgoingInvoice(models.Model):
    number = models.CharField(max_length=100, unique=True)
    reference = models.CharField(max_length=100, blank=True)
    date = models.DateField()
    due_date = models.DateField(null=True, blank=True)
    contact_code = models.CharField(max_length=100)
    contact = models.JSONField(default=dict, blank=True)
    contact_title = models.CharField(max_length=255, blank=True)
    sum = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    payable = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    paid = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    rest = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    note = models.TextField(blank=True)
    sent = models.BooleanField(default=False)
    returned = models.BooleanField(default=False)
    invoice_type = models.CharField(max_length=100, blank=True)
    status = models.CharField(max_length=100, blank=True)
    tag = models.CharField(max_length=255, blank=True)
    freight = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    warehouse_receipt_status = models.CharField(max_length=100, blank=True)
    project = models.JSONField(default=dict, blank=True)
    salesman_code = models.CharField(max_length=100, blank=True)
    salesman_percent = models.DecimalField(max_digits=5, decimal_places=2, default=0)
    profit = models.DecimalField(max_digits=18, decimal_places=2, default=0)
    currency = models.CharField(max_length=50, blank=True)
    tax_id = models.CharField(max_length=100, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ["-date", "-id"]
        verbose_name = "Outgoing Invoice"
        verbose_name_plural = "Outgoing Invoices"

    def __str__(self):
        return self.number
