UNPKG

@adncorp/account-book-parser-adapter

Version:

parsing sheet adapter for account book

150 lines (131 loc) 5.46 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 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