diff --git a/loko/stock/templates/stock/mobile/purchase_order_from_pdf_mobile.html b/loko/stock/templates/stock/mobile/purchase_order_from_pdf_mobile.html index 223fc4b..0a07192 100644 --- a/loko/stock/templates/stock/mobile/purchase_order_from_pdf_mobile.html +++ b/loko/stock/templates/stock/mobile/purchase_order_from_pdf_mobile.html @@ -72,6 +72,30 @@ padding: 0.75rem 1rem; margin: 0 -0.75rem -0.75rem -0.75rem; } + .product-search-result-item { + cursor: pointer; + transition: background-color 0.15s ease-in-out; + } + .product-search-result-item:active { + background-color: #eef5ff; + } + .keyword-chip { + cursor: pointer; + font-size: 0.75rem; + padding: 0.2rem 0.55rem; + border-radius: 50rem; + background-color: #f8f9fa; + border: 1px solid #dee2e6; + color: #495057; + text-decoration: none; + display: inline-flex; + align-items: center; + } + .keyword-chip:active { + background-color: #0d6efd; + border-color: #0d6efd; + color: #fff; + } {% endblock extra_head %} @@ -358,14 +382,28 @@ {% endif %} - +
+ + +
@@ -416,10 +454,64 @@ + + + {% endif %} -{% endblock %} +{% endblock script %} diff --git a/loko/stock/views.py b/loko/stock/views.py index 0a0e94b..b706ba0 100644 --- a/loko/stock/views.py +++ b/loko/stock/views.py @@ -337,11 +337,16 @@ def products_autocomplete_api(request): # Recherche par nom, code ou SKU search = request.GET.get("q", "").strip() if search: - products = products.filter( - models.Q(name__icontains=search) | - models.Q(code__icontains=search) | - models.Q(sku__icontains=search) - ) + words = [w for w in search.split() if w] + q_filter = models.Q() + for w in words: + q_filter &= ( + models.Q(name__icontains=w) | + models.Q(code__icontains=w) | + models.Q(sku__icontains=w) | + models.Q(supplier_reference__icontains=w) + ) + products = products.filter(q_filter) # Limiter les résultats products = products[:50] @@ -379,6 +384,7 @@ def products_autocomplete_api(request): 'text': p.name, # Format pour Select2 'code': p.code, 'sku': p.sku, + 'supplier_reference': p.supplier_reference or '', 'category': p.category.name_fr if p.category else None, 'total_stock': p.total_stock, 'reserved_quantity': p.reserved_quantity,