@extends('layouts.app') @section('titre', 'Ordonnancement') @section('contenu')

Ordonnancement {{ $mode === 'simulation' ? '— mode simulation (bac à sable)' : 'journalier' }} @if($mode === 'reel') {{ $date > now()->toDateString() ? 'Préparation J+1' : ($date === now()->toDateString() ? 'Journée en cours (atelier)' : 'Journée passée') }} @endif

@if($mode === 'reel' && $date > now()->toDateString())

Le bureau prépare la prochaine journée de production ; l'atelier travaille sur la journée du jour. Cette page s'ouvre par défaut sur la journée à préparer.

@endif
@if($mode === 'simulation') Projection des stocks S+1 → S+3 @endif
@if($journee === null)

Aucune journée de production pour le {{ \Carbon\Carbon::parse($date)->translatedFormat('l d/m/Y') }}.

Générez d'abord la journée dans le calendrier (jour férié ou non travaillé ?).

@else @if(!empty($synthese))

Synthèse des quantités à produire (en caisses) — onglet « Qté »

Commandes (F) et stock (G) sont pré-remplis d'après les données du jour. Le nombre de pétrins proposé (H) est calculé automatiquement en fonction des commandes et du stock : H = arrondi supérieur de (F − G) ÷ L (0 si le stock couvre déjà les commandes). Les caisses par pétrin (L) proviennent du fichier « Qté » et ne sont pas modifiables ici. Vous pouvez ajuster H : le stock après production (M = G + H×L) et le stock après prise des commandes (N = M − F) se recalculent en direct. Un N négatif (en rouge) signale un risque de rupture.

@foreach($synthese as $s) @endforeach
Produit fini Commandes (F) Stock (G) Caisses/pétrin (L) Nb pétrins proposé (H) Stock après prod. (M) Stock après prises (N)
{{ $s['produit_fini']->designation }} {{ $s['commandes_caisses'] + 0 }} {{ $s['stock_caisses'] + 0 }} {{ $s['caisses_par_petrin'] !== null ? $s['caisses_par_petrin'] + 0 : '—' }} — —

Le stock (G) provient de l'inventaire du jour, exprimé en caisses. « Caisses/pétrin » (L) est repris de l'onglet Qté du planning production (config/caisses_par_petrin.php), avec repli sur le calcul du référentiel ; il n'est pas modifiable ici. Ce tableau est une aide au calcul (non enregistré).

@endif

Ordonnancement par ligne

@foreach($lignes as $l) @php $v = $versionsActives[$l->id] ?? null; @endphp @endforeach
LigneVersion activeDépart pétrinPétrinsAlertes
{{ $l->code }} — {{ $l->libelle }} @if($v) v{{ $v->version }} du {{ $v->created_at->format('d/m H:i') }} par {{ $v->user?->name ?? '—' }} @else aucune @endif {{ $v ? $v->heureDemarrageEffective() : '—' }} {{ $v?->items->sum('qte_petrins') ?? '—' }} @php $nbSerie = $v ? $v->items->where('alerte_serie', true)->count() : 0; $nbMoule = $v ? $v->items->where('alerte_moule', true)->count() : 0; @endphp @if($nbSerie > 0) {{ $nbSerie }} série(s) > max moules @endif @if($nbMoule > 0) {{ $nbMoule }} conflit(s) de moule partagé @endif @if($v && $nbSerie === 0 && $nbMoule === 0) OK @endif {{ $v ? 'Re-planifier' : 'Composer' }} Versions

Besoins calculés — commandes {{ $mode === 'simulation' ? 'prévisionnelles' : '' }} couvertes : @foreach($journee->jours_commandes_couverts ?? [] as $d) {{ \Carbon\Carbon::parse($d)->translatedFormat('D d/m') }} @endforeach

@if(empty($besoins))

Aucune commande {{ $mode === 'simulation' ? 'prévisionnelle' : '' }} saisie pour les dates couvertes — saisir les commandes.

@else @foreach($besoins as $b) @endforeach
Produit fabriquéBesoin (UF)UF / pétrinPétrins à produireMax / sérieDétail produits finis
{{ $b['produit_fabrique']->libelle }} {{ number_format($b['besoin_uf'], 0, ',', ' ') }} {{ $b['produit_fabrique']->uf_par_petrin ?? '—' }} {{ $b['qte_petrins'] }} @if($b['produit_fabrique']->nb_petrins_max_serie && $b['qte_petrins'] > $b['produit_fabrique']->nb_petrins_max_serie) à fractionner en séries @endif {{ $b['produit_fabrique']->nb_petrins_max_serie ?? '—' }} @foreach($b['details'] as $d) {{ $d['produit_fini']->nom_court ?? $d['produit_fini']->designation }} : {{ number_format($d['commande_uvc'], 0, ',', ' ') }} UVC cmd − {{ number_format($d['stock_uvc'], 0, ',', ' ') }} stock
@endforeach
@endif
@endif @endsection