Export Writes: Write file via Script with extra Write-in file

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;