Интегрирован компонент поиска товаров в документы списания с фильтром по складу

- Добавлен параметр warehouse в API search_products_and_variants
- API фильтрует товары по наличию на указанном складе через Stock
- Обновлен _apply_product_filters для поддержки warehouse_id
- ProductSearchPicker теперь поддерживает data-warehouse-id
- Warehouse автоматически передается в AJAX запросы
- В WriteOffDocumentDetailView добавлены categories и tags в контекст
- Компонент поиска встроен в detail.html с жестким фильтром по складу документа
- Single-select режим для выбора одного товара
- JS автоматически заполняет select формы при выборе товара
- Отображение выбранного товара с фото и артикулом
- Автофокус на поле количества после выбора товара
- Пользователь видит только товары доступные на складе документа
This commit is contained in:
2025-12-11 00:02:37 +03:00
parent 542b90c3f1
commit 2e5ebabf22
5 changed files with 138 additions and 7 deletions

View File

@@ -14,6 +14,7 @@
- multi_select: множественный выбор (default: True)
- max_selection: максимальное количество выбранных товаров (default: null)
- filter_in_stock_only: показывать только товары в наличии (default: False)
- warehouse_id: ID склада для фильтрации товаров (default: None)
- categories: список категорий для фильтра (queryset или list)
- tags: список тегов для фильтра (queryset или list)
- content_height: высота контейнера с товарами (default: '400px')
@@ -46,7 +47,8 @@ ProductSearchPicker.init('#writeoff-products', {
data-api-url="{{ api_url|default:'/products/api/search-products-variants/' }}"
data-multi-select="{{ multi_select|default:'true' }}"
data-max-selection="{{ max_selection|default:'' }}"
data-exclude-kits="true">
data-exclude-kits="true"
{% if warehouse_id %}data-warehouse-id="{{ warehouse_id }}"{% endif %}>
<div class="card shadow-sm">
<!-- Заголовок -->