@adncorp/account-book-parser-adapter
Version:
parsing sheet adapter for account book
150 lines (131 loc) • 5.46 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 parseaccountbookodoo = function parseaccountbookodoo(data) {
var valueLineObject = {};
var tabOfValueLine = [];
var account = '';
var debit = '';
var credit = '';
var myDate = '';
var nbrLine = 0;
try {
var results = data.map(function (row) {
nbrLine = nbrLine + 3;
account = row.account;
row.account = parseFloat((row.account || '0').replace(/[,\s ]+/g, '').trim()) || row.account;
row.account_label = row.account_label.replace(/,/, '').replace(/,/, '').replace(/,/, '');
row.values = row.values.map(function (el) {
debit = el.debit;
credit = el.credit;
myDate = el.date;
nbrLine = nbrLine + 1;
el.account = parseFloat((el.account || '0').replace(/[,\s ]+/g, '')) || 0;
el.debit = el.debit === '' ? 0 : parseFloat((el.debit || '0').replace(/[,\s ]+/g, '')) || el.debit;
el.credit = el.credit === '' ? 0 : parseFloat((el.credit || '0').replace(/[,\s ]+/g, '')) || el.credit;
el.cumul_bal = parseFloat((el.cumul_bal || '0').replace(/[,\s ]+/g, '')) || 0;
if (!isNumber(row.account)) {
// recuperation de la ligne
valueLineObject.account = account;
valueLineObject.intitule = row.account_label;
valueLineObject.date = el.date;
valueLineObject.label = el.label;
valueLineObject.partner = el.partner;
valueLineObject.entry = el.entry;
valueLineObject.debit = el.debit;
valueLineObject.credit = el.credit;
valueLineObject.cumul_bal = el.cumul_bal;
valueLineObject.column = 'Num_Compte';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
if (!isNumber(el.debit)) {
// recuperation de la ligne
valueLineObject.account = row.account;
valueLineObject.intitule = row.account_label;
valueLineObject.date = el.date;
valueLineObject.label = el.label;
valueLineObject.partner = el.partner;
valueLineObject.entry = el.entry;
valueLineObject.debit = debit;
valueLineObject.credit = el.credit;
valueLineObject.cumul_bal = el.cumul_bal;
valueLineObject.column = 'debit';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
if (!isNumber(el.credit)) {
// recuperation de la ligne
valueLineObject.account = row.account;
valueLineObject.intitule = row.account_label;
valueLineObject.date = el.date;
valueLineObject.label = el.label;
valueLineObject.partner = el.partner;
valueLineObject.entry = el.entry;
valueLineObject.debit = el.debit;
valueLineObject.credit = credit;
valueLineObject.cumul_bal = el.cumul_bal;
valueLineObject.column = 'credit';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
el.date = moment(new Date(el.date)).format('DD/MM/YYYY');
if (!checkDate(el.date)) {
// recuperation de la ligne
valueLineObject.account = row.account;
valueLineObject.intitule = row.account_label;
valueLineObject.date = myDate;
valueLineObject.label = el.label;
valueLineObject.partner = el.partner;
valueLineObject.entry = el.entry;
valueLineObject.debit = el.debit;
valueLineObject.credit = el.credit;
valueLineObject.cumul_bal = el.cumul_bal;
valueLineObject.column = 'date';
valueLineObject.nbrLine = nbrLine;
tabOfValueLine.push(valueLineObject);
valueLineObject = {};
}
return el;
});
row.cumul_bal_debit = parseFloat((row.cumul_bal_debit || '0').replace(/[,\s ]+/g, '')) || 0;
row.cumul_bal_credit = parseFloat((row.cumul_bal_credit || '0').replace(/[,\s ]+/g, '')) || 0;
row.cumul_bal_total = parseFloat((row.cumul_bal_total || '0').replace(/[,\s ]+/g, '')) || 0;
return row;
});
if (tabOfValueLine.length !== 0) {
var error = {
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 = parseaccountbookodoo;
//# sourceMappingURL=formater.js.map