Files
Mareon/ax/SRC/F_GetOpdrachtenOnderbroken.js
Marcel Bourseau f161ffb7d2 MARX#69220 Koppeling Mareon -> Twinq: statusupdates van opdracht naar Twinq
svn path=/Mareon/trunk/; revision=54249
2021-12-21 15:28:25 +00:00

145 lines
6.2 KiB
JavaScript

// --------------------------------------------------------------------------------------
// F_GetOpdrachtenOnderbroken.js
// Copyright 2019 SG|facilitor. 053-4800 700, helpdesk@mareon.nl
// Written by MB (2019)
//
// --------------------------------------------------------------------------------------
function F_GetOpdrachten_Onderbroken()
{
var v_API = "ONDERBROKEN_OPDR_4AX";
var v_APIKEY = G_marx_apikey;
var v_req = "<GetONDERBROKEN_OPDR_4AX><adapterversion>" + G_Mareon_Adapter + "</adapterversion><APIkey>" + v_APIKEY + "</APIkey></GetONDERBROKEN_OPDR_4AX>"
var v_type = 1; // xml
var v_soap_envelop = 1; //soap-envelop eromheen
var v_resp = apiFCLT(G_marx_url, v_API, v_APIKEY, v_req, v_type, v_soap_envelop, 0);
var l_node;
__Log("F_GetOpdrachten_Onderbroken: " + v_resp.text, 3);
// Uitlezen van XML's...
var i = 1;
var strQuery = "//xml/mld_ordr[" + i + "]";
var l_deelxml = v_resp.selectSingleNode(strQuery);
while (l_deelxml)
{
l_node = strQuery + "/ax_company_id";
var v_company_id = v_resp.selectSingleNode(l_node).text;
l_node = strQuery + "/mld_opdr_ordernr";
var v_taskId = v_resp.selectSingleNode(l_node).text;
l_node = strQuery + "/mld_opdr_externnr";
var v_externnr = v_resp.selectSingleNode(l_node).text;
var l_node = strQuery + "/mld_opdr_opmerking";
var v_extraInfo = v_resp.selectSingleNode(l_node).text;
var l_node = strQuery + "/mld_opdr_onderbreek_code";
var v_statuscode = v_resp.selectSingleNode(l_node).text;
__Log("v_company_id: " + v_company_id,2);
__Log("v_statuscode: " + v_statuscode,2);
__Log("v_taskId: " + v_taskId,2);
__Log("v_externnr: " + v_externnr,2);
__Log("v_extraInfo: " + v_extraInfo,3);
//MARX#56792: XML equivalent van & < > etc toepassen...
v_extraInfo = escapeXml(v_extraInfo);
GEN_OnderbreekServiceTask(v_company_id, "", "", v_taskId, v_statuscode, v_externnr, v_extraInfo, "-1");
i = i + 1;
var strQuery = "//xml/mld_ordr[" + i + "]";
l_deelxml = v_resp.selectSingleNode(strQuery);
}
}
function GEN_OnderbreekServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_statuscode, v_externnr, v_extraInfo, v_date)
{
var v_resp;
if (AX_or_Tobias() == "A") {
v_resp = A_UpdatePurchStatus(v_company_id, v_statuscode, v_externnr, v_extraInfo, v_date);
}
if (AX_or_Tobias() == "A12") {
v_resp = A2012_UpdatePurchStatus(v_company_id, v_statuscode, v_externnr, v_extraInfo, v_date);
}
if (AX_or_Tobias() == "A365") {
v_resp = A365_StatusLog(v_company_id, v_statuscode, v_externnr, v_extraInfo, v_date, 1);
}
if (AX_or_Tobias() == "T") {
v_resp = {api_status_code: 1, api_status_message: "", api_response_message: ""};
}
if (AX_or_Tobias() == "F") {
v_resp = {api_status_code: 1, api_status_message: "", api_response_message: ""};
}
if (AX_or_Tobias() == "R") {
v_resp = R_SetOpdrachtStatus (v_company_id, v_taskId, v_externnr, v_statuscode, "", v_extraInfo);
}
if (AX_or_Tobias() == "TQ") {
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
return v_resp;
}
// Dezelfde functie als GEN_OnderbreekServiceTask, maar wordt alleen uitgevoerd als de onderbreek-status afwijkt van laatst gestuurde onderbreek-status, en nadat bericht is gestuurd, wordt deze laatste
// onderbreekstatus in Mareon vastgelegd/geregistreerd, voor de volgende keer.
function GEN_Conditioneel_OnderbreekServiceTask (v_opdr_key, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_statuscode, v_externnr, v_extraInfo, v_date){
var v_resp;
//Default gaan we ervan uit dat de response goed gaat/is, en dus de notify uit de queue kan...
v_resp = {api_status_code: 1, api_status_message: "", api_response_message: ""};
// Ophalen van laatste gestuurde (in Mareon) geregistreerde onderbreek-code...
v_laatste_statuscode_Mareon = F_GetOpdracht_Laatse_Onderbreekcode (v_opdr_key);
if (v_statuscode != v_laatste_statuscode_Mareon){
// De statuscode die nu wordt gestuurd, wijkt af van de laatste statuscode, dus: opsturen naar ERP odprachtgever...
v_resp = GEN_OnderbreekServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_statuscode, v_externnr, v_extraInfo, v_date);
if (v_resp.api_status_code == 1){
// then goed verwerkt, stuur naar Mareon dat deze (laatst) gestuurde onderbreek-code naar ERP opdrachtgever goed is verwerkt, en registreer deze onderbreek-code, om dubbele berichten te voorkomen
MARX_Send_Succes_Or_Failure(v_opdr_key, "OPDR_POST_ONDERBREEK", v_statuscode);
}
}
else{
__Log("Onderbreek-code " + v_statuscode + " bij opdracht " + v_externnr + " is (al) eerder gestuurd, en wordt hier overgeslagen" ,3);
}
return v_resp;
}
function F_GetOpdracht_Laatse_Onderbreekcode (v_opdr_key)
{
var mld_opdr_onhold_code = "";
var l_url = G_marx_url + "api2/reports/?rapcode=MARX_PREV_ONDERBREEKCODE&mld_opdr_key=" + v_opdr_key;
__Log("l_url: " + l_url,3);
var v_suppress_req_logging = 0; // Logging van request, indien dat gewenst is, niet onderdrukken.
var l_response_JSON = FcltAPI2(G_marx_apikey, "GET", l_url, "", 0, v_suppress_req_logging);
if (l_response_JSON){
__Log("F_GetOpdracht_Laatse_Onderbreekcode: GET", 3);
var data = myJSON.parse(l_response_JSON.responseText);
__Log("Opdracht-onderbreek data:" + data, 4);
if ("marx_v_opdr_prev_onhold_codes" in data)
{ var l_orders = data.marx_v_opdr_prev_onhold_codes;
var l_aant_orders = l_orders.length;
__Log("Aantal opdrachten onderbreek statussen: " + l_aant_orders, 3);
for (var i = 0; i < l_aant_orders; i++)
{
var mld_opdr_onhold_code = l_orders[i].mld_opdr_onhold_code;
__Log("mld_opdr_onhold_code: " + mld_opdr_onhold_code, 4);
}
}
}
return mld_opdr_onhold_code;
}