Упрощена система номеров заказов: переход на числовые номера

- Изменено поле order_number с CharField на PositiveIntegerField
- Удален метод generate_order_number()
- Упрощен метод save() - автоинкремент на основе максимального значения
- Номера заказов теперь хранятся как числа (1, 2, 3, ...) без форматирования
- Удалены все миграции для чистого старта

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-10 20:44:42 +03:00
parent bfd4d1679a
commit c8923970ea
21 changed files with 671 additions and 845 deletions

View File

@@ -5,7 +5,6 @@ from customers.models import Customer, Address
from products.models import Product, ProductKit
from shops.models import Shop
from simple_history.models import HistoricalRecords
import uuid
class Order(models.Model):
@@ -20,12 +19,11 @@ class Order(models.Model):
verbose_name="Клиент"
)
order_number = models.CharField(
max_length=50,
order_number = models.PositiveIntegerField(
unique=True,
editable=False,
verbose_name="Номер заказа",
help_text="Уникальный номер заказа для отображения клиенту"
help_text="Уникальный номер заказа"
)
# Тип доставки
@@ -254,17 +252,10 @@ class Order(models.Model):
def save(self, *args, **kwargs):
# Генерируем уникальный номер заказа при создании
if not self.order_number:
self.order_number = self.generate_order_number()
last_order = Order.objects.order_by('-order_number').first()
self.order_number = (last_order.order_number if last_order else 0) + 1
super().save(*args, **kwargs)
def generate_order_number(self):
"""Генерирует уникальный номер заказа"""
# Формат: ORD-YYYYMMDD-XXXX (например: ORD-20250126-A3F2)
from datetime import datetime
date_str = datetime.now().strftime('%Y%m%d')
unique_id = uuid.uuid4().hex[:4].upper()
return f"ORD-{date_str}-{unique_id}"
def clean(self):
"""Валидация модели"""
super().clean()