{{-- v4.2.0 §C1 — Les panneaux de saisie de la fiche, EN LIGNE : jamais une seconde page.
Même grammaire de champs que partout ailleurs — les composants Filament. --}}
@php
use App\Enums\EspaceClient\CanalDecision;
use App\Enums\EspaceClient\CanalDemande;
use App\Enums\EspaceClient\FamilleDocument;
use App\Enums\EspaceClient\ModeAcces;
use App\Enums\EspaceClient\ModeLettre;
use App\Enums\EspaceClient\RoleAcces;
use App\Enums\EspaceClient\TypeDecision;
use App\Models\EspaceClient\DocumentClient;
@endphp
@if ($panneau === 'livrable')
+ Nouveau livrable
L'échéance se calcule depuis le poste quand il porte une règle de délai ; elle reste modifiable.
@foreach ($espace->postes as $poste)
@endforeach
@foreach ($this->collaborateurs() as $id => $nom)
@endforeach
@endif
@if ($panneau === 'remise')
Remettre au client
Une remise crée une VERSION neuve — jamais un écrasement — et envoie l'e-mail au valideur
et au référent, avec la date de réponse souhaitée.
RemettreFermer
@endif
@if ($panneau === 'decision')
Reporter une décision reçue
La décision est tracée avec SON auteur et SON canal, et la mention de qui l'a reportée :
une décision reportée ne se fait jamais passer pour une décision prononcée.
@foreach ([TypeDecision::Valide, TypeDecision::ValideAvecModifications, TypeDecision::Corrections, TypeDecision::Refus] as $decision)
@endforeach
@foreach ([CanalDecision::WhatsappReporte, CanalDecision::Email, CanalDecision::Reunion] as $canal)
@endforeach
EnregistrerFermer
@endif
@if ($panneau === 'demande')
+ Saisir une demande reçueLe même formulaire que celui du client, avec le canal et la date de réception.
@foreach (CanalDemande::cases() as $canal)
@endforeach
@foreach (ModeLettre::cases() as $mode)
@endforeach
EnregistrerFermer
@endif
@if ($panneau === 'lettre')
Préparer la lettre de commandeLes quantités commandées, poste par poste. Le montant est figé à l'écriture.
@endif
{{-- v4.4.2 §3 — Un poste du bordereau, saisi à la main : un marché sans appel d'offres a droit
à ses postes, sans quoi tout l'onglet « Commandes » reste mort. --}}
@if ($panneau === 'poste')
{{ ($saisie['poste'] ?? null) ? 'Modifier le poste' : '+ Poste du bordereau' }}
Le montant du poste est quantité prévue × prix unitaire HT. Un poste sans prix ni quantité est un poste de pilotage : il se suit, il ne se facture pas.
EnregistrerFermer
@endif
@if ($panneau === 'creneau')
Proposer un créneauLe client confirme, ou en propose un autre, depuis son espace.
@foreach (['hebdo' => 'Hebdomadaire', 'comite' => 'Comité de suivi', 'cadrage' => 'Cadrage', 'autre' => 'Autre'] as $cle => $libelle)
@endforeach
ProposerFermer
@endif
@if ($panneau === 'compte-rendu')
Compte rendu de la réunion
Envoyé, il apparaît chez le client dans « À valider ». Sans remarque dans le délai convenu,
il sera réputé approuvé. La réunion suivante est créée si vous en fixez la date.
Envoyer au clientFermer
@endif
@if ($panneau === 'document')
+ Ajouter un documentUn lien ou un fichier : au choix, document par document. Le client ne voit que les pièces partagées.
@foreach (FamilleDocument::cases() as $famille)
@endforeach
AjouterFermer
@endif
@if ($panneau === 'message')
Message de la semaine
Cinq lignes, relues et modifiables. Rien ne part vers une messagerie extérieure : on copie,
ou on envoie par courriel au référent.
Enregistrer le brouillonEnvoyer par e-mail au référentFermer
@endif
@if ($panneau === 'invitation')
Inviter une personne du client
Un compte nominatif, un mot de passe temporaire envoyé par courriel, changé à la première
connexion. Le mot de passe n'apparaît jamais ici.
@foreach (RoleAcces::cases() as $role)
@endforeach
InviterFermer
@endif
@if ($panneau === 'reglages')
Réglages de l'espace
Identité du client, mode d'accès, règles de délai, canaux et adresses d'envoi. Vides, les
adresses retombent sur celles de l'installation.
@foreach (ModeAcces::cases() as $mode)
@endforeach
EnregistrerFermer
@endif
{{-- ═══════════════════════════════════════════════════════════════════════════════════════
v4.3.0 — LES PANNEAUX DU LOT 2 : publications, événements, indicateurs, décomptes.
Même grammaire que ceux du lot 1 : en ligne, jamais une seconde page.
═══════════════════════════════════════════════════════════════════════════════════════ --}}
@if ($panneau === 'publication')
{{ filled($saisie['publication'] ?? null) ? 'Publication' : '+ Nouvelle publication' }}
Une publication validée par le client est FIGÉE : pour la changer, on l'annule et on la recrée.
@foreach (\App\Enums\EspaceClient\TypePublication::cases() as $type)
@endforeach
@foreach ($this->livrables() as $livrable)
@endforeach
@foreach ($espace->reseauxConfigures() as $reseau)
@endforeach
Enregistrer
@if (filled($saisie['publication'] ?? null))
Envoyer au client
@endif
Fermer
@endif
@if ($panneau === 'publication-lien')
Marquer publiée
Le lien est obligatoire : sans lui, « publié » est une affirmation ; avec lui, c'est une pièce.
EnregistrerFermer
@endif
@if ($panneau === 'publication-annulation')
Annuler la publication
Le motif est obligatoire et journalisé. Si le client l'avait vue passer, il est prévenu.
Annuler la publicationFermer
@endif
@if ($panneau === 'publication-decision')
Décision reçue sur une publication
Une décision REPORTÉE : la trace dira qui l'a prononcée, par quel canal, et qui l'a saisie.
@foreach ([TypeDecision::Valide, TypeDecision::ValideAvecModifications, TypeDecision::Corrections] as $decision)
@endforeach
@foreach (CanalDecision::cases() as $canal)
@endforeach
EnregistrerFermer
@endif
@if ($panneau === 'evenement' || $panneau === 'evenement-qualification')
{{ $panneau === 'evenement-qualification' ? 'Qualifier l\'événement signalé' : '+ Planifier un événement' }}
La chronologie du tableau de bord est recopiée avec ses échéances, calculées depuis la date
et l'heure de début. Sans heure : 09:00.
@foreach ($espace->zonesConfigurees() as $zone)
@endforeach
@foreach ($this->affectations() as $id => $nom)
@endforeach
@foreach ($this->lettres() as $lettre)
@endforeach
@endif
@if ($panneau === 'evenement-etape')
Marquer l'étape faite
L'heure est enregistrée, et l'e-mail part aux deux parties avec le lien. C'est ce message-là
qui tient la promesse, pas la case cochée.
Marquer faiteFermer
@endif
@if ($panneau === 'evenement-galerie')
Lien de la galerieLe client le lit avec son QR code, depuis la vue « Événements ».
EnregistrerFermer
@endif
@if ($panneau === 'indicateurs')
Saisir les indicateurs digitaux du mois
Ces chiffres viennent du rapport de performance : ils ne se recalculent pas, et le calcul
ne les efface jamais.
Réseau
Abonnés
Publications
Portée
Engagement
Modération (h)
@foreach ($espace->reseauxConfigures() as $reseau)
{{ $reseau['libelle'] }}
@foreach (['abonnes', 'publications', 'portee', 'engagement', 'delai_moderation_h'] as $champ)
@endforeach
@endforeach
EnregistrerFermer
@endif
@if ($panneau === 'recalcul')
Recalculer les indicateurs
Si le mois est clôturé, le rouvrir exige un motif — il a peut-être déjà été présenté en comité.
La saisie digitale, elle, n'est jamais touchée.
RecalculerFermer
@endif
@if ($panneau === 'decompte')
Préparer le décompte
Les lignes sont calculées depuis les livrables VALIDÉS de la période, non déjà comptés
ailleurs. Les pénalités sont reprises du simulateur et restent modifiables.
PréparerFermer
@endif
@if ($panneau === 'pv')
PV signé
La pièce est archivée dans les documents du client, famille « Commandes et réceptions »,
et partagée : c'est une pièce qui l'engage.
EnregistrerFermer
@endif
@if ($panneau === 'facture')
Créer la facture
La facture est celle du socle, créée en BROUILLON : elle attend d'être relue et émise depuis
le module de facturation. « Réglée » se lira ensuite de la facture, jamais d'ici.
@foreach ($this->jalons() as $id => $libelle)
@endforeach
Créer la factureFermer
@endif
@if ($panneau === 'parametres-avances')
Zones, réseaux, chronologie, pénalités et réceptions
Les listes se collent depuis un document du marché : une ligne par entrée, plutôt que
huit formulaires à remplir un par un.
@foreach ([
['cible_delais', 'Cible — délais tenus (%)', 'number'],
['cible_premier_passage', 'Cible — premier passage (%)', 'number'],
['cible_retour', 'Cible — délai de retour (j ouvrés)', 'number'],
['cible_moderation', 'Cible — modération (h)', 'number'],
['penalite_taux', 'Pénalité — taux ‰ par jour', 'number'],
['penalite_plafond', 'Pénalité — plafond (%)', 'number'],
['montant_ht', 'Montant du marché HT', 'number'],
['montant_ttc', 'Montant du marché TTC', 'number'],
['taux_tva', 'Taux de TVA (%)', 'number'],
['nb_periodes', 'Nombre de périodes de réception', 'number'],
['prochaine_reception', 'Prochaine réception (repli saisi)', 'date'],
] as [$champ, $libelle, $type])