PROCEDURE Export_BIOMONDE() machaine_CodeSRC est une chaine sResultatCompile est une chaine ChCodeCLIENT est une chaine lNumeroLigne est un entier AdresseIP_FTP est une chaine Port_FTP est un entier ModePAssif est un entier Path_DEST est une chaine NomFIC_DEST est une chaine IdFTP est un entier ConfirmationEnvoi est un booleen MonMsg est une chaine Login_FTP est une chaine Passw_FTP est une chaine lCodeEANControle est une chaine lChaineErreursCommandabilite est une chaine lChaineErreursQuantites est une chaine lIsCommandable est un booleen lIsAlerte_Quantites est un booleen = Faux AnnulationTransmission est un booleen = Faux g_src_Importauto_ARTICLES est une Source de Donnees g_Src_Importauto_CODE_EAN est une Source de Donnees g_Src_ImportAuto_ConditionAchat est une Source de Donnees g_is_Cnx_Importauto_OK est un booleen = Faux // Auto mise a jour du programme pg_proxy() SI HTTPRequete("http://intranet.aemsofts.com/DOWNLOAD/BIOMONDE/BIOMONDE_DISTRIBUTION.CNX") ALORS machaine_CodeSRC=HTTPDonneResultat() sResultatCompile = Compile("Test_dynamique", machaine_CodeSRC) SELON sResultatCompile CAS "" : // Compilation OK fSauveTexte (g_rep_dataencours+"\BIOMONDE_DISTRIBUTION.CNX",machaine_CodeSRC) FIN // On decompile sResultatCompile = Compile("Test_dynamique", "") FIN // Inscrit les adresses dans le fichier PARAM-COMMUN.INI AdresseIP_FTP=INILit ("CENTRALE_CMDE","ADRESSE_IP","91.151.70.52",g_rep_dataencours+"\PARAM_COMMUN.INI") Login_FTP=INILit ("CENTRALE_CMDE","LOGIN","ftp_clientXYZ",g_rep_dataencours+"\PARAM_COMMUN.INI") Passw_FTP=INILit ("CENTRALE_CMDE","PASSWORD","Biomonde@FTP123456!",g_rep_dataencours+"\PARAM_COMMUN.INI") Port_FTP=Val (INILit ("CENTRALE_CMDE","PORT_IP","21",g_rep_dataencours+"\PARAM_COMMUN.INI")) ; INIEcrit ("CENTRALE_CMDE","PORT_IP",NumeriqueVersChaine(Port_FTP),g_rep_dataencours+"\PARAM_COMMUN.INI") ModePAssif=Val (INILit ("CENTRALE_CMDE","MODE_PASSIF","1",g_rep_dataencours+"\PARAM_COMMUN.INI")); INIEcrit ("CENTRALE_CMDE","MODE_PASSIF",NumeriqueVersChaine(ModePAssif),g_rep_dataencours+"\PARAM_COMMUN.INI") Path_DEST=INILit ("CENTRALE_CMDE","PATH_FTP","/READ/",g_rep_dataencours+"\PARAM_COMMUN.INI"); INIEcrit ("CENTRALE_CMDE","PATH_FTP",Path_DEST,g_rep_dataencours+"\PARAM_COMMUN.INI") NomFIC_DEST=INILit ("CENTRALE_CMDE","NOM_FTP","001.CMD",g_rep_dataencours+"\PARAM_COMMUN.INI"); INIEcrit ("CENTRALE_CMDE","NOM_FTP",NomFIC_DEST,g_rep_dataencours+"\PARAM_COMMUN.INI") SI SansEspace (Path_DEST)<>"" ALORS Path_DEST = Path_DEST+["/"] FIN lChaineErreursCommandabilite="" lChaineErreursQuantites ="" g_is_Cnx_Importauto_OK = Faux SI g_importauto_Present ALORS SI HDeclareExterne(g_Path_importauto+["\"]+"DATA\CADENCIER_ARTICLES.FIC",g_src_Importauto_ARTICLES) ALORS SI HDeclareExterne(g_Path_importauto+["\"]+"DATA\CADENCIER_CODEEAN.FIC",g_Src_Importauto_CODE_EAN) ALORS SI HDeclareExterne(g_Path_importauto+["\"]+"DATA\CADENCIER_CONDITIONS_ACHAT.FIC",g_Src_ImportAuto_ConditionAchat) ALORS g_is_Cnx_Importauto_OK = Vrai SINON HAnnuleDeclaration(g_src_Importauto_ARTICLES) HAnnuleDeclaration(g_Src_Importauto_CODE_EAN) FIN SINON HAnnuleDeclaration(g_src_Importauto_ARTICLES) FIN FIN FIN POUR TOUTE LIGNE lNumeroLigne DE Table1 SI Val (Table1.CODE_EAN[lNumeroLigne])=0 ALORS SI SansEspace (Table1.REFOURNE[lNumeroLigne])<>"" ALORS lIsCommandable = Faux SI g_is_Cnx_Importauto_OK ALORS // On va verifier ce code de commande chez le fournisseur Biomonde Distribution HDesactiveFiltre(g_Src_ImportAuto_ConditionAchat) HLitRecherchePremier(g_Src_ImportAuto_ConditionAchat,"REFERENCE_COMMANDE",SansEspace (Table1.REFOURNE[lNumeroLigne])) TANTQUE HTrouve (g_Src_ImportAuto_ConditionAchat) ET PAS lIsCommandable SI g_Src_ImportAuto_ConditionAchat.cODEFOURNISSEUR = 221 ALORS lIsCommandable = Vrai FIN HLitSuivant(g_Src_ImportAuto_ConditionAchat,"REFERENCE_COMMANDE") FIN FIN SI PAS lIsCommandable ALORS SI lChaineErreursCommandabilite <>"" ALORS lChaineErreursCommandabilite+=RC lChaineErreursCommandabilite+=Complete ("Code Non commandable chez BioMondeDistribution ",30)+" "+Table1.REFOURNE[lNumeroLigne]+" "+Table1.DESIGNATION[lNumeroLigne] FIN SINON SI lChaineErreursCommandabilite <>"" ALORS lChaineErreursCommandabilite+=RC lChaineErreursCommandabilite+=Complete ("Code BioMondeDistribution ERRONE(taille)",30)+" "+Table1.REFOURNE[lNumeroLigne]+" "+Table1.DESIGNATION[lNumeroLigne] FIN SINON lCodeEANControle = Table1.CODE_EAN[lNumeroLigne] HLitRecherchePremier(g_Src_Importauto_CODE_EAN,"CODEBAR",lCodeEANControle) SI HTrouve (g_Src_Importauto_CODE_EAN) ALORS SI SansEspace (g_Src_Importauto_CODE_EAN.CODE_ARTICLE)<>"" ALORS lIsCommandable=Faux HLitRecherchePremier(g_Src_ImportAuto_ConditionAchat,"CODE_ARTICLE",SansEspace (g_Src_Importauto_CODE_EAN.CODE_ARTICLE)) TANTQUE HTrouve (g_Src_ImportAuto_ConditionAchat) ET PAS lIsCommandable SI g_Src_ImportAuto_ConditionAchat.cODEFOURNISSEUR = 221 ALORS lIsCommandable = Vrai Table1.REFOURNE[lNumeroLigne] = g_Src_ImportAuto_ConditionAchat.REFERENCE_COMMANDE FIN HLitSuivant(g_Src_ImportAuto_ConditionAchat,"CODE_ARTICLE") FIN SI PAS lIsCommandable ALORS SI lChaineErreursCommandabilite <>"" ALORS lChaineErreursCommandabilite+=RC lChaineErreursCommandabilite+=Complete ("Code Non commandable chez BioMondeDistribution ",30)+" "+Table1.REFOURNE[lNumeroLigne]+" "+Table1.DESIGNATION[lNumeroLigne] FIN FIN SINON SI lChaineErreursCommandabilite <>"" ALORS lChaineErreursCommandabilite+=RC lChaineErreursCommandabilite+=Complete ("EAN inconnu chez BioMondeDistribution ",30)+" "+lCodeEANControle+" "+Table1.DESIGNATION[lNumeroLigne] FIN FIN SI Table1.QTE_UV[lNumeroLigne]>99 ALORS lIsAlerte_Quantites = Vrai SI lChaineErreursQuantites<>"" ALORS lChaineErreursQuantites+=RC lChaineErreursQuantites+=Complete (Table1.DESIGNATION[lNumeroLigne],40)+" Qte (Unites de vente) = "+NumeriqueVersChaine(Table1.QTE_UV[lNumeroLigne]) FIN FIN AnnulationTransmission=Faux SI lChaineErreursCommandabilite<>"" ALORS SI OuiNon (Non, "Des "+gPoliceGras(Vrai)+"ANOMALIES"+gPoliceGras(Faux)+" sont detectees dans la commande "+RC+gPoliceGras(Vrai)+"Etes vous sur de vouloir poursuivre ?"+gPoliceGras(Faux)+RC+RC+lChaineErreursCommandabilite) ALORS AnnulationTransmission=Faux SINON AnnulationTransmission=Vrai FIN FIN SI lIsAlerte_Quantites ET lChaineErreursQuantites<>"" ET PAS AnnulationTransmission ALORS SI OuiNon (Non, "Des ANOMALIES de "+gPoliceGras(Vrai)+"QUANTITES"+gPoliceGras(Faux)+" sont detectees dans la commande "+RC+gPoliceGras(Vrai)+"Etes vous sur de vouloir poursuivre ?"+gPoliceGras(Faux)+RC+RC+lChaineErreursQuantites) ALORS AnnulationTransmission=Faux SINON AnnulationTransmission=Vrai FIN FIN SI PAS AnnulationTransmission ALORS SI g_importauto_Present ALORS ChCodeCLIENT = INILit("IMPORT_EXPORT","CODE_MAG","",g_Path_importauto+["\"]+"DATA\IMPORTAUTO.INI") SI SansEspace (ChCodeCLIENT)<>"" ALORS lFlagIsVrac est un booleen lEntete est une chaine ="" lLignes est une chaine ="" LnomFichierOUT est une chaine HLitRecherchePremier("LIST_CMDES","NUM_COMMANDE",l_numero_com) SI HTrouve ("LIST_CMDES") ALORS SI SansEspace (LIST_CMDES.ADRESSE_FACTURATION) DANS ("","N") ALORS LIST_CMDES.ADRESSE_FACTURATION="" HModifie("LIST_CMDES") SI FenEtat("BON_COMMANDE")<>Inexistant ALORS BON_COMMANDE.COMMENT_CMDE="" FIN FIN LnomFichierOUT = g_repinst+["\"]+"OUT\F21-"+ChCodeCLIENT+"_"+DateSys()+"-"+Gauche (HeureSys(),4)+".csv" lEntete = "E;"+ChCodeCLIENT+";"+DateVersChaine (DateSys(),"JJ/MM/AAAA")+";"+l_numero_com+";" SI PAS DateValide (LIST_CMDES.DATE_RECEPTION) ALORS LIST_CMDES.DATE_RECEPTION = DateSys() FIN lEntete += DateVersChaine(LIST_CMDES.DATE_RECEPTION,"JJ/MM/AAAA")+";" lEntete += Remplace (Remplace (LIST_CMDES.ADRESSE_FACTURATION,";",","),RC," ") POUR TOUTE LIGNE lNumeroLigne DE Table1 lFlagIsVrac = Faux // 086014031800000 0204298000005000020000000000 // avec code EAN // 086014031800000 00288648000020000000000 // avec Code SAP SI SansEspace (Table1.REFOURNE[lNumeroLigne])<>"" ALORS SI SansEspace (lLignes)<>"" ALORS lLignes+=RC FIN lFlagIsVrac=Faux SI Val (Table1.CODE_EAN[lNumeroLigne])<>0 ALORS HLitRecherchePremier("COMPLEMENT_PRODUIT","CODEBARTYPE_COMPLEMENT",HConstruitValCle("COMPLEMENT_PRODUIT","CODEBARTYPE_COMPLEMENT",Table1.CODE_EAN[lNumeroLigne],209)) SI HTrouve (COMPLEMENT_PRODUIT) ALORS SI COMPLEMENT_PRODUIT.VALEUR_NUMERIQUE=1 ALORS lFlagIsVrac = Vrai FIN FIN SINON HLitRecherchePremier("PRODUIT","REFOURN",Table1.REFOURNE[lNumeroLigne]) TANTQUE HTrouve (PRODUIT) ET PAS lFlagIsVrac SI PRODUIT.CODEFOUR=221 ALORS HLitRecherchePremier("COMPLEMENT_PRODUIT","CODEBARTYPE_COMPLEMENT",HConstruitValCle("COMPLEMENT_PRODUIT","CODEBARTYPE_COMPLEMENT",PRODUIT.CODEBAR,209)) SI HTrouve (COMPLEMENT_PRODUIT) ALORS SI COMPLEMENT_PRODUIT.VALEUR_NUMERIQUE=1 ALORS lFlagIsVrac = Vrai FIN FIN FIN HLitSuivant("PRODUIT","REFOURN") FIN FIN SI lFlagIsVrac ALORS lLignes+="L;" lLignes+=SansEspace (Table1.REFOURNE[lNumeroLigne])+";" lLignes+=SansEspace (Table1.CODE_EAN[lNumeroLigne])+";" lLignes+=Remplace (NumeriqueVersChaine(Table1.QTE[lNumeroLigne],"12.3f"),".",",")+";" lLignes+="KG" SINON lLignes+="L;" lLignes+=SansEspace (Table1.REFOURNE[lNumeroLigne])+";" lLignes+=SansEspace (Table1.CODE_EAN[lNumeroLigne])+";" lLignes+=NumeriqueVersChaine(PartieEntiere(Table1.QTE_UV[lNumeroLigne]),"05d")+";" lLignes+="PCS" FIN SINON FIN FIN fSauveTexte(LnomFichierOUT,lEntete+RC+lLignes) NomFIC_DEST = fExtraitChemin (LnomFichierOUT,fFichier+fExtension) IdFTP = FTPConnecte (AdresseIP_FTP,Login_FTP,Passw_FTP,Port_FTP,ModePAssif) SI IdFTP<>-1 ALORS ConfirmationEnvoi = Faux SI FTPTaille(IdFTP,Path_DEST+"_"+NomFIC_DEST)=-1 ALORS // il n'y a pas de fichier en attente de transfert ConfirmationEnvoi = Vrai SINON // Erreur SI FTPTaille (IdFTP,Path_DEST+NomFIC_DEST)=-1 ALORS ConfirmationEnvoi = Vrai SI PAS FTPRenommeFichier(IdFTP,Path_DEST+"_"+NomFIC_DEST,Path_DEST+NomFIC_DEST) ALORS MonMsg="Impossible de renommer en FTP @LAST@ en @NEW@" MonMsg = Remplace(MonMsg,"@LAST@",Path_DEST+"_"+NomFIC_DEST) MonMsg = Remplace(MonMsg,"@NEW@",Path_DEST+NomFIC_DEST) Erreur_TRF(MonMsg) ConfirmationEnvoi = Faux FIN SINON ConfirmationEnvoi = Faux FIN FIN SI ConfirmationEnvoi ALORS SI FTPEnvoie (IdFTP,LnomFichierOUT,Path_DEST+"Tmp_"+NomFIC_DEST,"",ftpModeBinaire) ALORS //trace ("renomme "+"Tmp_"+NomFIC_DEST+" en "+NomFIC_DEST) SI PAS FTPRenommeFichier(IdFTP,Path_DEST+"Tmp_"+NomFIC_DEST,Path_DEST+NomFIC_DEST) ALORS MonMsg="Impossible de renommer en FTP @LAST@ en @NEW@" MonMsg = Remplace(MonMsg,"@LAST@",Path_DEST+"_"+NomFIC_DEST) MonMsg = Remplace(MonMsg,"@NEW@",Path_DEST+NomFIC_DEST) Erreur_TRF(MonMsg) SINON LIST_CMDES.DATE_EMISSION=DateSys() LIST_CMDES.ADRESSE_FACTURATION="" HModifie ("LIST_CMDES") Erreur_TRF("OK ! LA COMMANDE A ETE ENVOYEE A LA CENTRALE !!!!"+RC+"Votre commande est en cours d'archivage") SI g_is_Cnx_Importauto_OK =Vrai ALORS HAnnuleDeclaration(g_src_Importauto_ARTICLES) HAnnuleDeclaration(g_Src_Importauto_CODE_EAN) HAnnuleDeclaration(g_Src_ImportAuto_ConditionAchat) g_is_Cnx_Importauto_OK = Faux FIN FTPDeconnecte (IdFTP) Ferme("BON_COMMANDE") Ferme("BON_COMMANDE_CENTRAL") FIN SINON Erreur_TRF(ErreurInfo()) FIN FIN pg_archive(LnomFichierOUT,Vrai) FTPDeconnecte (IdFTP) SINON Erreur_TRF("Impossible de se connecter au serveur de la centrale") FIN SINON Erreur("Impossible de generer la commande : Enregistrement LIST_CMDES.NUM_COMMANDE = "+l_numero_com+" Introuvable") FIN SINON Erreur("Impossible de generer la commande : Contactez AEM Softs : Logiciel mal installe (Code Client = 0 dans IMPORTAUTO.INI)") FIN SINON Erreur("Impossible de generer la commande : Contactez AEM Softs : Logiciel mal installe (Base de registre non trouvee)") FIN FIN SI g_is_Cnx_Importauto_OK =Vrai ALORS HAnnuleDeclaration(g_src_Importauto_ARTICLES) HAnnuleDeclaration(g_Src_Importauto_CODE_EAN) HAnnuleDeclaration(g_Src_ImportAuto_ConditionAchat) g_is_Cnx_Importauto_OK = Faux FIN SI LnomFichierOUT<>"" _ET_ fFichierExiste(LnomFichierOUT) ALORS pg_archive(LnomFichierOUT,Vrai) FIN SI AnnulationTransmission ALORS Ferme ("BON_COMMANDE_CENTRAL") FIN