lumnik. / scénarios Tous les scénarios · English

Le fichier fournisseurs part à l'EDI en ASCII avec un identifiant stable

Objectif Envoyer à l'EDI des fournisseurs au format qu'il impose, avec un identifiant qui ne change pas.

La plateforme EDI des achats impose des noms en ASCII, en majuscules, de 35 caractères au plus, et un identifiant par fournisseur. L'export de l'ERP a des accents, de longues raisons sociales, des inactifs, et des identifiants N/A, 0 ou vides.

suppliers.csv
FOURN_CODE;FOURN_NOM;ACTIF;EXT_ID;PAYS
F0001;Société Générale d'Équipements Industriels du Rhône;O;N/A;
F0002;Électricité Ménard & Fils;O;3f2b8c1e-5a7d-4c2e-9b1f-0a6d8e4c2b71;FR
F0003;Ancien Fournisseur;N;0;FR
F0004;Transports Lefèvre;O;;FR
F0005;Société Générale d'Équipements Industriels du Rhône-Alpes;O;7c9e6679-7425-40de-944b-e07fc1f90ae7;
F0006;Garage Müller;O;0;DE
F0007;Imprimerie Côté, S.A.;O;;BE
F0008;Fournisseur Fermé;N;;FR
manifests/11-suppliers-policy.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-suppliers-b  connector_type: csv-file  scopes: [purchasing-b]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/supplier-master-edi/b/suppliers.csv  parser:    delimiter: ";"  after_process: none  mapping:    dataset:      - filter-where: { column: ACTIF, equals: "O" }        # inactive suppliers out, counted    row:      - map-columns:          rename: { FOURN_CODE: code, FOURN_NOM: name, ACTIF: active, EXT_ID: ext_id, PAYS: country }      - defaults: { country: FR }                            # an empty country is France    cell:      - remove-diacritics: { columns: [name] }               # Électricité -> Electricite      - upper: { columns: [name] }      - regex-replace: { column: name, pattern: "&", replacement: " ET " }      - regex-replace: { column: name, pattern: "[^A-Z0-9 ]", replacement: " " }   # what the EDI refuses      - regex-replace: { column: name, pattern: " +", replacement: " " }      - clean: { columns: [name], strip: true }      - truncate: { column: name, length: 35 }               # the EDI's hard limit      - to-uuid: { column: ext_id, on-invalid: "null", generate-from: code }   # junk emptied, counted; an empty id derived from the code
suppliers-day2.csv
FOURN_CODE;FOURN_NOM;ACTIF;EXT_ID;PAYS
F0001;Société Générale d'Équipements Industriels du Rhône;O;N/A;
F0002;Électricité Ménard & Fils;O;3f2b8c1e-5a7d-4c2e-9b1f-0a6d8e4c2b71;FR
F0003;Ancien Fournisseur;N;0;FR
F0004;Transports Lefèvre;O;;FR
F0005;Société Générale d'Équipements Industriels du Rhône-Alpes;O;7c9e6679-7425-40de-944b-e07fc1f90ae7;
F0006;Garage Müller;O;0;DE
F0007;Imprimerie Côté, S.A.;O;;BE
F0008;Fournisseur Fermé;N;;FR
F0009;Cartonnages Dubois;O;;FR

Limites

  • truncate coupe sans prévenir: F0001 et F0005 portent le même nom à 35 caractères, seuls leurs codes les distinguent.
  • Un identifiant dérivé ne se joint à aucun autre système.
  • Fournisseurs synthétiques.

Achats · EDI

Les fournisseurs partent à l'EDI.

Chaque nuit, depuis l'ERP.

Huit fournisseurs, six actifs

Le problème

L'EDI impose sa forme.

  • ASCII, majuscules, 35 caractères.
  • Un identifiant par fournisseur.

Ce qui n'est pas modifié

L'ERP reste tel quel.

  • Son export, avec ses accents.
  • Aucune correction à la source.

Le piège

Des identifiants qui n'en sont pas.

  • N/A, 0, ou rien du tout.
  • Un identifiant au hasard change chaque nuit.

Ce qu'il a fallu écrire

to-uuid: { generate-from: code }

Une ligne.

  • Le même code donne le même identifiant.
  • Les valeurs fausses sont vidées et comptées.
  • Deux manifestes, 43 lignes.

Le lendemain

Les mêmes identifiants.

  • Un fournisseur de plus reçoit le sien.
  • Aucune ligne retirée.

La limite

Couper à 35 peut confondre deux noms.

  • Seuls leurs codes les distinguent.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →