MARX#69956 Notities bij opdrachten naar de opdrachtgever - Bijlage in notities ook naar opdrachtgever (in geval van AX2012, T365 en Facilitor)

svn path=/Mareon/trunk/; revision=65321
This commit is contained in:
Marcel Bourseau
2024-06-27 14:30:42 +00:00
parent fb81c5842c
commit e92c4eab25
4 changed files with 195 additions and 87 deletions

View File

@@ -109,6 +109,10 @@ function AX2012_2_FCLT_Opdrachten(){
function FCLT_2_AX2012_Bijlagen(){
F_GetOpdrachten_Bijlagen();
//MARX#69956 Notities bij opdrachten naar de opdrachtgever, dan ook evt bijlagen in notities.
if (G_mar_sync_bijlages_naar_opdrgvr == '-1'){
F_GetOpdrachtenNotitie_Bijlagen();
}
}
function FCLT_2_AX2012_OpdrachtStatus(){
@@ -743,7 +747,7 @@ function FACILITOR_2_Xtractor()
// 1.78 -- MARX#81877: Bij een fout in factuurkoppeling naar Viewpoint wordt de factuur toch verwerkt + MARX#81919 Veel timeouts op facturen richting Tobias 365 - NQ lijst + MARX#82680 Verwijderen van XML die door REMS wordt aangeboden,maar niet verwerkt kan worden
// 1.79 -- MARX#82415: Implementatie "Mijande Wonen" (Dynamic Empire van Zig/Cegeka) + MARX#83105 Tobias AX2012 -> T365 conversie met facturenstop + MARX#83688 Implementatie Bouwinvest / Schepvastgoed (Zig/Casix)
// 1.80 -- MARX#81606: Signaleren dat een opdracht gewijzigd is (VM000000566278), t.b.v. (alleen) AX2012 is aanpassing in SYNC nodig (AX2009 worden geen updates meer gedaan, alle andere ERPs verlopen via pushprincipe en doen het)
// 1.90 -- MARX#69956 Notities bij opdrachten naar de opdrachtgever
// 1.90 -- MARX#69956: Notities bij opdrachten naar de opdrachtgever
var G_Mareon_Adapter = "1.90";
//MARX#56643: Test Haagwonen inkoopordernummer ontbreekt in Mareon ION001753

View File

@@ -65,12 +65,12 @@ function FCLT_or_MARX_PutOpdrachtBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_
var l_filename;
var l_file_url;
var l_file_size;
var v_suppress_req_logging = 0; // Logging van request, indien dat gewenst is, niet onderdrukken.
var l_response_JSON = FcltAPI2(v_apikey_bron, "GET", l_url, "", 0, v_suppress_req_logging);
if (l_response_JSON)
{
__Log("FCLT_GetOpdrachtBijlages: GET", 2);
__Log("FCLT_or_MARX_PutOpdrachtBijlages: GET", 2);
var data = eval ("(" + l_response_JSON.responseText + ")");
__Log("Opdracht data:" + data, 4);
if ("order" in data && "custom_fields" in data.order)
@@ -78,20 +78,88 @@ function FCLT_or_MARX_PutOpdrachtBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_
for (var fld in data.order.custom_fields)
{ __Log("Bijlage custom_fields: fld", 3);
var attarr = data.order.custom_fields[fld].attachments;
if (attarr)
{ v_totaal_aantal_bestanden = attarr.length;
v_totaal_aantal_bestanden += UploadBijlagen(attarr, v_apikey_bron, v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, v_mld_kenmerk_key_dest, v_src_2_dest, v_fac_bijlagen_filename);
}
}
}
else
{
__Log("FCLT_or_MARX_PutOpdrachtBijlages 1: " + l_response_JSON.responseText,2);
__Log("FCLT_or_MARX_PutOpdrachtBijlages 2: " + l_response_JSON.status, 2);
}
return v_totaal_aantal_bestanden;
}
function MARX_GetOpdrNotitieBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_key_bron, v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, v_mld_opdr_note_key, v_mld_kenmerk_key_dest, v_src_2_dest, v_fac_bijlagen_filename)
{
// Init aantal bijlages op 0.
var v_totaal_aantal_bestanden = 0;
//v_mld_opdr_note_key is de notitie waar evt bijlagen zijn toegevoegd, dat gaan we hier uitvogelen
var l_url = v_url_bron + "api2/orders/" + v_mld_opdr_key_bron + ".json?include=notes&notes_id=" + v_mld_opdr_note_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(v_apikey_bron, "GET", l_url, "", 0, v_suppress_req_logging);
if (l_response_JSON)
{
__Log("MARX_GetOpdrNotitieBijlages: GET", 2);
var data = eval ("(" + l_response_JSON.responseText + ")");
__Log("Opdracht data:" + data, 4);
if ("order" in data && "notes" in data.order)
{ __Log("Opdracht : order", 3);
for (var fld in data.order.notes)
{ __Log("Bijlage notes: fld", 3);
var attarr = data.order.notes[fld].attachments;
v_totaal_aantal_bestanden += UploadBijlagen(attarr, v_apikey_bron, v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, v_mld_kenmerk_key_dest, v_src_2_dest, v_fac_bijlagen_filename);
}
}
}
else
{
__Log("MARX_GetOpdrNotitieBijlages 1: " + l_response_JSON.responseText,2);
__Log("MARX_GetOpdrNotitieBijlages 2: " + l_response_JSON.status, 2);
}
return v_totaal_aantal_bestanden;
}
function UploadBijlagen(v_attachments, v_apikey_bron, v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, v_mld_kenmerk_key_dest, v_src_2_dest, v_fac_bijlagen_filename)
{
// v_attachments moet JSON ARRAY zijn met minimaal deze parameters:
// [
// {
// "name": "image_20240612T133240.png",
// "content_url": "http://marx.facws001.sg.nl/branch20242/appl/shared/BijlagenStream.asp?module=ORDN&bijlagen_key=3713551&opdr_key=3554247&hmac=12345...."
// },
// {
// "name": "image_20240612T133241.png",
// "content_url": "http://marx.facws001.sg.nl/branch20242/appl/shared/BijlagenStream.asp?module=ORDN&bijlagen_key=3713552&opdr_key=3554247&hmac=67890...."
// },
// ....
// ]
var l_filename;
var l_file_url;
// Init aantal bijlages op 0.
var v_totaal_aantal_bestanden = 0;
if (v_attachments)
{ v_totaal_aantal_bestanden = v_attachments.length;
__Log("Aantal opdracht attachments " + v_src_2_dest + " :" + v_totaal_aantal_bestanden, 3);
for (var i = 0; i < v_totaal_aantal_bestanden; i++)
{
l_filename = attarr[i].name;
l_file_size = attarr[i].size;
l_file_url = attarr[i].content_url;
l_filename = v_attachments[i].name;
l_file_url = v_attachments[i].content_url;
// MARX61048: Documenten versturen van Mareon naar AX (Stadgenoot), alleen bijlages die nog niet eerder zijn geupload (dus check filter v_fac_bijlagen_filename)
// Als er geen filter met files is opgegeven (= dont care), of wel een filter maar de filenaam is gelijk aan of zit in het filter, dan uploaden die hap :) naar het andere systeem...
if ((v_fac_bijlagen_filename == "") || (l_filename == v_fac_bijlagen_filename)){
__Log("File: " + l_filename,2);
__Log("Size: " + l_file_size,2);
__Log("Url: " + l_file_url,2);
// ophalen van binary bestand via URL l_file_url en base64 encoderen...
v_base64_str = BinaryStream_2_Base64(v_apikey_bron, l_file_url);
@@ -155,13 +223,23 @@ function FCLT_or_MARX_PutOpdrachtBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_
}
}
}
}
}
}
else
{
__Log("FCLT_GetOpdrachtBijlages 1: " + l_response_JSON.responseText,2);
__Log("FCLT_GetOpdrachtBijlages 2: " + l_response_JSON.status, 2);
}
return v_totaal_aantal_bestanden;
}
function MARX_SendOpdrachtNotitieBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_note_key, v_mld_opdr_ordernr, v_mld_opdr_externnr)
{
var v_aantal_bestanden = 0;
if (AX_or_Tobias() == "A") {
var v_aantal_bestanden = MARX_GetOpdrNotitieBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, v_mld_opdr_note_key, "", "MARX_2_AX", "");
}
if (AX_or_Tobias() == "A12") {
var v_aantal_bestanden = MARX_GetOpdrNotitieBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, v_mld_opdr_note_key, "", "MARX_2_AX2012", "");
}
if (AX_or_Tobias() == "A365") {
var v_aantal_bestanden = MARX_GetOpdrNotitieBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, v_mld_opdr_note_key, "", "MARX_2_AX365", "");
}
if (AX_or_Tobias() == "F") {
var v_aantal_bestanden = MARX_GetOpdrNotitieBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, G_fclt_url, G_fclt_apikey, v_mld_opdr_ordernr, v_mld_opdr_note_key, G_mar_sync_bijlages_naar_opdrgvr, "MARX_2_FCLT", "");
}
return v_aantal_bestanden;
}

View File

@@ -12,7 +12,7 @@ function F_GetOpdracht_BijlagenQueue (p_opdr_key, p_aanmaak_datum_van){
var v_APIKEY = G_marx_apikey;
var v_req = "<GetBIJLAGEN_QUEUE_OPDR_4AX><adapterversion>" + G_Mareon_Adapter + "</adapterversion><APIkey>" + v_APIKEY + "</APIkey><mld_opdr_key>" + p_opdr_key + "</mld_opdr_key><aanmaak_datum_van>" + p_aanmaak_datum_van + "</aanmaak_datum_van></GetBIJLAGEN_QUEUE_OPDR_4AX>";
var v_API = "BIJLAGEN_QUEUE_OPDR_4AX";
F_GetOpdrachten_Bijlagen_Inner(v_req, v_API);
F_GetOpdrachten_Bijlagen_Inner(v_req, v_API, "mld_opdr");
}
//Deze functie (bestond al) levert de bijlagen van alle opdrachten van opdrachtgever (APIKEY) op, die sinds de laatste sync-datum/tijd erbij zijn gekomen
@@ -21,10 +21,20 @@ function F_GetOpdrachten_Bijlagen()
var v_APIKEY = G_marx_apikey;
var v_req = "<GetBIJLAGEN_OPDR_4AX><adapterversion>" + G_Mareon_Adapter + "</adapterversion><APIkey>" + v_APIKEY + "</APIkey></GetBIJLAGEN_OPDR_4AX>";
var v_API = "BIJLAGEN_OPDR_4AX";
F_GetOpdrachten_Bijlagen_Inner(v_req, v_API);
F_GetOpdrachten_Bijlagen_Inner(v_req, v_API, "mld_opdr");
}
function F_GetOpdrachten_Bijlagen_Inner(v_req, v_API)
//MARX#69956 Notities bij opdrachten naar de opdrachtgever, dan ook evt bijlagen in notities.
//Deze functie (bestond al) levert de bijlagen van alle opdrachtnotities van opdrachtgever (APIKEY) op, die sinds de laatste sync-datum/tijd erbij zijn gekomen
function F_GetOpdrachtenNotitie_Bijlagen()
{
var v_APIKEY = G_marx_apikey;
var v_req = "<GetBIJLAGEN_OPDR_NOTES_4AX><adapterversion>" + G_Mareon_Adapter + "</adapterversion><APIkey>" + v_APIKEY + "</APIkey></GetBIJLAGEN_OPDR_NOTES_4AX>";
var v_API = "BIJLAGEN_OPDR_NOTES_4AX";
F_GetOpdrachten_Bijlagen_Inner(v_req, v_API, "mld_opdr_note");
}
function F_GetOpdrachten_Bijlagen_Inner(v_req, v_API, v_entiteit)
{
@@ -64,8 +74,16 @@ function F_GetOpdrachten_Bijlagen_Inner(v_req, v_API)
MARX_2_AX_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename);
}
if (AX_or_Tobias() == "A12") {
if (v_entiteit == "mld_opdr"){
MARX_2_AX2012_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename);
}
if (v_entiteit == "mld_opdr_note"){
l_node = strQuery + "/mld_opdr_note_key";
var v_mld_opdr_note_key = v_resp.selectSingleNode(l_node).text;
__Log("v_mld_opdr_note_key: " + v_mld_opdr_note_key,2);
MARX_SendOpdrachtNotitieBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_note_key, "", v_mld_opdr_externnr);
}
}
if (AX_or_Tobias() == "A365") {
MARX_2_AX365_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename);
}

View File

@@ -160,7 +160,7 @@ function do_exec_opdrstatus(p_order, p_min_fac_tracking_datum_ordupd){
//var l_mld_melding_externnr = p_order.mld_melding_externnr; // eg "MLD00058733"
var l_mld_opdr_externnr = p_order.mld_opdr_externnr; // eg "ION00030210"
var l_mld_opdr_ordernr = p_order.mld_opdr_ordernr; // eg "MLD00058733-01"
var l_mld_opdr_ordernr = p_order.mld_opdr_ordernr; // eg "MLD00058733-01", en voor Facilitor-koppeling staat hier het mld_opdr_key van de klant (4-lettercode) waarmee gekoppeld wordt.
var l_mld_opdr_plandatum;
var l_mld_opdr_plandatum_tmp = p_order.mld_opdr_plandatum; //eg "2020-07-30T09:00:00", UTC time, deze kan null zijn!!
@@ -228,6 +228,8 @@ function do_exec_opdrstatus(p_order, p_min_fac_tracking_datum_ordupd){
if (l_mld_opdr_notitie == null){l_mld_opdr_notitie = ""};
l_mld_opdr_notitie = escapeXml(l_mld_opdr_notitie);
var l_mld_opdr_note_key = p_order.mld_opdr_note_key; // eg 123456, of null
//var l_fac_srtnotificatie_key = p_order.fac_srtnotificatie_key; // eg 264
var l_fac_srtnotificatie_code = p_order.fac_srtnotificatie_code; // eg "ORDRSM"
var l_mld_opdr_kosten = p_order.mld_opdr_kosten; // eg 0
@@ -255,6 +257,12 @@ function do_exec_opdrstatus(p_order, p_min_fac_tracking_datum_ordupd){
// En ook alleen sturen als opdracht nog loopt, dwz niet afgesloten is, dus niet in status 1, 6, 7, 9
if (l_mld_opdr_notitie != "" && l_mld_statusopdr_key != 1 && l_mld_statusopdr_key != 6 && l_mld_statusopdr_key != 7 && l_mld_statusopdr_key != 9){
l_response = GEN_SetSupplierText(l_ax_company_id, l_mld_opdr_ordernr, l_mld_opdr_externnr, l_mld_opdr_notitie);
// 2. evt bijlage(n) bij de notitie, dit kan alleen bij losse notities, zie MARX#69956 "Notities bij opdrachten naar de opdrachtgever"
if (l_response.api_status_code == 1)
{ MARX_SendOpdrachtNotitieBijlages(l_ax_company_id, l_mld_opdr_key, l_mld_opdr_note_key, l_mld_opdr_ordernr, l_mld_opdr_externnr);
//We gaan er voorlopig uit dat bijlage upload in principe altijd lukt, zo niet, dan toch, en laten we die voorbij gaan...
l_response = {api_status_code: 1, api_status_message: "", api_response_message: ""};
}
}
break;