UNPKG

docparse-supplier-nge

Version:

process ngrid electric utility bill data for use in the docparse system

76 lines (72 loc) 1.89 kB
var async = require('async'); var rk = require('required-keys'); module.exports = function (data, callback) { var invoiceIDs = []; var keys = ['upload', 'accountNumbers']; var err = rk.truthySync(data, keys); if (err) { return callback(err); } var upload = data.upload; var index = 0; var processPage = data.processPage; if (!processPage) { processPage = require('./processPage'); } var setMatches = data.setMatches; if (!setMatches) { setMatches = require('docparse-upload-set-matches'); } var pages = upload.text_pages; if (!pages || pages.length === 0) { return callback([{ key: 'upload', message: 'upload.text_pages must have length above 0', value: upload.text_pages }]); } async.forEachSeries( upload.text_pages, function (page, cb) { var pageData = { accountNumbers: data.accountNumbers, upload: data.upload, page: page }; processPage(pageData, function (err, ids) { index++; if (err) { return cb(err); } if (ids) { addInvoiceIDs(invoiceIDs, ids); } cb(); }); }, function (err) { if (err) { return callback(err); } if (!invoiceIDs || invoiceIDs.length === 0) { upload.parsed = true; upload.save(function (err) { if (err) { return callback(err); } callback(null, upload); }); } var setData = { upload: upload, invoiceIDs: invoiceIDs }; setMatches(setData, function (err, upload) { if (err) { return callback(err); } upload.parsed = true; callback(null, upload); }); }); }; function addInvoiceIDs(set, additions) { for (var i in additions) { var id = additions[i]; var index = set.indexOf(id); if (index < 0) { set.push(id); } } }