Script
// ----------------------------------------------------------------------------------------------------------------------------------
// Script goal :
// Check if all workflow task has been validated
// if yes Write a CSV File with document information
// /! Prerequisites : Last task validation have to be done from Capture
// ----------------------------------------------------------------------------------------------------------------------------------
// Variables to check :
// + Todo check CSV format and values in functions : getCSVHeader() and buildArticleLine();
// + Todo check writeFile() method to change output path and name
var CSVSeparator = ";";
var ArticleLinesIndexID = "ARTICLES_INDEX";
var PORTAL_API_KEY = "a16cb2ff81b5a31c2a05f7b904dcdd59da227dc5fbe152c115592bd65a58c519f750d213a3e6a9b770eb2dff65239460f2fa02a5afe44f94c40678fdebb4fe46";
var PORTAL_IP = "127.0.0.1";
// /! Some information are get from Buyer and thirdPart. Check getAdditionalInformationFromBuyer() and getInformationFromThirdPart() to check usage
// ----------------------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------
//Check if workflow is finished positively
var checkIfWorflowDone = function(idDMS){
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Check DMS id :" + idDMS);
var pHeader = {"Authorization" : "Key "+PORTAL_API_KEY};
var ws = new JSE_WebService(PORTAL_IP, "http", 8000);
var res = ws.send("/ws/v2/document/"+idDMS, "GET", pHeader, 60000);
var resJson = JSON.parse(res.StringResponse);
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Check DMS id : " + idDMS + " Portal response : " + res.StringResponse);
// WF status can indicate if a workflow is over
//0: document is not part of a Workflow
//1: document awaiting validation in the Workflow
//2: document rejected in a Workflow
//3: document accepted in a workflow
return resJson != null && resJson.document != null && resJson.document.wfStatus == 3;
};
var getCSVHeader = function(){
return "Company ID"
+ CSVSeparator + "Type"
+ CSVSeparator + "Vendor"
+ CSVSeparator + "Vendor Name"
+ CSVSeparator + "Doc Type"
+ CSVSeparator + "Doc Number"
+ CSVSeparator + "Doc Date"
+ CSVSeparator + "Due Date"
+ CSVSeparator + "Posting Date"
+ CSVSeparator + "PO Number #1"
+ CSVSeparator + "PO Number #2"
+ CSVSeparator + "PO %"
+ CSVSeparator + "DO Number"
+ CSVSeparator + "Exchange Rate"
+ CSVSeparator + "Header Description"
+ CSVSeparator + "Doc Amount Excl Tax"
+ CSVSeparator + "GST Rate"
+ CSVSeparator + "Doc Amount Tax"
+ CSVSeparator + "Doc Total Incl Tax"
+ CSVSeparator + "Scenario (** for PO only)"
+ CSVSeparator + "Line Description"
+ CSVSeparator + "Tax Class"
+ CSVSeparator + "Line Amount Excl Tax"
+ CSVSeparator + "Line Tax Amount";
};
var getAdditionalInformationFromBuyer = function(additionalInformationID){
if(FOLDER == null || FOLDER.additionalInformations == null)
return "";
for(var i=0;i< FOLDER.additionalInformations.length; i++){
if(FOLDER.additionalInformations[i].id == additionalInformationID)
return FOLDER.additionalInformations[i].value;
}
return "";
};
var getInformationFromThirdPart = function(informationID){
if(THIRDPART == null || THIRDPART.values == null)
return "";
for(var i=0;i< THIRDPART.values.length; i++){
if(THIRDPART.values[i].id == informationID)
return THIRDPART.values[i].value;
}
return "";
};
var getSumOfGroupIndex = function(pParameters, indexID){
var result = 0;
var listIndex = getIndexesFromID(pParameters, indexID);
if(listIndex != null){
for(var i=0;i<listIndex.length;i++){
result += parseFloat(getTextFromIndexInfo(listIndex[i]).replace(',', '.'));
}
}
return result;
};
var buildArticleLine = function(pParameters, articleLine){
return getAdditionalInformationFromBuyer("COMPANY_ID") //"Company ID"
+ CSVSeparator + "PO/AP"//"Type"
+ CSVSeparator + getInformationFromThirdPart("VENDOR_ID")//"Vendor"
+ CSVSeparator + THIRDPART.name//"Vendor Name"
+ CSVSeparator + "Invoice"//"Doc Type"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "INVOICE_NUMBER_INDEX"))//"Doc Number"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "DATE_INDEX"))//"Doc Date"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "DUE_DATE_INDEX"))//"Due Date"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "DATE_INDEX"))//"Posting Date"
+ CSVSeparator + ""//"PO Number #1"
+ CSVSeparator + ""//"PO Number #2"
+ CSVSeparator + ""//"PO %"
+ CSVSeparator + ""//"DO Number"
+ CSVSeparator + "1.00000"//"Exchange Rate"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "HEADER_DESCRIPTION_INDEX"))//"Header Description"
+ CSVSeparator + getSumOfGroupIndex(pParameters, "AMOUNT_EX_VAT_INDEX")//"Doc Amount Excl Tax"
+ CSVSeparator + getSumOfGroupIndex(pParameters, "VAT_RATE_INDEX")//"GST Rate"
+ CSVSeparator + getSumOfGroupIndex(pParameters, "VAT_AMOUNT_INDEX")//"Doc Amount Tax"
+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, "AMOUNT_INCLUDING_VAT_INDEX"))//"Doc Total Incl Tax"
+ CSVSeparator + ""//"Scenario (** for PO only)"
+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, "DESCRIPTION_ARTICLES_INDEX"))//"Line Description"
+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, "TAX_CLASS_ARTICLES_INDEX"))//"Tax Class"
+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, "MONTANT_ARTICLES_INDEX"))//"Line Amount Excl Tax"
+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, "TAX_ARTICLES_INDEX"))//"Line Tax Amount";
};
var buildFileContent = function(pParameters){
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Start content file generation");
var result = getCSVHeader() + "n";
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Header generated, start article lines");
var articles = getArticleLines(pParameters, ArticleLinesIndexID);
if(articles == null)
return result;
for(var i=0;i< articles.length; i++){
result += buildArticleLine(pParameters, articles[i]) + "n";
}
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " File content generated");
return result;
};
var writeFile = function(pParameters, content){
var codeSct = getAdditionalInformationFromBuyer("CODE_SOCIETE")
var date = new Date();
var dateMonth = date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth();
var dateDay = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var dateHour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var dateMinute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var dateSecond = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
var finalPathFile = 'C:'+codeSct+'-' + date.getFullYear() + dateMonth + dateDay + dateHour + dateMinute + dateSecond + '.csv';
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " File name generated => " + finalPathFile);
JSE_File.writeFile(finalPathFile, content);
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Output done ");
};
// ----------------------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Start Script");
if(ID_DMS == null || ID_DMS == ""){
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " IDDMS empty => no output");
return true;
}
if(!checkIfWorflowDone(ID_DMS)){
JSE_File.addLogMessage("SCRIPT " + INTERNAL_DOCUMENT_ID + " Check DMS id :" + ID_DMS + " worflow not validated => no output");
return true;
}
writeFile(pParameters, buildFileContent(pParameters));
return true;