Principle
The purpose of this script is to generate an accounting entry file when exporting a batch. A second file (_extra) will also be generated with only the EUR entries
Script
/*********************************************************
* Variables to configure
*********************************************************/
var idxMultiOutput = "DEVISE_INDEX";
var value_multiOutput = "EUR";
var folderAEAlwaysExport = "C:test";
var folderAEExtraExport = "C:test";
var fileAEAlwaysExport = ACCOUNT_ENTRY.bundleId+'.csv';
var fileAEExtraExport = ACCOUNT_ENTRY.bundleId+'_extra.csv';
/*********************************************************
*********************************************************/
var getAccountType = function(line){
if(line.accountNumber != null && line.accountNumber != "" && line.genericAccountNumber != null && line.genericAccountNumber != "")
return "PersonalLine";
if(line.accountNumber != null && line.accountNumber != ""){
if(line.accountNumber.lastIndexOf("445", 0) === 0)
return "VATLine";
return "ChargeLine";
}
return "";
};
var buildLine = function(line, pParameters, ventilatedPlan, ventilatedLine){
var result = "";
if(ACCOUNT_ENTRY.ledger != null)
result += ACCOUNT_ENTRY.ledger.code;
result += ";";
if(line.genericAccountNumber != null && line.genericAccountNumber != "")
result += line.genericAccountNumber + ";" + line.accountNumber;
else
result += line.accountNumber + ";";
result += ";";
result += ACCOUNT_ENTRY.date;
result += ";";
result += getTextFromIndexInfo(getFirstIndexFromID(pParameters, "DUE_DATE_INDEX"));
result += ";";
result += line.labelLine;
result += ";";
result += getTextFromIndexInfo(getFirstIndexFromID(pParameters, "MODE_DE_PAIEMENT_INDEX"));
if(ventilatedPlan != null && ventilatedLine != null)
result += parseFloat(ventilatedLine.allocatedAmount).toFixed(2).replace('.', ',');
else
result += parseFloat(line.amount).toFixed(2).replace('.', ',');
result += ";";
result += getTextFromIndexInfo(getFirstIndexFromID(pParameters, "DEVISE_INDEX"));
result += ";";
result += line.meaning == "CREDIT" ? "C" : "D";
result += ";";
if(ventilatedPlan != null && ventilatedLine != null)
result += ventilatedPlan.code + ";" + ventilatedLine.section.code + ";"/*Axe2*/+";"/*SectionanalytiqueAxe2*/+"";
else
result += /*Axe1*/";"/*SectionanalytiqueAxe1*/+";"/*Axe2*/+";"/*SectionanalytiqueAxe2*/+"";
result += ";";
if(ventilatedPlan != null && ventilatedLine != null)
result += "A";
else if(getAccountType(line) == "PersonalLine")
result += "X";
else
result += "G";
result += ";";
result += "FF";
result += ";";
result += getTextFromIndexInfo(getFirstIndexFromID(pParameters, "INVOICE_NUMBER_INDEX"));
result += ";";
result += "http://127.0.0.1/previewDocument/idDocument/11171" + ID_DMS;
result +="n";
return result;
};
var buildAnalyticLinesLine = function(line, pParameters){
if(line.analyticalBreakdown == null
|| line.analyticalBreakdown.ventilatedPlanList == null
|| line.analyticalBreakdown.ventilatedPlanList.length <= 0)
return "";
var generatedLine = "";
for(var p=0;p < line.analyticalBreakdown.ventilatedPlanList.length;p++){
var ventilatedPlan = line.analyticalBreakdown.ventilatedPlanList[p];
if(ventilatedPlan.lines != null && ventilatedPlan.lines.length > 0){
for(var l=0;l < ventilatedPlan.lines.length;l++){
var abLine = ventilatedPlan.lines[l];
if(abLine.section != null)
generatedLine += buildLine(line, pParameters, ventilatedPlan.plan , abLine);
}
}
}
return generatedLine;
};
var buildLineWrapper = function(line, pParameters){
return buildLine(line, pParameters, null, null)
+ buildAnalyticLinesLine(line, pParameters);
};
var exportFile = function(exportFolder, finalFileName, aeExport, writeExport){
var finalPathFile = exportFolder + "" + finalFileName;
if(ACCOUNT_ENTRY_NUMBER == 1)// delete file in case of reexport
JSE_File.deleteFile(finalPathFile);
if(!writeExport)
return;
var existingFiles = JSE_File.getFiles(exportFolder);
var nFileContent;
if(existingFiles.indexOf(finalPathFile) == -1)
nFileContent = "Journal;CompteGeneral;CompteTiers;DateComptable;Dateecheance;Libelle;Modepaiement;Montant;Devise;Sens;Axe1;SectionanalytiqueAxe1;Axe2;SectionanalytiqueAxe2;Typeecriture;Typepiece;Rerefencepiece;UrlDMSn";
else
nFileContent = JSE_File.readFile(finalPathFile);
nFileContent += aeExport;
JSE_File.writeFile(finalPathFile, nFileContent);
JSE_File.addLogMessage("Ecriture exporté : " + finalPathFile);
};
/*********************************************************************************
*********************************************************************************/
if(ACCOUNT_ENTRY != null && ACCOUNT_ENTRY.lines != null){
var aeExport = "";
for(var i=0;i<ACCOUNT_ENTRY.lines.length;i++)
aeExport += buildLineWrapper(ACCOUNT_ENTRY.lines[i], pParameters);
// Standard Export
exportFile(folderAEAlwaysExport, fileAEAlwaysExport, aeExport, true);
// Extra Export
var doExtraExport = getTextFromIndexInfo(getFirstIndexFromID(pParameters, idxMultiOutput)) == value_multiOutput;
exportFile(folderAEExtraExport, fileAEExtraExport, aeExport, doExtraExport);
return true;
}
return false;