UNPKG

@adncorp/account-book-parser-adapter

Version:

parsing sheet adapter for account book

142 lines (123 loc) 4.64 kB
"use strict"; /* 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