Files
2026-09-24 12:32:59 +03:30

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