Documentation9 min de lecture

Transporteurs : grilles tarifaires, options et contraintes de poids

Dix-sept modules OCA du dépôt `delivery-carrier` structurent la tarification du transport dans Odoo 18 Community : `delivery_multi_destination` crée des **grilles tarifaires par destination** — un mode d'expédition parent et ses grilles enfants —, et `delivery_carrier_multi_zip` permet de les déclencher par **plages de codes postaux**. Les quinze autres, des options de transport au poids maximum par type de colis.

Camion de livraison chargé sur un quai en fin de journée

Un tarif de transport dépend de la destination, du poids, du volume, du nombre de colis et des options souscrites. Odoo propose une grille unique par mode d'expédition — ce qui suffit pour un seul transporteur et une seule zone.

Dix-sept modules communautaires font entrer la réalité tarifaire du transport dans le modèle.

Résumé

Trois modules traitent la destination : des grilles par destination organisées en parent et enfants, des plages de codes postaux, et l'intégration de la ville comme critère. Deux traitent les options : un référentiel d'options de transport — obligatoires ou appliquées par défaut — avec leurs modèles, repris sur les transferts.

Quatre traitent les contraintes physiques : une quantité maximum par mode d'expédition, un poids maximum par type de colis avec interdiction de dépassement au niveau société, la saisie manuelle du poids selon le transporteur, et l'estimation du nombre de colis par le poids.

Le reste traite le prix : le calcul depuis une liste de prix, le forçage d'un prix fixe ou calculé pour écraser celui d'un service en ligne, la saisie manuelle du coût, le franco calculé hors taxes, la suppression des lignes de frais nuls, des frais par colis, et les comptes transporteur avec leur configuration par environnement serveur.

L'essentiel

  • Des grilles tarifaires par destination, organisées en parent et enfants.
  • Des plages de codes postaux comme critère de tarif.
  • Des options de transport : assurance, livraison sur rendez-vous, hayon.
  • Un poids maximum par type de colis, avec interdiction de dépassement.
  • Le prix forcé pour écraser celui d'un service en ligne.
  • Le franco calculé hors taxes — et non sur le total TTC.
  • Les lignes de frais à zéro supprimées du document client.
  • Les comptes transporteur sortis de la base par environnement serveur.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Destinationdelivery_multi_destination, delivery_carrier_multi_zip, delivery_carrier_city3
Optionsdelivery_carrier_option, delivery_carrier_agency2
Contraintes physiquesdelivery_carrier_max_quantity, delivery_carrier_max_weight_constraint, delivery_carrier_manual_weight, delivery_estimated_package_quantity_by_weight4
Prixdelivery_carrier_pricelist, delivery_price_method, delivery_carrier_manual_price, delivery_free_over_untaxed_price, delivery_free_fee_removal, delivery_package_fee6
Comptesdelivery_carrier_account, carrier_account_environment2

Les menus ajoutés sont dans Inventaire ▸ Configuration ▸ Livraison : agences de transport et comptes transporteur.

Tarifer selon la destination

Un transporteur n'a pas un tarif : il en a un par zone. France métropolitaine, Corse, outre-mer, Union européenne, reste du monde — avec des grilles de poids différentes dans chaque cas. Odoo ne prévoit qu'une grille par mode d'expédition.

delivery_multi_destination organise les modes d'expédition en parent et enfants : le parent porte le nom commercial — « Transporteur X — Standard » —, et chaque enfant porte une grille de destination avec son type.

  • delivery_carrier_multi_zip déclenche une grille par plages de codes postaux — de 20 000 à 20 999 pour la Corse, par exemple — avec une option de comportement.
  • delivery_carrier_city intègre la ville comme critère, en s'appuyant sur le référentiel d'adresses étendu.

Ces trois modules permettent de reproduire fidèlement une grille transporteur réelle, qui est le seul moyen de facturer un transport au juste prix — ni à perte, ni en perdant la vente.

Les référentiels de codes postaux et de villes sont traités dans adresses et localisation.

Les options et les contraintes physiques

Les options de transport

delivery_carrier_option crée un référentiel d'options — assurance, livraison sur rendez-vous, hayon, mise en cave — chacune pouvant être obligatoire ou appliquée par défaut pour un transporteur, et reprise sur les transferts. Des modèles d'option permettent de les réutiliser d'un transporteur à l'autre.

delivery_carrier_agency ajoute un référentiel d'agences de transport : le même transporteur a plusieurs agences, et c'est l'agence qui compte pour l'enlèvement.

Les contraintes

ModuleCe qu'il contrôle
delivery_carrier_max_quantityUne quantité maximum par mode d'expédition
delivery_carrier_max_weight_constraintUn poids maximum par type de colis, avec une option société interdisant le dépassement
delivery_carrier_manual_weightLa saisie manuelle du poids et du poids expédié, selon le transporteur
delivery_estimated_package_quantity_by_weightL'estimation du nombre de colis à partir du poids total

Le poids maximum par type de colis n'est pas une coquetterie : au-delà de 30 kg, un colis devient manutentionnable à deux personnes, et la plupart des transporteurs le refusent ou le surfacturent. L'interdiction de dépassement évite la surprise au quai.

Le prix : calculé, forcé, offert

  • delivery_carrier_pricelist calcule le prix du transport depuis une liste de prix — donc avec toute la souplesse des règles de tarif.
  • delivery_price_method force un prix fixe ou calculé par règle, pour écraser celui que renvoie un service en ligne du transporteur.
  • delivery_carrier_manual_price permet de saisir manuellement le coût de transport sur une commande.
  • delivery_free_over_untaxed_price fait calculer le franco de port sur le montant hors taxes plutôt que sur le total.
  • delivery_free_fee_removal supprime les lignes de frais à zéro des documents client.
  • delivery_package_fee ajoute des frais par colis livré sur la commande.

Le franco hors taxes est un détail qui change la promesse commerciale : annoncer « franco à partir de 500 € » et l'appliquer sur le TTC fait payer le transport à un client qui a commandé 480 € hors taxes. La correction est de quelques lignes, et elle évite une discussion par commande.

Le forçage du prix répond à une situation fréquente : le service en ligne du transporteur renvoie un tarif public, alors que vous avez un tarif négocié. Sans ce module, il faut corriger à la main chaque commande.

Deux modules enfin traitent les comptes transporteur : delivery_carrier_account crée un référentiel — numéro de compte, identifiants, type de livraison —, et carrier_account_environment permet de sortir ces identifiants de la base et de les placer dans un fichier d'environnement serveur.

Le second compte autant que le premier : une copie de production restaurée pour recette ne doit pas pouvoir expédier avec le compte réel.

Limites connues

  • Plusieurs modules de ce dépôt sont très peu documentés : leur résumé se limite à leur catégorie. Les champs ajoutés, relevés sur instance, en donnent la portée réelle.
  • Les grilles par destination demandent un paramétrage long : c'est la saisie fidèle d'un contrat transporteur.
  • Les plages de codes postaux doivent être maintenues : elles bougent moins que les tarifs, mais elles bougent.
  • Forcer le prix annule l'intérêt d'un service en ligne : à réserver aux transporteurs dont le tarif est négocié.
  • Le poids maximum bloque des expéditions : prévoir qui peut passer outre.
  • Les comptes transporteur sont des identifiants : leur place est dans un fichier d'environnement, pas dans la base.

Identité technique

Les dix-sept modules viennent du dépôt OCA delivery-carrier, branche 18.0 — 60 modules au total —, tous en licence AGPL-3. Ils dépendent de delivery ou de stock_delivery ; la configuration par environnement s'appuie sur le module server_environment.

Les familles voisines : regrouper et scinder les transferts pour le regroupement par transporteur, et emballages, poids et unités pour les poids.

Questions fréquentes

Peut-on avoir plusieurs grilles tarifaires pour un transporteur ?

Oui : delivery_multi_destination organise les modes d'expédition en parent et enfants, chaque enfant portant une grille par destination. delivery_carrier_multi_zip y ajoute le déclenchement par plages de codes postaux, et delivery_carrier_city le critère de ville.

Peut-on interdire les colis trop lourds ?

Oui, avec delivery_carrier_max_weight_constraint : un poids maximum par type de colis et une option société interdisant le dépassement. Au-delà de 30 kg, la plupart des transporteurs refusent ou surfacturent — mieux vaut bloquer avant le quai.

Comment appliquer un tarif négocié plutôt que le tarif public du transporteur ?

delivery_price_method permet de forcer un prix fixe ou calculé par règle, en écrasant celui que renvoie le service en ligne du transporteur. Sans lui, il faut corriger chaque commande à la main. À réserver aux transporteurs dont le tarif est effectivement négocié.

Le franco de port se calcule-t-il sur le HT ou le TTC ?

Sur le total, en standard. delivery_free_over_untaxed_price le fait calculer sur le montant hors taxes. Annoncer « franco à partir de 500 € » et l'appliquer au TTC fait payer le transport à un client qui a commandé 480 € HT — et provoque une discussion par commande.

Où placer les identifiants de compte transporteur ?

delivery_carrier_account crée le référentiel — numéro de compte, identifiants, type de livraison — et carrier_account_environment permet de les sortir de la base vers un fichier d'environnement serveur. C'est ce qui évite qu'une copie de production restaurée pour recette expédie avec le compte réel.

Se faire accompagner

La tarification transport est l'endroit où une PME perd silencieusement de la marge : un tarif public appliqué au lieu du négocié, un franco calculé sur le TTC, des colis surfacturés pour dépassement de poids. Chacun de ces écarts est faible et systématique.

Nous reprenons donc les contrats transporteur un par un et nous les saisissons fidèlement — grilles, zones, options, seuils — avant de parler d'intégration. Un tarif juste vaut mieux qu'une étiquette automatique sur un prix faux. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Les grilles tarifaires réelles d'un transporteur — par zone, par code postal, par poids — avec leurs options et leurs seuils, et les corrections qui évitent les pertes silencieuses : tarif négocié imposé, franco calculé hors taxes, colis trop lourds refusés avant le quai. Parlons de vos coûts de transport.

Documentation OCALogistiqueTransport

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo