{{-- v1.16.0 §D5 — le nouveau client express, dans l'espace cabinet : Les pièces · Vérifier · Formule et envoi. Même composant que le formulaire public (Inscription), mêmes règles, mêmes lectures : seules les pièces viennent d'abord, et les champs des étapes 1 et 2 se vérifient sur un seul écran. --}} @php use App\Livewire\Portail\Inscription; use App\Support\PieceIdentite; $c = $this; $nomPieceId = Inscription::PIECES[$piece_type] ?? 'Pièce'; $attendues = collect(array_filter([ 'societe' => $physique ? null : $pieceSociete, 'cin_recto' => $passeport ? 'Passeport' : ($rectoPdf ? $nomPieceId.', recto et verso' : $nomPieceId.', recto'), 'cin_verso' => $passeport || $rectoPdf ? null : $nomPieceId.', verso', ])); $lues = $attendues->filter(fn ($libelle, $role) => isset($transit[$role]) && ($role === 'societe' ? $lectureSociete === 'ok' : $lecture === 'ok'))->count(); $recues = $attendues->filter(fn ($libelle, $role) => isset($transit[$role]))->count(); $detailPiece = function (string $role) use ($luSurPiece, $luSurSociete, $extraits, $forme_juridique) { return match ($role) { 'cin_recto' => collect([$luSurPiece['rep_piece_numero'] ?? null, isset($extraits['rep_piece_expire_le']) ? 'valable jusqu\'au '.$extraits['rep_piece_expire_le'] : null])->filter()->implode(' · '), 'cin_verso' => 'adresse personnelle lue', default => collect([$luSurSociete['raison_sociale'] ?? null, $luSurSociete['forme_juridique'] ?? null, isset($luSurSociete['recepisse_numero']) ? 'récépissé n° '.$luSurSociete['recepisse_numero'] : null])->filter()->implode(' · '), }; }; $ecart = $c->ecart(); $propose = $c->beneficiairePropose(); $aCompleter = $c->aCompleter(); $proprietes = ['societe' => 'pieceSociete', 'cin_recto' => 'cinRecto', 'cin_verso' => 'cinVerso']; @endphp

Nouveau client

Déposez les pièces : nous remplissons le reste. Vous ne corrigez que ce qui diffère.

{{-- ===================== 1 — Les pièces ===================== --}} @if ($etape === 1)
Qui se domicilie ?
@foreach (Inscription::TYPES as $cle => $libelle) @endforeach
@if ($association) {{-- v1.17.0 — l'association : déclarée (récépissé) ou en cours (statuts). --}}
Où en est l'association ?
@foreach (Inscription::SITUATIONS as $cle => $libelle) @endforeach
@endif
Pièce d'identité {{ $association ? 'du président' : 'du gérant' }}
@foreach (Inscription::PIECES as $cle => $libelle) @endforeach
@foreach ($attendues as $role => $libelle) @php $propriete = $proprietes[$role]; $recu = $transit[$role] ?? null; $err = $errors->first($propriete); @endphp
@if ($recu && ! $err) @php [$ton, $message] = $controleDe($recu); @endphp
$ton === 'ok', 'warn' => $ton === 'warn'])> {{ $libelle }} {{ $recu['original_name'] ?? 'Reçu' }} {{ $message }}
@else @endif
@endforeach
Contrôle de la pièce…
@if ($this->litEncore('cin') || $this->litEncore('societe')) {{-- v1.17.0 §E — la lecture tourne hors de la requête. --}}
Lecture des pièces… Vous pouvez continuer : les champs vides se rempliront.
@endif

Chaque pièce est lue aussitôt : {{ $recues }} reçue{{ $recues > 1 ? 's' : '' }} sur {{ $attendues->count() }}, {{ $lues }} lue{{ $lues > 1 ? 's' : '' }}. Une lecture impossible ne bloque rien : les champs restent à saisir.

@endif {{-- ===================== 2 — Vérifier ===================== --}} @if ($etape === 2)

Pièces lues $lues === $attendues->count(), 'o' => $lues < $attendues->count()])>{{ $lues }} sur {{ $attendues->count() }}

@foreach ($attendues as $role => $libelle) @php $propriete = $proprietes[$role]; $recu = $transit[$role] ?? null; @endphp
{{ $libelle }}
{{ $recu ? ($detailPiece($role) ?: ($recu['original_name'] ?? 'reçue')) : 'manquante' }}
@endforeach
La CIN peut tenir en un seul PDF recto-verso ; {{ $association ? 'une association déclarée dépose son récépissé, sinon ses statuts.' : 'une société immatriculée dépose son modèle J.' }}
Contrôle de la pièce…
@if ($this->litEncore('cin') || $this->litEncore('societe'))
Lecture des pièces… les champs vides se rempliront.
@endif
@if ($ecart && $ecartIdentite === null) @elseif ($ecart && $ecartIdentite === 'meme')

Même personne : la graphie de la CIN est gardée, « {{ $ecart['piece'] }} » est noté au dossier.

@elseif ($ecart && $ecartIdentite === 'pas_meme')

Le nom {{ $association ? 'du président' : 'du gérant' }} est à saisir ; le dossier portera « écart d'identité à vérifier » pour MOBDIE.

@endif @if ($association) {{-- v1.17.0 — l'association : dénomination, objet, récépissé. --}}

L'association

@include('portail.partiels.champ', $vars + ['champ' => 'raison_sociale', 'libelle' => 'Dénomination', 'source' => $c->sourceDe('raison_sociale'), 'attrs' => 'autocomplete="organization"']) @include('portail.partiels.champ', $vars + ['champ' => 'activite', 'libelle' => 'Objet', 'source' => $c->sourceDe('activite')]) @if ($declaree)
@include('portail.partiels.champ', $vars + ['champ' => 'recepisse_numero', 'libelle' => 'N° du récépissé', 'source' => $c->sourceDe('recepisse_numero'), 'attrs' => 'autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'recepisse_date', 'libelle' => 'Date du récépissé', 'saisie' => 'date']) @include('portail.partiels.champ', $vars + ['champ' => 'recepisse_autorite', 'libelle' => 'Délivré par', 'exemple' => 'Pachalik de Fès', 'source' => $c->sourceDe('recepisse_autorite'), 'classe' => 'plein'])
Récépissé
@foreach (\App\Support\Domiciliation::naturesRecepisse() as $cle => $libelleNature) @endforeach
@error('recepisse_nature')

{{ $message }}

@enderror
@endif
@elseif (! $physique)

La société

@include('portail.partiels.champ', $vars + ['champ' => 'raison_sociale', 'libelle' => 'Dénomination', 'source' => $c->sourceDe('raison_sociale'), 'attrs' => 'autocomplete="organization"'])
Forme @if (filled($luSurSociete['forme_juridique'] ?? null) && $forme_juridique === ($luSurSociete['forme_juridique'] ?? null))lu@endif
@foreach (Inscription::FORMES as $forme) @endforeach
@if ($forme_juridique === 'Autre') @error('forme_autre')

{{ $message }}

@enderror @endif @error('forme_juridique')

{{ $message }}

@enderror
@include('portail.partiels.champ', $vars + ['champ' => 'activite', 'libelle' => 'Activité', 'source' => $c->sourceDe('activite')]) @if ($type === 'immatriculee')
@include('portail.partiels.champ', $vars + ['champ' => 'rc', 'libelle' => 'N° de RC', 'exemple' => '72917', 'attrs' => 'inputmode="numeric" autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'rc_ville', 'libelle' => 'Ville du tribunal', 'attrs' => 'list="villes-rc" autocomplete="off"'])
@foreach (\App\Support\Saisie::villesRc() as $ville) @endif
@else @include('portail.partiels.champ', $vars + ['champ' => 'activite', 'libelle' => 'Activité']) @endif

{{ $physique ? 'Le titulaire' : ($association ? 'Le président' : 'Le gérant') }}

@include('portail.partiels.champ', $vars + ['champ' => 'rep_prenom', 'libelle' => 'Prénom', 'source' => $c->sourceDe('rep_prenom'), 'attrs' => 'autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'rep_nom_famille', 'libelle' => 'Nom', 'source' => $c->sourceDe('rep_nom_famille'), 'attrs' => 'autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'rep_piece_numero', 'libelle' => 'N° de '.(['cin' => 'CIN', 'passeport' => 'passeport', 'carte_sejour' => 'la carte de séjour'][$piece_type] ?? 'la pièce'), 'source' => $c->sourceDe('rep_piece_numero') ? 'lu' : null, 'attrs' => 'autocapitalize="characters" autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'rep_adresse', 'libelle' => 'Adresse personnelle', 'source' => $c->sourceDe('rep_adresse'), 'attrs' => 'autocomplete="off"'])

À compléter @if (count($aCompleter) > 0){{ count($aCompleter) }}@endif

@include('portail.partiels.champ', $vars + ['champ' => 'rep_telephone', 'libelle' => $association ? 'Téléphone du président' : 'Téléphone du gérant', 'saisie' => 'tel', 'exemple' => '+212 6 61 23 45 67', 'attrs' => 'inputmode="tel" autocomplete="off"']) @include('portail.partiels.champ', $vars + ['champ' => 'rep_email', 'libelle' => $association ? 'E-mail du président' : 'E-mail du gérant', 'saisie' => 'email', 'exemple' => 'nom@exemple.ma', 'aide' => 'Le projet de contrat et le devis y arrivent, votre cabinet en copie.', 'attrs' => 'inputmode="email" autocapitalize="off" autocomplete="off"'])
@unless ($physique) @if ($propose && $seulAssocie && ! $beneficiaireConfirme)
Bénéficiaire effectif proposé
{{ $propose['nom'] }}, {{ $propose['detail'] }}
@elseif ($propose && $seulAssocie && $beneficiaireConfirme)

Bénéficiaire effectif : {{ $propose['nom'] }}, associé unique, 100 % — confirmé.

@else
@if ($association)

Les personnes qui dirigent ou contrôlent l'association

Président, trésorier, membres du bureau. Le président y figure d'office.

@else

Les associés

@endif @unless ($seulAssocie) @php $total = \App\Support\Saisie::totalDesParts($associes); @endphp @foreach ($associes as $i => $associe)
@error('associes.'.$i.'.nom')

{{ $message }}

@enderror
@error('associes.'.$i.'.piece_numero')

{{ $message }}

@enderror
@if ($association)
@error('associes.'.$i.'.fonction')

{{ $message }}

@enderror
@else
%
@error('associes.'.$i.'.part')

{{ $message }}

@enderror
@endif @if (count($associes) > 1) @else @endif
@endforeach @unless ($association)
Total des parts 100) style="color:var(--err-txt)" @endif>{{ Inscription::pourcent($total) }}
@endunless @error('associes')

{{ $message }}

@enderror @endunless
@endif @endunless @if ($ppe) @include('portail.partiels.champ', $vars + ['champ' => 'ppe_precision', 'libelle' => 'Laquelle ?']) @endif
@endif {{-- ===================== 3 — Formule et envoi ===================== --}} @if ($etape === 3)
@include('portail.partiels.formule-et-options')
@endif
@if ($libellesErreurs->isNotEmpty()) @endif
@if ($etape > 1) @else @endif @if ($etape === 2) @endif @if ($etape < 3) @else @endif

À l'envoi, le client reçoit le projet de contrat et le devis par e-mail, votre cabinet en copie ; MOBDIE valide ensuite les pièces.