// Résumé : // Syntaxe : // communication_SKECHERS () // // Paramètres : // Aucun // Valeur de retour : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // PROCEDURE communication_SKECHERS() num_fic_store est un entier NomFichier est une chaîne IdFTP est un entier machaine est une chaîne CADENCIER_CODEEAN est une Source de Données CADENCIER_CODEEAN_estOK est un booléen LIBELLES_CODES_IMPORTAUTO est une Source de Données LIBELLES_CODES_IMPORTAUTO_estOK est un booléen COMPLEMENT_PRODUIT_IMPORTAUTO est une Source de Données COMPLEMENT_PRODUIT_IMPORTAUTO_estOK est un booléen AdresseIP_FTP est une chaîne Login_FTP est une chaîne Passw_FTP est une chaîne Port_FTP est un entier ModePAssif est un booléen Path_DEST est une chaîne NomFIC_DEST est une chaîne MonMsg est une chaîne ConfirmationEnvoi est un booléen l_nom_rayon est une chaîne l_taille est une chaîne machaine_CodeSRC,sResultatCompile est une chaîne madatereception est une chaîne madateCommande est une chaîne l_envoi_ok est un booléen mess_erreur est une chaîne nbjour est un entier l_customer est une chaîne l_account est une chaîne l_StoreNum est une chaîne lcmd_Diviseur_Qte est un entier lcmd_Diviseur_Remise est un entier sval est une chaîne svalrech est une chaîne l_traite_bloc est un booléen nb_a_rajout est un entier lTitreEmail est une chaîne CorpsEmail est une chaîne mon_code_four est un entier EmailDEST est une chaîne ldeliveryDate est une chaîne lStartDate est une chaîne lCancelDate est une chaîne lOrderDate est une chaîne lErreurDeSaisie est un booléen ldeliveryDateTheorique est un chaîne lRetourChoixMag est une chaîne nbjours_a_Dec est un entier nbjours_a_Add est un entier StoresMulti est un booléen NbStoresAccount est un entier lListeStores est une chaîne SI pg_lit_options("DECIMALES_COMMANDES") ALORS lcmd_Diviseur_Remise = 1000 lcmd_Diviseur_Qte=1000 SINON lcmd_Diviseur_Remise = 1 lcmd_Diviseur_Qte=1 FIN nbjour=Val (INILit ("CENTRALE_CMDE","NB_JOUR","5",g_rep_dataencours+"\PARAM_COMMUN.INI")) // Auto mise à jour du programme SI HTTPRequête("http://intranet.aemsofts.com/DOWNLOAD/client/SKECHERS/SKECHERS-DEBLOCAGE.CNX") ALORS machaine_CodeSRC=HTTPDonneRésultat() sResultatCompile = Compile("Test_dynamique", machaine_CodeSRC) SELON sResultatCompile CAS "" : // Compilation OK fSauveTexte (g_rep_dataencours+"\SKECHERS-DEBLOCAGE.CNX",machaine_CodeSRC) FIN // On décompile sResultatCompile = Compile("Test_dynamique", "") FIN SI g_importauto_Present ALORS l_customer=INILit("IMPORT_EXPORT","CODE_MAG","",g_Path_importauto+"\DATA\IMPORTAUTO.INI") l_account=INILit("IMPORT_EXPORT","CODE_GEOD","",g_Path_importauto+"\DATA\IMPORTAUTO.INI") l_StoreNum=INILit("IMPORT_EXPORT","CODE_MAG_STORENO","0001",g_Path_importauto+"\DATA\IMPORTAUTO.INI") INIEcrit("IMPORT_EXPORT","CODE_MAG_STORENO",l_StoreNum,g_Path_importauto+"\DATA\IMPORTAUTO.INI") NomFichier = g_rep_dataencours+"\COMMANDE_"+NumériqueVersChaîne(l_numero_com)+"_SKECHERS_"+l_customer+"_"+l_account+".csv" l_traite_bloc=Val(INILit("IMPORT_EXPORT","GESTION_BLOC","0",g_Path_importauto+"\DATA\IMPORTAUTO.INI")) SINON NomFichier = g_rep_dataencours+"\COMMANDE_"+NumériqueVersChaîne(l_numero_com)+"_SKECHERS_"+NumériqueVersChaîne(g_numero_magasin)+".csv" FIN SI l_traite_bloc ALORS nb_a_rajout=10000 SINON nb_a_rajout=0 FIN // INecrit les adresses dans le fichier PARAM-COMMUN.INI AdresseIP_FTP=INILit ("CENTRALE_CMDE","ADRESSE_IP","sftp://edi-sftp.skechers.com",g_rep_dataencours+"\PARAM_COMMUN.INI") Login_FTP=INILit ("CENTRALE_CMDE","LOGIN_IP","skxfra",g_rep_dataencours+"\PARAM_COMMUN.INI") Passw_FTP=INILit ("CENTRALE_CMDE","PASSW_IP","*jPjVJMzQIK$",g_rep_dataencours+"\PARAM_COMMUN.INI") StoresMulti = Val (INILit ("CENTRALE_CMDE","MULTI_STORES","0",g_rep_dataencours+"\PARAM_COMMUN.INI")) INIEcrit ("CENTRALE_CMDE","MULTI_STORES",NumériqueVersChaîne(StoresMulti),g_rep_dataencours+"\PARAM_COMMUN.INI") // FTP.IgnoreErreur = ftpIgnoreCertificatExpiré + ftpIgnoreCertificatInvalide + ftpIgnoreNomCertificatInvalide + ftpIgnoreRévocation Port_FTP=Val (INILit ("CENTRALE_CMDE","PORT_IP","22",g_rep_dataencours+"\PARAM_COMMUN.INI")) INIEcrit ("CENTRALE_CMDE","PORT_IP",NumériqueVersChaîne(Port_FTP),g_rep_dataencours+"\PARAM_COMMUN.INI") ModePAssif=Val (INILit ("CENTRALE_CMDE","MODE_PASSIF","0",g_rep_dataencours+"\PARAM_COMMUN.INI")) INIEcrit ("CENTRALE_CMDE","MODE_PASSIF",NumériqueVersChaîne(ModePAssif),g_rep_dataencours+"\PARAM_COMMUN.INI") Path_DEST=INILit ("CENTRALE_CMDE","PATH_FTP","send/",g_rep_dataencours+"\PARAM_COMMUN.INI") INIEcrit ("CENTRALE_CMDE","PATH_FTP",Path_DEST,g_rep_dataencours+"\PARAM_COMMUN.INI") lOrderDate = DateSys() lCancelDate="" lStartDate=lOrderDate ldeliveryDate="" // On calcule la Cancel Date nbjours_a_Add = 5 lCancelDate = lOrderDate TANTQUE nbjours_a_Add>0 Retenter_Calc_Cancel: lCancelDate = EntierVersDate(DateVersEntier (lCancelDate)+1) SI EntierVersJour(DateVersEntier (lCancelDate)) DANS (6,7) ALORS GOTO Retenter_Calc_Cancel FIN nbjours_a_Add-- FIN // On calcule la delivery nbjours_a_Add = 2 ldeliveryDate = lCancelDate TANTQUE nbjours_a_Add>0 Retenter_Calc_Delivery: ldeliveryDate = EntierVersDate(DateVersEntier (ldeliveryDate)+1) SI EntierVersJour(DateVersEntier (ldeliveryDate)) DANS (6,7) ALORS GOTO Retenter_Calc_Delivery FIN nbjours_a_Add-- FIN ldeliveryDateTheorique = ldeliveryDate lListeStores="" SI StoresMulti ALORS SI HTTPRequête("http://intranet.aemsofts.com/DOWNLOAD/client/SKECHERS/STORES_"+l_account+".INI") ALORS machaine_CodeSRC=HTTPDonneRésultat() SI PAS Contient (machaine_CodeSRC,"") ALORS fSauveTexte(g_rep_dataencours+["\"]+"SKECHERS.INI",machaine_CodeSRC) NbStoresAccount = Val( INILit ("STORES","NB_STORES","0",g_rep_dataencours+["\"]+"SKECHERS.INI")) //trace (NbStoresAccount) SI NbStoresAccount <>0 ALORS lListeStores="" nbjours_a_Dec = 1 TANTQUE nbjours_a_Dec<=NbStoresAccount SI lListeStores<>"" ALORS lListeStores+=RC lListeStores+=NumériqueVersChaîne(nbjours_a_Dec,"04d")+"- "+INILit ("STORES","STORE"+NumériqueVersChaîne(nbjours_a_Dec),"",g_rep_dataencours+["\"]+"SKECHERS.INI") nbjours_a_Dec++ FIN FIN //Trace (lListeStores) SINON Erreur ("Impossible de télécharger le fichier STORES_"+l_account+".INI") lErreurDeSaisie = Vrai FIN SINON Erreur ("Impossible de télécharger le fichier STORES_"+l_account+".INI") lErreurDeSaisie = Vrai FIN FIN lErreurDeSaisie=Faux SI Ouvre ("choix_date",1,ldeliveryDateTheorique) ALORS SI g_selecteur_date=1 ALORS SI DateValide (g_bornedate1) ALORS ldeliveryDate = g_bornedate1 // On calcule la Cancel Date nbjours_a_Dec = 2 lCancelDate = ldeliveryDate TANTQUE nbjours_a_Dec>0 Retenter_Cancel: lCancelDate = EntierVersDate(DateVersEntier (lCancelDate)-1) SI EntierVersJour(DateVersEntier (lCancelDate)) DANS (6,7) ALORS GOTO Retenter_Cancel FIN nbjours_a_Dec-- FIN // on calcule la Start Date nbjours_a_Dec = 5 lStartDate = lCancelDate TANTQUE nbjours_a_Dec>0 Retenter_Start: lStartDate = EntierVersDate(DateVersEntier (lStartDate)-1) SI EntierVersJour(DateVersEntier (lStartDate)) DANS (6,7) ALORS GOTO Retenter_Start FIN nbjours_a_Dec-- FIN SI lStartDate") ALORS fSauveBuffer(g_repinst+["\"]+"FEN_MULTICHOIX.WDW",HTTPDonneRésultat()) FIN FIN FIN SI fFichierExiste(g_repinst+["\"]+"FEN_MULTICHOIX.WDW") ALORS lRetourChoixMag = Ouvre (g_repinst+["\"]+"FEN_MULTICHOIX.WDW",1,"Choix du Magasin pour déblocage",lListeStores) SI lRetourChoixMag<>"" ALORS SI Val (ExtraitChaîne(lRetourChoixMag,1,"-"))<>0 ALORS l_StoreNum = Val (ExtraitChaîne(lRetourChoixMag,1,"-")) FIN SINON Erreur ("Choix du PDV non effectué") lErreurDeSaisie = Vrai FIN SINON Erreur ("Impossible de charger FEN_MULTICHOIX.WDW") lErreurDeSaisie = Vrai FIN FIN Si pas lErreurDeSaisie alors HLitRecherche("LIST_CMDES","NUM_COMMANDE",l_numero_com) SI HTrouve ("LIST_CMDES") ALORS HLitRecherche("CONT_CMDES","NUM_COMMANDE",LIST_CMDES.NUM_COMMANDE) TANTQUE HTrouve ("CONT_CMDES") si CONT_CMDES.QTE_COMMANDEE=0 alors lErreurDeSaisie=Vrai Fin HLitSuivant("CONT_CMDES","NUM_COMMANDE") Fin Fin Si lErreurDeSaisie alors INFO("Abandon car une des qté = 0") Fin Fin Sablier(Vrai) SI PAS lErreurDeSaisie=Vrai ALORS pg_archive_suppr(fExtraitChemin(NomFichier,fFichier+fExtension)) NomFIC_DEST=fExtraitChemin(NomFichier,fFichier+fExtension) SI l_customer="" OU l_account="" ALORS INFO("Impossible de créer la commande car les identifiants sont inconnus ! ") SINON num_fic_store=fCrée(NomFichier) SI num_fic_store>0 ALORS HDésactiveFiltre("LIST_CMDES") HDésactiveFiltre("CONT_CMDES") HLitRecherche("LIST_CMDES","NUM_COMMANDE",l_numero_com) SI HTrouve ("LIST_CMDES") ALORS LIST_CMDES.ADRESSE_FACTURATION="" SI DateValide (lOrderDate) ALORS LIST_CMDES.ADRESSE_FACTURATION="ORDER Date : "+DateVersChaîne (lOrderDate) LIST_CMDES.ADRESSE_FACTURATION+=RC+Répète ("-",10) FIN SI DateValide(lStartDate) ET DateValide (lCancelDate) ET DateValide(ldeliveryDate) ALORS LIST_CMDES.DATE_COMMANDE = lStartDate LIST_CMDES.DATE_RECEPTION = ldeliveryDate LIST_CMDES.ADRESSE_FACTURATION+=[RC]+"Delivery Date : "+DateVersChaîne (ldeliveryDate) FIN BON_COMMANDE.Onglet1 = 2 BON_COMMANDE.COMMENT_CMDE = LIST_CMDES.ADRESSE_FACTURATION BON_COMMANDE.DATE_CREE=lStartDate BON_COMMANDE.DATE_RECEPTION=ldeliveryDate HModifie ("LIST_CMDES") madateCommande=LIST_CMDES.DATE_COMMANDE; SI PAS DateValide (madateCommande) ALORS madateCommande = DateSys() FIN madatereception=LIST_CMDES.DATE_RECEPTION mon_code_four=LIST_CMDES.CODE_FOURNISSEUR SI DateValide(madatereception) ALORS SI DateVersEntier(madateCommande)+nbjour"" ET NomFIC_DEST<>"" ALORS l_envoi_ok=Faux IdFTP = FTPConnecte (AdresseIP_FTP,Login_FTP,Passw_FTP,Port_FTP,ModePAssif) SI IdFTP<>-1 ALORS ConfirmationEnvoi = Faux SI FTPTaille(IdFTP,Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP")=-1 ET 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 SI PAS FTPRenommeFichier(IdFTP,Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP",Path_DEST+["/"]+NomFIC_DEST) ALORS MonMsg="Impossible de renommer en FTP @LAST@ en @NEW@" MonMsg = Remplace(MonMsg,"@LAST@",Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP") MonMsg = Remplace(MonMsg,"@NEW@",Path_DEST+["/"]+NomFIC_DEST) Erreur_TRF(MonMsg) SINON Erreur_TRF("Cette commande est déjà en attente sur le serveur") FIN SINON Erreur_TRF("Cette commande est déjà en attente sur le serveur") FIN FIN SI ConfirmationEnvoi ALORS SI FTPEnvoie (IdFTP,NomFichier,Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP") ALORS SI PAS FTPRenommeFichier(IdFTP,Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP",Path_DEST+["/"]+NomFIC_DEST) ALORS MonMsg="Impossible de renommer en FTP @LAST@ en @NEW@" MonMsg = Remplace(MonMsg,"@LAST@",Path_DEST+["/"]+fExtraitChemin(NomFIC_DEST,fFichier)+".TMP") MonMsg = Remplace(MonMsg,"@NEW@",Path_DEST+["/"]+NomFIC_DEST) Erreur_TRF(MonMsg) SINON LIST_CMDES.DATE_EMISSION=DateSys() HModifie ("LIST_CMDES") l_envoi_ok=Vrai Erreur_TRF("OK ! LA COMMANDE A ETE ENVOYEE A LA CENTRALE !!!!") FIN SINON Erreur_TRF(ErreurInfo()) FIN FIN FTPDéconnecte (IdFTP) SINON Erreur_TRF("Impossible de se connecter au serveur de la centrale") Erreur(ErreurInfo()) FIN lTitreEmail = INILit ("BON_COMMANDES","TITRE_EMAIL","Bon de commande %1 Num. %2",g_rep_dataencours+["\"]+"PARAM.INI") INIEcrit ("BON_COMMANDES","TITRE_EMAIL",lTitreEmail,g_rep_dataencours+["\"]+"PARAM.INI") CorpsEmail = INILit ("BON_COMMANDES","CORPS_EMAIL", "Bonjour,\n\nVeuillez trouver ci-joint (fichier csv attaché) notre bon de commande N° %1. \n\nCordialement,\n\n\n %2\n%3\n%4\n%5 %6\nTel : %7\nFax :%8\nEmail : %9 " ,g_rep_dataencours+["\"]+"PARAM.INI") INIEcrit ("BON_COMMANDES","CORPS_EMAIL",CorpsEmail,g_rep_dataencours+["\"]+"PARAM.INI") SI l_envoi_ok ALORS lTitreEmail = "Envoi EDI OK : "+ChaîneConstruit(lTitreEmail,l_customer+" "+l_account,l_numero_com) SINON lTitreEmail = "Envoi EDI Echoué : "+ChaîneConstruit(lTitreEmail,l_customer+" "+l_account,l_numero_com) FIN HLitRecherchePremier("CONFIGURATION","NumTPV",1) SI HTrouve("CONFIGURATION") ALORS CorpsEmail = ChaîneConstruit(CorpsEmail,l_numero_com,CONFIGURATION.RAISONID,CONFIGURATION.ADRESSEID,CONFIGURATION.ADRESSE2,CONFIGURATION.CODEID,CONFIGURATION.VILLEID,CONFIGURATION.TELID,CONFIGURATION.FAXID,INILit ("EMAILS","EXPEDITEUR","",g_rep_dataencours+"\PARAM_COMMUN.INI")) FIN CorpsEmail = Remplace (CorpsEmail,"\n",RC) EmailDEST="" HLitRecherchePremier("FOURNISSEUR","CODEFOUR",mon_code_four) SI HTrouve ("FOURNISSEUR") ALORS SI SansEspace (FOURNISSEUR.adresse_mail)<>"" ALORS EmailDEST = SansEspace (FOURNISSEUR.adresse_mail) FIN FIN SELON EmailVérifieAdresse(EmailDEST) CAS emailAdresseValide Ouvre ("ENVOI_EMAIL",1,EmailDEST,lTitreEmail,CorpsEmail,NomFichier,Vrai) mess_erreur+=EmailDEST+" => "+"Message envoyé" CAS emailAdresseSyntaxeIncorrecte mess_erreur+=EmailDEST+" => "+"L'adresse est syntaxiquement fausse" CAS emailAdresseRefusée mess_erreur+=EmailDEST+" => "+"L'adresse a été refusée par le serveur de mails."+RC+ErreurInfo() CAS emailAdresseErreur mess_erreur+=EmailDEST+" => "+"Une erreur s'est produite pendant la vérification."+RC+ErreurInfo() AUTRE CAS mess_erreur+=EmailDEST+" => "+"Erreur verification mail indéterminée"+RC+ErreurInfo() FIN Erreur_TRF(mess_erreur) pg_archive_suppr(fExtraitChemin(NomFichier,fFichier+fExtension)) FIN FIN SINON Erreur_TRF("Transmission ANNULEE") FIN