{{-- TEMPORAIRE : ancienne creation (avant la mise en deux colonnes), servie par la route commandes.create-ancien le temps de comparer. A supprimer avec la route, _devis_ancien et js/commandes/devis_ancien.js. --}} @extends('admin.layout') @section('title', __('Ajouter une commande') . ' (ancienne vue)') @section('content')

@yield('title')

{{-- Deroule du bloc devis et des champs d'observation. Les regles sont partagees avec la creation d'un chantier, qui deroule les memes blocs. --}}
@if ($errors->any())
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif
@csrf
@include('admin.commandes._devis_ancien', [ 'devisId' => old('devis_id'), 'clientId' => old('client_id'), ])
{{-- -------------------- INFORMATIONS COMMANDE -------------------- --}}
{{-- Dates --}}
{{-- Qui a valide le visuel. Les choix viennent de config/commandes.php : en ajouter un se fait la-bas, cette boucle suit. Facultatif comme la colonne, qui est nullable — on n'a pas toujours l'information. --}}
@error('validateur_visuel') {{ $message }} @enderror
{{-- La note sur les dates est repliee par defaut : elle est rare, et un textarea vide au milieu des dates donnait surtout l'impression qu'il fallait le remplir. Le champ s'appelle `observation_dates` et non plus `observation_date_valide` : l'ancien n'etait lu nulle part dans store(), ce qu'on y tapait disparaissait. Il occupe toute la largeur et se place apres les dates pour qu'on voie ce que la note commente. --}}
{{-- Le `mt-2` est descendu dans le corps : porte par le panneau, il laisserait une marge visible meme replie. --}}
@error('observation_dates') {{ $message }} @enderror

{{-- Modele et variation ne font plus qu'un champ : on tape, la liste du type se filtre, un clic fige le choix. Le texte saisi est poste lui aussi, sous `modele` : le catalogue ne couvre pas tout, et `commandes.modele` est un libelle fige, pas une cle etrangere — un nom qui n'y figure pas s'y enregistre aussi bien. Quand une entree du catalogue est choisie, c'est elle qui prime : le controleur resout le libelle sur l'id plutot que de faire confiance au texte poste. --}}
{{-- Platine : n'existe que sur un accessoire. Le logiciel metier la posait partout, et NettoyerPlatineSeeder a du l'effacer a l'import — un coulissant n'a pas de platine. Le champ ne s'ouvre donc que sur ce type. Desactive tant qu'il est replie, et pas seulement masque : sans cela, choisir une platine puis changer de type la posterait quand meme, et on recreerait en saisie ce que l'import a nettoye. Meme mecanique que la finition sur « pas de laquage ». `pt-0` : la gouttiere de la `row` est un padding porte par la colonne, donc hors du panneau qui se deroule. --}}
{{-- Quantite : meme logique que la platine. Un portail se commande a l'unite, seul un accessoire part par lots. Replie, le champ est desactive et n'est pas poste : le controleur pose alors 1. --}}
{{-- Desactivee et videe quand la couleur est « pas de laquage » : une piece qu'on ne laque pas n'a pas de finition. La colonne est nullable, un select desactive n'est pas poste, les deux se rejoignent. --}}
{{-- Découpes inox. Se déroule quand « Découpe/Inox » passe à Oui, comme le champ d'observation. `pt-0` : la gouttière de la `row` est un padding porté par la colonne, donc hors du panneau, et le repli finirait sur quelques pixels qui sautent. Le `mt-3` descend dans le corps pour la même raison — porté par l'hôte, il laisserait une marge visible une fois replié. --}}
@foreach ($decoupes as $type => $items)
{{ \App\Helpers\CommandeHelper::decoupeType($type) }} @foreach ($items as $decoupe)
@endforeach
@endforeach
{{-- Etat de depart de la ligne : EN ATTENTE, IN PROCESS ou STANDBY. Les suivants (laquage, charge...) se posent quand l'usine avance. L'attribut `selected` suit le clonage, une nouvelle ligne repart donc EN ATTENTE. --}}
{{-- Largeur : carport seulement, meme mecanique que la quantite sur un accessoire. Repliee, elle est desactivee et n'est pas postee : la colonne reste nulle. --}}
{{-- Meme motif que la note sur les dates, en classes et non en id : ce bloc est clone par « Ajouter une commande », des id seraient dupliques. --}}
{{-- Hors du
: un champ de recherche a l'interieur soumettrait la commande a la premiere touche Entree. Le choix pose l'identifiant dans `#numero_client` et emet un `change`, que l'ecran relit plus bas. --}} @include('admin.gestan.clients._modale_recherche', ['cible' => '#numero_client']) @php // Libelles des