====== Wiki — Système de Transport (Trailers) ======
Ce wiki explique comment Mobil calcule le coût de transport d'une commande, où régler les paramètres, et comment intervenir si le résultat ne correspond pas aux attentes.
----
===== 1. Principe général =====
Le transport est facturé **par trailer (remorque)**, **par hub**, et ajouté automatiquement au panier au moment du calcul total.
Le système :
- Regroupe les items du panier **par hub**.
- Pour chaque hub, trouver la « recette » de chaque produit en composants (tubes, connecteurs…).
- Calcule le **poids total** et le **volume total** de ces composants.
- Détermine le nombre minimal de trailers nécessaires pour transporter le tout.
- Multiplie par le **tarif unitaire d'un trailer** et ajoute le montant comme frais distinct au panier.
Le client voit donc, par exemple : ''Transport — Hub Cultureghem (2 trailers) : 60 €''.
----
===== 2. Formule de calcul (technique pas nécessaire de lire) =====
Pour un hub donné :
nb_trailers = max(
ceil(poids_total / capacité_poids_trailer),
ceil(volume_total_ajusté / capacité_volume_trailer)
)
* ''poids_total'' = somme de (''poids_kg'' du composant × quantité requise) pour tous les composants à transporter.
* ''volume_total_ajusté'' = somme de (volume_m³ × **facteur de nesting** × quantité), où le facteur dépend du ''type_transport'' du composant.
* ''volume_m³'' = ''longueur_cm × largeur_cm × hauteur_cm / 1 000 000''.
Le ''max(…)'' garantit qu'on a toujours assez de trailers pour absorber la contrainte la plus serrée (poids **ou** volume).
> Le **facteur de nesting** reflète le fait que certains objets s'empilent ou s'imbriquent. Un composant ''tubulaire'' (tubes longs) prend moins de place que son volume brut ne le suggère (les tubes se rangent serrés) → facteur < 1. Un composant ''fragile'' ou ''volumineux'' peut au contraire occuper plus de place utile que son volume brut → facteur ≥ 1.
----
===== 3. Paramètres ajustables =====
Tous les paramètres se règlent à **deux endroits** :
==== 3.1 Globaux — page d'options ACF « Transport Configuration » ====
- Se connecter à l'admin
- Menu admin
- **Réglages → Transport Configuration**
^ Champ ^ Rôle ^ Valeur par défaut ^
| ''tarif_trailer'' | Prix facturé par trailer (en €). | 40 |
| ''cap_poids_kg'' | Capacité de chargement d'un trailer en kg. | 750 |
| ''cap_volume_m3'' | Capacité de chargement d'un trailer en m³. | 15 |
| ''facteur_tubulaire'' | Facteur de nesting pour les composants tubulaires. | 1.0 |
| ''facteur_plat'' | Facteur de nesting pour les composants plats (panneaux). | 1.0 |
| ''facteur_volumineux'' | Facteur de nesting pour les composants volumineux. | 1.0 |
| ''facteur_fragile'' | Facteur de nesting pour les composants fragiles. | 1.0 |
Ces valeurs sont **globales** et s'appliquent à tous les hubs et toutes les commandes.
==== 3.2 Par composant — fiche du composant ====
Sur la page d'édition de chaque composant (CPT « composant »), les champs suivant sont paramètrables :
^ Champ ^ Rôle ^
| ''poids_kg'' | Poids unitaire du composant en kg. |
| ''longueur_cm'' | Longueur en cm. |
| ''largeur_cm'' | Largeur en cm. |
| ''hauteur_cm'' | Hauteur en cm. |
| ''type_transport'' | Catégorie de transport : ''tubulaire'', ''plat'', ''volumineux'', ''fragile''. Détermine quel facteur de nesting s'applique. |
Si l'un de ces champs est vide ou à 0, le composant est compté avec une valeur nulle pour cette dimension (mais ne casse pas le calcul).
----
===== 4. Comment ajuster le coût de transport =====
==== Cas A — Le transport est trop cher / trop bon marché de façon générale ====
→ Modifier ''tarif_trailer'' dans **Transport Configuration**.
Effet : tous les frais de transport montent ou descendent proportionnellement.
==== Cas B — Les commandes sortent trop souvent à plusieurs trailers ====
→ Plusieurs leviers possibles :
* Augmenter ''cap_poids_kg'' et/ou ''cap_volume_m3'' si les trailers réels sont plus grands qu'estimé.
* Ajuster les ''facteur_*'' à la baisse pour les types qui s'empilent mieux qu'on ne le pensait (ex. ''facteur_tubulaire = 0.6'' si les tubes se rangent vraiment serrés).
==== Cas C — Un produit précis a un transport disproportionné ====
→ Vérifier sur ses composants :
* Les dimensions sont-elles plausibles ? Un zéro oublié peut faire passer 30 cm en 300 cm.
* Le ''type_transport'' est-il correct ? Un panneau classé en ''volumineux'' au lieu de ''plat'' peut sur-évaluer le volume.
* Le ''poids_kg'' est-il par unité (pas par lot) ?
==== Cas D — Un produit ne génère pas de frais de transport ====
→ Vérifier que le produit a bien une **recette** (''recette_composants'' rempli) et que le ''hub_id'' est bien transmis au panier (sélection du hub dans le formulaire produit côté client). Un produit sans recette ou sans hub est silencieusement ignoré pour le calcul transport.
----
===== 5. Comportement côté client =====
* **Page produit** : un encart informatif explique que le transport est calculé au panier (''X € par trailer, calculé par hub de retrait'').
* **Panier / Checkout** : une ligne de frais distincte apparaît par hub concerné. Format : ''Transport — (N trailer(s))''.
* Le montant total des frais de transport est la **somme** des lignes par hub.
> Une commande qui implique à 2 hubs différents générera 2 lignes de transport, avec un calcul indépendant pour chaque hub. C'est intentionnel : chaque hub envoie ses propres trailers.
----
===== 6. Workflow conseillé pour calibrer le système =====
- **Mesurer la capacité réelle** des trailers (poids max chargeable, volume utile) → renseigner ''cap_poids_kg'' et ''cap_volume_m3''.
- **Définir le prix d'un trajet** (carburant + temps + amortissement) → renseigner ''tarif_trailer''.
- **Tester avec une commande type** (ex. 1 panier de basket) : noter le résultat, comparer à l'attente terrain.
- **Affiner les facteurs de nesting** :
* Si trop de trailers sont calculés → baisser les facteurs des types concernés.
* Si pas assez → monter les facteurs.
- **Vérifier les composants critiques** (ceux qui apparaissent dans beaucoup de produits) : leurs poids/dimensions doivent être exacts ; une erreur ici se propage partout.
----
===== 7. Erreurs fréquentes =====
^ Symptôme ^ Cause probable ^ Solution ^
| Aucun frais de transport au panier | Aucun item n'a de ''hub_id'', ou tous les produits sont sans recette. | Vérifier la sélection du hub dans le formulaire produit + remplir ''recette_composants''. |
| Toujours 1 trailer même pour une grosse commande | ''cap_poids_kg'' ou ''cap_volume_m3'' trop élevés. | Réduire les capacités à des valeurs réalistes. |
| Frais énormes pour une petite commande | Composant avec dimensions exagérées (erreur d'unité) ou facteur trop haut. | Auditer les composants impliqués, corriger ''cm'' vs ''m''. |
| Type ''tubulaire'' mais facteur ignoré | Champ ''type_transport'' mal orthographié ou vide → le système retombe sur ''facteur_volumineux'' par défaut. | Re-sélectionner la valeur dans la liste déroulante du composant. |
| Frais différents en preview vs au checkout | Le panier a changé entre les deux (item ajouté/retiré, hub différent). | Recharger le panier ; les frais sont recalculés à chaque modification. |
----
===== 8. Référence rapide — Types de transport =====
^ Type ^ Pour quoi ^ Comportement attendu ^
| ''tubulaire'' | Tubes, barres longues. | S'empilent serré → facteur typiquement < 1. |
| ''plat'' | Panneaux, plaques. | Se posent à plat les uns sur les autres → facteur ≈ 1 ou < 1. |
| ''volumineux'' | Pièces encombrantes non empilables. | Occupent leur volume brut → facteur ≈ 1. |
| ''fragile'' | Pièces qui ne peuvent pas être empilées. | Nécessitent un espace dédié → facteur ≥ 1. |
Le bon réglage final dépend de **votre** flotte et **votre** méthode de chargement — les valeurs par défaut (1.0 partout) sont neutres et à ajuster.