diff --git a/apps/frontend/app/dashboard/layout.tsx b/apps/frontend/app/dashboard/layout.tsx index 97653c0..9fae45f 100644 --- a/apps/frontend/app/dashboard/layout.tsx +++ b/apps/frontend/app/dashboard/layout.tsx @@ -25,6 +25,7 @@ export default function DashboardLayout({ children }: { children: React.ReactNod { name: 'Dashboard', href: '/dashboard', icon: '📊' }, { name: 'Bookings', href: '/dashboard/bookings', icon: '📦' }, { name: 'Documents', href: '/dashboard/documents', icon: '📄' }, + { name: 'Wiki', href: '/dashboard/wiki', icon: '📚' }, { name: 'My Profile', href: '/dashboard/profile', icon: '👤' }, { name: 'Organization', href: '/dashboard/settings/organization', icon: '🏢' }, // ADMIN and MANAGER only navigation items diff --git a/apps/frontend/app/dashboard/wiki/assurance/page.tsx b/apps/frontend/app/dashboard/wiki/assurance/page.tsx new file mode 100644 index 0000000..a9c7a8c --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/assurance/page.tsx @@ -0,0 +1,210 @@ +/** + * Assurance Maritime - Wiki Page + * + * Protection des marchandises en transit + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const clausesICC = [ + { + code: 'ICC A', + name: 'All Risks', + coverage: 'Tous risques', + description: 'Couverture la plus complète. Couvre tous les risques de perte ou dommage sauf exclusions spécifiques.', + includes: ['Vol', 'Casse', 'Mouille', 'Manquants', 'Chute', 'Écrasement'], + excludes: ['Vice propre', 'Emballage insuffisant', 'Guerre', 'Grèves'], + recommended: true, + }, + { + code: 'ICC B', + name: 'With Average', + coverage: 'Risques majeurs', + description: 'Couverture intermédiaire incluant les événements majeurs de transport.', + includes: ['Incendie', 'Naufrage', 'Échouement', 'Collision', 'Jet à la mer', 'Avarie commune'], + excludes: ['Vol', 'Mouille', 'Manquants (hors avarie commune)', 'Casse isolée'], + recommended: false, + }, + { + code: 'ICC C', + name: 'Free of Particular Average', + coverage: 'Risques minimaux', + description: 'Couverture de base pour les sinistres majeurs uniquement.', + includes: ['Incendie', 'Naufrage', 'Échouement', 'Collision', 'Avarie commune'], + excludes: ['Vol', 'Mouille', 'Casse', 'Manquants', 'Perte partielle'], + recommended: false, + }, +]; + +const extensionsGaranties = [ + { name: 'Guerre et grèves', description: 'Extension pour couvrir les risques de guerre, grèves, émeutes.' }, + { name: 'Magasin à magasin', description: 'Couverture étendue incluant les phases de stockage.' }, + { name: 'Frais de réexpédition', description: 'Couvre les frais en cas de changement de destination.' }, + { name: 'Pertes financières', description: 'Perte de marge, frais supplémentaires liés au sinistre.' }, + { name: 'Transport frigorifique', description: 'Risques spécifiques liés au froid (panne, variation).' }, +]; + +export default function AssurancePage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 🛡️ +

Assurance Maritime (Cargo Insurance)

+
+

+ L'assurance transport maritime protège les marchandises contre les risques de perte ou de dommage + pendant le transit. Elle est régie par les Institute Cargo Clauses (ICC) de l'Institute of London Underwriters. +

+
+ + {/* Why insure */} + + +

Pourquoi s'assurer ?

+
    +
  • Responsabilité limitée du transporteur : Maximum ~2 DTS/kg (Convention de Bruxelles)
  • +
  • Délai de réclamation court : 3 jours pour les réserves au transporteur
  • +
  • Preuves difficiles : Charge de la preuve souvent sur l'expéditeur
  • +
  • Exigence bancaire : Souvent requise pour les lettres de crédit (CIF, CIP)
  • +
+
+
+ + {/* ICC Clauses */} +
+

📋 Clauses ICC (Institute Cargo Clauses)

+
+ {clausesICC.map((clause) => ( + + + + + {clause.code} + + {clause.name} + {clause.recommended && ( + Recommandé + )} + + + +

{clause.description}

+
+
+

✓ Couvert

+
    + {clause.includes.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+
+

✗ Non couvert

+
    + {clause.excludes.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+
+
+
+ ))} +
+
+ + {/* Valeur assurée */} + + +

💰 Calcul de la Valeur Assurée

+
+
+

+ Valeur assurée = (CIF + 10%) × Taux de change +

+
+
+
+

CIF

+

Coût + Assurance + Fret jusqu'au port de destination

+
+
+

+ 10%

+

Majoration standard pour couvrir le profit espéré

+
+
+

Taux de prime

+

0.1% à 1% selon marchandise, trajet, clause

+
+
+
+
+
+ + {/* Extensions */} +
+

➕ Extensions de Garantie

+
+ {extensionsGaranties.map((ext) => ( + + +

{ext.name}

+

{ext.description}

+
+
+ ))} +
+
+ + {/* Process */} + + +

📝 En Cas de Sinistre

+
    +
  1. Constater : Émettre des réserves précises sur le bon de livraison
  2. +
  3. Préserver : Ne pas modifier l'état des marchandises (photos, témoins)
  4. +
  5. Notifier : Informer l'assureur sous 5 jours ouvrés
  6. +
  7. Documenter : Rassembler tous les documents (B/L, facture, expertise)
  8. +
  9. Réclamer : Déposer une réclamation formelle avec justificatifs
  10. +
+
+
+ + {/* Tips */} + + +

💡 Conseils Pratiques

+
    +
  • Toujours opter pour ICC A (All Risks) sauf marchandises très résistantes
  • +
  • Vérifier les exclusions et souscrire les extensions nécessaires
  • +
  • Photographier la marchandise avant expédition
  • +
  • Conserver tous les documents originaux
  • +
  • Ne jamais signer "reçu conforme" sans avoir vérifié
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx b/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx new file mode 100644 index 0000000..f9c01bc --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/calcul-fret/page.tsx @@ -0,0 +1,269 @@ +/** + * Calcul du Fret Maritime - Wiki Page + * + * Comment sont calculés les coûts de transport + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const surcharges = [ + { + code: 'BAF', + name: 'Bunker Adjustment Factor', + description: 'Surcharge carburant liée aux fluctuations du prix du fuel maritime.', + variation: 'Mensuelle', + }, + { + code: 'CAF', + name: 'Currency Adjustment Factor', + description: 'Ajustement monétaire pour compenser les variations de taux de change.', + variation: 'Mensuelle', + }, + { + code: 'THC', + name: 'Terminal Handling Charges', + description: 'Frais de manutention au terminal portuaire (chargement/déchargement).', + variation: 'Par port', + }, + { + code: 'ISPS', + name: 'International Ship & Port Security', + description: 'Surcharge sécurité conforme au code ISPS (post 11 septembre).', + variation: 'Fixe', + }, + { + code: 'LSS', + name: 'Low Sulphur Surcharge', + description: 'Surcharge carburant bas soufre (réglementation IMO 2020).', + variation: 'Mensuelle', + }, + { + code: 'PSS', + name: 'Peak Season Surcharge', + description: 'Surcharge haute saison (généralement août-octobre vers l\'Europe).', + variation: 'Saisonnière', + }, + { + code: 'GRI', + name: 'General Rate Increase', + description: 'Augmentation générale des tarifs, généralement annoncée à l\'avance.', + variation: 'Variable', + }, + { + code: 'EBS', + name: 'Emergency Bunker Surcharge', + description: 'Surcharge d\'urgence en cas de hausse brutale du carburant.', + variation: 'Exceptionnelle', + }, +]; + +const fraisAdditionnels = [ + { name: 'Documentation Fee', description: 'Frais d\'émission du B/L ou autres documents', typical: '35-75 USD' }, + { name: 'Seal Fee', description: 'Coût du plomb de sécurité du conteneur', typical: '10-25 USD' }, + { name: 'VGM Fee', description: 'Frais de certification du poids vérifié', typical: '25-50 USD' }, + { name: 'Container Cleaning', description: 'Nettoyage du conteneur si requis', typical: '50-150 USD' }, + { name: 'Customs Clearance', description: 'Frais de dédouanement (honoraires)', typical: '50-200 USD' }, + { name: 'Inspection Fee', description: 'Frais d\'inspection (scanner, phytosanitaire)', typical: '50-300 USD' }, +]; + +export default function CalculFretPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 🧮 +

Calcul du Fret Maritime

+
+

+ Le coût du transport maritime se compose du fret de base et de nombreuses surcharges. + Comprendre ces éléments est essentiel pour bien estimer ses coûts logistiques. +

+
+ + {/* Base Calculation */} + + +

📐 Principes de Base

+
+
+

FCL (Conteneur Complet)

+

+ Prix forfaitaire par conteneur (20', 40', 40'HC), indépendant du poids (dans les limites). +

+

Ex: 1,500 USD/20' Shanghai → Rotterdam

+
+
+

LCL (Groupage)

+

+ Prix au mètre cube (CBM) ou à la tonne, selon le plus avantageux pour le transporteur. +

+

Ex: 45 USD/CBM (minimum 1 CBM)

+
+
+
+
+ + {/* Weight Calculation */} + + +

⚖️ Poids Taxable (LCL)

+
+
+

+ Poids taxable = MAX (Volume CBM × 1000, Poids brut kg) +

+
+
+
+
+

Exemple 1 : Marchandise légère

+
    +
  • Volume : 2 CBM
  • +
  • Poids : 500 kg
  • +
  • Volume équivalent : 2 × 1000 = 2000 kg
  • +
  • → Taxé sur 2 CBM (ou 2 tonnes)
  • +
+
+
+

Exemple 2 : Marchandise lourde

+
    +
  • Volume : 1 CBM
  • +
  • Poids : 2000 kg
  • +
  • Volume équivalent : 1 × 1000 = 1000 kg
  • +
  • → Taxé sur 2 tonnes (poids réel)
  • +
+
+
+

+ Ratio standard : 1 CBM = 1 tonne (1000 kg). Certaines compagnies utilisent 1 CBM = 333 kg pour l'aérien. +

+
+
+ + {/* Surcharges */} +
+

📋 Surcharges Courantes

+
+ {surcharges.map((sur) => ( + + + + + {sur.code} + + {sur.name} + + + +

{sur.description}

+

Variation : {sur.variation}

+
+
+ ))} +
+
+ + {/* Additional fees */} +
+

💵 Frais Additionnels

+ + +
+ + + + + + + + + + {fraisAdditionnels.map((frais) => ( + + + + + + ))} + +
FraisDescriptionMontant typique
{frais.name}{frais.description}{frais.typical}
+
+
+
+
+ + {/* Example calculation */} + + +

📊 Exemple de Devis FCL

+
+

Conteneur 40' Shanghai → Le Havre

+
+
+ Ocean Freight (base) + 1,800 USD +
+
+ BAF + 450 USD +
+
+ LSS + 180 USD +
+
+ THC Origin + 150 USD +
+
+ THC Destination + 280 EUR +
+
+ ISPS + 12 USD +
+
+ Documentation + 45 USD +
+
+ Total estimé + ~2,637 USD + 280 EUR +
+
+
+
+
+ + {/* Tips */} + + +

💡 Conseils pour Optimiser

+
    +
  • Demandez des devis "All-in" pour éviter les surprises de surcharges
  • +
  • Comparez les transitaires sur le total, pas seulement le fret de base
  • +
  • Anticipez la haute saison (septembre-novembre) avec des réservations précoces
  • +
  • Optimisez le remplissage des conteneurs pour réduire le coût unitaire
  • +
  • Vérifiez les surcharges qui peuvent changer entre devis et facture
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/conteneurs/page.tsx b/apps/frontend/app/dashboard/wiki/conteneurs/page.tsx new file mode 100644 index 0000000..ddcd6fd --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/conteneurs/page.tsx @@ -0,0 +1,315 @@ +/** + * Conteneurs et Types de Cargo - Wiki Page + * + * Complete guide to container types + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const containers = [ + { + type: '20\' Standard (20\' DRY)', + code: '20DC', + dimensions: { + external: '6.06m x 2.44m x 2.59m', + internal: '5.90m x 2.35m x 2.39m', + door: '2.34m x 2.28m', + }, + capacity: { + volume: '33 m³', + payload: '28,200 kg', + tare: '2,300 kg', + }, + usage: 'Marchandises générales sèches', + icon: '📦', + }, + { + type: '40\' Standard (40\' DRY)', + code: '40DC', + dimensions: { + external: '12.19m x 2.44m x 2.59m', + internal: '12.03m x 2.35m x 2.39m', + door: '2.34m x 2.28m', + }, + capacity: { + volume: '67 m³', + payload: '26,680 kg', + tare: '3,800 kg', + }, + usage: 'Marchandises générales, cargo volumineux', + icon: '📦', + }, + { + type: '40\' High Cube (40\' HC)', + code: '40HC', + dimensions: { + external: '12.19m x 2.44m x 2.90m', + internal: '12.03m x 2.35m x 2.69m', + door: '2.34m x 2.58m', + }, + capacity: { + volume: '76 m³', + payload: '26,460 kg', + tare: '4,020 kg', + }, + usage: 'Cargo léger mais volumineux', + icon: '📦', + }, + { + type: 'Reefer (Réfrigéré)', + code: '20RF / 40RF', + dimensions: { + external: 'Comme standard', + internal: 'Légèrement réduit (isolation)', + door: 'Standard', + }, + capacity: { + volume: '28 m³ (20\') / 60 m³ (40\')', + payload: '27,400 kg / 26,500 kg', + temperature: '-30°C à +30°C', + }, + usage: 'Produits périssables, pharmaceutiques', + icon: '❄️', + }, + { + type: 'Open Top', + code: '20OT / 40OT', + dimensions: { + external: 'Comme standard', + internal: 'Comme standard', + door: 'Toit amovible + portes arrière', + }, + capacity: { + volume: 'Comme standard', + payload: '28,100 kg / 26,400 kg', + tare: '2,400 kg / 4,100 kg', + }, + usage: 'Cargo hors gabarit en hauteur, machinerie', + icon: '📭', + }, + { + type: 'Flat Rack', + code: '20FR / 40FR', + dimensions: { + external: 'Comme standard (sans parois)', + internal: 'Plateau sans côtés', + door: 'N/A', + }, + capacity: { + volume: 'N/A', + payload: '31,000 kg / 40,000 kg', + tare: '2,700 kg / 4,700 kg', + }, + usage: 'Cargo très lourd ou surdimensionné', + icon: '🚛', + }, + { + type: 'Tank Container', + code: '20TK', + dimensions: { + external: 'Cadre standard 20\'', + internal: 'Citerne 21,000-26,000 L', + door: 'Valves et trappes', + }, + capacity: { + volume: '21,000-26,000 litres', + payload: '26,000 kg', + tare: '3,500 kg', + }, + usage: 'Liquides, gaz, produits chimiques', + icon: '🛢️', + }, +]; + +const specialEquipment = [ + { name: 'Flexitank', desc: 'Poche flexible pour liquides non dangereux dans un 20\' standard', capacity: '16,000-24,000 L' }, + { name: 'Garment on Hanger (GOH)', desc: 'Barres pour vêtements suspendus', capacity: 'Variable' }, + { name: 'Ventilated Container', desc: 'Aération naturelle pour café, cacao, oignons', capacity: 'Standard' }, + { name: 'Insulated Container', desc: 'Isolation thermique sans réfrigération active', capacity: 'Standard' }, +]; + +export default function ConteneursPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 📦 +

Conteneurs et Types de Cargo

+
+

+ Les conteneurs maritimes sont standardisés selon les normes ISO. Comprendre les différents + types permet de choisir le conteneur adapté à votre marchandise et d'optimiser les coûts. +

+
+ + {/* Quick Reference */} + + +

Codes ISO Courants

+
+ {[ + { code: '20DC', name: '20\' Dry' }, + { code: '40DC', name: '40\' Dry' }, + { code: '40HC', name: '40\' High Cube' }, + { code: '45HC', name: '45\' High Cube' }, + { code: '20RF', name: '20\' Reefer' }, + { code: '40RF', name: '40\' Reefer' }, + { code: '20OT', name: '20\' Open Top' }, + { code: '20FR', name: '20\' Flat Rack' }, + ].map((item) => ( +
+ {item.code} +

{item.name}

+
+ ))} +
+
+
+ + {/* Container Types */} +

Types de Conteneurs

+
+ {containers.map((container) => ( + + + +
+ {container.icon} +
+ {container.type} + + {container.code} + +
+
+
+
+ +

{container.usage}

+
+
+

Dimensions

+
    +
  • + Externe: + {container.dimensions.external} +
  • +
  • + Interne: + {container.dimensions.internal} +
  • +
  • + Porte: + {container.dimensions.door} +
  • +
+
+
+

Capacité

+
    + {Object.entries(container.capacity).map(([key, value]) => ( +
  • + {key}: + {value} +
  • + ))} +
+
+
+
+
+ ))} +
+ + {/* Special Equipment */} +

Équipements Spéciaux

+ + +
+ {specialEquipment.map((equip) => ( +
+

{equip.name}

+

{equip.desc}

+

Capacité: {equip.capacity}

+
+ ))} +
+
+
+ + {/* Container Selection Guide */} + + + Guide de Sélection + + +
+
+ 📦 +
+

Marchandises générales

+

→ 20' ou 40' Standard (DRY)

+
+
+
+ ❄️ +
+

Produits réfrigérés/congelés

+

→ Reefer 20' ou 40'

+
+
+
+ 📭 +
+

Cargo hors gabarit (hauteur)

+

→ Open Top

+
+
+
+ 🚛 +
+

Machinerie lourde/surdimensionnée

+

→ Flat Rack

+
+
+
+ 🛢️ +
+

Liquides en vrac

+

→ Tank Container ou Flexitank

+
+
+
+
+
+ + {/* Tips */} + + +

Conseils Pratiques

+
    +
  • Un 40' HC offre 30% de volume en plus qu'un 20' mais coûte rarement le double
  • +
  • Les Reefer nécessitent une alimentation électrique au port et sur le navire
  • +
  • Les conteneurs spéciaux (OT, FR, Tank) ont une disponibilité limitée - réservez à l'avance
  • +
  • Vérifiez le poids maximum autorisé sur les routes du pays de destination
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx b/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx new file mode 100644 index 0000000..416f316 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/documents-transport/page.tsx @@ -0,0 +1,249 @@ +/** + * Documents de Transport Maritime - Wiki Page + * + * Essential documents for maritime shipping + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const documents = [ + { + name: 'Bill of Lading (B/L)', + french: 'Connaissement', + description: 'Document principal du transport maritime. Il fait preuve du contrat de transport, accuse réception des marchandises et constitue un titre de propriété négociable.', + types: [ + { name: 'B/L à ordre', desc: 'Négociable, peut être endossé' }, + { name: 'B/L nominatif', desc: 'Au nom d\'un destinataire précis' }, + { name: 'B/L au porteur', desc: 'Propriété à celui qui le détient' }, + ], + importance: 'Critique', + icon: '📄', + }, + { + name: 'Sea Waybill', + french: 'Lettre de transport maritime', + description: 'Document non négociable servant de preuve du contrat de transport et de reçu. Plus simple que le B/L car pas besoin de présenter l\'original pour retirer les marchandises.', + types: [ + { name: 'Standard', desc: 'Pour expéditions entre parties de confiance' }, + { name: 'Express', desc: 'Libération rapide sans documents originaux' }, + ], + importance: 'Important', + icon: '📋', + }, + { + name: 'Manifest', + french: 'Manifeste de cargaison', + description: 'Liste complète de toutes les marchandises chargées à bord d\'un navire. Utilisé par les autorités douanières et portuaires.', + types: [ + { name: 'Cargo Manifest', desc: 'Liste détaillée des marchandises' }, + { name: 'Freight Manifest', desc: 'Inclut les informations de fret' }, + ], + importance: 'Obligatoire', + icon: '📑', + }, + { + name: 'Packing List', + french: 'Liste de colisage', + description: 'Document détaillant le contenu de chaque colis, ses dimensions et son poids. Essentiel pour le dédouanement.', + types: [ + { name: 'Simple', desc: 'Liste basique des contenus' }, + { name: 'Détaillée', desc: 'Avec poids, dimensions, marquage' }, + ], + importance: 'Important', + icon: '📦', + }, + { + name: 'Commercial Invoice', + french: 'Facture commerciale', + description: 'Facture établie par le vendeur décrivant les marchandises, leur valeur et les conditions de vente. Base pour le calcul des droits de douane.', + types: [ + { name: 'Proforma', desc: 'Avant expédition, pour cotation' }, + { name: 'Définitive', desc: 'Document final de facturation' }, + ], + importance: 'Critique', + icon: '🧾', + }, + { + name: 'Certificate of Origin', + french: 'Certificat d\'origine', + description: 'Document certifiant le pays de fabrication ou de transformation des marchandises. Requis pour les préférences tarifaires.', + types: [ + { name: 'EUR.1', desc: 'Pour les échanges UE' }, + { name: 'Form A', desc: 'Système de préférences généralisées' }, + { name: 'Non préférentiel', desc: 'Attestation simple d\'origine' }, + ], + importance: 'Selon destination', + icon: '🏭', + }, +]; + +const additionalDocs = [ + { + name: 'Dangerous Goods Declaration', + description: 'Obligatoire pour les marchandises dangereuses (IMDG)', + }, + { + name: 'Phytosanitary Certificate', + description: 'Pour les produits végétaux et alimentaires', + }, + { + name: 'Insurance Certificate', + description: 'Preuve de couverture d\'assurance cargo', + }, + { + name: 'Inspection Certificate', + description: 'Rapport de contrôle qualité avant embarquement', + }, + { + name: 'VGM Declaration', + description: 'Déclaration du poids vérifié du conteneur (SOLAS)', + }, +]; + +export default function DocumentsTransportPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 📋 +

Documents de Transport Maritime

+
+

+ Le transport maritime international nécessite une documentation précise et complète. + Ces documents servent de preuve de propriété, de contrat de transport et sont essentiels + pour le passage en douane. +

+
+ + {/* Importance Warning */} + + +

Important

+

+ Une erreur ou un manque de document peut entraîner des retards considérables, des frais + de surestaries (demurrage) et même le refus d'entrée des marchandises dans le pays de destination. +

+
+
+ + {/* Main Documents */} +

Documents Principaux

+
+ {documents.map((doc) => ( + + + +
+ {doc.icon} +
+ {doc.name} + ({doc.french}) +
+
+ + {doc.importance} + +
+
+ +

{doc.description}

+
+

Types:

+
    + {doc.types.map((type) => ( +
  • + {type.name}: + {type.desc} +
  • + ))} +
+
+
+
+ ))} +
+ + {/* Bill of Lading Detail */} + + + Focus: Le Bill of Lading (B/L) + + +

+ Le B/L remplit trois fonctions essentielles: +

+
+
+

1. Reçu

+

+ Confirme que le transporteur a reçu les marchandises dans l'état décrit +

+
+
+

2. Contrat

+

+ Preuve du contrat de transport entre le chargeur et le transporteur +

+
+
+

3. Titre

+

+ Document de titre permettant le transfert de propriété des marchandises +

+
+
+
+
+ + {/* Additional Documents */} +

Documents Complémentaires

+ + +
+ {additionalDocs.map((doc) => ( +
+ +
+

{doc.name}

+

{doc.description}

+
+
+ ))} +
+
+
+ + {/* Tips */} + + +

Conseils Pratiques

+
    +
  • Vérifiez la cohérence entre tous les documents (noms, adresses, descriptions)
  • +
  • Conservez des copies de tous les originaux
  • +
  • Anticipez les délais d'obtention des certificats (origine, sanitaire, etc.)
  • +
  • En cas de L/C, les documents doivent correspondre exactement aux exigences
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/douanes/page.tsx b/apps/frontend/app/dashboard/wiki/douanes/page.tsx new file mode 100644 index 0000000..d119438 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/douanes/page.tsx @@ -0,0 +1,218 @@ +/** + * Procédures Douanières - Wiki Page + * + * Guide des formalités douanières import/export + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const regimesDouaniers = [ + { + code: 'IM4', + name: 'Mise en libre pratique', + description: 'Importation définitive avec paiement des droits et taxes. La marchandise entre dans le circuit économique.', + }, + { + code: 'IM5', + name: 'Admission temporaire', + description: 'Importation temporaire avec suspension des droits. Pour les marchandises réexportées en l\'état.', + }, + { + code: 'IM6', + name: 'Perfectionnement actif', + description: 'Importation pour transformation et réexportation. Suspension des droits sur les intrants.', + }, + { + code: 'IM7', + name: 'Entrepôt douanier', + description: 'Stockage sous douane sans paiement des droits jusqu\'à la mise en consommation.', + }, + { + code: 'EX1', + name: 'Exportation définitive', + description: 'Sortie définitive des marchandises du territoire douanier.', + }, + { + code: 'EX2', + name: 'Exportation temporaire', + description: 'Sortie temporaire avec réimportation prévue en l\'état.', + }, + { + code: 'EX3', + name: 'Perfectionnement passif', + description: 'Exportation pour transformation à l\'étranger et réimportation.', + }, +]; + +const documentsDouane = [ + { + name: 'DAU (Document Administratif Unique)', + description: 'Formulaire standard pour toutes les déclarations douanières dans l\'UE.', + obligatoire: true, + }, + { + name: 'Facture commerciale', + description: 'Document de base indiquant la valeur des marchandises.', + obligatoire: true, + }, + { + name: 'Liste de colisage', + description: 'Détail du contenu de chaque colis (poids, dimensions, contenu).', + obligatoire: true, + }, + { + name: 'Certificat d\'origine', + description: 'Atteste l\'origine des marchandises pour les accords préférentiels.', + obligatoire: false, + }, + { + name: 'Licence d\'importation/exportation', + description: 'Autorisation pour certaines marchandises réglementées.', + obligatoire: false, + }, + { + name: 'Certificat sanitaire/phytosanitaire', + description: 'Pour les produits alimentaires, animaux et végétaux.', + obligatoire: false, + }, +]; + +export default function DouanesPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 🛃 +

Procédures Douanières

+
+

+ Les formalités douanières sont obligatoires pour toute marchandise traversant une frontière. + Elles permettent le contrôle des échanges, la perception des droits et taxes, et l'application + des réglementations commerciales. +

+
+ + {/* Key Concepts */} + + +

Concepts Clés

+
+
+

Valeur en douane

+

Base de calcul des droits, généralement la valeur CIF (coût + assurance + fret).

+
+
+

Code SH / NC

+

Classification tarifaire harmonisée des marchandises (6 ou 8 chiffres).

+
+
+

Origine

+

Pays de fabrication ou de transformation substantielle de la marchandise.

+
+
+

OEA (Opérateur Économique Agréé)

+

Statut de confiance accordé par les douanes pour des procédures simplifiées.

+
+
+
+
+ + {/* Régimes douaniers */} +
+

📋 Régimes Douaniers

+
+ {regimesDouaniers.map((regime) => ( + + + + + {regime.code} + + {regime.name} + + + +

{regime.description}

+
+
+ ))} +
+
+ + {/* Documents requis */} +
+

📄 Documents Requis

+ + +
+ {documentsDouane.map((doc) => ( +
+ + {doc.obligatoire ? 'Obligatoire' : 'Selon cas'} + +
+

{doc.name}

+

{doc.description}

+
+
+ ))} +
+
+
+
+ + {/* Droits et taxes */} + + +

💰 Droits et Taxes

+
+
+

Droits de douane

+

Pourcentage appliqué sur la valeur en douane selon le code SH.

+

Ex: 0% à 17% selon les produits

+
+
+

TVA import

+

Taxe sur la valeur ajoutée calculée sur (valeur + droits).

+

France: 20%, 10%, 5.5% ou 2.1%

+
+
+

Droits antidumping

+

Droits additionnels pour protéger contre la concurrence déloyale.

+

Variable selon origine et produit

+
+
+
+
+ + {/* Tips */} + + +

⚠️ Points d'Attention

+
    +
  • Toujours vérifier le classement tarifaire avant l'importation
  • +
  • Conserver tous les documents 3 ans minimum (contrôle a posteriori)
  • +
  • Anticiper les contrôles : certificats, licences, normes
  • +
  • Utiliser les accords de libre-échange pour réduire les droits
  • +
  • Attention aux marchandises à double usage (exportation)
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/imdg/page.tsx b/apps/frontend/app/dashboard/wiki/imdg/page.tsx new file mode 100644 index 0000000..52d086a --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/imdg/page.tsx @@ -0,0 +1,312 @@ +/** + * Marchandises Dangereuses (IMDG) - Wiki Page + * + * Transport de matières dangereuses par mer + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const classesIMDG = [ + { + class: '1', + name: 'Explosifs', + description: 'Matières et objets explosibles', + examples: 'Munitions, feux d\'artifice, détonateurs', + color: 'bg-orange-500', + }, + { + class: '2', + name: 'Gaz', + description: 'Gaz comprimés, liquéfiés ou dissous', + examples: 'Propane, aérosols, oxygène, extincteurs', + color: 'bg-green-500', + subdivisions: ['2.1 Inflammables', '2.2 Non inflammables', '2.3 Toxiques'], + }, + { + class: '3', + name: 'Liquides inflammables', + description: 'Liquides à point d\'éclair bas', + examples: 'Essence, peintures, alcools, solvants', + color: 'bg-red-500', + }, + { + class: '4', + name: 'Solides inflammables', + description: 'Solides facilement inflammables ou auto-réactifs', + examples: 'Allumettes, soufre, métaux en poudre', + color: 'bg-red-400', + subdivisions: ['4.1 Inflammables', '4.2 Auto-inflammables', '4.3 Réagissent avec l\'eau'], + }, + { + class: '5', + name: 'Comburants et peroxydes', + description: 'Matières qui favorisent la combustion', + examples: 'Engrais, peroxydes, agents de blanchiment', + color: 'bg-yellow-500', + subdivisions: ['5.1 Comburants', '5.2 Peroxydes organiques'], + }, + { + class: '6', + name: 'Matières toxiques et infectieuses', + description: 'Matières nocives pour la santé', + examples: 'Pesticides, échantillons médicaux, cyanures', + color: 'bg-purple-500', + subdivisions: ['6.1 Toxiques', '6.2 Infectieuses'], + }, + { + class: '7', + name: 'Matières radioactives', + description: 'Matières émettant des radiations', + examples: 'Isotopes médicaux, sources industrielles', + color: 'bg-yellow-300', + }, + { + class: '8', + name: 'Matières corrosives', + description: 'Matières attaquant les tissus ou métaux', + examples: 'Acide sulfurique, soude caustique, batteries', + color: 'bg-gray-700', + }, + { + class: '9', + name: 'Matières dangereuses diverses', + description: 'Autres matières présentant un danger', + examples: 'Batteries lithium, amiante, glace carbonique', + color: 'bg-gray-400', + }, +]; + +const documentsRequired = [ + { name: 'DGD (Dangerous Goods Declaration)', description: 'Déclaration obligatoire signée par l\'expéditeur' }, + { name: 'Multimodal Dangerous Goods Form', description: 'Formulaire standard OMI/OIT pour le transport multimodal' }, + { name: 'Fiche de Données de Sécurité (FDS/SDS)', description: 'Document technique détaillant les risques et mesures' }, + { name: 'Certificat d\'empotage', description: 'Attestation de bon chargement du conteneur' }, + { name: 'Approval/Exemption', description: 'Autorisations spécifiques pour certaines matières' }, +]; + +const packagingGroups = [ + { group: 'I', danger: 'Élevé', description: 'Matières très dangereuses' }, + { group: 'II', danger: 'Moyen', description: 'Matières moyennement dangereuses' }, + { group: 'III', danger: 'Faible', description: 'Matières légèrement dangereuses' }, +]; + +export default function IMDGPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ ⚠️ +

Marchandises Dangereuses (Code IMDG)

+
+

+ Le Code IMDG (International Maritime Dangerous Goods) est le référentiel international pour + le transport maritime de marchandises dangereuses. Publié par l'OMI, il est mis à jour tous + les deux ans et est obligatoire depuis janvier 2004. +

+
+ + {/* Key Info */} + + +

⚠️ Responsabilités de l'Expéditeur

+
    +
  • Classer correctement la marchandise selon le Code IMDG
  • +
  • Utiliser des emballages homologués UN
  • +
  • Étiqueter et marquer conformément aux exigences
  • +
  • Remplir la déclaration de marchandises dangereuses (DGD)
  • +
  • S'assurer de la formation du personnel impliqué
  • +
+
+
+ + {/* Classes */} +
+

📋 Les 9 Classes de Danger

+
+ {classesIMDG.map((cls) => ( + +
+ + + + {cls.class} + + {cls.name} + + + +

{cls.description}

+

Ex: {cls.examples}

+ {cls.subdivisions && ( +
+

Subdivisions:

+
    + {cls.subdivisions.map((sub) => ( +
  • • {sub}
  • + ))} +
+
+ )} +
+
+ ))} +
+
+ + {/* UN Number */} + + +

🔢 Numéro ONU (UN Number)

+

+ Chaque matière dangereuse est identifiée par un numéro ONU à 4 chiffres. + Ce numéro permet de retrouver toutes les informations dans le Code IMDG. +

+
+
+

UN 1203

+

Essence

+
+
+

UN 2794

+

Batteries acide/plomb

+
+
+

UN 3481

+

Batteries lithium-ion

+
+
+
+
+ + {/* Packaging Groups */} +
+

📦 Groupes d'Emballage

+ + +
+ {packagingGroups.map((pg) => ( +
+ + {pg.group} + +
+

Groupe {pg.group} - Danger {pg.danger}

+

{pg.description}

+
+
+ ))} +
+
+
+
+ + {/* Documents */} +
+

📄 Documents Requis

+ + +
+ {documentsRequired.map((doc) => ( +
+ +
+

{doc.name}

+

{doc.description}

+
+
+ ))} +
+
+
+
+ + {/* Labeling */} + + +

🏷️ Marquage et Étiquetage

+
+
+

Colis

+
    +
  • • Étiquette(s) de danger (losanges)
  • +
  • • Numéro ONU précédé de "UN"
  • +
  • • Nom technique de la matière
  • +
  • • Marque d'homologation UN de l'emballage
  • +
+
+
+

Conteneur

+
    +
  • • Plaques-étiquettes (4 faces)
  • +
  • • Numéro ONU en grands caractères
  • +
  • • Certificat d'empotage affiché
  • +
  • • Marine Pollutant si applicable
  • +
+
+
+
+
+ + {/* Segregation */} + + +

🔀 Ségrégation

+

+ Certaines classes de marchandises dangereuses ne peuvent pas être chargées ensemble. + Le Code IMDG définit des règles strictes de ségrégation : +

+
+
+

1

+

Away from

+
+
+

2

+

Separated from

+
+
+

3

+

Separated by compartment

+
+
+

4

+

Separated longitudinally

+
+
+
+
+ + {/* Tips */} + + +

💡 Conseils Pratiques

+
    +
  • Vérifier l'acceptation par la compagnie maritime (certaines refusent certaines classes)
  • +
  • Anticiper les surcharges DG (dangerous goods) qui peuvent être significatives
  • +
  • Former le personnel aux procédures d'urgence
  • +
  • Utiliser un transitaire spécialisé en marchandises dangereuses
  • +
  • Consulter les réglementations locales (certains ports ont des restrictions)
  • +
  • Batteries lithium : attention aux réglementations très strictes (UN 3480, 3481)
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/incoterms/page.tsx b/apps/frontend/app/dashboard/wiki/incoterms/page.tsx new file mode 100644 index 0000000..1e9da2b --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/incoterms/page.tsx @@ -0,0 +1,224 @@ +/** + * Incoterms 2020 - Wiki Page + * + * Detailed information about international commercial terms + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const incoterms = [ + { + code: 'EXW', + name: 'Ex Works', + description: 'Le vendeur met la marchandise à disposition dans ses locaux. L\'acheteur assume tous les risques et coûts.', + risk: 'Acheteur', + transport: 'Tous modes', + category: 'Départ', + }, + { + code: 'FCA', + name: 'Free Carrier', + description: 'Le vendeur livre la marchandise au transporteur désigné par l\'acheteur.', + risk: 'Transfert à la livraison au transporteur', + transport: 'Tous modes', + category: 'Départ', + }, + { + code: 'CPT', + name: 'Carriage Paid To', + description: 'Le vendeur paie le transport jusqu\'à destination. Le risque est transféré à la remise au transporteur.', + risk: 'Transfert à la livraison au transporteur', + transport: 'Tous modes', + category: 'Arrivée', + }, + { + code: 'CIP', + name: 'Carriage and Insurance Paid To', + description: 'Comme CPT mais le vendeur doit aussi assurer la marchandise.', + risk: 'Transfert à la livraison au transporteur', + transport: 'Tous modes', + category: 'Arrivée', + }, + { + code: 'DAP', + name: 'Delivered at Place', + description: 'Le vendeur livre la marchandise prête à être déchargée au lieu convenu.', + risk: 'Vendeur jusqu\'à destination', + transport: 'Tous modes', + category: 'Arrivée', + }, + { + code: 'DPU', + name: 'Delivered at Place Unloaded', + description: 'Le vendeur livre et décharge la marchandise au lieu de destination.', + risk: 'Vendeur jusqu\'au déchargement', + transport: 'Tous modes', + category: 'Arrivée', + }, + { + code: 'DDP', + name: 'Delivered Duty Paid', + description: 'Le vendeur assume tous les risques et coûts, y compris les droits de douane.', + risk: 'Vendeur (maximum)', + transport: 'Tous modes', + category: 'Arrivée', + }, + { + code: 'FAS', + name: 'Free Alongside Ship', + description: 'Le vendeur livre la marchandise le long du navire au port d\'embarquement.', + risk: 'Transfert le long du navire', + transport: 'Maritime uniquement', + category: 'Maritime', + }, + { + code: 'FOB', + name: 'Free On Board', + description: 'Le vendeur livre la marchandise à bord du navire. Très utilisé en maritime.', + risk: 'Transfert à bord du navire', + transport: 'Maritime uniquement', + category: 'Maritime', + }, + { + code: 'CFR', + name: 'Cost and Freight', + description: 'Le vendeur paie le fret jusqu\'au port de destination. Le risque passe à bord.', + risk: 'Transfert à bord du navire', + transport: 'Maritime uniquement', + category: 'Maritime', + }, + { + code: 'CIF', + name: 'Cost, Insurance and Freight', + description: 'Comme CFR mais le vendeur doit aussi assurer la marchandise.', + risk: 'Transfert à bord du navire', + transport: 'Maritime uniquement', + category: 'Maritime', + }, +]; + +export default function IncotermsPage() { + const categories = ['Départ', 'Arrivée', 'Maritime']; + + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 📜 +

Incoterms 2020

+
+

+ Les Incoterms (International Commercial Terms) sont des règles publiées par la Chambre de Commerce + Internationale (ICC) qui définissent les responsabilités des vendeurs et acheteurs dans les transactions + internationales. La version 2020 est entrée en vigueur le 1er janvier 2020. +

+
+ + {/* Key Points */} + + +

Points Clés

+
    +
  • 11 Incoterms au total : 7 multimodaux et 4 maritimes
  • +
  • Définissent le transfert des risques et des coûts
  • +
  • Ne définissent PAS le transfert de propriété
  • +
  • Doivent être suivis de la version (ex: FOB Incoterms 2020)
  • +
+
+
+ + {/* Incoterms by category */} + {categories.map((category) => ( +
+

+ {category === 'Maritime' ? '🚢 Incoterms Maritimes' : + category === 'Départ' ? '📤 Incoterms de Départ' : '📥 Incoterms d\'Arrivée'} +

+
+ {incoterms + .filter((term) => term.category === category) + .map((term) => ( + + + + + {term.code} + + {term.name} + + + +

{term.description}

+
+
+ Risque: + {term.risk} +
+
+ Transport: + {term.transport} +
+
+
+
+ ))} +
+
+ ))} + + {/* Visual diagram placeholder */} + + +

Transfert des Risques - Schéma

+
+
+ Vendeur + Acheteur +
+
+
+ EXW + FCA + FOB + CFR/CIF + DAP + DDP +
+
+

+ Plus on va vers la droite, plus le vendeur assume de responsabilités +

+
+
+
+ + {/* Tips */} + + +

Conseils Pratiques

+
    +
  • Utilisez FOB ou CIF pour le maritime, FCA ou CIP pour le multimodal
  • +
  • Précisez toujours le lieu exact (ex: FOB Shanghai Port)
  • +
  • Vérifiez la cohérence entre l'Incoterm et la lettre de crédit
  • +
  • EXW et DDP sont les termes extrêmes - à utiliser avec précaution
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx b/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx new file mode 100644 index 0000000..eb89732 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/lcl-vs-fcl/page.tsx @@ -0,0 +1,283 @@ +/** + * LCL vs FCL - Wiki Page + * + * Comparison between Less than Container Load and Full Container Load + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +export default function LclVsFclPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ ⚖️ +

LCL vs FCL

+
+

+ Choisir entre LCL (Less than Container Load) et FCL (Full Container Load) est une décision + cruciale qui impacte les coûts, les délais et la sécurité de vos marchandises. +

+
+ + {/* Definitions */} +
+ + + + 📦 + LCL - Groupage + + + +

+ Less than Container Load - Vos marchandises partagent un conteneur + avec d'autres expéditeurs. Vous payez uniquement pour l'espace utilisé. +

+
+

Caractéristiques:

+
    +
  • • Volume: généralement < 15 m³
  • +
  • • Consolidation en entrepôt (CFS)
  • +
  • • Facturation au m³ ou tonne
  • +
  • • Délai transit plus long (+3-7 jours)
  • +
+
+
+
+ + + + + 🚛 + FCL - Complet + + + +

+ Full Container Load - Vous réservez un conteneur entier, même s'il + n'est pas plein. Vos marchandises ne sont pas mélangées. +

+
+

Caractéristiques:

+
    +
  • • Volume: 20', 40' ou 40'HC
  • +
  • • Chargement direct porte-à-porte
  • +
  • • Facturation par conteneur
  • +
  • • Transit direct (plus rapide)
  • +
+
+
+
+
+ + {/* Comparison Table */} +

Comparaison Détaillée

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CritèreLCLFCL
CoûtPayez au m³/tonnePrix fixe par conteneur
Seuil de rentabilité< 10-15 m³> 15 m³
Transit time+3-7 jours (consolidation)Direct, plus rapide
ManutentionMultiple (risque de dommage)Minimale
SécuritéMarchandises mélangéesConteneur scellé
FlexibilitéHaute (petits volumes)Moyenne
DocumentationPlus complexeSimplifiée
+
+
+
+ + {/* Cost Calculation */} + + + Calcul du Seuil de Rentabilité + + +

+ Le point où FCL devient plus économique que LCL dépend de la route et des tarifs. + Voici un exemple de calcul: +

+
+
+
+

LCL

+

Tarif: 80 €/m³

+

Pour 15 m³: 15 × 80 = 1,200 €

+
+
+

FCL 20'

+

Tarif conteneur: 1,100 €

+

Capacité: ~28 m³ pour 1,100 €

+
+
+

+ Conclusion: Dans cet exemple, le FCL devient rentable à partir de ~14 m³. + Demandez toujours des cotations LCL et FCL pour comparer. +

+
+
+
+ + {/* When to Choose */} +
+ + + Choisissez LCL si: + + +
    +
  • + + Volume inférieur à 10-15 m³ +
  • +
  • + + Expéditions régulières de petites quantités +
  • +
  • + + Test de nouveaux marchés +
  • +
  • + + Marchandises non fragiles +
  • +
  • + + Flexibilité sur les délais +
  • +
+
+
+ + + + Choisissez FCL si: + + +
    +
  • + + Volume supérieur à 15 m³ +
  • +
  • + + Marchandises de valeur ou fragiles +
  • +
  • + + Délais de livraison critiques +
  • +
  • + + Sécurité renforcée requise +
  • +
  • + + Marchandises incompatibles avec d'autres +
  • +
+
+
+
+ + {/* LCL Process */} + + + Processus LCL (Groupage) + + +
+ {[ + { step: '1', title: 'Collecte', desc: 'Enlèvement chez l\'expéditeur' }, + { step: '2', title: 'CFS Origine', desc: 'Consolidation en entrepôt' }, + { step: '3', title: 'Transport', desc: 'Acheminement maritime' }, + { step: '4', title: 'CFS Destination', desc: 'Dégroupage' }, + { step: '5', title: 'Livraison', desc: 'Livraison finale' }, + ].map((item, index) => ( +
+
+
+ {item.step} +
+

{item.title}

+

{item.desc}

+
+ {index < 4 && ( +
+ )} +
+ ))} +
+
+
+ + {/* Tips */} + + +

Conseils Pratiques

+
    +
  • Demandez toujours des cotations LCL ET FCL pour comparer
  • +
  • En LCL, emballez solidement car vos marchandises seront manipulées plusieurs fois
  • +
  • Vérifiez les frais additionnels (CFS, manutention) qui peuvent surprendre en LCL
  • +
  • Un conteneur 40' n'est pas le double du prix d'un 20' - parfois 20-30% plus cher seulement
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx b/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx new file mode 100644 index 0000000..6033c08 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/lettre-credit/page.tsx @@ -0,0 +1,298 @@ +/** + * Lettre de Crédit (L/C) - Wiki Page + * + * Instrument de paiement international sécurisé + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const typesLC = [ + { + type: 'Irrévocable', + description: 'Ne peut être modifiée ou annulée sans l\'accord de toutes les parties', + usage: 'Standard depuis UCP 600', + recommended: true, + }, + { + type: 'Confirmée', + description: 'Une banque (généralement dans le pays du vendeur) ajoute sa garantie', + usage: 'Recommandé pour les pays à risque', + recommended: true, + }, + { + type: 'Transférable', + description: 'Peut être transférée à un second bénéficiaire (sous-traitant)', + usage: 'Négoce, intermédiaires', + recommended: false, + }, + { + type: 'Revolving', + description: 'Se reconstitue automatiquement après chaque utilisation', + usage: 'Commandes répétitives', + recommended: false, + }, + { + type: 'Stand-by', + description: 'Garantie de paiement en cas de défaillance (rarement utilisée)', + usage: 'Garantie bancaire', + recommended: false, + }, + { + type: 'Red/Green Clause', + description: 'Permet un paiement anticipé avant expédition', + usage: 'Préfinancement du vendeur', + recommended: false, + }, +]; + +const parties = [ + { role: 'Donneur d\'ordre (Applicant)', description: 'L\'acheteur/importateur qui demande l\'ouverture de la L/C' }, + { role: 'Bénéficiaire', description: 'Le vendeur/exportateur qui recevra le paiement' }, + { role: 'Banque émettrice', description: 'Banque de l\'acheteur qui émet la L/C' }, + { role: 'Banque notificatrice', description: 'Banque du vendeur qui notifie la L/C (sans engagement)' }, + { role: 'Banque confirmatrice', description: 'Banque qui ajoute sa propre garantie (optionnel)' }, +]; + +const documentsTypiques = [ + { document: 'Facture commerciale', obligatoire: true }, + { document: 'Bill of Lading (connaissement)', obligatoire: true }, + { document: 'Liste de colisage', obligatoire: true }, + { document: 'Certificat d\'origine', obligatoire: false }, + { document: 'Certificat d\'assurance', obligatoire: false }, + { document: 'Certificat d\'inspection', obligatoire: false }, + { document: 'Certificat phytosanitaire', obligatoire: false }, +]; + +const erreursFrequentes = [ + 'Nom du bénéficiaire mal orthographié', + 'Dates d\'expédition ou d\'expiration dépassées', + 'Description des marchandises ne correspondant pas exactement', + 'Documents présentés en retard (au-delà du délai de présentation)', + 'Incoterm incohérent avec les documents', + 'Montant des documents différent de la L/C', + 'Connaissement avec réserves (claused B/L)', +]; + +export default function LettreCreditPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 💳 +

Lettre de Crédit (L/C)

+
+

+ La lettre de crédit documentaire (L/C ou Documentary Credit) est un engagement de paiement + émis par une banque pour le compte de l'acheteur, garantissant au vendeur d'être payé + contre présentation de documents conformes. Elle est régie par les Règles UCP 600 de la CCI. +

+
+ + {/* How it works */} + + +

🔄 Fonctionnement Simplifié

+
+ {[ + { step: '1', title: 'Demande', desc: 'Acheteur demande l\'ouverture à sa banque' }, + { step: '2', title: 'Émission', desc: 'Banque émettrice envoie la L/C' }, + { step: '3', title: 'Notification', desc: 'Banque du vendeur notifie la L/C' }, + { step: '4', title: 'Expédition', desc: 'Vendeur expédie et présente les documents' }, + { step: '5', title: 'Paiement', desc: 'Banque paie après vérification' }, + ].map((item) => ( +
+
+ {item.step} +
+

{item.title}

+

{item.desc}

+
+ ))} +
+
+
+ + {/* Parties */} +
+

👥 Parties Impliquées

+ + +
+ {parties.map((p) => ( +
+ +
+

{p.role}

+

{p.description}

+
+
+ ))} +
+
+
+
+ + {/* Types */} +
+

📋 Types de Lettres de Crédit

+
+ {typesLC.map((lc) => ( + + + + {lc.type} + {lc.recommended && ( + Recommandé + )} + + + +

{lc.description}

+

Usage : {lc.usage}

+
+
+ ))} +
+
+ + {/* Documents */} +
+

📄 Documents Typiquement Requis

+ + +
+ {documentsTypiques.map((doc) => ( +
+ + {doc.obligatoire ? 'Toujours' : 'Selon L/C'} + + {doc.document} +
+ ))} +
+
+
+
+ + {/* Key Dates */} + + +

📅 Dates Clés à Surveiller

+
+
+

Date d'expédition

+

+ Date limite pour expédier les marchandises (Latest Shipment Date) +

+
+
+

Délai de présentation

+

+ Généralement 21 jours après expédition pour présenter les documents +

+
+
+

Date de validité

+

+ Date limite absolue de la L/C (Expiry Date) +

+
+
+
+
+ + {/* Costs */} + + +

💰 Coûts Typiques

+
+
+
+

Côté Acheteur

+
    +
  • • Commission d'ouverture : 0.1% - 0.5%
  • +
  • • Frais de modification : fixes
  • +
  • • Commission d'engagement : si non utilisée
  • +
+
+
+

Côté Vendeur

+
    +
  • • Frais de notification : fixes
  • +
  • • Commission de confirmation : 0.1% - 2%+
  • +
  • • Frais de négociation : variable
  • +
+
+
+

+ Note : Les frais de confirmation peuvent être très élevés pour les pays à risque. +

+
+
+
+ + {/* Common Errors */} + + +

⚠️ Erreurs Fréquentes (Réserves)

+

+ Ces erreurs entraînent des "réserves" de la banque et peuvent bloquer le paiement : +

+
    + {erreursFrequentes.map((err) => ( +
  • {err}
  • + ))} +
+
+
+ + {/* UCP 600 */} + + +

📜 Règles UCP 600

+

+ Les Règles et Usances Uniformes (UCP 600) de la Chambre de Commerce Internationale (CCI) + régissent les lettres de crédit documentaires depuis 2007. Points clés : +

+
    +
  • Délai standard d'examen des documents : 5 jours ouvrés bancaires
  • +
  • La L/C est irrévocable par défaut (même si non mentionné)
  • +
  • Les banques examinent les documents, pas les marchandises
  • +
  • Les documents doivent être "conformes en apparence"
  • +
+
+
+ + {/* Tips */} + + +

💡 Conseils Pratiques

+
    +
  • Vérifier minutieusement les termes de la L/C dès réception
  • +
  • Demander des modifications AVANT expédition si nécessaire
  • +
  • Préparer les documents exactement comme demandé (virgules, orthographe)
  • +
  • Respecter les délais avec marge de sécurité
  • +
  • Travailler avec un transitaire expérimenté en documentaire
  • +
  • Conserver des copies de tous les documents
  • +
  • Envisager une L/C confirmée pour les nouveaux clients ou pays risqués
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/page.tsx b/apps/frontend/app/dashboard/wiki/page.tsx new file mode 100644 index 0000000..713cafe --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/page.tsx @@ -0,0 +1,149 @@ +/** + * Wiki Page - Maritime Import/Export Knowledge Base + * + * Main page displaying cards for all wiki topics + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@/components/ui/card'; + +const wikiTopics = [ + { + title: 'Incoterms 2020', + description: 'Les règles internationales pour l\'interprétation des termes commerciaux', + icon: '📜', + href: '/dashboard/wiki/incoterms', + tags: ['FOB', 'CIF', 'EXW', 'DDP'], + }, + { + title: 'Documents de Transport', + description: 'Les documents essentiels pour le transport maritime', + icon: '📋', + href: '/dashboard/wiki/documents-transport', + tags: ['B/L', 'Sea Waybill', 'Manifest'], + }, + { + title: 'Conteneurs et Types de Cargo', + description: 'Guide complet des types de conteneurs maritimes', + icon: '📦', + href: '/dashboard/wiki/conteneurs', + tags: ['20\'', '40\'', 'Reefer', 'Open Top'], + }, + { + title: 'LCL vs FCL', + description: 'Différences entre groupage et conteneur complet', + icon: '⚖️', + href: '/dashboard/wiki/lcl-vs-fcl', + tags: ['Groupage', 'Complet', 'Coûts'], + }, + { + title: 'Procédures Douanières', + description: 'Guide des formalités douanières import/export', + icon: '🛃', + href: '/dashboard/wiki/douanes', + tags: ['Déclaration', 'Tarifs', 'Régimes'], + }, + { + title: 'Assurance Maritime', + description: 'Protection des marchandises en transit', + icon: '🛡️', + href: '/dashboard/wiki/assurance', + tags: ['ICC A', 'ICC B', 'ICC C'], + }, + { + title: 'Calcul du Fret Maritime', + description: 'Comment sont calculés les coûts de transport', + icon: '🧮', + href: '/dashboard/wiki/calcul-fret', + tags: ['CBM', 'THC', 'BAF', 'CAF'], + }, + { + title: 'Ports et Routes Maritimes', + description: 'Les principales routes commerciales mondiales', + icon: '🌍', + href: '/dashboard/wiki/ports-routes', + tags: ['Hub', 'Détroits', 'Canaux'], + }, + { + title: 'VGM (Verified Gross Mass)', + description: 'Obligation de pesée des conteneurs (SOLAS)', + icon: '⚓', + href: '/dashboard/wiki/vgm', + tags: ['SOLAS', 'Pesée', 'Certification'], + }, + { + title: 'Marchandises Dangereuses (IMDG)', + description: 'Transport de matières dangereuses par mer', + icon: '⚠️', + href: '/dashboard/wiki/imdg', + tags: ['Classes', 'Étiquetage', 'Sécurité'], + }, + { + title: 'Lettre de Crédit (L/C)', + description: 'Instrument de paiement international sécurisé', + icon: '💳', + href: '/dashboard/wiki/lettre-credit', + tags: ['Banque', 'Paiement', 'Sécurité'], + }, + { + title: 'Transit Time et Délais', + description: 'Comprendre les délais en transport maritime', + icon: '⏱️', + href: '/dashboard/wiki/transit-time', + tags: ['Cut-off', 'Free time', 'Demurrage'], + }, +]; + +export default function WikiPage() { + return ( +
+ {/* Header */} +
+

Wiki Maritime

+

+ Base de connaissances sur l'import/export maritime. Cliquez sur un sujet pour en savoir plus. +

+
+ + {/* Cards Grid */} +
+ {wikiTopics.map((topic) => ( + + + +
+ {topic.icon} +
+ + {topic.title} + + + {topic.description} + +
+ +
+ {topic.tags.map((tag) => ( + + {tag} + + ))} +
+
+
+ + ))} +
+ + {/* Footer info */} +
+

+ Besoin d'aide ? Ces guides sont régulièrement mis à jour avec les dernières réglementations et bonnes pratiques du secteur maritime. +

+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx b/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx new file mode 100644 index 0000000..e1566e4 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/ports-routes/page.tsx @@ -0,0 +1,301 @@ +/** + * Ports et Routes Maritimes - Wiki Page + * + * Les principales routes commerciales mondiales + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const majorRoutes = [ + { + name: 'Asie - Europe', + description: 'La plus importante route commerciale mondiale', + transitTime: '28-35 jours', + volume: '~24 millions TEU/an', + keyPorts: ['Shanghai', 'Singapour', 'Rotterdam', 'Hambourg', 'Anvers'], + passages: ['Canal de Suez', 'Détroit de Malacca'], + }, + { + name: 'Asie - Amérique du Nord (Pacifique)', + description: 'Deuxième route la plus importante', + transitTime: '12-18 jours', + volume: '~26 millions TEU/an', + keyPorts: ['Shanghai', 'Busan', 'Los Angeles', 'Long Beach', 'Seattle'], + passages: ['Traversée Pacifique directe'], + }, + { + name: 'Europe - Amérique du Nord (Atlantique)', + description: 'Route transatlantique historique', + transitTime: '8-12 jours', + volume: '~8 millions TEU/an', + keyPorts: ['Rotterdam', 'Anvers', 'New York', 'Savannah', 'Charleston'], + passages: ['Traversée Atlantique directe'], + }, + { + name: 'Asie - Méditerranée', + description: 'Variante de la route Asie-Europe via Med', + transitTime: '18-25 jours', + volume: '~6 millions TEU/an', + keyPorts: ['Shanghai', 'Pirée', 'Gênes', 'Barcelone', 'Tanger Med'], + passages: ['Canal de Suez', 'Détroit de Gibraltar'], + }, +]; + +const strategicPassages = [ + { + name: 'Canal de Suez', + location: 'Égypte', + opened: '1869', + length: '193.3 km', + transitTime: '12-16 heures', + traffic: '~20,000 navires/an', + importance: 'Relie la Méditerranée à la Mer Rouge. Raccourcit de 7,000 km la route Europe-Asie.', + }, + { + name: 'Canal de Panama', + location: 'Panama', + opened: '1914', + length: '82 km', + transitTime: '8-10 heures', + traffic: '~14,000 navires/an', + importance: 'Relie l\'Atlantique au Pacifique. Crucial pour le commerce Asie-Côte Est USA.', + }, + { + name: 'Détroit de Malacca', + location: 'Malaisie/Indonésie', + opened: 'Naturel', + length: '800 km', + transitTime: '12 heures', + traffic: '~90,000 navires/an', + importance: 'Point de passage obligé entre Océan Indien et Mer de Chine. 25% du commerce mondial.', + }, + { + name: 'Détroit de Gibraltar', + location: 'Espagne/Maroc', + opened: 'Naturel', + length: '60 km', + transitTime: '2-3 heures', + traffic: '~100,000 navires/an', + importance: 'Entrée en Méditerranée depuis l\'Atlantique.', + }, +]; + +const majorPorts = [ + { name: 'Shanghai', country: 'Chine', volume: '47.0', rank: 1 }, + { name: 'Singapour', country: 'Singapour', volume: '37.2', rank: 2 }, + { name: 'Ningbo-Zhoushan', country: 'Chine', volume: '33.0', rank: 3 }, + { name: 'Shenzhen', country: 'Chine', volume: '30.0', rank: 4 }, + { name: 'Guangzhou', country: 'Chine', volume: '24.2', rank: 5 }, + { name: 'Busan', country: 'Corée du Sud', volume: '22.7', rank: 6 }, + { name: 'Qingdao', country: 'Chine', volume: '22.0', rank: 7 }, + { name: 'Rotterdam', country: 'Pays-Bas', volume: '14.5', rank: 8 }, + { name: 'Dubai/Jebel Ali', country: 'EAU', volume: '14.1', rank: 9 }, + { name: 'Tianjin', country: 'Chine', volume: '14.0', rank: 10 }, +]; + +export default function PortsRoutesPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ 🌍 +

Ports et Routes Maritimes

+
+

+ Le transport maritime assure plus de 80% du commerce mondial en volume. + Comprendre les grandes routes et les ports stratégiques est essentiel pour optimiser sa supply chain. +

+
+ + {/* Key Stats */} + + +

📊 Chiffres Clés du Maritime Mondial

+
+
+

80%

+

du commerce mondial (volume)

+
+
+

~800M

+

TEU transportés/an

+
+
+

~60,000

+

navires marchands

+
+
+

~14B

+

tonnes de marchandises/an

+
+
+
+
+ + {/* Major Routes */} +
+

🛳️ Routes Commerciales Majeures

+
+ {majorRoutes.map((route) => ( + + + {route.name} + + +

{route.description}

+
+
+ Transit time: +

{route.transitTime}

+
+
+ Volume annuel: +

{route.volume}

+
+
+ Ports clés: +

{route.keyPorts.slice(0, 3).join(', ')}

+
+
+ Passages: +

{route.passages.join(', ')}

+
+
+
+
+ ))} +
+
+ + {/* Strategic Passages */} +
+

⚓ Passages Stratégiques

+
+ {strategicPassages.map((passage) => ( + + + + {passage.name} + {passage.location} + + + +

{passage.importance}

+
+
+ Longueur: +

{passage.length}

+
+
+ Transit: +

{passage.transitTime}

+
+
+ Trafic: +

{passage.traffic}

+
+
+ Ouverture: +

{passage.opened}

+
+
+
+
+ ))} +
+
+ + {/* Top Ports */} +
+

🏆 Top 10 Ports Mondiaux (TEU)

+ + +
+ + + + + + + + + + + {majorPorts.map((port) => ( + + + + + + + ))} + +
RangPortPaysVolume (M TEU)
+ + {port.rank} + + {port.name}{port.country}{port.volume}
+
+

Source: World Shipping Council, données approximatives

+
+
+
+ + {/* Hub Ports Info */} + + +

🔄 Ports Hub vs Ports Régionaux

+
+
+

Ports Hub (Transbordement)

+

+ Grands ports où les conteneurs sont transférés entre navires mères et feeders. + Ex: Singapour, Tanger Med, Algésiras. +

+

Avantage: Desserte mondiale, fréquence élevée

+
+
+

Ports Régionaux (Gateway)

+

+ Ports desservant directement un hinterland économique. + Ex: Le Havre, Marseille, Hambourg. +

+

Avantage: Proximité du marché final, moins de manutention

+
+
+
+
+ + {/* Tips */} + + +

💡 Conseils Pratiques

+
    +
  • Privilégiez les routes directes pour réduire les délais et risques
  • +
  • Anticipez les congestions portuaires (Los Angeles, Rotterdam en haute saison)
  • +
  • Surveillez les perturbations géopolitiques (Canal de Suez, Détroit d'Ormuz)
  • +
  • Comparez les transbordements vs les services directs selon vos priorités (coût vs délai)
  • +
  • Vérifiez les connexions ferroviaires/fluviales depuis les ports
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/transit-time/page.tsx b/apps/frontend/app/dashboard/wiki/transit-time/page.tsx new file mode 100644 index 0000000..e4798e3 --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/transit-time/page.tsx @@ -0,0 +1,354 @@ +/** + * Transit Time et Délais - Wiki Page + * + * Comprendre les délais en transport maritime + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const etapesTimeline = [ + { + etape: 'Booking', + description: 'Réservation de l\'espace sur le navire', + delai: '1-7 jours avant cut-off', + responsable: 'Transitaire/Exportateur', + }, + { + etape: 'Container pickup', + description: 'Enlèvement du conteneur vide au dépôt', + delai: '2-5 jours avant cut-off', + responsable: 'Transporteur terrestre', + }, + { + etape: 'Empotage (Stuffing)', + description: 'Chargement des marchandises dans le conteneur', + delai: '1-3 jours avant cut-off', + responsable: 'Exportateur', + }, + { + etape: 'Documentation cut-off', + description: 'Date limite pour soumettre les documents (B/L, VGM)', + delai: '24-48h avant ETD', + responsable: 'Transitaire', + }, + { + etape: 'Cargo cut-off', + description: 'Date limite de dépôt du conteneur au terminal', + delai: '24-48h avant ETD', + responsable: 'Transporteur terrestre', + }, + { + etape: 'ETD (Estimated Time of Departure)', + description: 'Départ estimé du navire du port d\'origine', + delai: 'Jour J', + responsable: 'Compagnie maritime', + }, + { + etape: 'Transit maritime', + description: 'Traversée maritime (variable selon route)', + delai: '10-45 jours', + responsable: 'Compagnie maritime', + }, + { + etape: 'ETA (Estimated Time of Arrival)', + description: 'Arrivée estimée au port de destination', + delai: 'Jour J + transit', + responsable: 'Compagnie maritime', + }, + { + etape: 'Déchargement', + description: 'Déchargement du navire et mise à quai', + delai: '1-3 jours après ETA', + responsable: 'Terminal portuaire', + }, + { + etape: 'Dédouanement', + description: 'Formalités douanières à destination', + delai: '1-5 jours', + responsable: 'Commissionnaire en douane', + }, + { + etape: 'Livraison', + description: 'Acheminement final au destinataire', + delai: '1-5 jours', + responsable: 'Transporteur terrestre', + }, +]; + +const fraisRetard = [ + { + nom: 'Demurrage', + definition: 'Frais pour le conteneur resté au terminal au-delà du free time', + taux: '50-150 USD/jour/conteneur', + lieu: 'Terminal portuaire', + }, + { + nom: 'Detention', + definition: 'Frais pour le conteneur gardé hors terminal au-delà du free time', + taux: '30-100 USD/jour/conteneur', + lieu: 'Chez l\'importateur', + }, + { + nom: 'Storage', + definition: 'Frais de stockage au terminal (séparés du demurrage)', + taux: 'Variable selon port', + lieu: 'Terminal portuaire', + }, + { + nom: 'Per Diem', + definition: 'Frais journaliers combinés (parfois utilisé pour demurrage+detention)', + taux: '50-200 USD/jour', + lieu: 'Variable', + }, +]; + +const transitTimes = [ + { route: 'Shanghai → Rotterdam', temps: '28-32 jours', via: 'Suez' }, + { route: 'Shanghai → Le Havre', temps: '30-35 jours', via: 'Suez' }, + { route: 'Shanghai → Los Angeles', temps: '12-15 jours', via: 'Direct Pacifique' }, + { route: 'Shanghai → New York', temps: '35-40 jours', via: 'Suez ou Panama' }, + { route: 'Rotterdam → New York', temps: '10-14 jours', via: 'Direct Atlantique' }, + { route: 'Mumbai → Rotterdam', temps: '18-22 jours', via: 'Suez' }, + { route: 'Santos → Rotterdam', temps: '18-22 jours', via: 'Direct Atlantique' }, +]; + +export default function TransitTimePage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ ⏱️ +

Transit Time et Délais

+
+

+ La gestion des délais est cruciale en transport maritime. Comprendre les différentes étapes, + les cut-off dates et les frais de retard permet d'optimiser sa supply chain et d'éviter + les coûts supplémentaires. +

+
+ + {/* Key Terms */} + + +

📖 Termes Clés

+
+
+

ETD

+

Estimated Time of Departure - Départ estimé

+
+
+

ETA

+

Estimated Time of Arrival - Arrivée estimée

+
+
+

Cut-off

+

Date/heure limite de dépôt

+
+
+

Free time

+

Jours gratuits avant frais de retard

+
+
+
+
+ + {/* Timeline */} +
+

📅 Timeline d'une Expédition FCL

+
+ {etapesTimeline.map((item, index) => ( + + +
+
+ {index + 1} +
+
+
+

{item.etape}

+ {item.delai} +
+

{item.description}

+

Responsable : {item.responsable}

+
+
+
+
+ ))} +
+
+ + {/* Transit Times */} +
+

🚢 Transit Times Indicatifs

+ + +
+ + + + + + + + + + {transitTimes.map((tt) => ( + + + + + + ))} + +
RouteTransit TimeVia
{tt.route}{tt.temps}{tt.via}
+
+

+ Note : Ces temps sont indicatifs et varient selon les rotations, transbordements et conditions. +

+
+
+
+ + {/* Free Time */} + + +

⏰ Free Time (Jours Gratuits)

+

+ Période pendant laquelle le conteneur peut rester au terminal ou chez l'importateur + sans frais supplémentaires. +

+
+
+

Free time standard

+

7-14 jours

+

Selon compagnie et port

+
+
+

Demurrage start

+

+ Commence après le free time au terminal +

+
+
+

Detention start

+

+ Commence à la sortie du terminal (gate-out) +

+
+
+
+
+ + {/* Late Fees */} +
+

💸 Frais de Retard

+
+ {fraisRetard.map((frais) => ( + + + {frais.nom} + + +

{frais.definition}

+
+ Taux indicatif : + {frais.taux} +
+
+ Lieu : + {frais.lieu} +
+
+
+ ))} +
+
+ + {/* Factors affecting transit */} + + +

⚡ Facteurs Impactant les Délais

+
+
+

Retards potentiels

+
    +
  • • Congestion portuaire (Los Angeles, Rotterdam)
  • +
  • • Conditions météorologiques (typhons, tempêtes)
  • +
  • • Fermeture de canaux (Suez, Panama)
  • +
  • • Inspection douanière (scanner, contrôle)
  • +
  • • Blank sailings (annulation de rotation)
  • +
  • • Grèves (dockers, transporteurs)
  • +
+
+
+

Variations saisonnières

+
    +
  • • Nouvel An Chinois (février) : +2-3 semaines
  • +
  • • Golden Week (octobre) : congestion Asie
  • +
  • • Peak Season (août-octobre) : surcharges, retards
  • +
  • • Fêtes de fin d'année : rush avant Christmas
  • +
+
+
+
+
+ + {/* Roll-over */} + + +

🔄 Roll-over (Report)

+

+ Situation où un conteneur n'est pas chargé sur le navire prévu et est reporté + sur le prochain départ. +

+
+

Causes fréquentes :

+
    +
  • • Navire plein (overbooking)
  • +
  • • Conteneur arrivé après le cargo cut-off
  • +
  • • Documents manquants ou incorrects
  • +
  • • VGM non transmis à temps
  • +
  • • Problème avec la marchandise (DG, inspection)
  • +
+

+ Impact : Généralement +7 jours de délai (service hebdomadaire) +

+
+
+
+ + {/* Tips */} + + +

💡 Conseils pour Optimiser les Délais

+
    +
  • Réserver tôt, surtout en haute saison (2-3 semaines d'avance)
  • +
  • Respecter les cut-off avec une marge de sécurité (24h minimum)
  • +
  • Préparer les documents en parallèle de l'empotage
  • +
  • Négocier du free time supplémentaire pour les volumes importants
  • +
  • Tracker activement les navires (AIS, portails compagnies)
  • +
  • Anticiper le dédouanement (pré-clearing si possible)
  • +
  • Avoir un plan B en cas de roll-over (service alternatif)
  • +
  • Éviter les expéditions critiques pendant les périodes à risque
  • +
+
+
+
+ ); +} diff --git a/apps/frontend/app/dashboard/wiki/vgm/page.tsx b/apps/frontend/app/dashboard/wiki/vgm/page.tsx new file mode 100644 index 0000000..b0c81ca --- /dev/null +++ b/apps/frontend/app/dashboard/wiki/vgm/page.tsx @@ -0,0 +1,268 @@ +/** + * VGM (Verified Gross Mass) - Wiki Page + * + * Obligation de pesée des conteneurs (SOLAS) + */ + +import Link from 'next/link'; +import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; + +const methodesPesee = [ + { + method: 'Méthode 1', + name: 'Pesée du conteneur complet', + description: 'Pesée du conteneur chargé et scellé sur une balance étalonnée.', + process: [ + 'Empotage du conteneur', + 'Scellage du conteneur', + 'Pesée sur pont-bascule certifié', + 'Transmission du VGM', + ], + advantages: ['Plus précis', 'Moins de calculs'], + disadvantages: ['Nécessite un pont-bascule', 'Conteneur déjà scellé'], + }, + { + method: 'Méthode 2', + name: 'Calcul par addition', + description: 'Addition de la tare du conteneur et du poids de tous les éléments chargés.', + process: [ + 'Pesée de chaque colis individuellement', + 'Addition de tous les poids', + 'Ajout des matériaux d\'arrimage', + 'Addition de la tare conteneur', + ], + advantages: ['Pas besoin de pont-bascule', 'Peut être fait progressivement'], + disadvantages: ['Plus complexe', 'Risque d\'erreur cumulative'], + }, +]; + +const sanctions = [ + { region: 'France', sanction: 'Amende jusqu\'à 7,500€ et refus d\'embarquement' }, + { region: 'USA', sanction: 'Refus d\'embarquement, amende par la garde côtière' }, + { region: 'Chine', sanction: 'Refus d\'embarquement, pénalités portuaires' }, + { region: 'Union Européenne', sanction: 'Application variable selon pays membre' }, +]; + +const elementsVGM = [ + { element: 'Tare conteneur', description: 'Poids à vide du conteneur (inscrit sur la porte)', example: '2,200 kg (20\')' }, + { element: 'Marchandises', description: 'Poids brut de toutes les marchandises', example: 'Variable' }, + { element: 'Emballages', description: 'Palettes, cartons, film plastique...', example: '200-500 kg' }, + { element: 'Matériaux d\'arrimage', description: 'Bois de calage, sangles, airbags...', example: '50-200 kg' }, +]; + +export default function VGMPage() { + return ( +
+ {/* Header with back link */} +
+ + + + + Retour au Wiki + +
+ + {/* Title */} +
+
+ +

VGM (Verified Gross Mass)

+
+

+ Depuis le 1er juillet 2016, la Convention SOLAS (Safety of Life at Sea) exige que le poids + vérifié de tout conteneur soit transmis avant embarquement. Cette obligation vise à prévenir + les accidents liés aux conteneurs mal déclarés. +

+
+ + {/* Why VGM */} + + +

Pourquoi le VGM ?

+
+
+

🛡️ Sécurité

+

Les conteneurs mal déclarés causent des accidents graves (chute de conteneurs, navires instables).

+
+
+

⚖️ Stabilité du navire

+

Le capitaine doit connaître le poids exact pour calculer le plan de chargement.

+
+
+

🏗️ Équipements portuaires

+

Les grues et portiques sont dimensionnés pour des charges maximales.

+
+
+

🚛 Transport terrestre

+

Évite les surcharges sur les camions et wagons de pré/post-acheminement.

+
+
+
+
+ + {/* VGM Components */} +
+

📋 Composants du VGM

+ + +
+

+ VGM = Tare + Marchandises + Emballages + Arrimage +

+
+
+ {elementsVGM.map((item) => ( +
+
+

{item.element}

+

{item.description}

+
+ {item.example} +
+ ))} +
+
+
+
+ + {/* Methods */} +
+

🔬 Méthodes de Détermination

+
+ {methodesPesee.map((method) => ( + + + + + {method.method} + + {method.name} + + + +

{method.description}

+
+
+

Processus

+
    + {method.process.map((step, idx) => ( +
  1. {step}
  2. + ))} +
+
+
+

✓ Avantages

+
    + {method.advantages.map((adv) => ( +
  • + + {adv} +
  • + ))} +
+
+
+

✗ Inconvénients

+
    + {method.disadvantages.map((dis) => ( +
  • + + {dis} +
  • + ))} +
+
+
+
+
+ ))} +
+
+ + {/* Responsibility */} + + +

👤 Responsabilités

+
+
+

Expéditeur (Shipper)

+

+ Responsable légal du VGM. Doit obtenir, certifier et transmettre le poids vérifié. +

+
+
+

Transitaire

+

+ Peut transmettre le VGM pour le compte de l'expéditeur. Reste un intermédiaire. +

+
+
+

Compagnie maritime

+

+ Ne peut embarquer un conteneur sans VGM. Peut refuser un VGM manifestement erroné. +

+
+
+
+
+ + {/* Tolerances */} + + +

📏 Tolérances

+
+

+ Les tolérances varient selon les compagnies maritimes et les ports, mais généralement : +

+
+
+ Tolérance typique : +

± 5% du poids déclaré ou ± 500 kg (le plus petit des deux)

+
+
+ Conséquence si dépassement : +

Nouvelle pesée à la charge de l'expéditeur, retard possible

+
+
+
+
+
+ + {/* Sanctions */} +
+

⚠️ Sanctions par Région

+ + +
+ {sanctions.map((s) => ( +
+ {s.region} + {s.sanction} +
+ ))} +
+
+
+
+ + {/* Tips */} + + +

💡 Bonnes Pratiques

+
    +
  • Transmettre le VGM au moins 24-48h avant le cut-off
  • +
  • Utiliser des balances étalonnées et certifiées
  • +
  • Conserver les preuves de pesée pendant 3 ans minimum
  • +
  • Vérifier les exigences spécifiques de chaque compagnie maritime
  • +
  • Former le personnel aux procédures VGM
  • +
  • Ne jamais sous-estimer le poids intentionnellement
  • +
+
+
+
+ ); +}