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:
2025-11-14 23:50:30 +03:00
parent d3ac875a0e
commit 4a4bd437b9
37 changed files with 99 additions and 740 deletions

View File

@@ -147,7 +147,7 @@
'input[type="checkbox"]',
'input[type="radio"]',
'select[name="delivery_address"]',
'select[name="pickup_shop"]',
'select[name="pickup_warehouse"]',
// Поля адреса доставки
'input[name="address_street"]',
'input[name="address_building_number"]',
@@ -364,9 +364,9 @@
data.delivery_address = parseInt(deliveryAddressField.value);
}
const pickupShopField = form.querySelector('select[name="pickup_shop"]');
if (pickupShopField && pickupShopField.value) {
data.pickup_shop = parseInt(pickupShopField.value);
const pickupWarehouseField = form.querySelector('select[name="pickup_warehouse"]');
if (pickupWarehouseField && pickupWarehouseField.value) {
data.pickup_warehouse = parseInt(pickupWarehouseField.value);
}
// Поля адреса доставки (новая логика с прямым вводом)

View File

@@ -236,9 +236,9 @@
data.delivery_address = parseInt(deliveryAddressField.value);
}
const pickupShopField = form.querySelector('select[name="pickup_shop"]');
if (pickupShopField && pickupShopField.value) {
data.pickup_shop = parseInt(pickupShopField.value);
const pickupWarehouseField = form.querySelector('select[name="pickup_warehouse"]');
if (pickupWarehouseField && pickupWarehouseField.value) {
data.pickup_warehouse = parseInt(pickupWarehouseField.value);
}
// Новая логика выбора адреса