MARX#61048: Documenten versturen van Mareon naar AX (Stadgenoot)
svn path=/Mareon/trunk/; revision=46231
This commit is contained in:
104
ax/SRC/A_UploadDocument.js
Normal file
104
ax/SRC/A_UploadDocument.js
Normal file
@@ -0,0 +1,104 @@
|
||||
// --------------------------------------------------------------------------------------
|
||||
// A_UploadDocument.js
|
||||
// Copyright 2020 SG|facilitor. 053-4800 700, helpdesk@mareon.nl
|
||||
// Written by MB (2020)
|
||||
//
|
||||
|
||||
|
||||
function A_UploadDocument (v_base64_str)
|
||||
{
|
||||
var v_API = "CreateDocumentFile";
|
||||
var v_req = "<cus:CreateDocumentFile><cus:file>" + v_base64_str + "</cus:file></cus:CreateDocumentFile>";
|
||||
|
||||
var v_type = 0;
|
||||
var v_soapAction = "";
|
||||
var v_discard_active_abort = 1; //In geval van 500-error, geen active abort...
|
||||
var v_resp = api_AX2(v_API, v_req, v_type, v_soapAction, v_discard_active_abort);
|
||||
|
||||
//Response is iets als dit:
|
||||
//<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
|
||||
// <s:Header>
|
||||
// <a:Action s:mustUnderstand="1">http://www.SG.nl/services/20121122/CustomerPortalAX/IServiceCustomerPortalAX/CreateDocumentFileResponse</a:Action>
|
||||
// </s:Header>
|
||||
// <s:Body>
|
||||
// <CreateDocumentFileResponse xmlns="http://www.SG.nl/services/20121122/CustomerPortalAX">
|
||||
// <CreateDocumentFileResult>Checksum</CreateDocumentFileResult>
|
||||
// </CreateDocumentFileResponse>
|
||||
// </s:Body>
|
||||
//</s:Envelope>
|
||||
|
||||
return v_resp;
|
||||
}
|
||||
|
||||
|
||||
function A_GetCheckSum_UploadDocument(p_xml_str){
|
||||
v_checksum = "";
|
||||
var v_xml = STR_2_XML(p_xml_str);
|
||||
v_xml.setProperty ("SelectionNamespaces", "xmlns:temp" + "='http://www.SG.nl/services/20121122/CustomerPortalAX'");
|
||||
var l_xml_path = "//temp:CreateDocumentFileResult";
|
||||
var l_deelxml = v_xml.selectSingleNode(l_xml_path);
|
||||
if (l_deelxml){
|
||||
v_checksum = l_deelxml.text;
|
||||
}
|
||||
__Log("A_GetCheckSum_UploadDocument v_checksum: " + v_checksum, 3);
|
||||
return v_checksum;
|
||||
}
|
||||
|
||||
// v_company_id, unieke id van (interne) bedrijf
|
||||
// v_entityname, b.v. ServiceTask of PurchaseOrder, in dit geval altijd op nivo van PurchaseOrder
|
||||
// v_entityid, b.v. MLD15009954-01 (Servicetask) of ION123456 (PurchaseOrder)
|
||||
// v_checksum, een reeks (string) die AX via A_UploadDocument teruggeeft, en hier moet worden gebruikt.
|
||||
// v_filename, naam van het te uploaden bestand, b.v test.png
|
||||
// v_description, omschrijving van het bestand
|
||||
// v_notes, een bijbehorende notitie.
|
||||
function A_CreateDocuRefByEntityName (v_company_id, v_entityname, v_entityid, v_checksum, v_filename, v_notes)
|
||||
{
|
||||
var v_API = "CreateDocuRefByEntityName";
|
||||
|
||||
var l_file_without_ext = MARX_substr(v_filename,".",1);
|
||||
|
||||
var v_req = "<cus:CreateDocuRefByEntityName>"
|
||||
+ " <cus:entityName>" + v_entityname + "</cus:entityName>"
|
||||
+ " <cus:entityId>" + v_entityid + "</cus:entityId>"
|
||||
+ " <cus:companyId>" + v_company_id + "</cus:companyId>"
|
||||
+ " <cus:docuRef>"
|
||||
+ " <sg:Checksum>" + v_checksum + "</sg:Checksum>"
|
||||
+ " <sg:CompanyId>" + v_company_id + "</sg:CompanyId>"
|
||||
+ " <sg:Filename>" + v_filename + "</sg:Filename>"
|
||||
+ " <sg:Name>" + l_file_without_ext + "</sg:Name>"
|
||||
+ " <sg:Notes>" + v_notes + "</sg:Notes>"
|
||||
+ " <sg:Type>Mareon</sg:Type>"
|
||||
+ " </cus:docuRef>"
|
||||
+ "</cus:CreateDocuRefByEntityName>";
|
||||
|
||||
|
||||
//Voorbeeld:
|
||||
//<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
|
||||
// xmlns:cus="http://www.SG.nl/services/20121122/CustomerPortalAX"
|
||||
// xmlns:sg="http://schemas.datacontract.org/2004/07/SG.Models.Global">
|
||||
// <soap:Header/>
|
||||
// <soap:Body>
|
||||
// <cus:CreateDocuRefByEntityName>
|
||||
// <cus:entityName>ServiceTask</cus:entityName>
|
||||
// <cus:entityId>MLD15009954-01</cus:entityId>
|
||||
// <cus:companyId>1</cus:companyId>
|
||||
// <cus:docuRef>
|
||||
// <sg:Checksum>fGd0DavlPXvhM6wVgHM-zpSGM7R0h8q9xJkIzf3leIk1</sg:Checksum>
|
||||
// <sg:CompanyId>1</sg:CompanyId>
|
||||
// <sg:Filename>Testbestand.png</sg:Filename>
|
||||
// <sg:Name>omschrijving van het testbestand</sg:Name>
|
||||
// <sg:Notes>notitie</sg:Notes>
|
||||
// <sg:Type>Bestand</sg:Type>
|
||||
// </cus:docuRef>
|
||||
// </cus:CreateDocuRefByEntityName>
|
||||
// </soap:Body>
|
||||
//</soap:Envelope>
|
||||
|
||||
|
||||
var v_type = 0;
|
||||
var v_soapAction = "";
|
||||
var v_discard_active_abort = 1; //In geval van 500-error, geen active abort...
|
||||
var v_resp = api_AX2(v_API, v_req, v_type, v_soapAction, v_discard_active_abort);
|
||||
|
||||
return v_resp;
|
||||
}
|
||||
@@ -40,6 +40,10 @@ function AX_2_FCLT_Opdrachten(){
|
||||
A_GetOpdrachten();
|
||||
}
|
||||
|
||||
function FCLT_2_AX_Bijlagen(){
|
||||
F_GetOpdrachten_Bijlagen();
|
||||
}
|
||||
|
||||
function FCLT_2_AX_OpmerkingOpdrachten(){
|
||||
F_GetOpdrachten_Opmerking();
|
||||
}
|
||||
@@ -235,6 +239,11 @@ function Ax_2_FACILITOR()
|
||||
__Log("*** Communicatie logboek UIT", 2);
|
||||
}
|
||||
|
||||
if (G_mar_sync_bijlages_naar_opdrgvr != '0'){
|
||||
__Log("*** START FCLT --> AX : Bijlagen bij opdrachten uit Mareon naar AX ***", 2);
|
||||
FCLT_2_AX_Bijlagen();
|
||||
__Log("*** END", 2);
|
||||
}
|
||||
|
||||
__Log("*** START FCLT --> AX : Afgemelde opdrachten uit Facilitor naar AX ***", 2);
|
||||
FCLT_2_AX_AfgemeldeOpdrachten();
|
||||
@@ -357,7 +366,7 @@ function MAREON_2_FACILITOR()
|
||||
MARX_2_FCLT_NEW_Opdrachten();
|
||||
__Log("*** END", 2);
|
||||
}
|
||||
if (G_mar_sync_bijlages_naar_opdrgvr != '0' && G_mar_sync_bijlages_naar_opdrgvr != '-1'){
|
||||
if (G_mar_sync_bijlages_naar_opdrgvr != '0'){
|
||||
__Log("*** START MAREON --> CUST.FACILITOR.NL : Bijlagen bij opdrachten uit Mareon naar Facilitor ***", 2);
|
||||
MARX_2_FCLT_Bijlagen();
|
||||
__Log("*** END", 2);
|
||||
@@ -456,8 +465,10 @@ var G_log_level = Read_Ini_Setting("common","logging");
|
||||
__Log("************************************************** START Mareon Adapter ***********************************************", 0);
|
||||
|
||||
var G_ax_url = Read_Ini_Setting("ax","url");
|
||||
var G_ax_url_serviceax = Read_Ini_Setting("ax","url_serviceax");
|
||||
|
||||
var G_ax2012_url = Read_Ini_Setting("ax2012","url");
|
||||
var G_ax2012_url_serviceax = Read_Ini_Setting("ax2012","url_serviceax");
|
||||
var G_ax2012_logonAs = Read_Ini_Setting("ax2012", "logonAs");
|
||||
var G_ax2012_bcProxy = Read_Ini_Setting("ax2012", "bcProxy");
|
||||
|
||||
@@ -502,8 +513,10 @@ var G_mar_timeout = 0; //initieel 1e keer.
|
||||
//Eerst de xml settings loggen
|
||||
|
||||
__Log("***XML- common/logging: " + G_log_level, 1);
|
||||
__Log("***XML- ax/url: " + G_ax_url, 1);
|
||||
__Log("***XML- ax2012/url: " + G_ax2012_url, 1);
|
||||
__Log("***XML- ax/url(SupplierService): " + G_ax_url, 1);
|
||||
__Log("***XML- ax/url(ServiceAX): " + G_ax_url_serviceax, 1);
|
||||
__Log("***XML- ax2012/url(SupplierService): " + G_ax2012_url, 1);
|
||||
__Log("***XML- ax2012/url(ServiceAX): " + G_ax2012_url_serviceax, 1);
|
||||
__Log("***XML- tobias/url: " + G_tobias_url, 1);
|
||||
__Log("***XML- facilitor/url: " + G_fclt_url, 1);
|
||||
__Log("***XML- facilitor/factuur/xmlfolder: " + G_fclt_factuur_xmlfolder, 1);
|
||||
@@ -511,6 +524,7 @@ var G_mar_timeout = 0; //initieel 1e keer.
|
||||
__Log("***XML- rems/opdrachtenfolder: " + G_rems_opdracht_xmlfolder, 1);
|
||||
__Log("***XML- rems/opdrachtstatusfolder: " + G_rems_opdrachtstatus_xmlfolder, 1);
|
||||
__Log("***XML- rems/facturenfolder: " + G_rems_facturen_xmlfolder, 1);
|
||||
__Log("***XML- microsoft/token/url: " + G_MS_url, 1);
|
||||
__Log("***XML- mareon/url: " + G_marx_url, 1);
|
||||
__Log("***XML- xtractor/xmlfolder: " + G_ax_xtractorfolder, 1);
|
||||
__Log("***XML- xtractor/pdffolder: " + G_pdf_xtractorfolder, 1);
|
||||
@@ -573,7 +587,7 @@ var G_mar_timeout = 0; //initieel 1e keer.
|
||||
|
||||
var G_mar_communicatielogboek = parseInt(l_array[14]); // Opdrachtgever maakt gebruik van communicatielogboek (AX webservice UpdatePurchStatus beschikbaar)
|
||||
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 opdrachtnever worden gedeeld met opdrachtgever 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
|
||||
|
||||
if (AX_or_Tobias() == "A")
|
||||
{
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
</tobias>
|
||||
<ax>
|
||||
<!-- URL van de AX webservice 'SupplierService' -->
|
||||
<url>http://so-connect-t/SupplierService/SupplierService.svc/soapUI</url>
|
||||
<url>http://emmdp02.otap.sg.nl:82/SupplierService.svc</url>
|
||||
<!-- URL van de AX webservice 'CustomerPortalAX' -->
|
||||
<url_serviceax>http://serviceax-dev.aareon.nl</url_serviceax>
|
||||
<!-- Aantal dagen in het verleden om open opdrachten op te halen -->
|
||||
<opdr_past_days>1</opdr_past_days><!-- opdr_past_days is default 1 (alle opdrachten vanaf gisteren) -->
|
||||
<opdr_today></opdr_today><!-- opdr_today is optioneel en default empty (empty = alle opdrachten tot en met vandaag, 1 = alle opdrachten tot met gisteren, 2 = eergisteren etc) -->
|
||||
@@ -25,6 +27,8 @@
|
||||
<ax2012>
|
||||
<!-- URL van de AX webservice 'SupplierService' -->
|
||||
<url>http://emmpc0003.sg.nl:8087/MicrosoftDynamicsAXAif60/MSMSupplierPortalHttp/xppservice.svc</url>
|
||||
<!-- URL van de AX webservice 'CustomerPortalAX' -->
|
||||
<url_serviceax>http://serviceax2012-dev.aareon.nl</url_serviceax>
|
||||
<!-- AX2012 Logon as -->
|
||||
<logonAs>sg\robb</logonAs>
|
||||
<!-- AX2012 bcProxy encripted username/password-->
|
||||
|
||||
2718
ax/SRC/Common.js
2718
ax/SRC/Common.js
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,15 @@ function MARX_2_FCLT_PutOpdrachtBijlages(v_mld_opdr_key_marx, v_mld_opdr_key_fcl
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -71,6 +80,17 @@ function FCLT_or_MARX_PutOpdrachtBijlages(v_url_bron, v_apikey_bron, v_mld_opdr_
|
||||
// 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 == "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(",");
|
||||
|
||||
@@ -134,7 +134,8 @@ function F_GetFacturen_FCLT()
|
||||
var v_API = "MARX_FIN_FACTUUR";
|
||||
var v_type = 1;
|
||||
var v_soapAction = "";
|
||||
var v_result = apiAX_GENERAL (v_API, XMLResult, v_type, v_soapAction, 1);
|
||||
var v_soort_api = 1; // (nav MARX#61048: Documenten versturen van Mareon naar AX) is waarde 1 (oude/huidige api via SupplierService) of waarde 2 (nieuwe api via CustomerPortalAX)
|
||||
var v_result = apiAX_GENERAL (v_API, XMLResult, v_type, v_soapAction, 1, v_soort_api);
|
||||
|
||||
var l_statuscode = v_result.api_status_code;
|
||||
var l_statustekst = v_result.api_status_message;
|
||||
@@ -444,8 +445,8 @@ function A365_Xtractor2AX(v_resp, i, v_deelxml, v_factuur_key)
|
||||
var v_req = '<addPreInvoiceFromXtractor xmlns="http://tempuri.org"> <xmlXtractorFormat><![CDATA[' + XMLResult + "]]></xmlXtractorFormat> </addPreInvoiceFromXtractor>";
|
||||
var v_type = 0;
|
||||
var v_soapAction = "PreInvoiceService/addPreInvoiceFromXtractor";
|
||||
|
||||
var v_result = apiAX_GENERAL (v_API, v_req, v_type, v_soapAction, 1);
|
||||
var v_soort_api = 1; // (nav MARX#61048: Documenten versturen van Mareon naar AX) is waarde 1 (oude/huidige api via SupplierService) of waarde 2 (nieuwe api via CustomerPortalAX)
|
||||
var v_result = apiAX_GENERAL (v_API, v_req, v_type, v_soapAction, 1, v_soort_api);
|
||||
|
||||
var l_statuscode = v_result.api_status_code;
|
||||
var l_statustekst = v_result.api_status_message;
|
||||
|
||||
@@ -28,6 +28,9 @@ function F_GetOpdrachten_Bijlagen()
|
||||
var l_deelxml = v_resp.selectSingleNode(strQuery);
|
||||
while (l_deelxml)
|
||||
{
|
||||
l_node = strQuery + "/ax_company_id";
|
||||
var v_ax_company_id = v_resp.selectSingleNode(l_node).text;
|
||||
|
||||
l_node = strQuery + "/mld_opdr_key";
|
||||
var v_mld_opdr_key_marx = v_resp.selectSingleNode(l_node).text;
|
||||
|
||||
@@ -41,7 +44,10 @@ function F_GetOpdrachten_Bijlagen()
|
||||
l_node = strQuery + "/fac_bijlagen_filename";
|
||||
var v_fac_bijlagen_filename = v_resp.selectSingleNode(l_node).text;
|
||||
|
||||
if (AX_or_Tobias() == "F") {
|
||||
if (AX_or_Tobias() == "A") {
|
||||
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() == "F") {
|
||||
MARX_2_FCLT_PutOpdrachtBijlages(v_mld_opdr_key_marx, v_mld_opdr_key_fclt, v_fac_bijlagen_filename);
|
||||
}
|
||||
i = i + 1;
|
||||
|
||||
Reference in New Issue
Block a user