feat(integrations): добавить поле primary_category и маппинг категорий для интеграций

Добавлена поддержка выбора основной категории (primary_category) для товаров и наборов, а также новая модель IntegrationCategoryMapping для связи категорий с внешними площадками. Теперь можно указать категорию товара, которая будет использоваться при экспорте на внешние площадки (Recommerce, WooCommerce и др.), с возможностью настройки маппинга категорий для каждого типа интеграции.
This commit is contained in:
2026-01-14 01:53:38 +03:00
parent 7fd361aaf8
commit 1fb280607a
14 changed files with 288 additions and 15 deletions

View File

@@ -109,6 +109,21 @@ input[name*="DELETE"] {
{% endif %}
</div>
<!-- Основная категория для интеграций -->
<div class="mb-3">
<label for="id_primary_category" class="form-label">
Основная категория
<small class="text-muted">(для интеграций)</small>
</label>
{{ form.primary_category }}
{% if form.primary_category.help_text %}
<div class="form-text">{{ form.primary_category.help_text }}</div>
{% endif %}
{% if form.primary_category.errors %}
<div class="text-danger small">{{ form.primary_category.errors.0 }}</div>
{% endif %}
</div>
<div class="mb-0">
<label for="{{ form.status.id_for_label }}" class="form-label">Статус</label>
{{ form.status }}

View File

@@ -467,6 +467,21 @@
{% endif %}
</div>
<!-- Основная категория для интеграций -->
<div class="mb-3">
<label for="id_primary_category" class="form-label">
Основная категория
<small class="text-muted">(для интеграций)</small>
</label>
{{ form.primary_category }}
{% if form.primary_category.help_text %}
<div class="form-text">{{ form.primary_category.help_text }}</div>
{% endif %}
{% if form.primary_category.errors %}
<div class="text-danger">{{ form.primary_category.errors }}</div>
{% endif %}
</div>
<!-- Теги -->
<div class="mb-3">
{{ form.tags.label_tag }}

View File

@@ -183,6 +183,17 @@
{% endif %}
</div>
<!-- Основная категория для интеграций -->
<div class="mb-2">
<label for="id_primary_category" class="form-label small mb-1 text-muted">
Основная категория <small>(для интеграций)</small>
</label>
{{ form.primary_category }}
{% if form.primary_category.errors %}
<div class="text-danger small mt-1">{{ form.primary_category.errors }}</div>
{% endif %}
</div>
<div class="mb-0">
<label class="form-label small mb-1 text-muted">{{ form.tags.label }}</label>
<div class="compact-checkboxes">

View File

@@ -184,6 +184,17 @@
{% endif %}
</div>
<!-- Основная категория для интеграций -->
<div class="mb-2">
<label for="id_primary_category" class="form-label small mb-1 text-muted">
Основная категория <small>(для интеграций)</small>
</label>
{{ form.primary_category }}
{% if form.primary_category.errors %}
<div class="text-danger small mt-1">{{ form.primary_category.errors }}</div>
{% endif %}
</div>
<div class="mb-0">
<label class="form-label small mb-1 text-muted">{{ form.tags.label }}</label>
<div class="compact-checkboxes">

View File

@@ -294,9 +294,9 @@
<a href="{% url 'products:productkit-detail' item.pk %}">{{ item.name }}</a>
{% endif %}
<div class="mt-1">
{% if item.is_new %}<span class="badge bg-warning text-dark" title="Новинка"><i class="bi bi-stars"></i></span>{% endif %}
{% if item.is_popular %}<span class="badge bg-danger" title="Популярный"><i class="bi bi-fire"></i></span>{% endif %}
{% if item.is_special %}<span class="badge bg-success" title="Спецпредложение"><i class="bi bi-percent"></i></span>{% endif %}
{% if item.is_new %}<span class="badge bg-warning text-dark" style="font-size: 0.65rem;">Новинка</span>{% endif %}
{% if item.is_popular %}<span class="badge bg-danger" style="font-size: 0.65rem;">Популярный</span>{% endif %}
{% if item.is_special %}<span class="badge bg-success" style="font-size: 0.65rem;">Акция</span>{% endif %}
</div>
</td>
<td><code class="small">{{ item.sku }}</code></td>