Forum Clubic

Création programme pour debutant, aide svp pour créer PDF d'un fichier EDI TXT

bonjour,
j’ai vraiment besoin d’aide ou d’un suivi particulier sur ce dossier,

N’ayant aucune capacité en programmation, hormis quelques petites macros sous visual basic que j’ai réalisé avec l’aide des forumeurs clubic, je souhaiterai créer une petite application pour générer un PDF d’un fichier edi en mode texte.

En fait avant nous avions un programme fait par un agent en chine, mais depuis la mise à jour majeure de la struture edi depuis 2007, ce programme n’a pas été mis à jour.

Pour vous expliquer de façon moins sommaire, je reçois quotidiennement des fichiers edi avec une structure particulière qui peut être soumise de tant à autres, de mise à jour mineure, mais rien qui ferait bugger le programme en question, si jamais j’avais au moins la main sur les paramètres à définir pour les futures mises à jours.

Il y a certains éléments qu’il faut reprendre tel quel, et d’autre informations, qui représente des codes qui faudra reprendre dans un fichier externe du type excel ou autres (access par exemple).

tout ce qui est free text, doit être repris à l’identique

Je ne reprendrai pas toutes les données, juste le principal pour que les données importantes soient reprises dans le fichier pdf. Le but est de faciliter la visualisation pour le commun des mortels bien que cela soit simple, si le personnel s attarde à apprendre le gros de la structure du fichier edi.Ce fichier edi est juste en format texte mais generalement l’extension du fichier est interne.

Cette structure est comme ci après mais non exhaustif, la structure est stricte, et est fonction par rapport à la ligne et à la position bien précise sur cette ligne des données (je ne sais pas trop expliquer mais le reste vous allez comprendre).

STRUCTURE 1 : TYPE FICHIER

le type de données est telle quelle apparait sur le fichier

HDR 55MFT 142N
VSLPA 04592001022TAXITAXI 102R
POR FRLVE 250409LVRIX
FA1XXXXXX123456

il faudrait reprendre uniquement

MFT (TYPE : code à reprendre d’un fichier interne excel pour reprendre le libellé exact (y’en a que trois types : COR, MFT, ASC), ex : MFT = Manifeste)
TAXITAXI ( nom du navire à reprendre telle quelle)
102R (référence navire à reprendre telle quelle)
FRLVE (code port de chargement à reprendre d’une fichier de base de données excel)
250409 (date à reprendre , soit 25 avril 2009)
LVRIX (code port de déchargement à reprendre d’une fichier de base de données excel)
XXXXXX123456 (référence chargement à reprendre telle quelle)

Comme je disais plus haut, je ne reprends pas toutes les données mais il y a quelques petites subtilités du genre
si TYPE = COR alors d’autres données doivent être reprise du fichier qui sont en dessous de la référence chargement

MCRCNR : reprendre les 3 derniers chiffres
MCKTXT : Free text à reprendre

ex :

FA1XXXXXX123456
MCRCNRXXXXXX123456001
MCKTXT8 CHANGE WEIGHT

STRUCTURE 2 : COORDONNEES (emetteur, destinataire, copie)

BA1SH : BA = code (mais je ne le reprendrai pas dans le fichier pdf)
1 = ligne (2,3,4 etc…) le BA1 est toujours par défaut le nom de la société

SH = nom de la société emettrice

BA4 est toujours le code postal suivi de la ville, qui est un code suivi du nom de la ville
il faudrait juste reprendre dans l’exemple, uniquement le code postal en position 5 et le ST PREUIL à partir de la position 19

le BA5 Le numéro de telephone ou fax

ex:

BA1SHTARTANPION
BA2SHRUE TEST
BA3SHLE CHILLOT
BA4SH16130 FRXXXST PREUIL
BA5SH012545212

il en existe d’autres dans le fichier sur le même type de structure, BA1CN et BA1N1 voire de temps en temps BA1N2

BA1CN/BA1SH/BA1N1 est toujours un nom, donc toujours du free text, c est juste le type de la société qui change

SH = emetteur
CN = destinataire
N1 ou N2 : destinataire en copie

STRUCTURE 3 : DONNEES FACTURES

exemple :

CHBBUCP00000000004000+EUR =
CHB = charge
BUC = libellé charge à reprendre d’un fichier excel
P = type de paiement à reprendre d’un fichier excel (soit P,C ou E, il en existe que 3, prepayé , à encaisser, ou paiement par une société tierce)

00000000004000+EUR : ici 40,00 euros

si

00000004000000+EUR : alors 40000 euros

si je reprends les infos

CHBBUCP00000000104000+USD F N
CHBCSCP00000000014000+EUR O N
CHBFRTP00000000240000+USD F N
CHBTHCC00000000015000+USD D N

il faudra que cela soit repris comme cela

BUNKER 40 USD PREPAID
CSC 140 EUR PREPAID
FREIGHT 240 USD PREPAID
TERMINAL HANDLING 150 USD A ENCAISSER

STRUCTURE 4 : DESCRIPTION MARCHANDISES

distinguée par un séparateur DE5N, les DE1,DE2 sont à reprenre à partir du 20ème caractère, c est à dire uniquement la description marchandise
,
DE5N
DE1 00000001TY00270000GRAPE WINE, INCLUDING “MARSALA”, TOKAY, SPARKLING220421 220421 021524000
DE2 SEAL NUMBER ALCOHOLIC BEVERAGES WITH
DE2 0156413/0156414/0MORE THAN 24% BUT NO MORE
DE2 156415/ THAN 70% ALCOHOLIC BY
DE2 0156411/0156412 VOLUME.
DE2 NU: 3065, CLASS 3, PACKING
DE2 GROUP III, FLASH POINT 23
DE2 DEGREES
DE2 NET WEIGHT 21524
DE2 FREIGHT TO BE PREPAID
DE2 SHIPPER OWNER

dans cet exemple, il faudra juste reprendre les données sur chaque ligne à partir de la position 22 sur la ligne,

GRAPE WINE, INCLUDING “MARSALA”, TOKAY, SPARKLING220421 220421 021524000
ALCOHOLIC BEVERAGES WITH
MORE THAN 24% BUT NO MORE
THAN 70% ALCOHOLIC BY
VOLUME.
NU: 3065, CLASS 3, PACKING
GROUP III, FLASH POINT 23
DEGREES
NET WEIGHT 21524
FREIGHT TO BE PREPAID
SHIPPER OWNER

voici la structure, j’ai du changer les données puisque ce sont des données personnelles,

HDR 55COR 142N
VSLPA 04592001022TAXITAXI 102R
POR FRLVE 250409LVRIX
FA1XXXXXX123456
MCRCNRXXXXXX123456001
MCKTXT8 CHANGE WEIGHT
SCTT
BA1SHTARTANPION
BA2SRUE TEST
BA3SHLE CHILLOT
BA4SH16130 FRXXXST PREUIL
BA5SH012545212
BA1CNDESTINATAIRE TEST
BA2CNRUE TEST
BA3CNAUSEKLA STR
BA4CN1010 LVRIX
BA5CN00000000000
BA1N1DESTINATAIRE COPIE TEST
BA2N1RUE TEST
BA3N1RUE TEST
BA4N11010 LVRIX
BA5N137167322538
CHBBUCP00000000104000+USD F N
CHBCSCP00000000014000+EUR O N
CHBFRTP00000000240000+USD F N
CHBTHCC00000000015000+USD D N
DE5N
DE100000001TY00270000GRAPE WINE, INCLUDING “MARSALA”, TOKAY, SPARKLING220421 220421 021524000
DE2SEAL NUMBER ALCOHOLIC BEVERAGES WITH
DE20156413/0156414/0MORE THAN 24% BUT NO MORE
DE2156415/ THAN 70% ALCOHOLIC BY
DE20156411/0156412 VOLUME.
DE2 NU: 3065, CLASS 3, PACKING
DE2 GROUP III, FLASH POINT 23
DE2 DEGREES
DE2 NET WEIGHT 21524
DE2 FREIGHT TO BE PREPAID
DE2 SHIPPER OWNER
DE3Y3 UN306523 ALCOHOLIC BEVERAGES WITH MORE THAN 24% BUT NOT MORE THAN 70% ALCOHOL B

pourriez vous me dire quel logiciel utiliser ou comment faire svp merci

je sais que cela prendra du temps mais j ai vraiment envie d ameliorer la vie de tout le monde, puisque tout le monde se plaint que c est pas compréhensible pour le commun des mortels
pour ce qui est de la mise en page, on verra à la fin du programme, pour l instant c est le brut qui est super important


j ai fait un copier coller du fichier edi, et il manque plein d'espaces, Edité le 19/05/2009 à 13:37

Bonjour,

Pour ma part je ne connais pas de logiciel vous permettant de remplir tous vos besoins. Sa spécificité requiert le savoir faire d’un développeur / analyste / concepteur / consultant / informaticien qui, et j’espère que vous le comprendrez, a un cout.

Néanmoins, je pourrais tout à fait comprendre que vous souhaitiez le faire vous meme afin d’économiser de l’argent, ou meme par passion. Mais je doute que vous puisseriez alors répondre à l’urgence de vos utilisateurs.

ben en fait c est juste pour visualiser la chose
j aurai bien aimé qu on me guide au moins
quel langage? comment imprimer pour que cela soit repris en pdf
à la rigueur le langage simple pour debutant serait pas mal, puisque dans un premier temps j essaierai de collecter les infos voulues du fichier

Quel langage ? En Java, PHP, C++, …

A mon avis l’ampleur du travail est largement sous estimé.

houla oui! il faut impérativement du langage pur et dur comme ca
he ben, mince alors
moi qui croyait que reprendre des données pouvait se résoudre plus facilement

Hmm … tu pensais à quoi au début ?

En fait, il s’agit de traiter un fichier texte ligne par ligne, rien de très compliqué.
Sauf peut être restituer tout ça directement au format PDF, mieux vaut envisager une restitution en fichier texte, que tu transformeras ensuite par exemple avec pdfcreator.

Et quand je dis fichier texte, ce n’est même pas une obligation : une feuille excel ferait très bien l’affaire (même si ce n’est pas la vocation première d’excel), et te permettrait d’avoir en un seul support la trame de restitution, le programme de transformation et les correspondances de données à interpréter (“code à reprendre d’un fichier interne excel pour reprendre le libellé exact” )

Pour le langage, tu n’as que l’embarras du choix, C++, php, VB, VBA, en fonction bien sûr du type de sortie que tu choisiras.

Après soit tu fais une description stricte de ta structure, avec à chaque fois le code de reconnaissance de la ligne, le nombre de lignes à traiter, l’action exacte à mener, et tu écris un bout de code qui vient s’y référer pour chaque ligne rencontrée dans le fichier source.
L’avantage est qu’en cas de modification dans la structure de la source ou dans le format de restitution souhaité, seule cette partie est à modifier.
Mais il te faut pour cela une analyse en amont beaucoup plus rigoureuse que celle que tu nous as donnée

Soit tu décris dans ton programme les actions à mener “au fil de l’eau”. Avec de bons commentaires pour chacune des lignes, ça ne devrait pas poser de problème insurmontable.

Pense aussi au fait qu’il faudra que d’autres que toi soient aussi capables de le maintenir si besoin, de façon à ce que vous ne vous retrouviez pas dans la même situation que maintenant.

personnellement, j ai pas de compétences informatique pur et dur
j ai deja créé qq macro sous vba mais pas plus que cela
est ce que le langage php est difficile?
que me conseillerais tu comme langage pour me lancer dans ce mini projet?

Si j’avais à le faire, je le ferais en C++/QT4
Mais je ne me lancerais pas sans avoir les spécifs du constructeur concernant la structure du fichier source.
Parce que vu la forme de ce que tu nous donne en exemple, il existe certainement quelque part un document spécifiant quelles sont les lignes, obligatoires ou non, ce qu’elles peuvent et doivent contenir etc .

Maintenant, si tu veux te lancer avec ce dont tu disposes, mieux vaut prendre un langage interprété, et qui plus est un langage dans lequel tu puisses faire du pas à pas. Je ne connais pas assez les possibilités de php en ce domaine, et puis il est quand même un peu plus lourd à mettre en oeuvre qu’un simple VBA à travers une feuille excel.

Mais de toute manière, avant de te lancer, tu as une bonne analyse sur papier à faire pour mettre sous forme homogène tout ce que tu as expliqué au-dessus.

Pour ma part je serais parti en Java : la communauté de développeurs est suffisamment active pour te permettre de tout faire (fichiers, pdf, parsing, etc) sans trop se casser la tete.

Par contre, je le répète : y a du boulot, et pas qu’un peu. Un stagiaire (pas mal de théorie, moins de pratique) peut prendre plusieurs semaines, donc pour quelqu’un qui n’a meme pas la théorie, je donnerais bien un mois ou deux.

Y a pas de mal à débuter, mais je pense qu’etre développeur, ca ne s’improvise pas, et encore moins quand il y a un vrai besoin. Sinon on ne paierait pas les gens aussi cher …

Bonjour,

Il existe plusieurs solutions commerciales (Edi Translator), mais j’ai trouvé deux en version libre.
Le premier est Bots:
bots.sourceforge.net…

Le second est EdiReader de BerryWorks
berryworkssoftware.net…
Lien pour la version open source:
sourceforge.net…

Il s’agit de librairies java. Il faut donc maitriser Java pour pouvoir en faire quelque chose. Avec Bots, tu pourras générer entre autre du XML (ou du CSV). Avec le XML tu peux après transformer les données en html (XSLT) ou en pdf (XSL-FO).

Cela va te sembler être du charabia pour quelqu’un qui ne connait pas la programmation, sinon tu as des versions commerciales qui te permettent de faire cela avec un éditeur, tapes “Edi Translator” dans google.

Bonne chance

cool je m en vais installer cela
on verra bien ou seront mes limites mais merci pour l info