feat: Добавлены команды управления данными тенантов и исправлены фильтры по статусу товаров

Добавлено:
- Команда clear_tenant_data для полной очистки данных тенанта без удаления схемы
  * Очищает все таблицы через TRUNCATE CASCADE
  * Сбрасывает ID-последовательности
  * Сохраняет схему БД и запись Client
  * Поддержка флага --noinput для автоматизации

- Команда init_tenant_data для инициализации системных данных тенанта
  * Создаёт системного клиента (АНОНИМНЫЙ ПОКУПАТЕЛЬ для POS)
  * Создаёт 8 системных статусов заказов
  * Создаёт 5 системных способов оплаты
  * Поддержка флага --reset для пересоздания данных

Исправлено:
- Заменены устаревшие фильтры is_active на status='active' для Product и ProductKit
  * products/views/category_views.py: исправлены фильтры в build_category_tree и get_context_data
  * products/services/kit_pricing.py: исправлены фильтры при получении товаров из variant_group
  * products/models/kits.py: исправлен фильтр в get_available_products
  * Устранена ошибка FieldError при работе со списком категорий

Улучшено:
- Команда clear_tenant_data теперь предлагает пользователю инициализировать системные данные после очистки
- Добавлена детальная информация о процессе очистки и инициализации данных
This commit is contained in:
2025-12-12 04:58:26 +03:00
parent 2d253584ba
commit e54d7d04d7
7 changed files with 399 additions and 14 deletions

View File

@@ -345,8 +345,8 @@
<i class="bi bi-check-circle"></i> Оплачено
</span>
{% elif order.status and order.status.is_negative_end and order.amount_paid > 0 %}
<span class="badge bg-warning text-dark" title="Требуется возврат: {{ order.amount_paid|floatformat:2 }} руб.">
<i class="bi bi-exclamation-triangle"></i> Возврат
<span class="badge bg-warning text-dark" style="border: 3px solid #dc3545 !important; box-shadow: 0 0 0 1px #dc3545;" title="Требуется возврат: {{ order.amount_paid|floatformat:2 }} руб.">
<i class="bi bi-exclamation-triangle"></i> Возврат <strong style="color: #dc3545;">({{ order.amount_paid|floatformat:2 }} руб.)</strong>
</span>
{% elif order.amount_paid > 0 %}
<span class="badge bg-warning">
@@ -377,8 +377,8 @@
</td>
<td>
{% if order.status and order.status.is_negative_end and order.amount_paid > 0 %}
<span class="badge bg-warning text-dark" title="Требуется возврат">
<i class="bi bi-exclamation-triangle"></i> {{ order.amount_paid|floatformat:2 }} руб.
<span class="badge bg-warning text-dark" style="border: 3px solid #dc3545 !important; box-shadow: 0 0 0 1px #dc3545;" title="Требуется возврат">
<i class="bi bi-exclamation-triangle"></i> <strong style="color: #dc3545;">{{ order.amount_paid|floatformat:2 }} руб.</strong>
</span>
{% else %}
<span class="text-muted"></span>