@adncorp/account-book-parser-adapter
Version:
parsing sheet adapter for account book
142 lines (123 loc) • 4.64 kB
JavaScript
;
/* eslint-disable spellcheck/spell-checker */
/* eslint-disable no-underscore-dangle */
var cleanArray = require('../commonFunction/').cleanArray;
var searchColumn = require('../commonFunction/').searchColumn;
var buildColumn = require('../commonFunction/').buildColumn;
var buildNbrLine = require('../commonFunction/').buildNbrLine;
var checkDate = require('../commonFunction/').checkDate;
var isNumber = require('../commonFunction/').isNumber;
var moment = require('moment');
var parseaccountbookaytre = function parseaccountbookaytre(data) {
var valueLineObject = {};
var tabOfValueLine = [];
var account = '';
var debit = '';
var credit = '';
var myDate = '';
var nbrLine = 1;
try {
var results = data.map(function (row) {
account = row[0];
debit = row[6];
credit = row[7];
myDate = row[2];
nbrLine = nbrLine + 1;
row[0] = parseFloat((row[0] || '0' || null || '').replace(/[,\s ]+/g, '').trim()) || row[0];
row[6] = row[6] === '' || row[6] === '0' ? 0 : parseFloat(row[6].replace(/[,\s ]+/g, '').trim()) || row[6];
row[7] = row[7] === '' || row[7] === '0' ? 0 : parseFloat(row[7].replace(/[,\s ]+/g, '').trim()) || row[7];
row[8] = parseFloat((row[8] || '0' || null || '').replace(/[,\s ]+/g, '').trim()) || 0;
if (!isNumber(row[0])) {
// recuperation de la ligne
valueLineObject.account = account;
valueLineObject.intitule = row[1];
valueLineObject.date = row[2];
valueLineObject.journal = row[3];
valueLineObject.reference = row[4];
valueLineObject.libelle = row[5];
valueLineObject.debit = row[6];
valueLineObject.credit = row[7];
valueLineObject.cumul_bal = row[8];
valueLineObject.column = 'Num_Compte';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
if (!isNumber(row[6])) {
// recuperation de la ligne
valueLineObject.account = row[0];
valueLineObject.intitule = row[1];
valueLineObject.date = row[2];
valueLineObject.journal = row[3];
valueLineObject.reference = row[4];
valueLineObject.libelle = row[5];
valueLineObject.debit = debit;
valueLineObject.credit = row[7];
valueLineObject.cumul_bal = row[8];
valueLineObject.column = 'débit';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
if (!isNumber(row[7])) {
// recuperation de la ligne
valueLineObject.account = row[0];
valueLineObject.intitule = row[1];
valueLineObject.date = row[2];
valueLineObject.journal = row[3];
valueLineObject.reference = row[4];
valueLineObject.libelle = row[5];
valueLineObject.debit = row[6];
valueLineObject.credit = credit;
valueLineObject.cumul_bal = row[8];
valueLineObject.column = 'crédit';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
row[2] = moment(new Date(row[2])).format('DD/MM/YYYY');
if (!checkDate(row[2])) {
// recuperation de la ligne
valueLineObject.account = row[0];
valueLineObject.intitule = row[1];
valueLineObject.date = myDate;
valueLineObject.journal = row[3];
valueLineObject.reference = row[4];
valueLineObject.libelle = row[5];
valueLineObject.debit = row[6];
valueLineObject.credit = row[7];
valueLineObject.cumul_bal = row[8];
valueLineObject.column = 'date';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
return row;
});
if (tabOfValueLine.length !== 0) {
var error = {
libelle: 'date',
value: tabOfValueLine
};
throw error;
}
return results;
} catch (error) {
var errorParsing = {};
var allColumns = searchColumn(error.value);
var column = cleanArray(allColumns);
var showColumn = buildColumn(column);
var nbrLines = buildNbrLine(error.value);
errorParsing = {
code: '306',
libelle: 'InvalidField',
message: 'Erreur de format de données. Les champs des colonnes suivantes ne sont pas au bon format.',
nbrLines: nbrLines,
showColumns: [showColumn, ''],
value: error.value
};
throw errorParsing;
}
};
module.exports = parseaccountbookaytre;
//# sourceMappingURL=formater.js.map