diff --git a/loko/mobile/views.py b/loko/mobile/views.py index e1a0360..1b067a2 100644 --- a/loko/mobile/views.py +++ b/loko/mobile/views.py @@ -965,7 +965,7 @@ def stock_purchase_order_detail_mobile(request, pk): def stock_preparation_order_detail_mobile(request, pk): """Mobile detail page for a preparation order (bon de préparation).""" from django.shortcuts import get_object_or_404 - from stock.models import PreparationOrder, Stock + from stock.models import PreparationOrder, Stock, ProductCategory from stock.permissions import get_user_accessible_warehouses from common.models import UserConfig @@ -1120,6 +1120,7 @@ def stock_preparation_order_detail_mobile(request, pk): 'preparation_order': preparation_order, 'items_with_stock': items_with_stock, 'other_items': other_items_with_info, + 'categories': list(ProductCategory.objects.order_by('name_fr').values('id', 'code', 'name_fr')), 'can_manage': can_manage, 'can_edit': can_edit, 'can_cancel': can_cancel, diff --git a/loko/stock/templates/stock/_edit_preparation_order_modal.html b/loko/stock/templates/stock/_edit_preparation_order_modal.html new file mode 100644 index 0000000..69c8b7e --- /dev/null +++ b/loko/stock/templates/stock/_edit_preparation_order_modal.html @@ -0,0 +1,677 @@ +{% load i18n stock_custom_filters %} + +{% if can_edit %} + + + + + + +{% endif %} diff --git a/loko/stock/templates/stock/mobile/stock_preparation_order_detail_mobile.html b/loko/stock/templates/stock/mobile/stock_preparation_order_detail_mobile.html index 3856451..347d895 100644 --- a/loko/stock/templates/stock/mobile/stock_preparation_order_detail_mobile.html +++ b/loko/stock/templates/stock/mobile/stock_preparation_order_detail_mobile.html @@ -260,9 +260,16 @@ {% if items_with_stock %} -
- {% translate "Produits demandés" %} - {{ items_with_stock|length }} +
+
+ {% translate "Produits demandés" %} + {{ items_with_stock|length }} +
+ {% if can_edit %} + + {% endif %}
{% for item_data in items_with_stock %}
@@ -481,9 +488,9 @@ {% translate "Signaler comme traité" %} {% if can_edit %} - + {% endif %} {% if can_manage_purchase %} @@ -501,9 +508,9 @@ {% endif %} {% elif preparation_order.status == 'processed' %} {% if can_edit %} - + {% endif %} {% if has_pending_stock_adjustments %} @@ -518,6 +525,7 @@
{% csrf_token %} + @@ -544,6 +552,7 @@ {% csrf_token %} + @@ -1270,4 +1279,6 @@ document.addEventListener('DOMContentLoaded', function () { }); })(); + +{% include "stock/_edit_preparation_order_modal.html" %} {% endblock content %} diff --git a/loko/stock/templates/stock/preparation_order_detail.html b/loko/stock/templates/stock/preparation_order_detail.html index 652db54..fed8e84 100644 --- a/loko/stock/templates/stock/preparation_order_detail.html +++ b/loko/stock/templates/stock/preparation_order_detail.html @@ -858,644 +858,7 @@
-{% if can_edit %} - - - - -{% endif %} +{% include "stock/_edit_preparation_order_modal.html" %} diff --git a/loko/stock/views.py b/loko/stock/views.py index 355969d..ff6c66e 100644 --- a/loko/stock/views.py +++ b/loko/stock/views.py @@ -4142,7 +4142,12 @@ def preparation_order_cancel(request, pk): else: messages.error(request, _("Ce bon ne peut pas être annulé.")) - return redirect('stock:preparation_order_detail', pk=pk) + is_mobile = 'mobile' in request.META.get('HTTP_REFERER', '') or 'mobile' in request.POST.get('next', '') + detail_url_name = 'mobile:stock_preparation_order_detail_mobile' if is_mobile else 'stock:preparation_order_detail' + next_url = request.POST.get('next') + if next_url: + return redirect(next_url) + return redirect(detail_url_name, pk=pk) @require_POST @@ -4150,10 +4155,13 @@ def preparation_order_reopen(request, pk): """ Réouvre un bon de préparation traité pour permettre sa modification (statut : to_process). """ + is_mobile = 'mobile' in request.META.get('HTTP_REFERER', '') or 'mobile' in request.POST.get('next', '') + detail_url_name = 'mobile:stock_preparation_order_detail_mobile' if is_mobile else 'stock:preparation_order_detail' + from stock.permissions import user_can_manage_preparation_orders if not user_can_manage_preparation_orders(request.user): messages.error(request, _("Vous n'avez pas la permission de réouvrir des bons de préparation.")) - return redirect('stock:preparation_order_detail', pk=pk) + return redirect(detail_url_name, pk=pk) preparation_order = get_object_or_404(PreparationOrder, pk=pk) @@ -4166,11 +4174,11 @@ def preparation_order_reopen(request, pk): details={'status': 'to_process'}, ) messages.success(request, _("Le bon de préparation #{} a été réouvert (statut : À traiter).").format(preparation_order.order_number)) - return redirect(f"{reverse('stock:preparation_order_detail', args=[pk])}?open_edit=1") + return redirect(f"{reverse(detail_url_name, args=[pk])}?open_edit=1") else: messages.error(request, _("Ce bon ne peut être réouvert que s'il est au statut Traité.")) - return redirect('stock:preparation_order_detail', pk=pk) + return redirect(detail_url_name, pk=pk)