refactor: Заменить сущность Магазин (Shop) на Склад (Warehouse)
Упрощена логика системы путём замены отдельной сущности "Магазин" на универсальную сущность "Склад", которая может использоваться как точка самовывоза. Изменения: - Расширена модель Warehouse: добавлены адрес, контакты, флаг is_pickup_point - Модель Order: поле pickup_shop заменено на pickup_warehouse - Обновлены все формы, сервисы, views, admin для работы со складами - Обновлены шаблоны HTML и JavaScript код - Удалено приложение shops полностью - Пересозданы миграции БД - Обновлён навбар (удалена ссылка на магазины) Преимущества: - Упрощена архитектура системы - Единая точка управления складами и точками самовывоза - Интеграция с системой инвентаризации 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ from django.core.exceptions import ValidationError
|
||||
from accounts.models import CustomUser
|
||||
from customers.models import Customer
|
||||
from products.models import Product, ProductKit
|
||||
from shops.models import Shop
|
||||
from inventory.models import Warehouse
|
||||
from simple_history.models import HistoricalRecords
|
||||
|
||||
|
||||
@@ -283,14 +283,14 @@ class Order(models.Model):
|
||||
help_text="Обязательно для курьерской доставки"
|
||||
)
|
||||
|
||||
# Пункт самовывоза (для самовывоза)
|
||||
pickup_shop = models.ForeignKey(
|
||||
Shop,
|
||||
# Склад для самовывоза
|
||||
pickup_warehouse = models.ForeignKey(
|
||||
Warehouse,
|
||||
on_delete=models.PROTECT,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='pickup_orders',
|
||||
verbose_name="Точка самовывоза",
|
||||
verbose_name="Склад для самовывоза",
|
||||
help_text="Обязательно для самовывоза"
|
||||
)
|
||||
|
||||
@@ -511,10 +511,10 @@ class Order(models.Model):
|
||||
'delivery_address': 'Для доставки необходимо указать адрес доставки'
|
||||
})
|
||||
|
||||
# Проверка: для самовывоза обязателен пункт самовывоза
|
||||
if not self.is_delivery and not self.pickup_shop:
|
||||
# Проверка: для самовывоза обязателен склад
|
||||
if not self.is_delivery and not self.pickup_warehouse:
|
||||
raise ValidationError({
|
||||
'pickup_shop': 'Для самовывоза необходимо выбрать точку самовывоза'
|
||||
'pickup_warehouse': 'Для самовывоза необходимо выбрать склад'
|
||||
})
|
||||
|
||||
# Проверка: время окончания должно быть позже времени начала
|
||||
@@ -618,9 +618,9 @@ class Order(models.Model):
|
||||
return f"Доставка по адресу: {self.delivery_address.full_address}"
|
||||
return "Доставка (адрес не указан)"
|
||||
else:
|
||||
if self.pickup_shop:
|
||||
return f"Самовывоз из: {self.pickup_shop.name}"
|
||||
return "Самовывоз (точка не указана)"
|
||||
if self.pickup_warehouse:
|
||||
return f"Самовывоз со склада: {self.pickup_warehouse.name}"
|
||||
return "Самовывоз (склад не указан)"
|
||||
|
||||
@property
|
||||
def delivery_time_window(self):
|
||||
|
||||
Reference in New Issue
Block a user