Files
exchange/offers/models.py
2026-01-07 09:12:35 +07:00

65 lines
2.7 KiB
Python

from django.db import models
import uuid
class Offer(models.Model):
"""Оффер (предложение) от поставщика в каталоге — один товар по одной цене"""
STATUS_CHOICES = [
('draft', 'Черновик'),
('active', 'Активно'),
('closed', 'Закрыто'),
('cancelled', 'Отменено'),
]
WORKFLOW_STATUS_CHOICES = [
('pending', 'Ожидает обработки'),
('active', 'Активен'),
('error', 'Ошибка'),
]
uuid = models.CharField(max_length=100, unique=True, default=uuid.uuid4)
team_uuid = models.CharField(max_length=100) # Команда поставщика
status = models.CharField(max_length=50, choices=STATUS_CHOICES, default='active')
workflow_status = models.CharField(
max_length=20,
choices=WORKFLOW_STATUS_CHOICES,
default='pending',
)
workflow_error = models.TextField(blank=True, default='')
# Локация отгрузки
location_uuid = models.CharField(max_length=100, blank=True, default='')
location_name = models.CharField(max_length=255, blank=True, default='')
location_country = models.CharField(max_length=100, blank=True, default='')
location_country_code = models.CharField(max_length=3, blank=True, default='')
location_latitude = models.FloatField(null=True, blank=True)
location_longitude = models.FloatField(null=True, blank=True)
# Товар
product_uuid = models.CharField(max_length=100, default='')
product_name = models.CharField(max_length=255, default='')
category_name = models.CharField(max_length=255, blank=True, default='')
# Количество и цена
quantity = models.DecimalField(max_digits=10, decimal_places=2, default=0)
unit = models.CharField(max_length=20, default='ton')
price_per_unit = models.DecimalField(max_digits=12, decimal_places=2, null=True, blank=True)
currency = models.CharField(max_length=3, default='USD')
# Описание (опционально)
description = models.TextField(blank=True, default='')
terminus_schema_id = models.CharField(max_length=255, blank=True, default='')
terminus_document_id = models.CharField(max_length=255, blank=True, default='')
# Срок действия
valid_until = models.DateField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'offers'
ordering = ['-created_at']
def __str__(self):
return f"{self.product_name} - {self.quantity} {self.unit} ({self.status})"