Comment ajouter les NPA (codes postaux) Suisses à Dynamics AX

Aujourd’hui, je voulais saisir un nouveau fournisseur dans Dynamics AX. Lors de la saisie, je me suis apperçu que le NPA de ma ville préférée n’y figurait pas!

01_empty

La méthode proposée dans cet article ne nécessite pas de connaissances de développement.
Dynamics ERP en mode web/cloud est très recent : il y aura sûrement des évolutions majeures, ce qui implique que certaines manipulations décrites dans cet article seront probablement plus simples dans le futur.
Attention : si vous avez des virgules dans votre data set d’import ou d’export, n’utilisez pas du CSV, mais plutôt du XML.
Les fichiers d’import prêts à l’utilisation sont disponibles à la fin de ce post.

Mon premier réflexe a été de chercher l’import des codes :

03_zip-imp

…mais la Suisse n’est pas dans la liste!

04_zip-imp2

…c’est simplement parce qu’il n’y a pas d’import spécifique pour la Suisse. Si vous voulez en coder un, vous pouvez apparemment faire en créant une classe qui hérite de AddressZipCodeImport. Cependant, ce n’est pas nécessaire.

Voici comment ajouter les NPA Suisses dans AX. Par ailleurs, la même méthode peut être utilisée pour la majorité des autres pays.

Première étape : télécharger la liste des codes postaux

Vous pouvez trouver la liste gratuite des codes postaux sur le site de GeoNames, sous licence Creative Commons Attribution 3.0 (donc, vous pouvez l’utiliser, mais n’oubliez pas de mentionner GeoNames.org). Je crois que la poste Suisse les propose aussi : c’est probablement une meilleure source, mais je préfère une solution qui fonctionne pour plusieurs pays.

http://www.geonames.org/export/

Téléchargez simplement le fichier CH.zip :

02_zip

En passant, il s’agit de codes ISO 3166-1 Alpha-2 : https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
En général, c’est une meilleure idée d’utiliser des codes Alpha-3 pour les pays et les langues : pensez-y si vous développez une application.

Dans le zip, vous trouverez un fichier texte.

Deuxième étape : comprendre le format d’import

Tout d’abord, un tour dans les paramètres du carnet d’adresses s’impose :

01_address-setup

C’est ici qu’on peut saisir les codes postaux à la main. Les cantons devront être saisis séparément dans “State/Province”.

Je vous conseille de saisir manuellement 3 codes postaux, 3 cantons, 3 villes, et la Suisse si elle n’y est pas déjà (code ISO : CHE).

Image 005

S’il vous manque des champs de saisie, vous pouvez adapter le formulaire en utilisant clic-droit et “personalize form” :

05_customize-form

06_customize-form2

…ces adaptations ne sont appliquées qu’à vous (il faut exporter le XML si vous voulez les transmettre à un autre utilisateur).

Pour s’assurer du format d’import, rien de mieux que de commencer par un export (dans Data Management) :

05_dm-export

Ajoutez les entités “States” (pour les cantons), “Cities” et “Postal codes” :

02_export-job

Cet import n’étant pas très technique, le format CSV suffira. Il ne vous reste plus qu’à exporter :

03_export

…puis à télécharger le résultat :

04_download-export

Une fois dézippé, vous avez accès aux trois fichiers d’export.

Deuxième étape : préparer les fichiers d’import

Pour effectuer des transformations dans des fichiers CSV, je vous conseille OpenOffice (excellent Wizard à l’ouverture du fichier, contrôle de l’encodage) et Notepad++ (mode d’édition en colonne, contrôle de l’encodage, expressions régulières).

A présent, il faut imiter le format des fichiers exportés :

07_export-examination

Pour chaque fichier, je conserve la première ligne (headers), et je copie puis transforme les données de CH.txt (GeoNames.org).

Attention à l’encodage et au séparateur lors de l’ouverture de CH.txt avec OpenOffice calc. Sinon les caractères diacritiques seront détruits à l’import.

08_format_text

…et l’ouverture de States.csv avec OpenOffice calc : attention! L’encodage n’est pas le même!

08_open-csv

A présent, pour préparer notre fichier d’import des cantons, il faut créer une nouvelle feuille “Cantons” dans le classeur OpenOffice, puis sélectionner les colonnes des cantons et utiliser Filter>Standard Filter avec les paramètres suivants :

 

09_dups

10_dups2

…retirer les prefixes des noms :

10_transform

…puis, après quelques copier-coller, sauver le fichier .csv :

11_save

…en s’assurant que le format d’écriture est correct :

12_export-params

Troisième étape : importer

Dans “Data Management” :

13_import-states

Puis, une fois l’importation terminée, un contrôle :

14_verify

…on voit que les cantons ont été importés, et sans casser les accents.

Il ne reste plus qu’à faire de même pour les fichiers Cities.csv et Postal codes.csv.

Attention! Il peut y avoir des duplicats au niveau des NPA. Le même code peut être utilise pour plusieurs communes et le même NPA peut apparaître plusieurs fois pour la même commune dans le fichier, puisque les subtilités sont perdues en cours de route lorsqu’on retire certaines informations. Cependant, bien qu’AX permette l’import de codes postaux similaires, il ne permet pas d’importer plusieurs lignes totalement identiques, et le message d’erreur ne signale pas le problème. Il faut donc éliminer les lignes dupliquées du fichier avant import (en utilisant la méthode décrite à l’étape 2, par exemple).

28-if-lines-completely-identical-error-nolog

28-if-lines-completely-identical-error-nolog2

Voici les fichiers d’imports qui ont fonctionné pour moi : 20160817-AxSwissPostCodes-CsvImportFiles.zip

Finalement, on peut contrôler que les codes postaux sont disponibles, par exemple en saisissant un nouveau fournisseur :

15_vendor

Voilà tout! Si vous avez des questions ou des remarques, n’hésitez pas à utiliser les commentaires.

Leave a Reply

Your email address will not be published. Required fields are marked *