/* Final CMR — clean, print-accurate 24-box rendering */ const FinalView = ({ data, onBack, onPrint }) => { const f = data.heroCase.fields; return (

CMR-2026-0419 — Lettre de voiture

Validé le 22 mai 2026 à 11:42 par H. Bennani · prête à imprimer
Exporter PDF
{/* Header band */}
CMR
LETTRE DE VOITURE INTERNATIONALE
Convention relative au contrat de transport international de marchandises par route — Genève, 19 mai 1956
FR · Français
EN · English
AR · العربية
{/* Reference strip */}
N° : CMR-2026-0419 Émis le 22/05/2026 — Casablanca, Maroc Original · Expéditeur
{f.sender.value} {f.carrier.value} {f.consignee.value} Aucun {f.placeOfDelivery.value} {f.reservations.value} {f.placeOfTaking.value}
{f.dateOfTaking.value}
{f.specialAgreements.value} {f.attachedDocs.value} {/* Box 20 — payment table */}
20
À payer par — To be paid by
{data.heroCase.charges.map((c, i) => ( ))}
Expéditeur Destinataire
{c.label} {c.sender} {c.consignee}
{/* Goods — full row spanning both columns, boxes 6–12 */}
6 Marques 7 Nombre de colis 8 Emballage 9 Nature 10 SH 11 Poids brut (kg) 12 Volume (m³)
{f.goods.map((g) => ( ))} {(() => { const tot = goodsTotals(f.goods); const fr = (n) => n.toLocaleString("fr-FR", { maximumFractionDigits: 2 }); return ( ); })()}
Marques (6) Colis (7) Emballage (8) Nature de la marchandise (9) SH (10) kg (11) m³ (12)
{g.marks} {g.packages} {g.packing} {g.nature} {g.hs} {g.weight} {g.volume}
Total {fr(tot.weight)} {fr(tot.volume)}
{f.senderInstructions.value} {f.payment.value} {f.placeOfIssue.value}, le {f.dateOfIssue.value}
{/* Signatures band */}
{[ {n:"22", l:"Signature & cachet de l'expéditeur"}, {n:"23", l:"Signature & cachet du transporteur"}, {n:"24", l:"Signature & cachet du destinataire"}, ].map((s, i) => (
{s.n}
{s.l}
Lieu, date, nom et signature
))}
{/* Audit trail */}

Journal d'activité

    {[ ["11:42", "H. Bennani", "Validé et exporté le CMR final"], ["11:38", "H. Bennani", "Modifié 2 champs (réservations · poids ligne 3)"], ["11:35", "H. Bennani", "Ouvert le brouillon pour vérification"], ["09:14", "Système", "Extraction terminée — 22/27 champs en haute confiance"], ["09:12", "Email entrant", "Email reçu de logistique@soremed.ma"], ].map((e, i) => (
  • {e[0]} {e[1]} {e[2]}
  • ))}

Pièces du dossier

    {data.heroCase.docs.map((d) => (
  • {d.label}
  • ))}
); }; const Cell = ({ n, l, children }) => (
{n}
{l}
{children}
); window.FinalView = FinalView;