29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
from django.db import models
|
|
|
|
from apps.core.models import TimeStampedModel, UUIDModel
|
|
|
|
|
|
class Invoice(UUIDModel, TimeStampedModel):
|
|
class SyncState(models.TextChoices):
|
|
PENDING = "pending", "Pending"
|
|
PROCESSING = "processing", "Processing"
|
|
SYNCHRONIZED = "synchronized", "Synchronized"
|
|
FAILED = "failed", "Failed"
|
|
RETRYING = "retrying", "Retrying"
|
|
CANCELLED = "cancelled", "Cancelled"
|
|
|
|
order = models.ForeignKey("orders.ProcessingOrder", on_delete=models.PROTECT, related_name="invoices")
|
|
number = models.CharField(max_length=40, unique=True)
|
|
amount = models.DecimalField(max_digits=18, decimal_places=2)
|
|
currency = models.CharField(max_length=8, default="IRR")
|
|
sync_state = models.CharField(max_length=16, choices=SyncState.choices, default=SyncState.PENDING)
|
|
odoo_invoice_id = models.CharField(max_length=120, blank=True)
|
|
last_error = models.TextField(blank=True)
|
|
synced_at = models.DateTimeField(null=True, blank=True)
|
|
|
|
class Meta:
|
|
ordering = ["-created_at"]
|
|
|
|
def __str__(self) -> str:
|
|
return self.number
|