diff --git a/data/index.js b/data/index.js index f6fb798..5d5455b 100644 --- a/data/index.js +++ b/data/index.js @@ -1,7 +1,5 @@ module.exports = function(config) { - var knex = require('knex')(config); - return { getEntity: function (message) { @@ -23,6 +21,141 @@ module.exports = function(config) { resolve(message); }); }); + }, + + guardarComprobante: function (req) { + + return new Promise((resolve, reject) => { + + delete req.body.cabecera.idTransaccion; + delete req.body.cabecera.GLN; + delete req.body.cabecera.C_HD2; + delete req.body.cabecera.E_HD2; + + //smalldatetime + req.body.cabecera.FEC = new Date(req.body.cabecera.FEC).toISOString().slice(0, 19).replace('T', ' '); + req.body.cabecera.FECCAI = new Date(req.body.cabecera.FECCAI).toISOString().slice(0, 19).replace('T', ' '); + req.body.cabecera.FECVEN = new Date(req.body.cabecera.FECVEN).toISOString().slice(0, 19).replace('T', ' '); + //datetime + req.body.cabecera.FEV = moment(req.body.cabecera.FEV).format('YYYYMMDD'); + req.body.cabecera.FEP = moment(req.body.cabecera.FEP).format('YYYYMMDD'); + + var promesas = [ + recadv, + knex('PMAEFACT').insert(req.body.cabecera), + knex('PCOBYPAG').insert({ + COD: req.body.cabecera.COD, + FEP: req.body.cabecera.FEC, + TIP: req.body.cabecera.TIP, + TCO: req.body.cabecera.TCO, + SUC: req.body.cabecera.SUC, + NCO: req.body.cabecera.NCO, + IPA: req.body.cabecera.TOT, + SAL: 0, + TCA: 1, + ZONA: req.body.cabecera.ZON, + FPA: req.body.cabecera.FPA, + REC: 0, + FER: '19000101 00:00', + PRO: '', + FEV: req.body.cabecera.FEV, + ANU: '', + PLA: 0, + LUG: 0, + RES: 0, + CCU: 0, + UCU: 0, + HOS: '', + E_HD: '', + C_HD: '' + }), + ]; + + req.body.cuerpo.forEach(cuerpo => { + + if (cuerpo.estado != 'rechazado' && !(cuerpo.COD == 0 && cuerpo.ART == 0)) { + + promesas.push(knex('AMOVSTOC').insert({ + SEC: cuerpo.COD, + ART: cuerpo.ART, + FEC: req.body.cabecera.FEC, + CYV: 'C', + TIP: req.body.cabecera.TIP, + TCO: req.body.cabecera.TCO, + PVE: req.body.cabecera.SUC, + NCO: req.body.cabecera.NCO, + ORD: cuerpo.ORD, + CAN: cuerpo.cantidadRecibida, + PUN: cuerpo.PUN, + COD: req.body.cabecera.COD, + DTO: cuerpo.DTO, + IMI: cuerpo.IMI, + PLA: 0, + LUG: 0, + ANU: '', + TIM: 'Co', + OPE: -888, // <= TODO: Cuando se haga el login poner codigo operario + IMI2: cuerpo.IMI2, + E_HD: '', + C_HD: '', + JUS: 'PLANEX', + NLC: 0, + IMI3: cuerpo.IMI3, + JJN: '', + JDJ: '', + ID_MOTIVO_NANB: 0 + })); + }; + + cuerpo.estado == 'rechazado' ? cuerpo.cantidadRecibida = 0 : false; + + delete cuerpo.GLN; + delete cuerpo.C_HD2; + delete cuerpo.E_HD2; + delete cuerpo.codigoBarras; + delete cuerpo.estado; + delete cuerpo.recibido; + delete cuerpo.input; + delete cuerpo.tempRecibido; + + cuerpo.LI0 = cuerpo.LI0.slice(0, 29); + cuerpo.TIO = cuerpo.TIO.slice(0, 29); + + promesas.push(knex('PMOVFACT').insert(cuerpo)); + + }); + + Promise.all(promesas) + .then(function() { + + Promise.all([ + knex('PMAEFACT_TEMP').where({ + TIP: req.body.cabecera.TIP, + TCO: req.body.cabecera.TCO, + SUC: req.body.cabecera.SUC, + NCO: req.body.cabecera.NCO, + COD: req.body.cabecera.COD + }) + .del(), + knex('PMOVFACT_TEMP').where({ + TIP: req.body.cabecera.TIP, + TCO: req.body.cabecera.TCO, + SUC: req.body.cabecera.SUC, + NCO: req.body.cabecera.NCO + }) + .del() + ]).then(function() { + + console.log('comprobantes guardados con éxito'); + resolve(); + }) + + }) + .catch(function(e) { + console.log(e); + reject('Ocurrió un error'); + }); + }); } } } diff --git a/index.js b/index.js index 0ddb788..402fa01 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ const WebSocketClient = require('ws'); const config = require('./config/config.json'); const data = require('./data/index')(config.bo); +module.exports = knex = requre('knex')(config.bo); const client = new WebSocketClient(config.urlHO); @@ -21,6 +22,17 @@ client.on('open', function open() { client.send(JSON.stringify(message)); }); break; + + case 'comprobante' : + + data.guardarComprobante(message.req).then(() => { + client.send('ok'); + }).catch(err => { + client.send('bad'); + }); + + break; + default: break; }