EXEMPLES DE MACRO WINDEV POUR CODIAL

/// // Macro créé par SCHNEIDER Patrick – MAS INFORMATIQUE le 28/08/2016 // Description de la macro : // Cette macro permet la récupération des fichiers liés au tarif TERRA via FTP // De créer un fichier de sortie ne contenant que les informations retenues // Code principal de la macro : //VARIABLES LOCAL //Variables de connexion pour FTP SiteFtp est une chaine = « www.wortmann.de » LoginFtp est une chaine = « PRLST_68611 » PasswordFtp est une chaine = « b1fhflrvwy » PortFtp est une chaine = « 21 » RépertoireFtp est une chaine = « /tarifs/ » ModeTransfert est une chaine = « 0 » // RépertoireCible est une chaine = « \\Srv-gestion\societe\Codial\Importations\Tarifs fournissseurs\TERRA\ » RépertoireCible est une chaine = « G:\Temporaire\MAS\ » wlIDConnect est un entier //—————————————————————- //PREMIERE PARTIE : RECUPEERATION DES FICHIERS CHEZ TERRA VIA FTP //—————————————————————- // Active le sablier Sablier(Vrai) // Ouverture connexion au serveur FTP wlIDConnect=proGFTPConnect(SiteFtp,LoginFtp,PasswordFtp,PortFtp) // Est on connecté? SI wlIDConnect=-1 ALORS //Non alors Erreur Erreur(« La connexion au serveur n’a pas pu être établie ») SINON //oui, Récupération des fichiers proGFTPRecupRep(wlIDConnect,RépertoireFtp,RépertoireCible,Vrai,FTPModeBinaire,SiteFtp,LoginFtp,PasswordFtp,PortFtp) // Déconnexion serveur FTP proGFTPDeconnect(wlIDConnect) FIN ToastAffiche(« Téléchargement terminés »,toastCourt, cvMilieu, chCentre, VertFoncé) //—————————————————————- //DEUXIEME PARTIE : RECUPEERATION DES FICHIERS CHEZ TERRA VIA FTP //—————————————————————- NomCheminFichier1Lec est une chaîne = RépertoireCible + « productcatalog.csv » NomCheminFichier2Lec est une chaîne = RépertoireCible + « content.csv » NomCheminFichier1Ecr est une chaîne = RépertoireCible + « terra.txt » LigneLue, LigneLue2, designation, enreg est une chaîne = «  » Buffer est une chaîne = «  » IDFichier1Lec, IDFichier2Lec, IDFichier1Ecr est un entier = 0 CompteurLigne, CompteurChamp, ResEcriture est un entier = 0 TableauChamp est un tableau de chaînes // Ouverture des fichiers pour lecture IDFichier1Lec = fOuvre(NomCheminFichier1Lec) IDFichier2Lec = fOuvre(NomCheminFichier2Lec) // Ouverture des fichiers pour écriture IDFichier1Ecr = fCrée(NomCheminFichier1Ecr) // Affichage du message d’erreur si l’ouverture n’a pas été effectuée SI IDFichier1Lec = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON SI IDFichier2Lec = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON //Création d’une ligne d’entete dans le fichier de sortie buffer = « REFERENCE » + [TAB] + « REF_FOURN » + [TAB] + « CODE_BARRE » + [TAB] + « MARQUE » + [TAB] + « PRIX_ACHAT » + [TAB] + « PUHT » + [TAB] + « PRIXVENTE » + [TAB] + « STOCK » + [TAB] + « DESIGNATION » + [RC] fEcrit(IDFichier1Ecr, buffer) buffer = «  » //On démarre une boucle de lecture //Premier Ligne qui contient le descriptif des champs, qui ne nous interresse pas LigneLue = fLitLigne(IDFichier1Lec) //On se positionne sur la 2 eme ligne pour commencer le traitement LigneLue = fLitLigne(IDFichier1Lec) //On lit tant qu’il y a des lignes TANTQUE LigneLue <> EOT //Je prend la désignation du premier fichier Si ExtraitChaîne(LigneLue,37, »; ») <> «  » ALORS //La désignation en francais existe, je prend Designation = ExtraitChaîne(LigneLue,37, »; ») + « | » SINON Si ExtraitChaîne(LigneLue,33, »; ») <> «  » ALORS //La désignation en anglais existe, je prend comme il n’y a rien en français Designation = ExtraitChaîne(LigneLue,33, »; ») + « | » SINON Si ExtraitChaîne(LigneLue,29, »; ») <> «  » ALORS //La désignation en allemand existe, je prend comme il n’y a rien en français ni en anglais Designation = ExtraitChaîne(LigneLue,29, »; ») + « | » FIN FIN FIN //On démarre une boucle de lecture avec le fichier complementaire contenant les désignations étendues //Premier Ligne qui contient le descriptif des champs, qui ne nous interresse pas LigneLue2 = fLitLigne(IDFichier2Lec) //On se positionne sur la 2 eme ligne pour commencer le traitement LigneLue2 = fLitLigne(IDFichier2Lec) //On lit tant qu’il y a des lignes TANTQUE LigneLue2 <> EOT //Je prend la désignation du deuxieme fichier si je trouve la même référence Si ExtraitChaîne(LigneLue2,1, »; ») = ExtraitChaîne(LigneLue,1, »; ») ALORS Si ExtraitChaîne(LigneLue2,4, »; ») <> «  » ALORS //La désignation en francais existe, je prend Designation += ExtraitChaîne(LigneLue2,4, »; ») SINON //La désignation en anglais existe, je prend comme il n’y a rien en français Si ExtraitChaîne(LigneLue2,3, »; ») <> «  » ALORS Designation += ExtraitChaîne(LigneLue2,3, »; ») SINON //La désignation en allemand existe Si ExtraitChaîne(LigneLue2,2, »; ») <> «  » ALORS Designation += ExtraitChaîne(LigneLue2,2, »; ») FIN FIN FIN SORTIR FIN //Ligne suivante LigneLue2 = fLitLigne(IDFichier2Lec) FIN //Conversion du format d’encodage de UTF vers ANSI Designation = UTF8VersChaine(Designation,alphabetAnsi) // Traitement de la ligne lue buffer += [RC]+ExtraitChaîne(LigneLue,1, »; ») + TAB +ExtraitChaîne(LigneLue,1, »; ») + TAB buffer += ExtraitChaîne(LigneLue,3, »; ») + TAB +ExtraitChaîne(LigneLue,4, »; ») + TAB buffer += ExtraitChaîne(LigneLue,5, »; ») + TAB +ExtraitChaîne(LigneLue,5, »; ») + TAB buffer += ExtraitChaîne(LigneLue,9, »; ») + TAB +ExtraitChaîne(LigneLue,21, »; ») + TAB buffer += Designation //Ligne suivante LigneLue = fLitLigne(IDFichier1Lec) FIN fEcrit(IDFichier1Ecr, buffer) // Fermeture du fichier fFerme(IDFichier1Lec) fFerme(IDFichier2Lec) fFerme(IDFichier1Ecr) // Désactive le sablier Sablier(Faux) // Affiche fin de traitement ToastAffiche(« Génération du fichier TERRA.TXT terminée »,toastCourt, cvMilieu, chCentre, VertFoncé) FIN /// /// // Macro créé par Patrick SCHNEIDER – MAS INFORMATIQUE le 28/08/2016 // Description de la macro : //Recherche remplace le cractère pipe « | » par un retour chariot dans la designation de la table produit // Code principal de la macro : // Variables de travail LOCAL tlPiecesJointes est un tableau dynamique de 0 chaînes LoginSMTP est une chaine = « patrick.schneider8@numericable.fr » MotDePasseSMTP est une chaine = « 15%pmb9811 » ServeurSMTP est une chaine = « smtp.numericable.fr » EmailExpediteur est une chaine = « p-schneider@wanadoo.fr » tlDestinataires est un tableau dynamique de 0 chaînes TableauAjoute(tlDestinataires, »pat.schneider.67@gmail.com;p-schneider@wanadoo.fr ») // Adresse destinataire //TableauAjoute(tlPiecesJointes, »G:\Temporaire\MAS\terra.txt ») // PJ //Lancement du traitement POUR TOUT (« PRODUIT ») Produit.DESIGN = REMPLACE(Produit.DESIGN , »| »,CR) HMODIFIE(« PRODUIT ») FIN // Envoi du mail aux destinataires proGMailEnvoiTexte(LoginSMTP,MotDePasseSMTP,ServeurSMTP,EmailExpediteur,tlDestinataires, »Import Produits TERRA terminé »,tlPiecesJointes, »CONTROLE IMPORTS ») ToastAffiche(« La table PRODUIT est à jour »,toastCourt, cvMilieu, chCentre, VertFoncé) ///

Laisser un commentaire