Bonjour,
Je vends des gros produits (container maritime) et je mets en place la commande par Internet.
Mon problème : le calcul des coûts de livraison.
Mon transporteur m’a donné une carte en radius à partir de chez lui/le point de départ du container, par rayon de 20 km (Zone1 : 0-20, Z2: 20-40, etc)
Il faut donc que je classe tous les codes postaux dans chaque zone pour qu’ensuite je puisse interroger cette liste pour donner le prix
Question : connaissez-vous une solution qui me permette de faire ça ? au moins juste le classement dans les zones (autre que Smappen mais payante)
Si la distance qui t’intéresse est à vol d’oiseau, tu peux utiliser les coordonnées GPS de ton transporteur et y appliquer une petite formule de maths pour calculer la distance avec un autre point (le destinataire).
function haversine_distance(mk1, mk2) {
var R = 3958.8; // Radius of the Earth in miles
var rlat1 = mk1.position.lat() * (Math.PI/180); // Convert degrees to radians
var rlat2 = mk2.position.lat() * (Math.PI/180); // Convert degrees to radians
var difflat = rlat2-rlat1; // Radian difference (latitudes)
var difflon = (mk2.position.lng()-mk1.position.lng()) * (Math.PI/180); // Radian difference (longitudes)
var d = 2 * R * Math.asin(Math.sqrt(Math.sin(difflat/2)*Math.sin(difflat/2)+Math.cos(rlat1)*Math.cos(rlat2)*Math.sin(difflon/2)*Math.sin(difflon/2)));
return d;
}
Il faut juste changer le rayon de la terre avec la valeur en km pour avoir un résultat en km :
R = 6371.0710
Attention avec les codes postaux, à voir avec le transporteur car une ville peut surement être à cheval entre 2 zones.
Sauf si tu as un gros volume à traiter (et encore…) j’appliquerais la formule au cas par cas, sur l’adresse du destinataire, géocodée.
Idéalement il faudrait comprendre quel est ton process pour y intégrer une solution simple qui fasse ce calcul automatiquement.
Je pense qu’il ne doit pas être très complexe de transposer cette formule dans un Gsheet (exemple avec Excel) et/ou d’utiliser un outil no-code (pas ce que je maitrise le mieux par contre) pour arriver à tes fins.