Files
Mareon/ax/SRC/R_GetOpdrachten.js
Marcel Bourseau b150688e51 MARX#62647: Koppeling AX365 - Mareon (Push)
svn path=/Mareon/trunk/; revision=47788
2020-08-14 15:31:25 +00:00

147 lines
8.0 KiB
JavaScript

// --------------------------------------------------------------------------------------
// R_GetOpdrachten.js
// Copyright 2017 Facilitor. 053-4800 700, helpdesk@mareon.nl
// Written by MB (2017-nov)
//
function R_GetOpdrachten()
{
try{
var l_opdr_str = "";
var l_marx_api = "ACTION_REF_KEY";
var l_import_action = "OPDR_POST_BIJLAGE";
var l_bijlage_is_toegevoegd = 0;
var filecount = 0;
// Eerst de backup folder van vandaag aanmaken...
l_error_msg = "Cannot read folder " + G_rems_opdracht_xmlfolder;
var f = fso.GetFolder(G_rems_opdracht_xmlfolder);
var fc = new Enumerator(f.files);
for (; !fc.atEnd(); fc.moveNext())
{
l_filename = fc.item().name;
__Log("File: " + l_filename, 1);
var l_file_incl_path = G_rems_opdracht_xmlfolder + l_filename;
l_error_msg = "Cannot GetFile " + l_file_incl_path;
var file = fso.GetFile(l_file_incl_path);
l_error_msg = "Cannot ReadDate File " + l_file_incl_path;
var dt = new Date(file.DateCreated);
__Log("File Date: " + dt, 2);
if (l_filename.indexOf(".xml") != -1) {
filecount++;
var fileStream = new ActiveXObject("ADODB.Stream");
fileStream.open();
fileStream.CharSet = "Windows-1252"; // het doel
l_error_msg = "Cannot Load File " + l_file_incl_path;
fileStream.LoadFromFile(l_file_incl_path);
__Log("Filesize " + fileStream.Size, 2);
fileStream.Position = 0;
l_error_msg = "Cannot Read Contents of File " + l_file_incl_path;
v_xml_opdrachten = fileStream.ReadText;
__Log("XML Request: " + v_xml_opdrachten, 4);
fileStream.close();
// Wegschrijven van de REMS XML-opdrachten naar Mareon....
api_F_PutXML(v_xml_opdrachten, "REMS_OPDRACHT");
var l_mld_opdr_key = -1;
// De velden REMS-id & opdracht-key ophalen a.d.h.v. de unieke opdrachtnummer i.c.m. de opdrachtgeverID...
var v_REMS_ERPid = Read_XML_File_Node(l_file_incl_path, "//ServiceOpdracht/header/ERP_id");
__Log("R_GetOpdrachten - v_REMS_ERPid: " + v_REMS_ERPid, 2);
var v_REMS_opdr_nr = Read_XML_File_Node(l_file_incl_path, "//ServiceOpdracht/_OpdrachtUitvoerder/Opdracht/Opdrachtnummer");
__Log("R_GetOpdrachten - v_REMS_opdr_nr: " + v_REMS_opdr_nr, 2);
if (v_REMS_ERPid != "" && v_REMS_opdr_nr != ""){
l_mld_opdr_key = F_GetOpdrachten_Key(v_REMS_ERPid, v_REMS_opdr_nr);
}
__Log("R_GetOpdrachten - l_mld_opdr_key: " + l_mld_opdr_key, 2);
if (l_mld_opdr_key != -1){
// Er is een mld_opdracht aangemaakt ovb REMS ERP-id en daarbinnen het unieke opdrachtnummer...
// Initieel 0, als teken er zijn (nog) geen bijlages bij deze odpracht toegevoegd...
l_bijlage_is_toegevoegd = 0;
// Eerst eventuele bijlages uploaden...
xml = Read_XML(l_file_incl_path);
nodes_doc = xml.getElementsByTagName("Document");
__Log("# Document nodes : " + nodes_doc.length, 2);
for (i = 0; i < nodes_doc.length; i++) {
var l_bijlage_naam = null;
var l_bijlage_ext = null;
var l_bijlage_base64 = null;
var node_media_id = nodes_doc[i].getElementsByTagName("MediaId");
if (node_media_id.length !=0)
l_bijlage_naam = node_media_id[0].childNodes[0].nodeValue;
__Log("MediaId[" + i + "] : " + l_bijlage_naam, 2);
var node_media_type = nodes_doc[i].getElementsByTagName("MediaType");
if (node_media_type.length !=0)
l_bijlage_ext= node_media_type[0].childNodes[0].nodeValue;
__Log("MediaType[" + i + "] : " + l_bijlage_ext, 2);
var node_documentinhoud64 = nodes_doc[i].getElementsByTagName("DocumentInhoud");
if (node_documentinhoud64.length !=0){
l_bijlage_base64 = node_documentinhoud64[0].childNodes[0].nodeValue;
}
__Log("DocumentInhoud[" + i + "] : " + l_bijlage_base64, 4);
// Maximaal 10 bijlages staan we per opdracht toe.
if (i <= 10 && l_bijlage_base64 && l_bijlage_naam && l_bijlage_ext){
var l_bestandsnaam = l_bijlage_naam + "." + l_bijlage_ext;
__Log("R_GetOpdrachten - l_bestandsnaam : " + l_bestandsnaam, 2);
__Log("R_GetOpdrachten - l_mld_opdr_key : " + l_mld_opdr_key, 2);
if (l_mld_opdr_key != -1) {
__Log("R_GetOpdrachten - Before api_F_PutOpdr_Bijlage : ", 3);
// Kenmerk-key in Mareon waarin de bijlagen terecht moet komen is key 20.
api_F_PutOpdr_Bijlage(G_marx_url, G_marx_apikey, l_mld_opdr_key, l_bestandsnaam, l_bijlage_base64, 20);
l_bijlage_is_toegevoegd = 1;
// ----------------------------------------------------------------------
__Log("R_GetOpdrachten - After api_F_PutOpdr_Bijlage : ", 3);
}
}
}
if (l_bijlage_is_toegevoegd = 1){
l_opdr_str = l_opdr_str + "<action><action_code>" + l_import_action + "</action_code>" + "<ref_key>" + l_mld_opdr_key + "</ref_key></action>";
}
// Dan kan er een backup van de REMS-opdracht-XML worden gemaakt, d.w.z. move van het bestand naar de backup-folder van vandaag.
var l_timestamp = new Date();
var l_backdir = G_rems_opdracht_xmlfolder + "BACKUP"+ toDateString(l_timestamp) +"/";
var l_prefix_str = padout(l_timestamp.getHours()) + "-" + padout(l_timestamp.getMinutes() + 1) + "-" + padout(l_timestamp.getSeconds());
__Log("R_GetOpdrachten - Backup folder: " + l_backdir , 2);
l_error_msg = "Before Move_file_2_bck_folder :" + l_backdir;
l_new_filename = l_prefix_str + "_" + l_filename;
Move_file_2_bck_folder(l_file_incl_path, l_backdir, l_new_filename);
}
else{
// MBMB Hier gaan we een signaal naar Mareon sturen dat er wat mis is gegaan, tbv support....
var l_mbmb = "TODO, een API call die een flexprop van klant zet oid";
l_mbmb = l_mbmb + "";
}
}
}
if (l_opdr_str != ""){
// Er zijn (nieuwe) bijlages bij minimaal 1 opdracht geupload
l_opdr_str = "<xml>" + l_opdr_str + "</xml>";
api_F_PutXML(l_opdr_str, l_marx_api);
}
__Log("Aantal XML-bestanden gevonden: " + filecount, 1);
}
catch (e)
{
__Log(l_error_msg + e.description, 1);
WScript.Quit();
}
}