MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces

svn path=/Mareon/trunk/; revision=67491
This commit is contained in:
Marcel Bourseau
2024-12-31 15:29:03 +00:00
parent 9bd3750ba5
commit a6da51d3f6
10 changed files with 183 additions and 21 deletions

View File

@@ -790,8 +790,9 @@ function MARX_LOG_XML_SETTINGS()
// 1.91 -- MARX#84766: Viewpoint gevoelig voor HTTP-header "Content-Type"
// 1.92 -- MARX#84162: Mareon SYNC sequentieel per klant
// 1.93 -- MARX#85115: Multi-thread check aanscherpen: onterechte uitvalmails Heyday en Vogellanden
// 1.94 -- MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces
var G_Mareon_Adapter = "1.93";
var G_Mareon_Adapter = "1.94";
//MARX#56643: Test Haagwonen inkoopordernummer ontbreekt in Mareon ION001753
var G_new_date = new Date();
@@ -996,7 +997,20 @@ var G_mar_timeout = 0; //initieel 1e keer.
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)
//MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces: G_mar_statuscommunicatie_mode
var G_mar_statuscommunicatie_mode = parseInt(l_array[14]); // Opdrachtgever maakt gebruik van communicatielogboek (AX webservice UpdatePurchStatus beschikbaar)
var G_mar_communicatielogboek = 0;
if (G_mar_statuscommunicatie_mode == 1 || G_mar_statuscommunicatie_mode == 3) // Opdrachtgever maakt gebruik van communicatielogboek (AX webservice UpdatePurchStatus beschikbaar)
G_mar_communicatielogboek = 1;
var G_mar_status_plus_materiaalregels = 0;
if (G_mar_statuscommunicatie_mode == 2 || G_mar_statuscommunicatie_mode == 3) // Opdrachtgever verwerkt de opdrachtregels tijdens een statusupdate.
G_mar_status_plus_materiaalregels = 1;
__Log("G_mar_statuscommunicatie_mode: " + G_mar_statuscommunicatie_mode, 1);
__Log("G_mar_communicatielogboek: " + G_mar_communicatielogboek, 1);
__Log("G_mar_status_plus_materiaalregels: " + G_mar_status_plus_materiaalregels, 1);
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

View File

@@ -1024,7 +1024,7 @@ function api_3P_inner (v_Url, v_API, v_req, v_type, v_soapAction, v_discard_acti
// v_extraInfo is optionele tekst
// v_dateTime is datum/tijd veld die bij sommige statuscodes verplicht is, bv bij die van GER (gereeddatum/tijd)
function DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, v_applicatie_ID)
function DICO_StatusBericht (v_mld_opdr_key, v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, v_applicatie_ID)
{
//Berichtvoorbeeld
@@ -1140,6 +1140,13 @@ function DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_e
}
v_req = v_req + "</AppointmentDateTimeInformation>";
}
//MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces
if (v_mld_opdr_key != -1 && G_mar_status_plus_materiaalregels == 1)
{
v_req = v_req + F_Make_DICO_005_Opdracht_regels (v_mld_opdr_key, v_statuscode);
}
v_req = v_req + "</InstructionData>";
v_req = v_req + "</MaintenanceStatus>";

View File

@@ -108,7 +108,7 @@ function GEN_AcceptServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "ACC", v_mld_opdr_extrainfo, "-1");
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "ACC", v_mld_opdr_extrainfo, "-1");
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "ACC", v_mld_opdr_extrainfo, "-1");
}
return v_resp;
}
@@ -139,7 +139,7 @@ function GEN_RefuseServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "WEI", v_mld_opdr_extrainfo, "-1");
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "WEI", v_mld_opdr_extrainfo, "-1");
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "WEI", v_mld_opdr_extrainfo, "-1");
}
return v_resp;
}
@@ -171,7 +171,7 @@ function GEN_AnnuleerServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId,
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_mld_opdr_extrainfo, "-1");
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_mld_opdr_extrainfo, "-1");
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_mld_opdr_extrainfo, "-1");
}
return v_resp;
}

View File

@@ -28,8 +28,8 @@ function F_GetOpdrachten_Afgemeld()
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_key";
var v_mld_opdr_key = v_resp.selectSingleNode(l_node).text;
l_node = strQuery + "/mld_opdr_ordernr";
var v_taskId = v_resp.selectSingleNode(l_node).text;
@@ -51,7 +51,7 @@ function F_GetOpdrachten_Afgemeld()
//MARX#56792: XML equivalent van & < > etc toepassen...
v_extraInfo = escapeXml(v_extraInfo);
GEN_CompleteServiceTask(v_company_id, "", "", v_taskId, v_externnr, v_extraInfo, v_dateComplete);
GEN_CompleteServiceTask(v_mld_opdr_key, v_company_id, "", "", v_taskId, v_externnr, v_extraInfo, v_dateComplete);
i = i + 1;
var strQuery = "//xml/mld_ordr[" + i + "]";
@@ -59,7 +59,7 @@ function F_GetOpdrachten_Afgemeld()
}
}
function GEN_CompleteServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_extraInfo, v_dateComplete)
function GEN_CompleteServiceTask(v_mld_opdr_key, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_extraInfo, v_dateComplete)
{
var v_resp;
@@ -85,7 +85,7 @@ function GEN_CompleteServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId,
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "GER", v_extraInfo, v_dateComplete);
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "GER", v_extraInfo, v_dateComplete);
v_resp = THIRDP_SetOpdrachtStatus (v_mld_opdr_key, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "GER", v_extraInfo, v_dateComplete);
}
return v_resp;
}

View File

@@ -85,7 +85,7 @@ function GEN_PlanServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_ex
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "AFH", v_extraInfo, v_date);
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "AFH", v_extraInfo, v_date);
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, "AFH", v_extraInfo, v_date);
}
return v_resp;
}

View File

@@ -85,7 +85,7 @@ function GEN_OnderbreekServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
return v_resp;
}

View File

@@ -356,7 +356,7 @@ function do_exec_opdrstatus(p_order, p_min_fac_tracking_datum_ordupd){
case "ORDAFM":
// Opdracht is technisch voltooid (gereed)
l_response = GEN_CompleteServiceTask(l_ax_company_id, l_woco_gln, l_lev_gln, l_mld_opdr_ordernr, l_mld_opdr_externnr, l_mld_opdr_opmerking, l_mld_opdr_afmelddatum);
l_response = GEN_CompleteServiceTask(l_mld_opdr_key, l_ax_company_id, l_woco_gln, l_lev_gln, l_mld_opdr_ordernr, l_mld_opdr_externnr, l_mld_opdr_opmerking, l_mld_opdr_afmelddatum);
break;
case "ORDAFR":
@@ -411,3 +411,144 @@ function post_do_exec_notification(p_fac_notificatie_key, p_response){
}
//MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces: ophalen van de opdrachtregels van een opdracht.
function F_Make_DICO_005_Opdracht_regels (p_mld_opdr_key, p_statuscode)
{
var l_result = "";
var l_mat_regels = F_GetOpdracht_regels(p_mld_opdr_key);
if (l_mat_regels)
{
var l_aant_regels = l_mat_regels.length;
__Log("Aantal opdrachtenregels: " + l_aant_regels, 3);
for (var i = 0; i < l_aant_regels; i++)
{
//var l_mld_opdr_materiaal_key = l_mat_regels[i].id;
var l_mld_opdr_materiaal_id = l_mat_regels[i].seq;
var l_mld_opdr_materiaal_code = l_mat_regels[i].code;
//var l_mld_opdr_materiaal_groep = l_mat_regels[i].group;
//var l_mld_opdr_materiaal_name0 = l_mat_regels[i].name0;
//TODO: "name0": null, wat is dit?
var l_mld_opdr_materiaal_omschr = l_mat_regels[i].name;
var l_mld_opdr_materiaal_prijs = l_mat_regels[i].price;
//var l_mld_opdr_materiaal_btw = l_mat_regels[i].vat;
//TODO: Let op: BTW, wat is dit, percentage of key?
var l_mld_opdr_materiaal_aantal = l_mat_regels[i].quantity;
//var l_mld_opdr_materiaal_eenheid = l_mat_regels[i].unit;
var l_mld_opdr_materiaal_eenheidcode = l_mat_regels[i].unitcode;
//var l_mld_opdr_materiaal_info = l_mat_regels[i].info;
//var l_mld_opdr_materiaal_extra1 = l_mat_regels[i].extra1;
//var l_mld_opdr_materiaal_extra2 = l_mat_regels[i].extra2;
//var l_mld_opdr_materiaal_extra3 = l_mat_regels[i].extra3;
//var l_mld_opdr_materiaal_extra4 = l_mat_regels[i].extra4;
//var l_mld_opdr_materiaal_externnr = l_mat_regels[i].externnr;
//var l_mld_opdr_materiaal_extsyncdate = l_mat_regels[i].externsyncdate;
l_result += "<InstructionLine>";
l_result += " <LineNumber>" + l_mld_opdr_materiaal_id + "</LineNumber>";
l_result += " <Quantity>" + l_mld_opdr_materiaal_aantal + "</Quantity>";
l_result += " <MeasurementUnitQuantity>" + l_mld_opdr_materiaal_eenheidcode + "</MeasurementUnitQuantity>";
l_result += " <Status>" + p_statuscode + "</Status>";
l_result += " <NormPriceCode>" + l_mld_opdr_materiaal_code.substr(0, 17) + "</NormPriceCode>";
l_result += " <LongDescription>" + l_mld_opdr_materiaal_omschr.substr(0, 70) + "</LongDescription>";
l_result += " <PriceInformation>";
l_result += " <Price>"+ l_mld_opdr_materiaal_prijs + "</Price>";
l_result += " <PriceBase>";
l_result += " <NumberOfUnitsInPriceBasis>1</NumberOfUnitsInPriceBasis>";
l_result += " <MeasureUnitPriceBasis>" + l_mld_opdr_materiaal_eenheidcode + "</MeasureUnitPriceBasis>";
l_result += " </PriceBase>";
l_result += " </PriceInformation>";
l_result += "</InstructionLine>";
}
}
return l_result;
}
//MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces: ophalen van de opdrachtregels van een opdracht.
function F_GetOpdracht_regels (p_mld_opdr_key)
{
// api2/orders/3794332.json?fac_id=MARX&include=materials&pretty=1
var l_url = G_marx_url + "api2/orders/" + p_mld_opdr_key + "?include=materials";
__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);
// Voorbeeld van het resultaat in l_response_JSON
//{
//"order": {
//"id": 3794332,
//"issue": {
// "id": 3706426,
// "name": "3706426"
//},
//...,
//...,
//"externalsyncdate": null,
//"materials": [
//{
// "id": 7462090,
// "seq": 1,
// "code": "11.00.01-bv2",
// "group": null,
// "name0": null,
// "name": "Badkamerverbetering 2m2-uitvoeren",
// "price": 100,
// "vat": null,
// "quantity": 1,
// "unit": "PCE",
// "unitcode": "PCE",
// "info": null,
// "extra1": "MAR3706426/1",
// "extra2": null,
// "extra3": null,
// "extra4": null,
// "externnr": null,
// "externsyncdate": null
//},
//{
// "id": 7462091,
// "seq": 2,
// "code": "11.00.01-K1.7",
// "group": null,
// "name0": null,
// "name": "Keukenopstelling- 1700mm verbetering - uitvoeren",
// "price": 3559.76,
// "vat":{
// "id": 3,
// "name": "Hoog"
// },
// "quantity": 1,
// "unit": "PCE",
// "unitcode": "PCE",
// "info": null,
// "extra1": "MAR3706426/1",
// "extra2": null,
// "extra3": null,
// "extra4": null,
// "externnr": null,
// "externsyncdate": null
//}
//],
//...,
//}
var l_mat_regels;
if (l_response_JSON){
__Log("F_GetOpdracht_regels: GET", 2);
var data = myJSON.parse(l_response_JSON.responseText);
__Log("Opdracht data:" + data, 4);
if ("order" in data)
{ var l_order = data.order;
if ("materials" in l_order)
{
l_mat_regels = l_order.materials;
}
}
}
return l_mat_regels;
}

View File

@@ -80,7 +80,7 @@ function GEN_UitvoeringServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
return v_resp;
}

View File

@@ -83,7 +83,7 @@ function GEN_VerlengServiceTask(v_company_id, v_woco_gln, v_lev_gln, v_taskId, v
v_resp = TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
if (AX_or_Tobias() == "3P") {
v_resp = THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
v_resp = THIRDP_SetOpdrachtStatus (-1, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_externnr, v_statuscode, v_extraInfo, v_date);
}
return v_resp;
}

View File

@@ -51,7 +51,7 @@ function TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_
//default gaan we ervan uit dat de communcatie goed verloopt (lekker positief ingesteld ;-)
var v_resp = {api_status_code: 1, api_status_message: "", api_response_message: ""};
__Log("TQ_SetOpdrachtStatus: " + "Start", 2);
var v_req = DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "TWINQ");
var v_req = DICO_StatusBericht (-1, v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "TWINQ");
var v_API = "";
var v_type = 0;
@@ -64,7 +64,7 @@ function TQ_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_
return v_resp;
}
function THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_purchId, v_statuscode, v_extraInfo, v_dateTime)
function THIRDP_SetOpdrachtStatus (v_mld_opdr_key, v_company_id, v_woco_gln, v_lev_gln, v_taskId, v_purchId, v_statuscode, v_extraInfo, v_dateTime)
{
//default gaan we ervan uit dat de communcatie goed verloopt (lekker positief ingesteld ;-)
var v_resp = {api_status_code: 1, api_status_message: "", api_response_message: ""};
@@ -73,7 +73,7 @@ function THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId
switch (G_3party_id)
{
case "ViewPoint":
var v_req = DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "VIEWPOINT");
var v_req = DICO_StatusBericht (v_mld_opdr_key, v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "VIEWPOINT");
var v_API = "";
var v_type = 0;
var v_soapAction = "messageservice/PostMessage";
@@ -82,7 +82,7 @@ function THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId
var v_resp = apiAX_GENERAL(v_API, v_req, v_type, v_soapAction, v_discard_active_abort, v_soort_api);
break;
case "Empire":
var v_req = DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "EMPIRE");
var v_req = DICO_StatusBericht (v_mld_opdr_key, v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, "EMPIRE");
var v_API = "";
var v_type = 0;
var v_soapAction = "messageservice/PostMessage";
@@ -92,7 +92,7 @@ function THIRDP_SetOpdrachtStatus (v_company_id, v_woco_gln, v_lev_gln, v_taskId
break;
default:
// We vallen standaard terug op DICO, b.v. ook voor Zig/Casix MARX#83688 Implementatie Bouwinvest / Schepvastgoed (Zig/Casix)
var v_req = DICO_StatusBericht (v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, G_3party_id.toUpperCase());
var v_req = DICO_StatusBericht (v_mld_opdr_key, v_woco_gln, v_lev_gln, v_purchId, v_statuscode, v_extraInfo, v_dateTime, G_3party_id.toUpperCase());
var v_API = "";
var v_type = 0;
var v_soapAction = "messageservice/PostMessage";