From b78c9da50e707dad9dc0008c70e80057e5fb05b7 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Tue, 29 Sep 2026 22:17:06 +0200 Subject: [PATCH] =?UTF-8?q?feat(stock):=20inclure=20les=20statuts=20'?= =?UTF-8?q?=C3=A0=20traiter'=20et=20'en=20cours'=20dans=20le=20widget=20de?= =?UTF-8?q?=20raccourcis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/home/widgets/stock_summary.html | 44 ++++++++---- loko/home/tests.py | 63 ++++++++++++++++++ loko/home/views.py | 27 +++++++- loko/mobile/views.py | 18 ++++- loko/stock/locale/en/LC_MESSAGES/django.mo | Bin 86467 -> 86777 bytes loko/stock/locale/en/LC_MESSAGES/django.po | 13 ++++ loko/stock/locale/fr/LC_MESSAGES/django.mo | Bin 91945 -> 92213 bytes loko/stock/locale/fr/LC_MESSAGES/django.po | 13 ++++ loko/stock/locale/nl/LC_MESSAGES/django.mo | Bin 90495 -> 90823 bytes loko/stock/locale/nl/LC_MESSAGES/django.po | 13 ++++ loko/stock/models.py | 6 +- .../stock_production_orders_mobile.html | 4 ++ .../stock/preparation_order_detail.html | 10 +-- .../templates/stock/stock_movements.html | 40 ++++++++++- loko/stock/tests.py | 12 ++-- loko/stock/views.py | 28 +++++++- 16 files changed, 256 insertions(+), 35 deletions(-) diff --git a/loko/home/templates/home/widgets/stock_summary.html b/loko/home/templates/home/widgets/stock_summary.html index 09c6964..49c0a96 100644 --- a/loko/home/templates/home/widgets/stock_summary.html +++ b/loko/home/templates/home/widgets/stock_summary.html @@ -16,15 +16,25 @@
-
- +
    {% for order in preparation_order_to_process_list %} @@ -42,12 +52,12 @@ {% empty %}
  • - {% translate "Aucun bon à traiter" %} + {% translate "Aucun bon à traiter ou en cours" %}
  • {% endfor %}
@@ -58,15 +68,25 @@
-
- +
    {% for order in production_order_to_process_list %} @@ -83,12 +103,12 @@ {% empty %}
  • - {% translate "Aucun bon à traiter" %} + {% translate "Aucun bon à traiter ou en cours" %}
  • {% endfor %}
diff --git a/loko/home/tests.py b/loko/home/tests.py index d859414..891a452 100644 --- a/loko/home/tests.py +++ b/loko/home/tests.py @@ -439,6 +439,69 @@ class ControllerShortcutsWidgetTests(TestCase): self.assertContains(response, 'ITV-CTRL-002') +class StockSummaryWidgetTests(TestCase): + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('stockuser', password='pass') + self.user_config = UserConfig.objects.create(user=self.user, is_intern=True) + self.role_admin, _ = Role.objects.get_or_create(name='admin') + self.user_config.roles.add(self.role_admin) + + from stock.models import Warehouse, PreparationOrder, ProductionOrder + self.warehouse = Warehouse.objects.create(name='Entrepôt Principal') + from common.models import UserWarehouseAccess + UserWarehouseAccess.objects.create(user_config=self.user_config, warehouse=self.warehouse, can_manage=True) + + # Bons de préparation + self.prep_to_process = PreparationOrder.objects.create(order_number='BP-TEST-001', status='to_process') + self.prep_pending = PreparationOrder.objects.create(order_number='BP-TEST-002', status='pending') + self.prep_processed = PreparationOrder.objects.create(order_number='BP-TEST-003', status='processed') + + # Bons de confection + self.prod_to_process = ProductionOrder.objects.create(code='BC-TEST-001', warehouse=self.warehouse, status='to_process', quantity=1) + self.prod_in_production = ProductionOrder.objects.create(code='BC-TEST-002', warehouse=self.warehouse, status='in_production', quantity=1) + self.prod_completed = ProductionOrder.objects.create(code='BC-TEST-003', warehouse=self.warehouse, status='completed', quantity=1) + + def test_stock_summary_widget_counts_and_context(self): + from django.urls import reverse + self.client.force_login(self.user) + response = self.client.get(reverse('home:index'), HTTP_ACCEPT_LANGUAGE='fr') + self.assertEqual(response.status_code, 200) + + # Préparation: active = to_process (1) + pending (1) = 2 + self.assertEqual(response.context['preparation_order_to_process_count'], 2) + self.assertEqual(response.context['preparation_order_to_process_only_count'], 1) + self.assertEqual(response.context['preparation_order_pending_count'], 1) + + # Confection: active = to_process (1) + in_production (1) = 2 + self.assertEqual(response.context['production_order_to_process_count'], 2) + self.assertEqual(response.context['production_order_to_process_only_count'], 1) + self.assertEqual(response.context['production_order_in_production_count'], 1) + + def test_stock_movements_active_filter(self): + from django.urls import reverse + self.client.force_login(self.user) + + # Préparation avec status=active + resp_prep = self.client.get(reverse('stock:stock_movements') + '?tab=preparation-orders&status=active') + self.assertEqual(resp_prep.status_code, 200) + prep_orders = list(resp_prep.context['preparation_orders']) + self.assertEqual(len(prep_orders), 2) + self.assertIn(self.prep_to_process, prep_orders) + self.assertIn(self.prep_pending, prep_orders) + self.assertNotIn(self.prep_processed, prep_orders) + + # Confection avec prod_status=active + resp_prod = self.client.get(reverse('stock:stock_movements') + '?tab=production-orders&prod_status=active') + self.assertEqual(resp_prod.status_code, 200) + prod_orders = list(resp_prod.context['production_orders']) + self.assertEqual(len(prod_orders), 2) + self.assertIn(self.prod_to_process, prod_orders) + self.assertIn(self.prod_in_production, prod_orders) + self.assertNotIn(self.prod_completed, prod_orders) + + + diff --git a/loko/home/views.py b/loko/home/views.py index 491bdda..e5926f7 100644 --- a/loko/home/views.py +++ b/loko/home/views.py @@ -479,12 +479,29 @@ def index(request): t = _t('approval_counts', t, _perf_splits) # ========== Données widget stock_summary ========== + _prep_counts = PreparationOrder.objects.aggregate( + active=Count('id', filter=Q(status__in=['to_process', 'pending'])), + to_process=Count('id', filter=Q(status='to_process')), + pending=Count('id', filter=Q(status='pending')), + ) + preparation_order_to_process_count = _prep_counts['active'] + preparation_order_to_process_only_count = _prep_counts['to_process'] + preparation_order_pending_count = _prep_counts['pending'] _prep_qs = PreparationOrder.objects.filter(status__in=['to_process', 'pending']) - preparation_order_to_process_count = _prep_qs.count() preparation_order_to_process_list = list(_prep_qs.order_by('-date')[:5]) - _prod_qs = ProductionOrder.objects.filter(status__in=['to_process', 'in_production']) - production_order_to_process_count = _prod_qs.count() + from stock.permissions import get_user_accessible_warehouses + accessible_warehouses = get_user_accessible_warehouses(request.user) + _prod_base_qs = ProductionOrder.objects.filter(warehouse__in=accessible_warehouses) + _prod_counts = _prod_base_qs.aggregate( + active=Count('id', filter=Q(status__in=['to_process', 'in_production'])), + to_process=Count('id', filter=Q(status=ProductionOrder.STATUS_TO_PROCESS)), + in_production=Count('id', filter=Q(status=ProductionOrder.STATUS_IN_PRODUCTION)), + ) + production_order_to_process_count = _prod_counts['active'] + production_order_to_process_only_count = _prod_counts['to_process'] + production_order_in_production_count = _prod_counts['in_production'] + _prod_qs = _prod_base_qs.filter(status__in=['to_process', 'in_production']) production_order_to_process_list = list( _prod_qs.select_related('warehouse').order_by('-created_at')[:5] ) @@ -827,8 +844,12 @@ def index(request): 'show_checked_split': show_checked_split, **split_checked_counts, 'preparation_order_to_process_count': preparation_order_to_process_count, + 'preparation_order_to_process_only_count': preparation_order_to_process_only_count, + 'preparation_order_pending_count': preparation_order_pending_count, 'preparation_order_to_process_list': preparation_order_to_process_list, 'production_order_to_process_count': production_order_to_process_count, + 'production_order_to_process_only_count': production_order_to_process_only_count, + 'production_order_in_production_count': production_order_in_production_count, 'production_order_to_process_list': production_order_to_process_list, 'stock_low_alerts_list': stock_low_alerts_list, 'loan_items_total': loan_items_total, diff --git a/loko/mobile/views.py b/loko/mobile/views.py index 9fb4ae2..26d5d3a 100644 --- a/loko/mobile/views.py +++ b/loko/mobile/views.py @@ -442,7 +442,10 @@ def stock_preparation_orders_mobile(request): preparation_orders = PreparationOrder.objects.select_related('intervention').all() if selected_status: - preparation_orders = preparation_orders.filter(status=selected_status) + if selected_status == 'active': + preparation_orders = preparation_orders.filter(status__in=['to_process', 'pending']) + else: + preparation_orders = preparation_orders.filter(status=selected_status) if selected_priority: preparation_orders = preparation_orders.filter(priority=selected_priority) if search_q: @@ -465,6 +468,7 @@ def stock_preparation_orders_mobile(request): 'selected_priority': selected_priority, 'search_q': search_q, 'preparation_order_status_choices': [ + ('active', _("À traiter & En attente")), ('to_process', _("A traiter")), ('pending', _("En attente")), ('processed', _("Traité")), @@ -504,6 +508,7 @@ def stock_production_orders_mobile(request): draft=models.Count('id', filter=models.Q(status=ProductionOrder.STATUS_DRAFT)), cancelled=models.Count('id', filter=models.Q(status=ProductionOrder.STATUS_CANCELLED)), ) + prod_counts['active'] = prod_counts['to_process'] + prod_counts['in_production'] production_orders = base_qs.select_related( 'warehouse', 'preparation_order', 'output_product', 'output_location', @@ -513,7 +518,12 @@ def stock_production_orders_mobile(request): ) if selected_status: - production_orders = production_orders.filter(status=selected_status) + if selected_status == 'active': + production_orders = production_orders.filter( + status__in=[ProductionOrder.STATUS_TO_PROCESS, ProductionOrder.STATUS_IN_PRODUCTION] + ) + else: + production_orders = production_orders.filter(status=selected_status) if selected_warehouse: production_orders = production_orders.filter(warehouse_id=selected_warehouse) if selected_destination: @@ -542,7 +552,9 @@ def stock_production_orders_mobile(request): 'selected_status': selected_status, 'selected_warehouse': selected_warehouse, 'selected_destination': selected_destination, - 'status_choices': ProductionOrder.STATUS_CHOICES, + 'status_choices': [ + ('active', _("À traiter & En confection")), + ] + list(ProductionOrder.STATUS_CHOICES), 'destination_choices': ProductionOrder.DESTINATION_CHOICES, 'warehouses': accessible_warehouses, 'prod_counts': prod_counts, diff --git a/loko/stock/locale/en/LC_MESSAGES/django.mo b/loko/stock/locale/en/LC_MESSAGES/django.mo index 6158c5a5bbf99cad19bb76ea04ec2e3d561b80c2..41857b9c28a0667cfdb045afbacd1b18863c7972 100644 GIT binary patch delta 23938 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 delta 23572 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 E00S-HZvX%Q diff --git a/loko/stock/locale/en/LC_MESSAGES/django.po b/loko/stock/locale/en/LC_MESSAGES/django.po index a811dc9..ccee12c 100644 --- a/loko/stock/locale/en/LC_MESSAGES/django.po +++ b/loko/stock/locale/en/LC_MESSAGES/django.po @@ -5923,3 +5923,16 @@ msgstr "Intervention canceled" #~ msgid "Rafraîchir la page" #~ msgstr "Refresh page" + +msgid "À traiter & En attente" +msgstr "To process & Pending" + +msgid "À traiter & En confection" +msgstr "To process & In production" + +msgid "À traiter & en attente" +msgstr "To process & pending" + +msgid "À traiter & en confection" +msgstr "To process & in production" + diff --git a/loko/stock/locale/fr/LC_MESSAGES/django.mo b/loko/stock/locale/fr/LC_MESSAGES/django.mo index 6d748df033584c1be7e58364171f4aa71e4c698d..bb6e51d633a30fdc4ff786c80a04a2c2b8478951 100644 GIT binary patch delta 18161 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 X^6iWsp0d7~6EFL}`~NoIGT;9Kno2k; delta 17906 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 diff --git a/loko/stock/locale/fr/LC_MESSAGES/django.po b/loko/stock/locale/fr/LC_MESSAGES/django.po index 4560dfd..d226776 100644 --- a/loko/stock/locale/fr/LC_MESSAGES/django.po +++ b/loko/stock/locale/fr/LC_MESSAGES/django.po @@ -5730,3 +5730,16 @@ msgstr "Intervention annulée" #~ msgid "Rafraîchir la page" #~ msgstr "Rafraîchir la page" + +msgid "À traiter & En attente" +msgstr "À traiter & En attente" + +msgid "À traiter & En confection" +msgstr "À traiter & En confection" + +msgid "À traiter & en attente" +msgstr "À traiter & en attente" + +msgid "À traiter & en confection" +msgstr "À traiter & en confection" + diff --git a/loko/stock/locale/nl/LC_MESSAGES/django.mo b/loko/stock/locale/nl/LC_MESSAGES/django.mo index 4b56376c9cc0c831b7e47b5671b0475cffa9ae8b..f1864692b4d806932f4672829c7a221c18a9c867 100644 GIT binary patch delta 23970 zcmaLf2Yk=hqyOHEOkLQ+w8` zR;{8{v-T?LzTV$+{IC1F|NsBkmQw_hswD>!w!CTfxHvbjo zB0qI2$Dw&AztMFH5y?nKG4#VKm>26{7VKm5$6_eyDX9A2U}oHkdGG`V;bY8-eyvS; zPESABIup^%*Q2&z3r65C7>v(QE8*YHaRM-{_tA-*zG7Tr9hjblO1Km*r=#N^maTtShZT>-3ce5QgAF)BrbQH11Aj{RIL?q!2ybIH4C`oCq!?;om8{KC z4S$SUk;$l;EwbfXtfx_1b_X@^6rD`_8L~_t z{v`A#y$q}3dQ<~1unFewW>)GG)HR!in#eLtjr&mj97S#2Rb-`ICslVd;t15~tc1Eo z?JytqMJ@SPHvK&YkiLj&@D`>=r-wPLfv660qqe3BY9K98TRRwaresCn_H6^(~^!x)sM$?SP@xmrw$gxtyl(c zqFaSX-adSOu?woh1*id>Kpm!ss3pzX*Krat0poE1s(cl444f0ladOIiY})%8b;>WH z>c6u2as5m`$^BS=H9Uii()a^vNgrVphW0m0S^+il4j7E1u?T*J74R6=z`y|v4nM$5 zI2F_25)8%FsHNX;Ju`sySH@K`!tp-(VZcChcrs&V(gjdUnS>s!jhb0EtcBw+CH{h1 z`U{v9Z=()ticicyGGIp1p{TPG?GjN3@1gE-GHMTpqX);^^lA(uy$Q7fhi(2P)U~{U z+KR`R4MPVRi(+2VwNV}RMh$E>hN8Qch)(k%TW}7;NZ+^m4>lF^VHWbsqgJ93Y6V(j z2!4uM@|ma(SD*%R9JQi1Q19Kx?D!HHxa))tF%3kbDwIWytQzVJv_=hR3~FT-qt47~ zR6{3FD|i<*vlO42j3HO#IQ6h1?nbqrlC2NW{m(&&B_jrP>KkJW>TGD_i%~OQ zi5lQ;)KVTrZN(#0$9_Z2S;~p2Nf$s3I36{?a;W9wIumCsC*K zchmqLp!U{xxOpKQbylKL9Veh>-T?JpXViOxPy?EPx_+}zE3yDJ(dDT3_6=wKHL?q2 zsKFbkfutB=_9zpoJO(wR5~y!?5~^M`o8K7q-DrdAcob?tlhGF!qLzNCbu(&9j*Vdb zHKVIG;~}bHzmaAsvs&|@Rw52nUL7^CCa9UTL!FgRPy-!~T8Rnhi}P*yV$?uZqE=+5 zOGGo;k81EJ7Q$aqd*}C=`3{7kR;Uc>HZ(#Fs3+={jIrsp7)kmds-wG@7kx(YI|4?b z-unvGzPo`)1d;uyYjGWQh~A(o28=e>EfQOju7-ZN3^mg=sDW=rouz%KJwJ_FfeWZD z`5R;Kxy{cr#`~V@6em)bf+W=8n2cJ|H8#BuHREfjrT-VTW$DM770H3>pd@OhNvQWb zpeFDsYM?W%3sGld75eG^Z?_ryP)l+aHS(L724A8dru^Jo&j3_@ZcL4_sKZngwdB<> z7dAt!=n&MzW?~d>#3FbB!*u@x$JuLz+Pef)hb>V9X^*LJ0II=HF#%^`Iy{N0e*rb1 zKTrd@jaoTpyeSX2=0OcK7G1qqo=75A!x}gW{qY2P@B(USUt<8~nP3JIhgz{3sQl)r zrSF95U?^%Orej+C9(9O!p$7ij1lC_8{gVvs)jy~`4w`6YoD0=K6sqCUsHJ=#Yhe%6 zR%}I0WG||tqo|cSi*4~9R>1m`%rCFgunp2}a>(sEMw&?sJK#!;7e;N-@=R5Q!B@$6+Px zgX&-t>Sw_*48oh39$#TKOgGK^ov=P8k)DM0@FbSOT+_{OS}m|RY4-~vdhs|i1}Ezb zz5%!bcjBa(W?=PZnfu!dHPAU2k2_EeKSWKW&==;H*#@Zc!8W}Xy(@{)s2Pn!<^O;sG37k|l7VHhH4aA&_!{ck`pq|6 zksdYBdRP<3;72Zz(?ptMsRd@_Gf+$X9qK;+g28wRb=n`I4&6)i#WV}edjS|mx&Ri& zY8a0FQT3;x4*LSsEqR8nI`CO!u2&k=3lSKCWl)E%0S00xY=Z+(1Nsd$pubTaKSN#9 zpvC6BXv|EyJSx8-s{JmQ14l1r{UeAhB|{zVLp6L6GvNcwjlN6Ft;mNu^+i$FsS2uo zH|sFWMtX)#e~X&w9-BUfYWE6;;-e+3zb}!1rRMK!88JWU!l)8!8kU^;L$7iT5nc@;jO=KRX#HE-DzdjGP%AkcHNd5)m2@`}QN;t+bEp~LMm3yvg;|*# zs3j|l8L<&+0PRr?4Moj(8miu6^uukaGq4xc&pFiXx^2>~ljUo(1yQJmV=)DmMa{H4 zX2)8X7CT}M?2YAc87Ajy` ztc+@)E@}qNP)pepwMFBw3Qn=*zo1s+4yM7>tIUKlU?I{TRCztrz&l|o`gfKSQHQIo zn^0$AH|p^0M-AW%>Kfg|{OGJU9Yv#NRupq#Y0QhwQ7bnb%iw&}3ZKVGcn4io9K43V zG~gl(!0g|eJ&Z;V>58c9*$%abgHRn!zzp~;>agxa&G2W`3fx1TjpwNM{MVYFAvsX( zRbR{c>&4b&8%=kX}K}{0(Zw{MMP%9f0Xchg+jj6Dx^o zzq0kcb*#VkvN;*8ur0oiKcWVZdA%7xPHPb?Kz?PL?u8Xek3`*;0~m+rF&_qOFe?*} zL8NP75p0gZIMF2%Ph=5l1O!J-j-c-cQq}>`sG}D%-5qHFNI0^N^_!2YWcGRB#gjw(b>Ja*UZ_Y}bwFc_Y zwMDh(qS{}EIvZL#-#3o$k6<)}SdgDT&G+JZw^7N6R5 z{0}DG8r9)k)IgV`mVP^`;}fVebK9HG{y!q3j#6(n9i+!l(%Dfj7DqK$-C7^LX9o3N zThw9egc?wPjKGZ;f@d%q@1W{s-C_n3iJ9o%DNjU8`#x%heNY_^NA2}^^x#~ZzXJ=A zK8U&v&rmDmx7F-@q8s6E*NcyIgZU%9Ejv8=ywo z)Y=`jXCqKAOhKLcMW`7ZLEZn0s1@?;He2%^YQQdPi{_#C5TjOb3x?xKRnTd^i)tY3 zM>F!8sKe6`)lgT|X&z_u7oujk88x##sDWQW4frW)B~tD&hdCE&0;RDM)OO{x-qh@**HN)$up8>B?Gf%zGv>$|8=?J9U zb@CF?9u`8)C;_u!CDedgU`p(ajj#u5rS_q=;0bm_zx`&0JyGusL#@O_o1TNZ&R^T~ zHcUtV&LJYHDL8`~`FYe*KSXtq=74D^47C;cQ6G?MsOwb^HSm_GnRY~V+!r`CebsU0Pkyz9WDqiSd?@G>izmhSpRfHJ|sgkPPP^MU>edcs^c-JrJRA0_$8Laov0Z-!(teD z)coet6jjf)=_MFJ`Y?L%78XSRW2}EJA_>RLJ#L0^q~~F7{0X%J4^ab1d)yqdK-88+ zpjMzTs>4dCd)*Ps;z-n&aW`tf;Xj$JYk<{APjrb?C2|(yF~DSjW5NKeHCJcH#h z@Fd@Htc^;KN7Xxw6)@nG`PZ~MSc~)=tcN$S6qY(|{sUw$tU}sdL8KCqzp*+NJ!8HH zgRl(gqZp5Ael`Osi)y%^P5+2>Nx#C%SnI6mXfjqLeF#fnz%S--RzeMAAo8B;tS3^E z44+@kk|m%{cR$ns*4g~K)|hi<<{eN=ywrLXwK5UEnZwu$)06ItS#db(tj)%3xCBFV z|921xAmc3R&|SmAcn8yB_Vea1B>7NZ#%K)1f~cjhivBnTgK#=#!Q~i;+fnTtMVQ_%bO|5ZdXP+I)w5%uN!8#UAPmrR4%P%BXkb6_2e#V*(# zXJJ!JeVN~mur&_B!>BV={dd;C9Ff7ln|~77f<;NEx?*Nj%31|A!1`FxhhMqy4(X*= zxfwY18owK0hd-D-{*Jm{&Y$KCR7b5;W7NvDviY6=bj^|uAVV{sgZeZsL3Oy&rnh1g z=^s&t=@x2FeXg4&_D8K)9#na8)K=BD`8{p^aO-T;AzbSc$xP%hs>92+;2stro%S!Y z5+zVCRKkMT0$buZ)QoPSw%`fsLlk_&45Sq5P}V~o^0ugUd)RV!4w0N>Y{2Yz3U!a~ zp=Ma@ra4rJ)(=qw?uWrR4mI=nwtOAdAbkvDFyxjwGZn3MQ3Lr9{dE635Yg%Hfg1T# z)G6MC8u@9Pe;w13_P=fNv!Je7e$0o7Hl2*Iqz9osK+A3ZE!39i;HaNS%&PlegGd@O zT4Mq1gdUuUTJlY(8K1;-cpX#X0}Q~Y7>&Mn&3gqg7wNjFiS@MUX{fXD9qRNS#q#ve zy)vJ~3aHaN5Ou9)V;rtWt;jXh8F_=c*BS1am54%>mqvBa*rvOowstJ)Y^<>P`%x=- z69$HteHD^V+Q6r=Ddsyyctv(yQwnbbxNuqBx*_LqXzah z>TK-7Ks<(8!3(HE{Svi8f$mciiN(}pR7aiWdYBRWp*k3i>TnTi#nKRJEEBil@NCE}xurS_6Z9({J^YgtTs>6|} z6t)kIyz$0KcnhDMD6h#Yi1uG?*yXJJ0aBjWo^2twH@XlznhPb>phL*Y{6pd zYU?KJZp^|9M^H1pV*Lj_q=QrVcn?=GRJsDHejC&P`(reY$87jLYNb!4aLq{1k)aV? zL#>F9ua9?$15h)`fgu=$d9gfdAjzoupQ1V%i@FW-tgBH2*@oK6Q#O4Q$B=&G5~)FC zOiI(iDO7{EQ1|!=Y6-(q`FMYNl|+ra8EOkYLJhDNs@@>fK)yf?cs1&*>_feG)_U3I zyElkv#4k{XD@|%2M~5i8H4)WNYg9u6&^uGqip|3q+=jaMf1&C>LmjdVer9WOpvt3B z{Uw-u*Qrh<6&VdtOZA~CaC)Lh!J=cwbXZPzHb^+p57XQ z`XJ>(U;X@#CZeS)h#FZ7yb^#1SviYY=yb=1-}M-8NxO%FwNGy^rT`PNma4mYD3JcO!u2DMd}P~VMv z)~Bd;U!yMuq~rdpLPjDg2tj=?@}cr$QA<@6^{Fk5>aaa}upjDYz%0~<q=C+n^6-yY(0mX=#2pGzwYy0TM(Sy%s4mJAwLGSH3Lus8;_dFeAMaRit6AT zYHMzx&d4*=fHMW!>x+87q_rk$%UZZL(h;?^eNZzQfqLO{>s-{*twnWo0KI#STB%Dm z{RlO)*Qf!c$Y9#_$DE|YQ4=bSx@~Sw})!}(l;M~CKr0-(`Ovq%e*#y*p zXQS@>R`kASytCCI~Y&x!knphLm_n|fFY;?uOI0_SW`Y#em!t9xS^ed6m5}V*YREIgT zm>#430bbvg^@@$vq{;V9Hh&!T4X1XE+SNb_Ow zpiX%l>YgW{z7t8Pvr`Rq_&T9hXejCse}f!C*V#ivGe3^HuMv4o2hpf6R2=FHSJm3g z+7s3AXV?zs*tC<+3@8M(vL4h2sVru~TBuvo0yFCV_p%woQHNqC>RxX^jr2I`8~>N} zIco3HMw#zLG^*he7=zVO-;X{ve-x_z7dHO~)QTNZn*NB86z+uHmSs1>-0df$om@%~e5Ce%c#qkg6&qxX}Hn)yiU7wD>B6%jSC)p``Qmlsi6 z@+WG<_s}~))E;MwG3gLgJ8`I$D34l!_fg-0k5DVn+m=s79r7hH+AX&cPWMC9 zN@OkISv5o$e7+G zq6WiIOA?9dFcEdX>!2?tqek8dRlg@{??16lL2bzj{0P^eRv@^r+4Fp;EiH|jc||OS zZhazJveBsfKNnT;8fwpPqkdRCMs@H8wFRl-jKQcgkqh%wdaKhzd1MxB8js89I`)C&ELIwQ|f z?WK=5`Grv{lYrj;`@h;m^r>x&TJo8wtyqH|JcydnP3vRSHF|^Eg5YANqZrhuxIAj+ z?NMi@J8A-bP%G`CR&WLe>i#b#q7_)L4BUg->r>br&tWU9UfeXa0yTq;s0I&U6kbFP zEL92f?aziPZ;o2A-l+HHqgG};y2>~}L@V$cYDR%2&5z@}sFi4i8sI=wgP)_`TVUN_ z^Y^0$aKYx^$NHpwOPTtOQSEiIjwr?bFG|K-GIY33p!Z&)R^U2nPw(2ae}eh41))}| zFzSa>B5GhQP}jH*Y9O<$E3G?G^-iO<o^mNpoZ$+J@L#Q84XIvs0(S6j2QkOLi2BB6YFRDBi zwKYkonSFq2s4J>of7GcTVjYbd;1o>4#puC5QHMNrIrA%?o0EuMtc^MpjZt5yF6hAl zsD@^vR$wJ+CL2*R_z^XbOQ=J36LnUyCYpgpp{{8e)XFtRwciqx_4B_A5uNUnSPzSo z_i<+7FigN~70gmLz=5Ru+4OzPMLIai47@n1;hLxwYJ%0U3l_%>m=|wiBxb0nt>yj| z^G5hjE2tHyk6MuqsG0OajeNNEbL&)$Apc9$)@?!E_x-39I)XX_=TP-tq1wq_$sF!T z^#1&hC8CihqL#Xr3a|xg$$O$^G|)N$Rc|3`z#C8<9kl7&Sb?-t*~j}Ys7a_>)*E%3 zmZI9wVvIwb>ei?kjzra)j8XUv>M)(M-a^$&QPtdnK-9pCqs~YT z)M0LD?Oc`nuY#duRK#(%;&H4@`kYPYtY&@+Mq?cL1yR4@v_$RYAnO8Dhx@GOP}lb^ zYQF{C>8Ujy)vp=%Ut3yPqYwlu1|9%{)xL^aqAwbz4Dhjtk1-k-GP&#@zE zzZ#}~PpgYs@rl-X%FrQOV=L^m1;yYT(UL zXR8CM+>VB_6 zU9+R8L-_`yF|wYSab48PcCzUa7)t-nJX^2{b&pS?uE}FmgX!KgGcSkAZ-e^u_D2n1 z8fu_(P!m{%TH+s2hw?OP0{>tV`oHhve28_>Ekn7_RYp%woUSm{; z%k#Xd0UJ|A%Z^}}Hm8JhW3R62W8(@}j?dNitm z?WlTBu?)t2XzXfTVf_Quv8S1_1!gAwCF<~fYty@3BHFXFs6D%i+S}KtA0pYBn>~&~ zeRAVa*YX2Qfo)OuIT`ik>x|mtPf_=N7plEus55dCb%tJ``gJq3Fdc-WG9u9z<51VF z7;3LSKyB4H)T!Quy0*7a^+H;jTT=#g*lMCWY=$1}f|}5H)TjGPWMHnd$!4538P0vw zsSapmmMjZuU@@qXmq0aK8$H+@wIV}MGaZfkO=&Uecf&0hi|4RErfTiu{a?cl!LGXh zr-*z;LHRajru$HP{M@FCwl)7kl8lA zZG-cOJpFR3r;6_X+oz}2o##ijW}k{SzMq%)9C-gFR7G*x^mm>XS(qZg?7C-H;ibtd?b){}@ENPkbAc;e?wwv&xGSK66@ z4{G|Bgc*v&v^3oXMT}`p~&!0$lqh4Oh z=HW-=o+dt@(2jI&LRDM;3Gu0ft)xFd^DzI3#3u2Ao}URFDAdW$gtZ92Q+9@qvJroQ z+b}z`>rK2op`3m9cj8*k&rwfy@}CpWLftQTr!;v5$eTo7JLFU2#Jd#glpdwR+b4*; z`J_LfQYtDX67=-Mr}%*Uv)&x@AEN8pcgy3~)H#fw+INamH#O~rk++DDhWIeb_z*gU zNxMskJR%Z7gEgrfNPHSW&q_jB^7K3*T=T}byZ9aXzwmBv%!mK^bRlCE?X;pi)V9&p zs=9ehAFh+gh~7TB$59lVA(Wxfo1_oF^OEX?zmqOPdN_5DVtQPH)ec9@e zzniw&5uZy~{Z5^2FjFW zr`-(HPe&*~d=K^R6OSf-6+2=Cb=?a@^tBsA_?H4brEMc7#g!yKn7kZ>pKV92DeTU> zWhqk@zdAUDC|^fn6Y0Z*$;2O0ewI*`vgzc#NBlkVeV|NWI8MBe9b3T_jIP&m?L zdH>|^6y9GXACrHXaEEjNjpfB0)c=gU&u}*BuL$ox^C;8f!T0ey>SgBLtk{C|L0`N7 zy~)sXk_KK;c{=X3c@;_LCq2xj7m@Zi)t%zD!+*%@N<4%*-`aZR$; zX|kQ0q`TYxor@$+P}qXX6>S6hg~MYj4<-L^;`eR35I(cMc=vfl0~N@dg;l8M zOS~NM5}1q59r7x{Sn~ctesTK0KC#ptK;4|w>xh%^MGCwAm*06Qg&O54Y4HB}ia+`7 z*}2C{%Xzsr=?lb56Q+@`zZvx)za8<_`1V;w`a0>n)Z0URBJRK&*n>*dTwA%q+c)qT z74#If?!qq#M|f#3^*vWzry1e8jVpbW z{$>&8>i%D%;1ZeZZG-vgy+nekR?Cl2Z7F zkdd&0^mwd`8L3;8dOwhEj&c0`!+AwxugTE!7jgc=>V1}xH<)nHB)xxT<)#08Mo}j> z4cDdYDxrsczmTmvoASPdUkC*W`g_1?!bO$q{H-E{(SV*i1VvNZMrPo7LJXC!5N;8_ zkL#&3g~lQYzuCIYiR&p%`9R{eOww6En%`yr*Yhd)ZY}=EL%2(rY#ZR8fxOR4{;a@g zG7$Dqu4g}GC5hLkZaqv#`X=VJ6VPwQCkXNHbm&j{@6`VndlC*2dYN*2|9IgxnG47q zNLE~GnPGGRRV^9gIoE5p0LQfH&S z|NbQO7lR9g&k5bBkc&b+frP!h6hzSTD`l0b??*g^t+U-*V*cp+PW+{PCpYiRBs?R$ zeFhWH$NOts{&;B{Qeh}Bb+YMOREn^T6sGI|`PFP$B>8hG{|5767xGsUN|Qc>0l12w z=M3draGp2CAt&9BI=)QAyZ#?gaD>YDDA2Q%u#hm4yi_)CBrnA9LV|5HjPhTJXQKRL zTPKRN5A{AF?ZKkd(O=od5!X|baE}m7Ivxk6F#S6-NL(kpeJaw?4I2BAiaQBYiH8$v zkbjECzaV~G9itw9d`)^2b-y9~y*JnVu^e_%exC9olMr9+k)!Et5Y#O z9W5qrAL){|tfjRf<>e^X)1AEOgpbH8VX~ZL;!O!@2K` zdawlDtE@A1pU?f?bDk4RlHl7y3w}rw`Cbg zAFz2_F_b!A5$^HMEiAyGyS?3iz4SGePGfmOfPJxpbsBjOiH8vS(14zL24^_w$;1oO zU^L+;;y+L?8~KCiD4q~V`U>fdgc8Jkus!+9_5E)~Mg_t-GIC;Syg?&>U~MXXgL-OE zwi|olPXs-+DLao7Nbe)w7MEauTYian7uu*v(9<6qV>0=#m7)Fri$rE#cuBZL`X5`l zC-EfWMaX|b_?Pq=LL1^C*=cb?Fn zp#GiBL{ih}PC{|wf8cXMB^uIGiuh<7KSn$y@oR*YgsRkk`<$?KhP}9iW!{C`u=}w6Zvg}*+_@jyb^Rcg_qjevW3L=6F*2N4QxlMdWf)& z(1P*+d`ek$+u0rBU3q7>ZDSGn{RqM2|DyF@Owi+JSK&9}kErm%n`{1v;pMzU1IeGl zi{BF}6RxRI!e-)nJ|sSXI$M>`Q^h)#^8AE0q%RWwAVO81W)DUu7Zoy*Ku~kNEdz?|b-1i!aFrc2N75Qj{Xu-htQbJQ-s0fwIux&LC;JY-D{%WKR>pESc`LP z9Tilg;bH_mag>dtEROgAZ_a=J@fm$gB+SzOr=sE?BpML{d3he{Ng|$;(2MvW8ftGl zx??+!Ae}^657HfY=L*K?MV|GPU9%&r)6N<$$LZmPn)mmorqtcjWL8j z3CC5I&hzdwt!48J)B3jvpEj>~nhj%{)g9&z_4MuCrc>YK-kyA(D&0M8`u0uk-Z$CV z^B?)`dUS7}+^%n@9^L!hwr~luJ6#n;%jgx!# UY1gq+S0{D*ylh delta 23576 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 B(`Wzy diff --git a/loko/stock/locale/nl/LC_MESSAGES/django.po b/loko/stock/locale/nl/LC_MESSAGES/django.po index 87c1a42..817115e 100644 --- a/loko/stock/locale/nl/LC_MESSAGES/django.po +++ b/loko/stock/locale/nl/LC_MESSAGES/django.po @@ -5730,3 +5730,16 @@ msgstr "Interventie geannuleerd" #~ msgid "Rafraîchir la page" #~ msgstr "Pagina vernieuwen" + +msgid "À traiter & En attente" +msgstr "Te verwerken & In afwachting" + +msgid "À traiter & En confection" +msgstr "Te verwerken & In productie" + +msgid "À traiter & en attente" +msgstr "Te verwerken & in afwachting" + +msgid "À traiter & en confection" +msgstr "Te verwerken & in productie" + diff --git a/loko/stock/models.py b/loko/stock/models.py index e9b2f66..6cf0e48 100644 --- a/loko/stock/models.py +++ b/loko/stock/models.py @@ -2246,8 +2246,10 @@ class ProductionOrder(models.Model): return self.output_product_name if self.preparation_order_other_item and self.preparation_order_other_item.description: return self.preparation_order_other_item.description - if self.notes and 'Issu de' in self.notes and ': ' in self.notes: - return self.notes.split(': ', 1)[1].strip() + if self.notes and ': ' in self.notes: + for line in self.notes.splitlines(): + if ': ' in line: + return line.split(': ', 1)[1].strip() return "" def __str__(self): diff --git a/loko/stock/templates/stock/mobile/stock_production_orders_mobile.html b/loko/stock/templates/stock/mobile/stock_production_orders_mobile.html index 72d7e69..bb49708 100644 --- a/loko/stock/templates/stock/mobile/stock_production_orders_mobile.html +++ b/loko/stock/templates/stock/mobile/stock_production_orders_mobile.html @@ -102,6 +102,10 @@ class="badge {% if not selected_status %}bg-primary text-white{% else %}bg-light text-dark border{% endif %} text-decoration-none py-1 px-2"> {% translate "Tous" %} ({{ prod_counts.total|default:0 }}) + + {% translate "À traiter & En confection" %} ({{ prod_counts.active|default:0 }}) + {% translate "À traiter" %} ({{ prod_counts.to_process|default:0 }}) diff --git a/loko/stock/templates/stock/preparation_order_detail.html b/loko/stock/templates/stock/preparation_order_detail.html index fed8e84..66575e4 100644 --- a/loko/stock/templates/stock/preparation_order_detail.html +++ b/loko/stock/templates/stock/preparation_order_detail.html @@ -347,7 +347,11 @@ {% if has_executed_outputs %} {% if preparation_order.status == 'processed' %} - {% if item_data.delta > 0 %} + {% if item_data.gross_in > 0 and item_data.executed_qty == 0 %} + + {% translate "Restitué au stock" %} ({{ item_data.gross_in }}) + + {% elif item_data.delta > 0 %} +{{ item_data.delta }} {% translate "à prélever" %} @@ -357,10 +361,6 @@ {{ item_data.delta }} {% translate "à restituer" %}
{% translate "Sorti net" %}: {{ item_data.executed_qty }} - {% elif item_data.gross_in > 0 and item_data.executed_qty == 0 %} - - {% translate "Restitué au stock" %} ({{ item_data.gross_in }}) - {% elif item_data.gross_in > 0 %} {% translate "Sorti net" %} ({{ item_data.executed_qty }}) diff --git a/loko/stock/templates/stock/stock_movements.html b/loko/stock/templates/stock/stock_movements.html index 7228f3f..eaf4e30 100644 --- a/loko/stock/templates/stock/stock_movements.html +++ b/loko/stock/templates/stock/stock_movements.html @@ -27,12 +27,19 @@
+ + + {% for order in preparation_orders %}
{% translate "Tous" %} {{ prod_counts.total|default:0 }} + + {% translate "À traiter & En confection" %} {{ prod_counts.active|default:0 }} + {% translate "À traiter" %} {{ prod_counts.to_process|default:0 }} diff --git a/loko/stock/tests.py b/loko/stock/tests.py index cf95b18..035640f 100644 --- a/loko/stock/tests.py +++ b/loko/stock/tests.py @@ -1814,11 +1814,13 @@ class PreparationOrderAutocompleteTests(TestCase): b_in = StockMovementBatch.objects.create(movement_type="in", preparation_order=po) StockMovement.objects.create(batch=b_in, product=prod, quantity=2) - from django.utils.translation import gettext as _ - response = self.client.get(reverse("stock:preparation_order_detail", args=[po.pk])) - self.assertEqual(response.status_code, 200) - self.assertContains(response, _("Restitué au stock")) - self.assertNotContains(response, "à prélever") + from django.utils import translation + with translation.override('fr'): + from django.utils.translation import gettext as _ + response = self.client.get(reverse("stock:preparation_order_detail", args=[po.pk]), HTTP_ACCEPT_LANGUAGE='fr') + self.assertEqual(response.status_code, 200) + self.assertContains(response, _("Restitué au stock")) + self.assertNotContains(response, "à prélever") def test_create_return_button_and_prefilled_entry_form(self): from stock.models import Product, PreparationOrder, PreparationOrderItem diff --git a/loko/stock/views.py b/loko/stock/views.py index f18a572..155c208 100644 --- a/loko/stock/views.py +++ b/loko/stock/views.py @@ -595,9 +595,21 @@ def stock_movements(request): selected_priority = request.GET.get('priority', '').strip() search_q = request.GET.get('prep_q', '').strip() or (request.GET.get('q', '').strip() if tab != 'production-orders' else '') + prep_counts = PreparationOrder.objects.aggregate( + total=models.Count('id'), + to_process=models.Count('id', filter=models.Q(status='to_process')), + pending=models.Count('id', filter=models.Q(status='pending')), + processed=models.Count('id', filter=models.Q(status='processed')), + cancelled=models.Count('id', filter=models.Q(status='cancelled')), + ) + prep_counts['active'] = prep_counts['to_process'] + prep_counts['pending'] + preparation_orders = PreparationOrder.objects.select_related('intervention').all() if selected_status: - preparation_orders = preparation_orders.filter(status=selected_status) + if selected_status == 'active': + preparation_orders = preparation_orders.filter(status__in=['to_process', 'pending']) + else: + preparation_orders = preparation_orders.filter(status=selected_status) if selected_priority: preparation_orders = preparation_orders.filter(priority=selected_priority) if search_q: @@ -632,6 +644,7 @@ def stock_movements(request): draft=models.Count('id', filter=models.Q(status=ProductionOrder.STATUS_DRAFT)), cancelled=models.Count('id', filter=models.Q(status=ProductionOrder.STATUS_CANCELLED)), ) + prod_counts['active'] = prod_counts['to_process'] + prod_counts['in_production'] production_orders = prod_base_qs.select_related( 'warehouse', 'preparation_order', 'output_product', 'output_location', @@ -642,7 +655,12 @@ def stock_movements(request): ) if prod_status: - production_orders = production_orders.filter(status=prod_status) + if prod_status == 'active': + production_orders = production_orders.filter( + status__in=[ProductionOrder.STATUS_TO_PROCESS, ProductionOrder.STATUS_IN_PRODUCTION] + ) + else: + production_orders = production_orders.filter(status=prod_status) if prod_warehouse: production_orders = production_orders.filter(warehouse_id=prod_warehouse) if prod_destination: @@ -757,11 +775,15 @@ def stock_movements(request): "prod_search_q": prod_search_q, "prod_warehouse": prod_warehouse, "prod_destination": prod_destination, - "prod_status_choices": ProductionOrder.STATUS_CHOICES, + "prod_status_choices": [ + ('active', _("À traiter & En confection")), + ] + list(ProductionOrder.STATUS_CHOICES), "prod_destination_choices": ProductionOrder.DESTINATION_CHOICES, "prod_counts": prod_counts, + "prep_counts": prep_counts, "accessible_warehouses": accessible_warehouses, "preparation_order_status_choices": [ + ('active', _("À traiter & En attente")), ('to_process', _("A traiter")), ('pending', _("En attente")), ('processed', _("Traité")),