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

WinDev: l'export des clients avec de vraies dates et une vraie case Actif

Objectif Lire le fichier clients qu'une application WinDev exporte, et en faire des colonnes qu'on peut interroger.

Une application WinDev exporte ses clients avec HExportCSV. Le fichier est reconstitué d'après la documentation de PC SOFT.

Client-utf8.csv
IDClient,NomClient,Ville,DateCreation,DernierAchat,Actif,EncoursAutorise
1,Établissements Dufour,Évreux,20190312,20261028,1,15000.00
2,Boulangerie Lefèvre,Saint-Étienne,20200605,20261102,1,2500.50
3,Garage Mécanique Nord,Lille,20151120,,0,0.00
4,Câblerie de l'Est,Besançon,20230217,20261015,1,48000.00
5,Menuiserie Bœuf & Fils,Orléans,20180901,20250630,1,7200.75
6,Épicerie Côté Mer,La Rochelle,20210414,20261030,0,1200.00
manifests/10-clients-raw.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-windev-raw-a  connector_type: csv-file  scopes: [sales-a]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/windev-hfsql-export/a/Client.csv   # HExportCSV(Client, …, hExpCreation)  after_process: none
manifests/20-clients-typed.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-windev-a  connector_type: csv-file  scopes: [sales-a]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/windev-hfsql-export/a/Client.csv   # the same export  after_process: none  mapping:    row:      - map-columns:          rename: { IDClient: id_client, NomClient: nom, Ville: ville, DateCreation: cree_le,                    DernierAchat: dernier_achat, Actif: actif, EncoursAutorise: encours_autorise }    cell:      - parse-number: { column: id_client, integer: true }      - parse-date: { column: cree_le, formats: [yyyyMMdd] }          # HFSQL writes a date AAAAMMJJ      - parse-date: { column: dernier_achat, formats: [yyyyMMdd] }      - parse-number: { column: encours_autorise, decimal-separator: "." }      - parse-boolean: { column: actif }                              # 0 / 1

Limites

  • L'export est reconstitué d'après la documentation de PC SOFT, pas produit par WinDev.
  • Windows-1252, les dates AAAAMMJJ et les cases 0/1 sont des conventions courantes que la doc ne décrit pas.
  • Six clients fictifs.

Clients · WinDev

Les clients sont dans une application WinDev.

Il faut les relire, chaque nuit.

Un export HExportCSV, reconstitué

Le problème

Pas de base lisible de l'extérieur.

  • HFSQL n'a pas de pilote JDBC.
  • L'application sait exporter ses fichiers.

Ce qui n'est pas modifié

L'application reste telle quelle.

  • Son export existant.
  • Aucun module, aucun accès à sa base.

Lu tel quel

Six clients, mais tout en texte.

  • Les dates: 20190312.
  • Actif: 0 ou 1.

Ce qu'il a fallu écrire

parse-date: { formats: [yyyyMMdd] }
parse-boolean: { column: actif }

Trois transformers.

  • Des dates, un montant, un booléen.
  • Un connecteur de 22 lignes.

La question

Les clients actifs sans achat depuis octobre.

  • Une requête SQL simple.
  • Un client sort: Menuiserie Bœuf & Fils.

La limite

Un export reconstitué.

  • D'après la doc de PC SOFT, pas produit par WinDev.
  • L'encodage et les dates sont des conventions courantes.

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 →