Files
Mareon/ax/SRC/FCLT_GetOpdrachtBijlages.js

245 lines
14 KiB
JavaScript

// --------------------------------------------------------------------------------------
// FCLT_GetOpdrachtBijlages.js
// Copyright 2019 Aareon, unit Facilitor. 053-4800 700, helpdesk@mareon.nl
// Written by MB (2019)
//
// Parameters:
// v_mld_opdr_key_fclt: key van mld_opdr in Facilitor omgeving
// v_mld_opdr_key_marx: key van mld_opdr in Mareon
function FCLT_2_MARX_PutOpdrachtBijlages(v_mld_opdr_key_fclt, v_mld_opdr_key_marx)
{
// Zet bijlages uit Facilitor volgens kenmerk-keys G_mar_sync_bijlages_opdrgvr in Mareon (in kenmerk-key 20 van Mareon)
// G_mar_sync_bijlages_opdrgvr: string van key(s) van opdracht-kenmerk(en) in Facilitor omgeving, gescheiden door komma, dus b.v. "key1" of "key1,key2" etc.
var v_aantal_bestanden = FCLT_or_MARX_PutOpdrachtBijlages(G_fclt_url, G_fclt_apikey, v_mld_opdr_key_fclt, G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, G_mar_sync_bijlages_opdrgvr, "20", "FCLT_2_MARX", "");
return v_aantal_bestanden;
}
// Parameters:
// v_mld_opdr_key_marx: key van mld_opdr in Mareon
// v_mld_opdr_key_fclt: key van mld_opdr in Facilitor omgeving
function MARX_2_FCLT_PutOpdrachtBijlages(v_mld_opdr_key_marx, v_mld_opdr_key_fclt, v_fac_bijlagen_filename)
{
var v_aantal_bestanden = FCLT_or_MARX_PutOpdrachtBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, G_fclt_url, G_fclt_apikey, v_mld_opdr_key_fclt, "28", G_mar_sync_bijlages_naar_opdrgvr, "MARX_2_FCLT", v_fac_bijlagen_filename);
return v_aantal_bestanden;
}
// Parameters:
// v_mld_opdr_key_marx: key van mld_opdr in Mareon
// v_mld_opdr_key_ax: IONR (key) van inkooporder in AX (2009) omgeving
function MARX_2_AX_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename)
{
var v_aantal_bestanden = FCLT_or_MARX_PutOpdrachtBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, "28", "", "MARX_2_AX", v_fac_bijlagen_filename);
return v_aantal_bestanden;
}
// Parameters:
// v_mld_opdr_key_marx: key van mld_opdr in Mareon
// v_mld_opdr_key_ax: IONR (key) van inkooporder in AX (2012) omgeving
function MARX_2_AX2012_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename)
{
var v_aantal_bestanden = FCLT_or_MARX_PutOpdrachtBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, "28", "", "MARX_2_AX2012", v_fac_bijlagen_filename);
return v_aantal_bestanden;
}
// Parameters:
// v_mld_opdr_key_marx: key van mld_opdr in Mareon
// v_mld_opdr_key_ax: IONR (key) van inkooporder in AX (2012) omgeving
function MARX_2_AX365_PutOpdrachtBijlages(v_ax_company_id, v_mld_opdr_key_marx, v_mld_opdr_externnr, v_fac_bijlagen_filename)
{
var v_aantal_bestanden = FCLT_or_MARX_PutOpdrachtBijlages(G_marx_url, G_marx_apikey, v_mld_opdr_key_marx, "", v_ax_company_id, v_mld_opdr_externnr, "28", "", "MARX_2_AX365", v_fac_bijlagen_filename);
return v_aantal_bestanden;
}
function FCLT_or_MARX_PutOpdrachtBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_key_bron, v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, v_mld_kenmerk_key_bron, 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_kenmerk_key_bron is de Mareon instelling "Bijlages van opdrachtgever:" (flexprop key 40) bij prs_bedrijf (=opdrachtgever)
//Voor Facilitor (dus hier) is dat de kenmerk-key van de bijlage-flexprop in de Facilitor-omgeving van klant, waarvan de bijlages opgehaald moeten worden
//In geval van meerdere kenmerk-keys (b.v. in geval van meerdere opdrachttypen, met ieder hun eigen (opdr)kenmerk, moeten de keys worden gescheiden door de komma (,), dus b.v.: 123,456,789
var l_url = v_url_bron + "api2/orders/" + v_mld_opdr_key_bron + ".json?scope=fo&include=custom_fields&custom_fields=" + v_mld_kenmerk_key_bron;
__Log("l_url: " + l_url,3);
var l_filename;
var l_file_url;
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_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)
{ __Log("Opdracht : order", 3);
for (var fld in data.order.custom_fields)
{ __Log("Bijlage custom_fields: fld", 3);
var attarr = data.order.custom_fields[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("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 = 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("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);
if (v_src_2_dest == "MARX_2_AX") {
var v_resp_xml_str = A_UploadDocument (v_base64_str);
var v_checksum = A_GetCheckSum_UploadDocument(v_resp_xml_str);
if (v_checksum != ""){
// v_company_id, v_entityname, v_entityid , v_checksum, v_filename, v_notes);
A_CreateDocuRefByEntityName (v_apikey_dest, "PurchaseOrder", v_mld_opdr_key_dest, v_checksum, l_filename, "");
}
else{
__Log("FCLT_or_MARX_PutOpdrachtBijlages warning: checksum not returned by Tobias AX 2009",1);
}
}
if (v_src_2_dest == "MARX_2_AX2012") {
var v_resp_json_str = A2012_UploadDocument (v_base64_str);
var v_checksum = A12_365_GetCheckSum_UploadDocument(v_resp_json_str);
if (v_checksum != ""){
// v_company_id, v_entityname, v_entityid , v_checksum, v_filename, v_notes);
A2012_CreateDocuRefByEntityName (v_apikey_dest, "PurchaseOrder", v_mld_opdr_key_dest, v_checksum, l_filename, "");
}
else{
__Log("FCLT_or_MARX_PutOpdrachtBijlages warning: checksum not returned by Tobias AX 2012",1);
}
}
if (v_src_2_dest == "MARX_2_AX365") {
var v_resp_json_str = A365_UploadDocument (v_base64_str);
var v_checksum = A12_365_GetCheckSum_UploadDocument(v_resp_json_str);
if (v_checksum != ""){
// v_company_id, v_entityname, v_entityid , v_checksum, v_filename, v_notes);
A365_CreateDocuRefByEntityName (v_apikey_dest, "PurchaseOrder", v_mld_opdr_key_dest, v_checksum, l_filename, "");
}
else{
__Log("FCLT_or_MARX_PutOpdrachtBijlages warning: checksum not returned by Tobias AX 365",1);
}
}
if ((v_src_2_dest == "FCLT_2_MARX") || (v_src_2_dest == "MARX_2_FCLT")) {
// Van Facilitor naar Mareon OF van Mareon naar Facilitor
var l_kenmerk_arr = v_mld_kenmerk_key_dest.split(",");
__Log("Aantal kenmerk-keys: " + l_kenmerk_arr.length, 3);
for (var j = 0; j < l_kenmerk_arr.length; j++)
{ try {
var l_kenmerk_key = parseInt(l_kenmerk_arr[j]);
var l_upload_success = api_F_PutOpdr_Bijlage(v_url_dest, v_apikey_dest, v_mld_opdr_key_dest, l_filename, v_base64_str, l_kenmerk_key);
if (l_upload_success == null){
// Upload niet gelukt, b.v. omdat opdracht al gesloten was (technisch gereed of afgewezen), of omdat file-extensie niet geoorloofd, omdat ....
// Dat zouden we kunnen tracken bij de opdracht, b.v. via algemene API 'ACTION_REF_KEY' onder een CUST-notify, doen we vooralsnog ff niet
__Log("Upload failure: Bijlage " + v_src_2_dest + ": File " + l_filename + " NIET geupload naar kenmerk " + l_kenmerk_key ,1);
}
else
{
__Log("Upload success: Bijlage " + v_src_2_dest + ": File " + l_filename + " geupload naar kenmerk " + l_kenmerk_key ,3);
}
}
catch(e) {
__Log("FCLT_or_MARX_PutOpdrachtBijlages: catch van parseInt van kenmerk-key" + l_kenmerk_arr[j], 3);
}
}
}
}
}
}
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;
}