// -------------------------------------------------------------------------------------- // AxFacilitor.js // Copyright 2014 SG|facilitor. 053-4800 700, helpdesk@sgfacilitor.nl // Written by MB (2014) // // MAREON Connector/Adapter Ax -> FACILITOR en Facilitor -> Ax // -------------------------------------------------------------------------------------- // Scheduled Connector/Adapter voor alle communcatie van Ax -> Facilitor // Staat elke nn minuten gescheduled //var proxy = "127.0.0.1:8888"; // Voor debugging met Fiddler function FCLT_Sync_START(){ F_PutSync(0); } function FCLT_Sync_END(){ var l_erp = AX_or_Tobias(); switch (l_erp) { case "A365": // AX 365 F_PutSync(2); break; case "F": // Facilitor F_PutSync(2); break; default: F_PutSync(1); } } // ----------------------------- AX functies ----------------------------------------- function AX_2_FCLT_ReturnCodes(){ A_GetReturnCodes(); } function AX_2_FCLT_Opdrachten(){ A_GetOpdrachten(); } function FCLT_2_AX_Bijlagen(){ F_GetOpdrachten_Bijlagen(); } function FCLT_2_AX_OpdrachtStatus(){ F_GetOpdrachten_Statussen(); } function FCLT_2_AX_OpmerkingOpdrachten(){ F_GetOpdrachten_Opmerking(); } function FCLT_2_AX_AfgemeldeOpdrachten(){ F_GetOpdrachten_Afgemeld(); } function FCLT_2_AX_GeplandeOpdrachten(){ F_GetOpdrachten_Gepland(); } function FCLT_2_AX_VerlengdeOpdrachten(){ F_GetOpdrachten_Verlengd(); } function FCLT_2_AX_UitvoeringOpdrachten(){ F_GetOpdrachten_Uitvoer(); } function FCLT_2_AX_OnderbrokenOpdrachten(){ F_GetOpdrachten_Onderbroken(); } function FCLT_2_AX_AcceptRefuseOpdracht(){ F_GetOpdrachten_AcceptRefuse(); } // ----------------------------- AX2012 functies ----------------------------------------- function AX2012_2_FCLT_Opdrachten(){ A2012_GetOpdrachten(); } function FCLT_2_AX2012_Bijlagen(){ F_GetOpdrachten_Bijlagen(); } function FCLT_2_AX2012_OpdrachtStatus(){ F_GetOpdrachten_Statussen(); } function FCLT_2_AX2012_OpmerkingOpdrachten(){ F_GetOpdrachten_Opmerking(); } function FCLT_2_AX2012_AfgemeldeOpdrachten(){ F_GetOpdrachten_Afgemeld(); } function FCLT_2_AX2012_GeplandeOpdrachten(){ F_GetOpdrachten_Gepland(); } function FCLT_2_AX2012_VerlengdeOpdrachten(){ F_GetOpdrachten_Verlengd(); } function FCLT_2_AX2012_UitvoeringOpdrachten(){ F_GetOpdrachten_Uitvoer(); } function FCLT_2_AX2012_OnderbrokenOpdrachten(){ F_GetOpdrachten_Onderbroken(); } function FCLT_2_AX2012_AcceptRefuseOpdracht(){ F_GetOpdrachten_AcceptRefuse(); } // ----------------------------- Tobias functies ----------------------------------------- function Tobias_2_FCLT_Opdrachten(){ T_GetOpdrachten(); } function FCLT_2_Tobias_OpmerkingOpdrachten(){ F_GetOpdrachten_Opmerking(); } function FCLT_2_Tobias_AcceptRefuseOpdracht(){ F_GetOpdrachten_AcceptRefuse(); } function FCLT_2_Tobias_GeplandeOpdrachten(){ F_GetOpdrachten_Gepland(); } function FCLT_2_Tobias_AfgemeldeOpdrachten(){ F_GetOpdrachten_Afgemeld(); } function FCLT_2_Tobias_Facturen(){ F_GetFacturen_Tobias(); } // ----------------------------- Facilitor functies ----------------------------------------- function MARX_2_FCLT_NEW_Opdrachten(){ F_GetOpdrachten_NEW(); } function MARX_2_FCLT_Bijlagen(){ F_GetOpdrachten_Bijlagen(); } function MARX_2_FCLT_OpdrachtStatus(){ F_GetOpdrachten_Statussen(); } function MARX_2_FCLT_OpmerkingOpdrachten(){ F_GetOpdrachten_Opmerking(); } function MARX_2_FCLT_AcceptRefuseOpdracht(){ F_GetOpdrachten_AcceptRefuse(); } function MARX_2_FCLT_GeplandeOpdrachten(){ F_GetOpdrachten_Gepland(); } function MARX_2_FCLT_AfgemeldeOpdrachten(){ F_GetOpdrachten_Afgemeld(); } function MARX_2_FCLT_AfgerondeOpdrachten(){ F_GetOpdrachten_FinancAfgerond(); } function MARX_2_FCLT_Facturen(){ F_GetFacturen_FCLT(); } // ----------------------------- REMS functies ----------------------------------------- function REMS_2_MARX_Opdrachten(){ R_GetOpdrachten(); } function MARX_2_REMS_OpmerkingOpdrachten(){ F_GetOpdrachten_Opmerking(); } function MARX_2_REMS_OpdrachtStatus(){ F_GetOpdrachten_Statussen(); } function MARX_2_REMS_AcceptRefuseOpdracht(){ F_GetOpdrachten_AcceptRefuse(); } function MARX_2_REMS_GeplandeOpdrachten(){ F_GetOpdrachten_Gepland(); } function MARX_2_REMS_AfgemeldeOpdrachten(){ F_GetOpdrachten_Afgemeld(); } function MARX_2_REMS_Facturen(){ F_GetFacturen_REMS(); } // ----------------------------- Xtractor functies ----------------------------------------- function FCLT_2_AX_Facturen(){ F_GetFacturen_AX(); } // ----------------------------- ----------------------------------------- function Ax_2_FACILITOR() { if (G_push_notifyqueue == "0"){ //start then-tak pull // Als de koppeling niet via PUSH verloopt, dan zelf de opdrachten uit AX halen (PULL), en de statusupdates via diverse views obv laatste tracking-key __Log("*** START AX --> FCLT : Opdrachten uit AX en naar Facilitor ***", 2); AX_2_FCLT_Opdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX : Opmerking opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_OpmerkingOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX : Geaccepteerde/geweigerde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_AcceptRefuseOpdracht(); __Log("*** END", 2); __Log("*** START FCLT --> AX : Geplande opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_GeplandeOpdrachten(); __Log("*** END", 2); if (G_mar_communicatielogboek == 1){ __Log("*** Communicatie logboek AAN", 2); __Log("*** START FCLT --> AX : Verlengde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_VerlengdeOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX : Opdrachten in uitvoering uit Facilitor naar AX ***", 2); FCLT_2_AX_UitvoeringOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX : Onderbroken opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_OnderbrokenOpdrachten(); __Log("*** END", 2); } else{ __Log("*** Communicatie logboek UIT", 2); } if (G_mar_sync_bijlages_naar_opdrgvr != '0'){ __Log("*** START FCLT --> AX : Bijlagen bij opdrachten uit Mareon naar AX ***", 2); FCLT_2_AX_Bijlagen(); __Log("*** END", 2); } __Log("*** START FCLT --> AX : Afgemelde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX_AfgemeldeOpdrachten(); __Log("*** END", 2); } // einde then-tak "pull" else { //start else-tak "push/notifyqueue" //Totdat AX nog geen push-mechanisme heeft, gaan we de opdrachtverstrekking nog PULLEN! //Zodra AX2012 wel push-mechanisme heeft, verloopt de opdrachtverstrekking buiten de sync, en kan dit stukje komen te vervallen... __Log("*** START AX --> FCLT : Opdrachten uit AX en naar Facilitor ***", 2); AX_2_FCLT_Opdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Verwerken van ALLE opdrachtstatussen uit Mareon Facilitor naar AX obv notifyqueue ***", 2); FCLT_2_AX_OpdrachtStatus(); __Log("*** END", 2); //einde else-tak "push/notifyqueue" } } function Ax2012_2_FACILITOR() { if (G_push_notifyqueue == "0"){ //start then-tak pull // Als de koppeling niet via PUSH verloopt, dan zelf de opdrachten uit AX halen (PULL), en de statusupdates via diverse views obv laatste tracking-key __Log("*** START AX2012 --> FCLT : Opdrachten uit AX en naar Facilitor ***", 2); AX2012_2_FCLT_Opdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Opmerking opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_OpmerkingOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Geaccepteerde/geweigerde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_AcceptRefuseOpdracht(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Geplande opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_GeplandeOpdrachten(); __Log("*** END", 2); if (G_mar_communicatielogboek == 1){ __Log("*** Communicatie logboek AAN", 2); __Log("*** START FCLT --> AX2012 : Verlengde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_VerlengdeOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Opdrachten in uitvoering uit Facilitor naar AX ***", 2); FCLT_2_AX2012_UitvoeringOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Onderbroken opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_OnderbrokenOpdrachten(); __Log("*** END", 2); } else{ __Log("*** Communicatie logboek UIT", 2); } // Alleen bij pull (niet bij push), de bijlages opvragen van ALLE(!) opdrachten op basis van sync-datum // PS Bij push doen we dat per opdracht... if (G_mar_sync_bijlages_naar_opdrgvr != '0'){ __Log("*** START FCLT --> AX2012 : Bijlagen bij opdrachten uit Mareon naar AX ***", 2); //Bijlages naar AX2012 kan alleen via Token icm Saxton AX-webservice(s). Op soortgelijke (bijna identieke wijze) als AX365. //--------------- __Log("*** START AX2012 --> FCLT : Get Token ***", 2); G_Token = ReadTokenFromFile(); __Log("G_Token ReadTokenFromFile:" + G_Token, 4); if (G_Token == ""){ __Log("G_Token ReadTokenFromFile is leeg:", 4); G_Token = A2012_GetToken(); } __Log("*** END Get Token", 2); //--------------- FCLT_2_AX2012_Bijlagen(); __Log("*** END", 2); } // En tenslotte obv PULL de afgemelde opdrachten nog. __Log("*** START FCLT --> AX2012 : Afgemelde opdrachten uit Facilitor naar AX ***", 2); FCLT_2_AX2012_AfgemeldeOpdrachten(); __Log("*** END", 2); } // einde then-tak "pull" else { //start else-tak "push/notifyqueue" //Totdat AX nog geen push-mechanisme heeft, gaan we de opdrachtverstrekking nog PULLEN! //Zodra AX2012 wel push-mechanisme heeft, verloopt de opdrachtverstrekking buiten de sync, en kan dit stukje komen te vervallen... __Log("*** START AX2012 --> FCLT : Opdrachten uit AX en naar Facilitor ***", 2); AX2012_2_FCLT_Opdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> AX2012 : Verwerken van ALLE opdrachtstatussen uit Mareon Facilitor naar AX obv notifyqueue ***", 2); FCLT_2_AX2012_OpdrachtStatus(); __Log("*** END", 2); //einde else-tak "push/notifyqueue" } } function AX365_2_FACILITOR() { __Log("*** START AX365 --> FCLT : Get Token ***", 2); G_Token = ReadTokenFromFile(); __Log("G_Token ReadTokenFromFile:" + G_Token, 4); if (G_Token == ""){ __Log("G_Token ReadTokenFromFile is leeg:", 4); G_Token = A365_GetToken(); } __Log("*** END Get Token", 2); // Facturen van Mareon -> AX365 FACILITOR_2_Xtractor(); } function Tobias_2_FACILITOR() { // "*** START Tobias --> FCLT : Weiger returncodes/teksten uit Tobias ZIJN ER NIET (i.t.t. AX ***"); __Log("*** START Tobias --> FCLT : Opdrachten uit Tobias en naar Facilitor ***", 2); Tobias_2_FCLT_Opdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> Tobias : Opmerking opdrachten uit Facilitor naar Tobias ***", 2); FCLT_2_Tobias_OpmerkingOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> Tobias : Geaccepteerde/geweigerde opdrachten uit Facilitor naar Tobias ***", 2); FCLT_2_Tobias_AcceptRefuseOpdracht(); __Log("*** END", 2); __Log("*** START FCLT --> Tobias : Geplande opdrachten uit Facilitor naar Tobias ***", 2); FCLT_2_Tobias_GeplandeOpdrachten(); __Log("*** END", 2); __Log("*** START FCLT --> Tobias : Afgemelde opdrachten uit Facilitor naar Tobias ***", 2); FCLT_2_Tobias_AfgemeldeOpdrachten(); __Log("*** END", 2); if (G_ax_xtractorfolder == ""){ __Log("*** START FCLT --> Tobias : Facturen uit Facilitor naar Tobias ***", 2); FCLT_2_Tobias_Facturen(); } else{ // Met name bij Hybride Tobias/AX omgevingen, zoals DWPL __Log("*** NO START FCLT --> Tobias : Facturen verlopen via Xtractor ***", 2); } __Log("*** END", 2); } function MAREON_2_FACILITOR() { if (G_push_notifyqueue == "0"){ //start then-tak pull // Als de koppeling niet via PUSH verloopt, dan zelf de opdrachten uit AX halen (PULL), en de statusupdates via diverse views obv laatste tracking-key if (G_mar_sync_bijlages_opdrgvr != '0' && G_mar_sync_bijlages_opdrgvr != '-1'){ // MARX#57420: Documenten van Tobias AX naar Mareon // 0/leeg = bestanden vanuit opdrachtgever worden niet gedeeld; // <> 0 = bestanden vanuit opdrachtgever wel delen met leverancier, default wordt door import nieuwe woco/opdrachtgever de waarde -1 ingevuld, mn voor Tobias bedoeld, hiermee wordt bereikt dat default wel bijlages wordt uitgewisseld. // LET OP!: vul voor Faciltior kenmerk-key bijlages in, dus key van flexprop van bijlages uit facilitor omgeving, -1 is daarbij geen geldige waarde/key voor kenmerk, en betekent geen uitwisseling) //Deze key voor Facilitor moet derhalve > 0 zijn, anders heeft dat geen zin cq. gaat dat fout. __Log("*** START CUST.FACILITOR.NL --> MAREON : Bijlages van opdrachtgever naar Mareon ***", 2); MARX_2_FCLT_NEW_Opdrachten(); __Log("*** END", 2); } if (G_mar_sync_bijlages_naar_opdrgvr != '0'){ __Log("*** START MAREON --> CUST.FACILITOR.NL : Bijlagen bij opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_Bijlagen(); __Log("*** END", 2); } __Log("*** START MAREON --> CUST.FACILITOR.NL : Opmerking opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_OpmerkingOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Geaccepteerde/geweigerde opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_AcceptRefuseOpdracht(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Geplande opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_GeplandeOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Afgemelde opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_AfgemeldeOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Afgeronde opdrachten uit Mareon naar Facilitor ***", 2); MARX_2_FCLT_AfgerondeOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Facturen uit Mareon naar Facilitor ***", 2); if (G_fclt_factuur_xmlfolder != ""){ MARX_2_FCLT_Facturen(); } __Log("*** END", 2); } // einde then-tak "pull" else{ //start else-tak "push/notifyqueue" __Log("*** START FCLT --> AX2012 : Verwerken van ALLE opdrachtstatussen uit Mareon naar Facilitor obv notifyqueue ***", 2); MARX_2_FCLT_OpdrachtStatus(); __Log("*** END", 2); __Log("*** START MAREON --> CUST.FACILITOR.NL : Facturen uit Mareon naar Facilitor ***", 2); if (G_fclt_factuur_xmlfolder != ""){ MARX_2_FCLT_Facturen(); } __Log("*** END", 2); //einde else-tak "push/notifyqueue" } } function REMS_2_MAREON() { if (G_push_notifyqueue == "0"){ //start then-tak pull // Als de koppeling niet via PUSH verloopt, dan zelf de opdrachten uit AX halen (PULL), en de statusupdates via diverse views obv laatste tracking-key __Log("*** START REMS --> MAREON.NL : Nieuwe opdrachten uit REMS naar Mareon ***", 2); REMS_2_MARX_Opdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> REMS : Opmerking opdrachten uit Mareon naar REMS ***", 2); MARX_2_REMS_OpmerkingOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> REMS : Geaccepteerde/geweigerde opdrachten uit Mareon naar REMS ***", 2); MARX_2_REMS_AcceptRefuseOpdracht(); __Log("*** END", 2); __Log("*** START MAREON --> REMS : Geplande opdrachten uit Mareon naar REMS ***", 2); MARX_2_REMS_GeplandeOpdrachten(); __Log("*** END", 2); __Log("*** START MAREON --> REMS : Afgemelde opdrachten uit Mareon naar REMS ***", 2); MARX_2_REMS_AfgemeldeOpdrachten(); __Log("*** END", 2); if (G_rems_facturen_xmlfolder != ""){ MARX_2_REMS_Facturen(); } }// einde then-tak "pull" else{ //start else-tak "push/notifyqueue" __Log("*** START FCLT --> AX2012 : Verwerken van ALLE opdrachtstatussen uit Mareon naar REMS obv notifyqueue ***", 2); MARX_2_REMS_OpdrachtStatus(); __Log("*** END", 2); if (G_rems_facturen_xmlfolder != ""){ MARX_2_REMS_Facturen(); } //einde else-tak "push/notifyqueue" } } function FACILITOR_2_Xtractor() { __Log("*** START FCLT --> AX / Tobias/AX : Facturen met status INGEVOERD + AKKOORD uit Facilitor naar AX of Tobias/AX ***", 2); FCLT_2_AX_Facturen(); __Log("*** END", 2); } //-- Versie Mareon adapter // 1.02 -- MARX#37375: Extreem veel API-aanroepen AX_OPDRACHTEN // 1.10 -- MARX#39172: Koppeling AX2012 - Mareon // 1.20 -- MARX#40977: Koppeling Mareon -> Facilitor + MARX#40953: Logging van Mareon sync adapter zelf kunnen opvragen // 1.30 -- MARX#40977: Koppeling REMS -> Facilitor // 1.31 -- MARX#53259: Geen automatische upload log-bestand bij HTTP500 // 1.32 -- MARX#56493: Lege plandatum vanuit Mareon naar Tobias-AX wordt in AX2012 niet verwerkt. // 1.35 -- MARX#56792: Mareon sync adapter aanpassen tbv nieuwe statussen naar Tobias2012 + MARX#57368: Aanpassing 'huidige' aanroep Tobias-AX webservice ivm communicatie logboek // 1.36 -- MARX#57502: AX Adapter robuuster maken + MARX#57491: Communicatie logboek ook voor Tobias AX 2009 // 1.37 -- MARX#57420: Documenten van Tobias AX naar Mareon // 1.38 -- MARX#60079: Mareon inrichten voor reversible billing KPN // 1.40 -- MARX#59862: Tobias 365 - Mareon // 1.41 -- MARX#61048: Documenten versturen van Mareon naar AX // 1.50 -- MARX#62647: Koppeling AX365 - Mareon (Push) var G_Mareon_Adapter = "1.50"; //MARX#56643: Test Haagwonen inkoopordernummer ontbreekt in Mareon ION001753 var G_new_date = new Date(); //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Filepointer voor Logfile var fso = new ActiveXObject("Scripting.FileSystemObject"); // Parameter: // 1) Naam van de configuratie-xml met settings. var G_settings_xml_file = WScript.Arguments(0); var G_log_level = Read_Ini_Setting("common","logging"); __Log("************************************************** START Mareon Adapter ***********************************************", 0); var G_ax_url = Read_Ini_Setting("ax","url"); var G_ax_url_serviceax = Read_Ini_Setting("ax","url_serviceax"); var G_ax2012_url = Read_Ini_Setting("ax2012","url"); var G_ax2012_url_serviceax = Read_Ini_Setting("ax2012","url_serviceax"); var G_ax2012_logonAs = Read_Ini_Setting("ax2012", "logonAs"); var G_ax2012_bcProxy = Read_Ini_Setting("ax2012", "bcProxy"); var G_ax365_url = Read_Ini_Setting("ax365","url"); var G_Token = ""; // In een (1) sync sessie mogen er max 3 x een poging worden gedaan (= eigen keuze) om een Token op te halen indien deze expired zou zijn (om niet in oneindige loop te raken). var G_AX365_Allowed_Get_Token = 3; var G_tobias_url = Read_Ini_Setting("tobias","url"); var G_fclt_url = Read_Ini_Setting("fclt","url"); var G_fclt_apikey = Read_Ini_Setting("fclt","apikey"); var G_fclt_factuur_xmlfolder = Read_Ini_Setting("fclt","factuur/xmlfolder"); var G_fclt_factuur_pdffolder = Read_Ini_Setting("fclt","factuur/pdffolder"); var G_rems_opdracht_xmlfolder = Read_Ini_Setting("rems","opdrachtenfolder"); var G_rems_opdrachtstatus_xmlfolder = Read_Ini_Setting("rems","opdrachtstatusfolder"); var G_rems_facturen_xmlfolder = Read_Ini_Setting("rems","facturenfolder"); var G_ax_xtractorfolder = Read_Ini_Setting("xtractor","xmlfolder"); var G_pdf_xtractorfolder = Read_Ini_Setting("xtractor","pdffolder"); var G_ax_succeededfolder = Read_Ini_Setting("xtractor", "succeededfolder"); var G_ax_rejectedfolder = Read_Ini_Setting("xtractor", "rejectedfolder"); // Microsoft Token instellingen var G_ID_url = Read_Ini_Setting("identityserver","token/url"); var G_ID_client_id = Read_Ini_Setting("identityserver","token/client_id"); var G_ID_client_secret = Read_Ini_Setting("identityserver","token/client_secret"); var G_ID_grant_type = Read_Ini_Setting("identityserver","token/grant_type"); var G_ID_resource = Read_Ini_Setting("identityserver","token/resource"); var G_ID_scope = Read_Ini_Setting("identityserver","token/scope"); // Mareon instellingen, de term (XML node) "facilitor" is ivm historie cq. alle locale installaties bij woco's niet 1-2-3 aan te passen in de veel logischere term mareon. var G_marx_url = Read_Ini_Setting("facilitor","url"); var G_marx_apikey = Read_Ini_Setting("facilitor","apikey"); //MARX#57502: AX Adapter robuuster maken, instelbare timeout var G_mar_timeout = 0; //initieel 1e keer. __Log("***Mareon Adapter - versie: " + G_Mareon_Adapter, 1); //Eerst de xml settings loggen __Log("***XML- common/logging: " + G_log_level, 1); __Log("***XML- ax/url(SupplierService): " + G_ax_url, 1); __Log("***XML- ax/url(ServiceAX): " + G_ax_url_serviceax, 1); __Log("***XML- ax2012/url(SupplierService): " + G_ax2012_url, 1); __Log("***XML- ax2012/url(ServiceAX): " + G_ax2012_url_serviceax, 1); __Log("***XML- tobias/url: " + G_tobias_url, 1); __Log("***XML- facilitor/url: " + G_fclt_url, 1); __Log("***XML- facilitor/factuur/xmlfolder: " + G_fclt_factuur_xmlfolder, 1); __Log("***XML- facilitor/factuur/pdffolder: " + G_fclt_factuur_pdffolder, 1); __Log("***XML- rems/opdrachtenfolder: " + G_rems_opdracht_xmlfolder, 1); __Log("***XML- rems/opdrachtstatusfolder: " + G_rems_opdrachtstatus_xmlfolder, 1); __Log("***XML- rems/facturenfolder: " + G_rems_facturen_xmlfolder, 1); __Log("***XML- microsoft/token/url: " + G_ID_url, 1); __Log("***XML- mareon/url: " + G_marx_url, 1); __Log("***XML- xtractor/xmlfolder: " + G_ax_xtractorfolder, 1); __Log("***XML- xtractor/pdffolder: " + G_pdf_xtractorfolder, 1); __Log("***XML- xtractor/succeededfolder: " + G_ax_succeededfolder, 1); __Log("***XML- xtractor/rejectedfolder: " + G_ax_rejectedfolder, 1); if (G_marx_apikey == "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"){ // Vergeten de default/voorbeeld API key in mareon.xml in te vullen __Log("Invalid API key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 2); __Log("************************************************** END Mareon Adapter ***********************************************", 1); } else{ // Haal de Mareon-info uit Facilitor die geregistreerd zijn voor deze woco... // In de array staan achtereenvolgens (op plaats 0 en 1): // - min_adapter_version // - mar_connection_allowed l_array = F_GetMareonInfo(); //MARX#40953: Logging van Mareon sync adapter zelf kunnen opvragen v_loglevel = l_array[9]; if (v_loglevel != ""){ G_log_level = v_loglevel; __Log("***XML- common/logging G_log_level is overruled by Mareon :" + v_loglevel, 1); } v_date_sendlogfile = l_array[10]; // format "yyyy-mm-dd" if (v_date_sendlogfile != "") { FCLT_SendLogFile(v_date_sendlogfile); } //MARX#52112: Mogelijkheid om (per opdrachtgever) Mareon Sync afbreken bij een HTTP error var G_abort_http_error = parseInt(l_array[11]); //0 (not abort) or 1 (do abort) in case of HTTP status < 200 or > 299. var G_mar_timeout = parseInt(l_array[15]); // Instelbare timeout die wordt gebruikt bij aanroepen van de (AX/FCLT)-webservices, default = 30 sec (30000 milli sec) // MARX#59862: Tobias 365 - Mareon var G_bedrijf_key = l_array[18]; // Key van woco-bedrijf // MARX#62647: Koppeling AX365 - Mareon (Push) var G_push_notifyqueue = parseInt(l_array[26]); // 0 (no push koppeling) or 1 (push koppeling) v_woco = l_array[2]; // Naam van de woco-bedrijf __Log("*** Company: " + v_woco, 2); v_min_adapter_version = l_array[0]; // Versienummer, iets als "1", of "1.1", of "1.23" etc v_mar_connection_allowed = l_array[1]; // 0 (not allowed to connect) of 1 (= allowed to connect) if (G_Mareon_Adapter >= v_min_adapter_version){ if (v_mar_connection_allowed == '1'){ // Connection is allowed __Log("Connection allowed", 1); FCLT_Sync_START(); //MARX#37375: nu- NA de start!!- halen we de nieuwe sync-data nog eens op. Met name hier cruciaal het moment van ophalen, dat MOET na de START van de sync. // want na de start van de sync is het gegeven 'MAR_SYNC_OPDR_PAST_SECS_STOP' pas correct. // dit gegeven wordt namelijk gebaseerd op 'sync_date_now' die in de DB in de procedure mar_update_ax_sync is gezet, en dat gebeurt dus in de start-sync. Vandaar! l_array = F_GetMareonInfo(); var G_mar_sync_opdr_past_days = parseInt(l_array[6]); var G_mar_sync_opdr_past_secs_start = parseInt(l_array[7]); var G_mar_sync_opdr_past_secs_stop = parseInt(l_array[8]); var G_mar_sync_date_now = l_array[12]; // Timestamp *now* in format yyyy-mm-ddThh:mm:ss var G_mar_sync_date_last = l_array[3]; // Timestamp last connection in format yyyy-mm-ddThh:mm:ss var G_mar_sync_buffer = parseInt(l_array[13]); // Buffer in seconds, extra time overload (overlap van extra tijd) var G_mar_communicatielogboek = parseInt(l_array[14]); // Opdrachtgever maakt gebruik van communicatielogboek (AX webservice UpdatePurchStatus beschikbaar) var G_mar_sync_bijlages_opdrgvr = l_array[16]; // Bijlages vanuit opdrachtgever worden gedeeld met leverancier indien niet leeg/0. Voor Facilitor vullen met de flexprop-key var G_mar_sync_bijlages_naar_opdrgvr = l_array[17]; // Bijlages vanuit opdrachtnemer worden gedeeld met opdrachtgever indien niet leeg/0. Voor Facilitor vullen met de flexprop-key //MARX62284: Identityserver gegevens (tbv AX2012) niet in mareon sync.xml var v_ax2012_bcproxy = l_array[19]; if (v_ax2012_bcproxy != ""){ G_ax2012_bcProxy = v_ax2012_bcproxy; __Log("***XML- G_ax2012_bcProxy is overruled by Mareon", 3); } var v_ID_url = l_array[20]; if (v_ID_url != ""){ G_ID_url = v_ID_url; __Log("***XML- G_ID_url is overruled by Mareon", 3); } var v_ID_client_id = l_array[21]; if (v_ID_client_id != ""){ G_ID_client_id = v_ID_client_id; __Log("***XML- G_ID_client_id is overruled by Mareon", 3); } var v_ID_client_secret = l_array[22]; if (v_ID_client_secret != ""){ G_ID_client_secret = v_ID_client_secret; __Log("***XML- G_ID_client_secret is overruled by Mareon", 3); } var v_ID_grant_type = l_array[23]; if (v_ID_grant_type != ""){ G_ID_grant_type = v_ID_grant_type; __Log("***XML- G_ID_grant_type is overruled by Mareon", 3); } var v_ID_resource = l_array[24]; if (v_ID_resource != ""){ G_ID_resource = v_ID_resource; __Log("***XML- G_ID_resource is overruled by Mareon", 3); } var v_ID_scope = l_array[25]; if (v_ID_scope != ""){ G_ID_scope = v_ID_scope; __Log("***XML- G_ID_scope is overruled by Mareon", 3); } if (AX_or_Tobias() == "A") { __Log("AX2009", 2); Ax_2_FACILITOR(); } if (AX_or_Tobias() == "A12") { __Log("AX2012", 2); Ax2012_2_FACILITOR(); } if (AX_or_Tobias() == "A365") { __Log("AX365", 2); AX365_2_FACILITOR(); } if (AX_or_Tobias() == "T") { __Log("TOBIAS", 2); Tobias_2_FACILITOR(); } if (AX_or_Tobias() == "F") { __Log("FACILITOR", 2); MAREON_2_FACILITOR(); } if (AX_or_Tobias() == "R") { __Log("REMS", 2); REMS_2_MAREON(); } if (G_ax_xtractorfolder != "") { FACILITOR_2_Xtractor(); } FCLT_Sync_END(); } else{ v_last_connect = l_array[3]; // format "2015-07-22T13:00" v_connect_after = l_array[4]; // format "2015-07-22T12:30:22" __Log("Connection NOT allowed (yet)", 1); __Log("Last Connection: " + v_last_connect, 1); __Log("Connection allowed after: " + v_connect_after, 1); } } else{ __Log("Invalid Mareon adapter version", 0); } __Log("************************************************** END Mareon Adapter ***********************************************", 0); __Log("", 1); if (v_date_sendlogfile != "") { FCLT_SendLogFile(v_date_sendlogfile); } }