145 lines
6.2 KiB
JavaScript
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;
|
|
}
|