chris_lo a écrit :
Salut,
je dois générer une liste de numéro de suivi recommandé qui comporte une clé modulo
pour les français, un numéro ressemble à ça : 2C 144 799 3692 0
le numéro à traiter est donc 1447993692 et la clé modulo est 0
j'ai trouvé la manip (chiffres impairs * 1 + chiffres pairs * 3 et on retranche le reste) pour trouver la clé, tout fonctionne pour mes envois français
par contre je sèche complètement pour les étrangers
Un numéro de suivi recommandé pour les étrangers ressemble à ça : RK 86 762 233 2
naïvement j'ai appliqué la même méthode mais je ne tombe pas sur la même clé
si quelqu'un a une idée ?
|
Normalement, ce qui est appliqué devrait être la norme SP10 de l'union postale internationale, non ?
La spec est ici : http://www.upu.int/uploads/tx_sbdownloader/S10-12.pdf
Ton numéro y ressemble beaucoup, c'est normalement comme suit : [A-Z]{2}[0-9]{8}([0-9]|X) [A-Z]{2} ou :
[A-Z]{2} deux lettres, code de service, pour ton exemple, RK : les codes entre RA et RZ indiquent qu'il s'agit d'une lettre recommandée ( registered letter )
[0-9]{8} 8 chiffres : identificateur de la lettre
([0-9]|X) soit un checksum sur un chiffre soit un X si on estime que les services concernés ne seront pas en mesure d'exploiter le checksum (dans la dernière version de la norme, je ne vois plus mention de ce X, donc c'est peut être plus en vigueur)
[A-Z]{2} code ISO du pays qui a émis le code S10 en question (donc FR si c'est envoyé par la France)
Pour le calcul du checksum :
1) Faire la somme S suivante
Chiffre 1 * 8 +
Chiffre 2 * 6 +
Chiffre 3 * 4 +
Chiffre 4 * 2 +
Chiffre 5 * 3 +
Chiffre 6 * 5 +
Chiffre 7 * 9 +
Chiffre 8 * 7
2) Calculer le reste R de la division de S par 11
3) calculer la différence D 11 - R
Si D est sur un seul chiffre, c'est le checksum
Si D vaut 10, le checksum vaut 0
Si D vaut 11, le checksum vaut 5
Dans ton cas, on a :
8 * 8 = 64
6 * 6 = 36
7 * 4 = 28
6 * 2 = 12
2 * 3 = 6
2 * 5 = 10
3 * 9 = 27
3 * 7 = 21
S = 64 + 36 + 28 + 12 + 6 + 10 + 27 + 21 = 204
204 = (18 * 11 ) + 6
R = 6
D = 11 - 6 = 5
Donc le checksum vaut 5 (et on ne devrait pas avoir un 2 dans ton exemple).
Et si ça part de France, le S10 serait RK867622335FR
A+,
Message édité par gilou le 12-07-2020 à 19:10:56
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --