Commit 7aa20e33b6145fe18cf4e3c25b775d4c9da9ac91

Authored by Eric Fernandez
1 parent 3b77ca8415
Exists in master

recadv activo, delete cabecera y cuerpo cuando hubo error

Showing 2 changed files with 32 additions and 19 deletions   Show diff stats
rutas/comprobantes.js
1 module.exports = router = express.Router(); 1 module.exports = router = express.Router();
2 2
3 router.get('/comprobantes/:gln*?', function(req, res) { 3 router.get('/comprobantes/:gln*?', function(req, res) {
4 4
5 var cabecera = knex('PMAEFACT_TEMP') 5 var cabecera = knex('PMAEFACT_TEMP')
6 .where(function(qb) { 6 .where(function(qb) {
7 if (req.params.gln) { 7 if (req.params.gln) {
8 qb.where({GLN: req.params.gln}); 8 qb.where({GLN: req.params.gln});
9 } 9 }
10 }) 10 })
11 .select('*'); 11 .select('*');
12 12
13 var cuerpo = knex('PMOVFACT_TEMP') 13 var cuerpo = knex('PMOVFACT_TEMP')
14 .where(function(qb) { 14 .where(function(qb) {
15 if (req.params.gln) { 15 if (req.params.gln) {
16 qb.where({GLN: req.params.gln}); 16 qb.where({GLN: req.params.gln});
17 } 17 }
18 }) 18 })
19 .select('*'); 19 .select('*');
20 20
21 Promise.all([cabecera, cuerpo]).then(function(data) { 21 Promise.all([cabecera, cuerpo]).then(function(data) {
22 22
23 var result = []; 23 var result = [];
24 data[0].forEach((cabecera) => { 24 data[0].forEach((cabecera) => {
25 25
26 let idCabecera = cabecera.TIP + cabecera.TCO + cabecera.SUC + cabecera.NCO; 26 let idCabecera = cabecera.TIP + cabecera.TCO + cabecera.SUC + cabecera.NCO;
27 27
28 var cuerpos = data[1].filter((cuerpo) => { 28 var cuerpos = data[1].filter((cuerpo) => {
29 let idCuerpo = cuerpo.TIP + cuerpo.TCO + cuerpo.SUC + cuerpo.NCO; 29 let idCuerpo = cuerpo.TIP + cuerpo.TCO + cuerpo.SUC + cuerpo.NCO;
30 return idCuerpo == idCabecera; 30 return idCuerpo == idCabecera;
31 }); 31 });
32 32
33 result.push({ 33 result.push({
34 cabecera: cabecera, 34 cabecera: cabecera,
35 cuerpo: cuerpos 35 cuerpo: cuerpos
36 }); 36 });
37 }); 37 });
38 38
39 res.status(200).send(result); 39 res.status(200).send(result);
40 }); 40 });
41 }); 41 });
42 42
43 router.post('/comprobante', function(req, res) { 43 router.post('/comprobante', function(req, res) {
44 44
45 // var recadv = require('../recadv')(JSON.parse(JSON.stringify(req.body.cabecera)), 45 let recadv = require('../recadv')(JSON.parse(JSON.stringify(req.body.cabecera)),
46 // JSON.parse(JSON.stringify(req.body.cuerpo))); 46 JSON.parse(JSON.stringify(req.body.cuerpo)));
47
48 let cabecera = knex('PMAEFACT_TEMP')
49 .where({
50 TIP: req.body.cabecera.TIP,
51 TCO: req.body.cabecera.TCO,
52 SUC: req.body.cabecera.SUC,
53 NCO: req.body.cabecera.NCO,
54 COD: req.body.cabecera.COD
55 })
56 .del();
57
58 let cuerpo = knex('PMOVFACT_TEMP')
59 .where({
60 TIP: req.body.cabecera.TIP,
61 TCO: req.body.cabecera.TCO,
62 SUC: req.body.cabecera.SUC,
63 NCO: req.body.cabecera.NCO
64 })
65 .del()
47 66
48 wsServer.guardarComprobante(req.body, req.body.cabecera.GLN).then(() => { 67 wsServer.guardarComprobante(req.body, req.body.cabecera.GLN).then(() => {
49 68
50 Promise.all([ 69 Promise.all([
51 knex('PMAEFACT_TEMP').where({ 70 recadv,
52 TIP: req.body.cabecera.TIP, 71 cabecera,
53 TCO: req.body.cabecera.TCO, 72 cuerpo
54 SUC: req.body.cabecera.SUC,
55 NCO: req.body.cabecera.NCO,
56 COD: req.body.cabecera.COD
57 })
58 .del(),
59 knex('PMOVFACT_TEMP').where({
60 TIP: req.body.cabecera.TIP,
61 TCO: req.body.cabecera.TCO,
62 SUC: req.body.cabecera.SUC,
63 NCO: req.body.cabecera.NCO
64 })
65 .del()
66 ]) 73 ])
67 .then(() => { 74 .then(() => {
68 res.status(200).send({data: 'Comprobante guardado con éxito'}); 75 res.status(200).send({data: 'Comprobante guardado con éxito'});
69 }) 76 })
70 .catch(err => { 77 .catch(err => {
71 console.log(err); 78 console.log(err);
72 res.status(500).send(err); 79 res.status(500).send(err);
webSocketServer/index.js
1 module.exports = function() { 1 module.exports = function() {
2 2
3 const webSocketServer = require('ws').Server; 3 const webSocketServer = require('ws').Server;
4 var clients = []; 4 var clients = [];
5 5
6 const objWs = {}; 6 const objWs = {};
7 7
8 objWs.wsServer = new webSocketServer({ 8 objWs.wsServer = new webSocketServer({
9 port: config.port 9 port: config.port
10 }); 10 });
11 11
12 function noop() {} 12 function noop() {}
13 13
14 function heartbeat() { 14 function heartbeat() {
15 this.isAlive = true; 15 this.isAlive = true;
16 } 16 }
17 17
18 objWs.wsServer.on('connection', function connection(ws) { 18 objWs.wsServer.on('connection', function connection(ws) {
19 19
20 console.log('open socket server'); 20 console.log('open socket server');
21 ws.isAlive = true; 21 ws.isAlive = true;
22 ws.on('pong', heartbeat); 22 ws.on('pong', heartbeat);
23 23
24 ws.on('message', function incoming(message) { 24 ws.on('message', function incoming(message) {
25 25
26 message = JSON.parse(message.toString('utf8')); 26 message = JSON.parse(message.toString('utf8'));
27 27
28 switch (message.action) { 28 switch (message.action) {
29 case 'gln': 29 case 'gln':
30 clients.push({ws: ws, gln: message.gln}); 30 clients.push({ws: ws, gln: message.gln});
31 break; 31 break;
32 default: 32 default:
33 // console.log(message.action); 33 // console.log(message.action);
34 } 34 }
35 }); 35 });
36 }); 36 });
37 37
38 const interval = setInterval(function ping() { 38 const interval = setInterval(function ping() {
39 objWs.wsServer.clients.forEach(function each(ws) { 39 objWs.wsServer.clients.forEach(function each(ws) {
40 if (ws.isAlive === false) return ws.terminate(); 40 if (ws.isAlive === false) return ws.terminate();
41 41
42 ws.isAlive = false; 42 ws.isAlive = false;
43 ws.ping(noop); 43 ws.ping(noop);
44 }); 44 });
45 }, 10000); 45 }, 10000);
46 46
47 objWs.getEntidad = function(gln, tableName, where, queryString) { 47 objWs.getEntidad = function(gln, tableName, where, queryString) {
48 48
49 return new Promise(function(resolve, reject) { 49 return new Promise(function(resolve, reject) {
50 50
51 var client = clients.filter(function(client) { 51 var client = clients.filter(function(client) {
52 return client.gln == gln 52 return client.gln == gln
53 })[0]; 53 })[0];
54 54
55 if (!client) { 55 if (!client) {
56 reject('No se encuentra el webSocket client'); 56 reject('No se encuentra el webSocket client');
57 } 57 }
58 58
59 var idSolicitud = Math.round(Math.random() * 1000); 59 var idSolicitud = Math.round(Math.random() * 1000);
60 60
61 var enviar = { 61 var enviar = {
62 action: 'getEntity', 62 action: 'getEntity',
63 idSolicitud: idSolicitud 63 idSolicitud: idSolicitud
64 }; 64 };
65 65
66 if (queryString) { 66 if (queryString) {
67 67
68 enviar.queryString = queryString; 68 enviar.queryString = queryString;
69 } else { 69 } else {
70 enviar.tableName = tableName; 70 enviar.tableName = tableName;
71 enviar.where = where || {}; 71 enviar.where = where || {};
72 } 72 }
73 73
74 client.ws.send(JSON.stringify(enviar)); 74 client.ws.send(JSON.stringify(enviar));
75 75
76 client.ws.on('message', function(message) { 76 client.ws.on('message', function(message) {
77 77
78 message = JSON.parse(message); 78 message = JSON.parse(message);
79 79
80 if (idSolicitud == message.idSolicitud) { 80 if (idSolicitud == message.idSolicitud) {
81 81
82 resolve(message.data); 82 resolve(message.data);
83 } 83 }
84 84
85 }); 85 });
86 }); 86 });
87 } 87 }
88 88
89 objWs.getClientGln = function(gln) { 89 objWs.getClientGln = function(gln) {
90 return clients.filter(function(client) { 90 return clients.filter(function(client) {
91 return client.gln = gln; 91 return client.gln = gln;
92 }); 92 });
93 } 93 }
94 94
95 objWs.guardarComprobante = function (cuerpo, gln) { 95 objWs.guardarComprobante = function (cuerpo, gln) {
96 96
97 return new Promise((resolve, reject) => { 97 return new Promise((resolve, reject) => {
98 98
99 var client = clients.filter(function(client) { 99 var client = clients.filter(function(client) {
100 return client.gln == gln 100 return client.gln == gln
101 })[0]; 101 })[0];
102 102
103 if (!client) { 103 if (!client) {
104 reject('No se encuentra el webSocket client'); 104 reject('No se encuentra el webSocket client');
105 console.log('No se encuentra el webSocket client'); 105 console.log('No se encuentra el webSocket client');
106 return; 106 return;
107 } 107 }
108 108
109 var idSolicitud = Math.round(Math.random() * 1000); 109 var idSolicitud = Math.round(Math.random() * 1000);
110 110
111 var enviar = { 111 var enviar = {
112 action: 'comprobante', 112 action: 'comprobante',
113 req: cuerpo, 113 req: cuerpo,
114 idSolicitud: idSolicitud 114 idSolicitud: idSolicitud
115 }; 115 };
116 116
117 console.log(`enviando comprobante a cliente`) 117 console.log(`enviando comprobante a cliente`)
118 console.log(cuerpo.cabecera); 118 console.log(cuerpo.cabecera);
119 119
120 client.ws.send(JSON.stringify(enviar)); 120 client.ws.send(JSON.stringify(enviar));
121 121
122 client.ws.on('message', function(message) { 122 client.ws.on('message', function(message) {
123 123
124 message = JSON.parse(message); 124 message = JSON.parse(message);
125 console.log(message); 125 console.log(message);
126 if (idSolicitud == message.idSolicitud) { 126 if (idSolicitud == message.idSolicitud) {
127 127
128 if (message.ok) { 128 if (message.ok) {
129 console.log('resuelve comprobante en estación') 129 console.log('resuelve comprobante en estación')
130 resolve(); 130 resolve();
131 } else { 131 } else {
132 132
133 reject(); 133 reject(message.code);
134 } 134 }
135 } 135 }
136 136
137 }); 137 });
138 138
139 }); 139 });
140 } 140 }
141 141
142 return objWs; 142 return objWs;
143 } 143 }
144 144