Constat et enjeux
De nombreux transporteurs n’ont pas de système leur permettant d’établir un devis à la demande.
Woop est donc obligé de simuler ce devis sur la base d'une grille tarifaire fournie.
L’objectif est de mettre en place un moteur de devis permettant :
- D’éviter la redondance d’implémentation
- De permettre à un prestataire de renseigner ses informations de paramétrage pour établir des devis (ou des refus)
- De simuler un devis et une capacité à faire pour le compte d’un prestataire
- D’exposer la réponse de cette simulation sous la forme d’une API appelable par n’importe quel système
Principes de calcul
Le principe de base du "Rate Management System" est de fonctionner par “couches” qui se superposent les unes aux autres.
Pour le processus tarif, chaque couche vient ajouter son coût au tarif total de la prestation. On ne peut pas utiliser plusieurs fois la même couche.
Toutes les couches sont censées être génériques, et donc réutilisables. Le but du "Rate Management System" est d’être rapide d’où le fait de ne garder que des couches de calculs “simples” (les plus complexes ou exotiques faisant l’objet de développement spécifique).
Des filtres sont posés directement sur les grilles tarifaires et pas sur les couches pour déterminer le processus de tarif :
- Services
- Magasin
- Pays et département de picking
- Pays et département de livraison
- Etc…
Un mode "ALL" a été créé afin soit d'afficher tous les prix, soit le moins cher.
Enfin, le Rate Engine est disponible pour les enseignes.
Nous pourrons désormais gérer des grilles tarifaires agnostiques des transporteurs afin de pouvoir apposer un tarif de type "frais de port" qui seront affichés dans le tunnel de commande.
Schématisation du système de calcul de grilles tarifaires
Les différentes couches:
- couche prix fixe
Type de prestation | Prix |
Service A | 5€ |
Service B | 10€ |
Service C | 15€ |
- couche par tranche de poids total de la commande
Poids | Prix à la commande |
0 à 5 kgs | 5€ |
5 à 10 kgs | 10€ |
10 à 15 kgs | 15€ |
- couche par tranche de poids parcel
Poids | Prix au colis |
0 à 5 kgs | 5€ |
5 à 10 kgs | 10€ |
10 à 15 kgs | 15€ |
- couche par tranche de km
Distance | Prix |
0 à 5 km | 5€ |
5 à 10 km | 10€ |
10 à 15 km | 15€ |
- couche par quantité de package
Nombre de Colis | Prix |
0 à 5 colis | 5€ |
5 à 10 colis | 10€ |
10 à 15 colis | 15€ |
- couche par tranche de poids pour le colis le plus lourd
Poids | Prix |
0 à 5 kgs | 5€ |
5 à 10 kgs | 10€ |
10 à 15 kgs | 15€ |
Extra coût par colis supplémentaire:
0 à 5 kgs: 4€
5 à 10 kgs: 6€
10 à 15 kgs: 8€
- couche total nombre d'étage
Etage | Prix |
0 à 3 | 0€ |
4 et + | 15€ |
- couche par étage supplémentaire
Etage | Prix |
0 à 3 | 0€ |
4 | 15€ |
5 | 15€ |
6 | 15€ |
- couche prix de la commande (côté enseigne)
Prix Commande | Frais de port |
20€ | 15€ |
100€ | 0€ |
- couche nombre articles
article | Prix |
0 à 3 | 5€ |
4 et + | 10€ |
- couche au jour
Jour | Prix |
Lundi au Vendredi | 5€ |
Samedi | 10€ |
Dimanche | 15€ |
Exemple de calcul
Cas d'usages:
Lors de l’intégration d'une enseigne mais surtout des différents transporteurs qu’ils souhaitaient utiliser avec l’éligibilité (et donc aucun appel auprès des transporteurs véritablement), nous sommes parfois confrontés à des cas complexes.
- Transporteur 1:
- Intégration d’une grille tarifaire avec tarif par tranche de poids pour le colis le plus lourd
- Exemple: Commande avec 5 articles expédiés aux Pays-Bas:
- L’article le plus lourd pèse 42 kg, tandis que les articles restants pèsent tous entre 31 kg et 35kg.
- --> commande avec des frais de 53,14 € pour l’article le plus lourd et des frais supplémentaires de 6,88 € pour chacun des 4 articles restants.
1x 53,14 + 4 x 6,88 = 80,66€
On utilise la couche Prix par tranche de poids pour le colis le plus lourd et la couche Prix par quantité de package avec la condition packageQuantity = -1 donc le calcul de la quantité de colis commence à -1 au lieu de 0.
- Transporteur 2:
Dans l’éligibilité, possibilité d’ajouter plusieurs grilles tarifaires pour le même retailer ET le même transporteur:
Intégration de grilles pour Transporteur 2 où nous avons intégré des grilles IT vers IT et également IT vers FR.
En base de données, peu importe le point de départ, nous ne savions pas quelle grille était utilisée (en soit le système prenait toujours la même).
Nous pouvons donc aujourd’hui utiliser ce système grâce à l’ajout de filtre supplémentaire:
-
- Auparavant: Pays de départ -> Pays d’arrivée
- Aujourd’hui: Pays de départ + département de départ -> Pays d’arrivée + département d’arrivée