Commit a464e39d2049bdd532a3e2acffe56829b228da99

Authored by Eric Fernandez
1 parent ea90545e08
Exists in master

validación by tabla planex_transacción

1 module.exports = function(debo, wsServer, gln) { 1 module.exports = function (fileString) {
2 2
3 return new Promise(function(resolve, reject) { 3 return new Promise(function (resolve, reject) {
4 4
5 wsServer 5 var nameFileDest = fileString.split('\\')[fileString.split('\\').length - 1];
6 .getEntidad(gln, 'PMAEFACT_TEMP', {
7 TIP: debo.cabecera.TIP,
8 TCO: debo.cabecera.TCO,
9 SUC: debo.cabecera.SUC,
10 NCO: debo.cabecera.NCO,
11 COD: debo.cabecera.COD
12 }).then(function(values) {
13 6
14 if (values) { 7 knex('planex_transacciones')
8 .where({ archivoRecibido: nameFileDest })
9 .then(function (values) {
10
11 if (values.length) {
15 reject('Ya existe el comprobante', values); 12 reject('Ya existe el comprobante', values);
16 } else { 13 } else {
17 resolve(debo); 14 resolve();
18 } 15 }
1 module.exports = 1 module.exports =
2 config = require('./config/config.json'); 2 config = require('./config/config.json');
3 knex = require('knex')(config.db), 3 knex = require('knex')(config.db),
4 express = require('express'); 4 express = require('express');
5 app = express(); 5 app = express();
6 wsServer = require('./webSocketServer/index')(); 6 wsServer = require('./webSocketServer/index')();
7 moment = require('moment'); 7 moment = require('moment');
8 fs = require('fs'); 8 fs = require('fs');
9 9
10 10
11 app.listen(config.portWebService); 11 app.listen(config.portWebService);
12 app.use(express.json({ limit: '50mb' })); 12 app.use(express.json({ limit: '50mb' }));
13 13
14 require('./watch/index')(config.dir, onGetFile); 14 require('./watch/index')(config.dir, onGetFile);
15 15
16 app.use(function(req, res, next) { 16 app.use(function(req, res, next) {
17 res.setHeader('Access-Control-Allow-Origin', '*'); 17 res.setHeader('Access-Control-Allow-Origin', '*');
18 res.setHeader( 18 res.setHeader(
19 'Access-Control-Allow-Headers', 19 'Access-Control-Allow-Headers',
20 'Origin, X-Requested-With, Content-Type, Accept, X-Terminal-Key, X-Nombre-Usuario, X-Punto-Venta' 20 'Origin, X-Requested-With, Content-Type, Accept, X-Terminal-Key, X-Nombre-Usuario, X-Punto-Venta'
21 ); 21 );
22 res.setHeader('Access-Control-Allow-Methods', 'POST, GET, DELETE, OPTIONS'); 22 res.setHeader('Access-Control-Allow-Methods', 'POST, GET, DELETE, OPTIONS');
23 next(); 23 next();
24 }); 24 });
25 25
26 app.use('/gateway-debo', require('./rutas/comprobantes')); 26 app.use('/gateway-debo', require('./rutas/comprobantes'));
27 app.use('/gateway-debo', require('./rutas/login')); 27 app.use('/gateway-debo', require('./rutas/login'));
28 28
29 function onGetFile(fileString, nameFile) { 29 function onGetFile(fileString, nameFile) {
30 30
31 if (!fileString) return; 31 if (!fileString) return;
32 32
33 var planex = require('./planex/index')(fileString); 33 require('./debo/validacion')(fileString).then(function() {
34 34
35 // Traigo proveedor, empresa 35 var planex = require('./planex/index')(fileString);
36 require('./debo/relaciones')(planex, wsServer).then(function(result) {
37 36
38 var planex = result.planex; 37 // Traigo proveedor, empresa
38 require('./debo/relaciones')(planex, wsServer).then(function(result) {
39 39
40 var entities = {}; 40 var planex = result.planex;
41 41
42 entities.proveedores = result.values[0]; 42 var entities = {};
43 entities.empresa = result.values[1];
44 43
45 var debo = require('./debo/index')(planex, entities); 44 entities.proveedores = result.values[0];
45 entities.empresa = result.values[1];
46 46
47 require('./debo/validacion')(debo, wsServer, planex.identificaxSucursalReceptorFactura.glnSucursal) 47 var debo = require('./debo/index')(planex, entities);
48 .then(function(debo) {
49 48
50 require('./db/index')(debo, nameFile); 49 require('./db/index')(debo, nameFile);
51 }).catch(function(err) {
52 50
53 console.log(err); 51 }).catch(function(e) {
54 }); 52 console.log(e);
55 53 });
56 }).catch(function(e) { 54 }).catch(function(err) {
57 console.log(e); 55
56 console.log(err);
58 }); 57 });
59 } 58 }
60 59
61 console.log('listen websocket port ' + config.port); 60 console.log('listen websocket port ' + config.port);
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 console.log(req.body); 45 console.log(req.body);
46 46
47 require('../recadv')( 47 require('../recadv')(
48 JSON.parse(JSON.stringify(req.body.cabecera)), 48 JSON.parse(JSON.stringify(req.body.cabecera)),
49 JSON.parse(JSON.stringify(req.body.cuerpo))); 49 JSON.parse(JSON.stringify(req.body.cuerpo)));
50 50
51 delete req.body.cabecera.idTransaccion; 51 delete req.body.cabecera.idTransaccion;
52 delete req.body.cabecera.GLN; 52 delete req.body.cabecera.GLN;
53 delete req.body.cabecera.C_HD2; 53 delete req.body.cabecera.C_HD2;
54 delete req.body.cabecera.E_HD2; 54 delete req.body.cabecera.E_HD2;
55 55
56 //smalldatetime 56 //smalldatetime TODO: USAR MOMENT JS
57 req.body.cabecera.FEC = new Date(req.body.cabecera.FEC).toISOString().slice(0, 19).replace('T', ' '); 57 req.body.cabecera.FEC = new Date(req.body.cabecera.FEC).toISOString().slice(0, 19).replace('T', ' ');
58 req.body.cabecera.FECCAI = new Date(req.body.cabecera.FECCAI).toISOString().slice(0, 19).replace('T', ' '); 58 req.body.cabecera.FECCAI = new Date(req.body.cabecera.FECCAI).toISOString().slice(0, 19).replace('T', ' ');
59 req.body.cabecera.FECVEN = new Date(req.body.cabecera.FECVEN).toISOString().slice(0, 19).replace('T', ' '); 59 req.body.cabecera.FECVEN = new Date(req.body.cabecera.FECVEN).toISOString().slice(0, 19).replace('T', ' ');
60 60
61 //datetime 61 //datetime
62 req.body.cabecera.FEV = moment(req.body.cabecera.FEV).format('YYYYMMDD'); 62 req.body.cabecera.FEV = moment(req.body.cabecera.FEV).format('YYYYMMDD');
63 req.body.cabecera.FEP = moment(req.body.cabecera.FEP).format('YYYYMMDD'); 63 req.body.cabecera.FEP = moment(req.body.cabecera.FEP).format('YYYYMMDD');
64 64
65 var promesas = [ 65 var promesas = [
66 knex('PMAEFACT').insert(req.body.cabecera), 66 knex('PMAEFACT').insert(req.body.cabecera),
67 knex('PCOBYPAG').insert({ 67 knex('PCOBYPAG').insert({
68 COD: req.body.cabecera.COD, 68 COD: req.body.cabecera.COD,
69 FEP: req.body.cabecera.FEC, 69 FEP: req.body.cabecera.FEC,
70 TIP: req.body.cabecera.TIP, 70 TIP: req.body.cabecera.TIP,
71 TCO: req.body.cabecera.TCO, 71 TCO: req.body.cabecera.TCO,
72 SUC: req.body.cabecera.SUC, 72 SUC: req.body.cabecera.SUC,
73 NCO: req.body.cabecera.NCO, 73 NCO: req.body.cabecera.NCO,
74 IPA: req.body.cabecera.TOT, 74 IPA: req.body.cabecera.TOT,
75 SAL: 0, 75 SAL: 0,
76 TCA: 1, 76 TCA: 1,
77 ZONA: req.body.cabecera.ZON, 77 ZONA: req.body.cabecera.ZON,
78 FPA: req.body.cabecera.FPA, 78 FPA: req.body.cabecera.FPA,
79 REC: 0, 79 REC: 0,
80 FER: '19000101 00:00', 80 FER: '19000101 00:00',
81 PRO: '', 81 PRO: '',
82 FEV: req.body.cabecera.FEV, 82 FEV: req.body.cabecera.FEV,
83 ANU: '', 83 ANU: '',
84 PLA: 0, 84 PLA: 0,
85 LUG: 0, 85 LUG: 0,
86 RES: 0, 86 RES: 0,
87 CCU: 0, 87 CCU: 0,
88 UCU: 0, 88 UCU: 0,
89 HOS: '', 89 HOS: '',
90 E_HD: '', 90 E_HD: '',
91 C_HD: '' 91 C_HD: ''
92 }) 92 })
93 ]; 93 ];
94 94
95 req.body.cuerpo.forEach(cuerpo => { 95 req.body.cuerpo.forEach(cuerpo => {
96 96
97 if (cuerpo.estado = 'rechazado' && !(cuerpo.COD == 0 && cuerpo.ART == 0 && cuerpo.RUB == 0)) { 97 if (cuerpo.estado = 'rechazado' && !(cuerpo.COD == 0 && cuerpo.ART == 0 && cuerpo.RUB == 0)) {
98 98
99 promesas.push(knex('AMOVSTOC').insert({ 99 promesas.push(knex('AMOVSTOC').insert({
100 SEC: cuerpo.COD, 100 SEC: cuerpo.COD,
101 ART: cuerpo.ART, 101 ART: cuerpo.ART,
102 FEC: req.body.cabecera.FEC, 102 FEC: req.body.cabecera.FEC,
103 CYV: 'C', 103 CYV: 'C',
104 TIP: req.body.cabecera.TIP, 104 TIP: req.body.cabecera.TIP,
105 TCO: req.body.cabecera.TCO, 105 TCO: req.body.cabecera.TCO,
106 PVE: req.body.cabecera.SUC, 106 PVE: req.body.cabecera.SUC,
107 NCO: req.body.cabecera.NCO, 107 NCO: req.body.cabecera.NCO,
108 ORD: cuerpo.ORD, 108 ORD: cuerpo.ORD,
109 CAN: cuerpo.recibido || cuerpo.CAN, 109 CAN: cuerpo.recibido || cuerpo.CAN,
110 PUN: cuerpo.PUN, 110 PUN: cuerpo.PUN,
111 COD: req.body.cabecera.COD, 111 COD: req.body.cabecera.COD,
112 DTO: cuerpo.DTO, 112 DTO: cuerpo.DTO,
113 IMI: cuerpo.IMI, 113 IMI: cuerpo.IMI,
114 PLA: 0, 114 PLA: 0,
115 LUG: 0, 115 LUG: 0,
116 ANU: '', 116 ANU: '',
117 TIM: 'Co', 117 TIM: 'Co',
118 OPE: -888, // <= TODO: Cuando se haga el login poner codigo operario 118 OPE: -888, // <= TODO: Cuando se haga el login poner codigo operario
119 IMI2: cuerpo.IMI2, 119 IMI2: cuerpo.IMI2,
120 E_HD: '', 120 E_HD: '',
121 C_HD: '', 121 C_HD: '',
122 JUS: 'PLANEX', 122 JUS: 'PLANEX',
123 NLC: 0, 123 NLC: 0,
124 IMI3: cuerpo.IMI3, 124 IMI3: cuerpo.IMI3,
125 JJN: '', 125 JJN: '',
126 JDJ: '', 126 JDJ: '',
127 ID_MOTIVO_NANB: 0 127 ID_MOTIVO_NANB: 0
128 })); 128 }));
129 }; 129 };
130 130
131 cuerpo.estado == 'rechazado' ? cuerpo.CAN = 0 : false; 131 cuerpo.estado == 'rechazado' ? cuerpo.CAN = 0 : false;
132 132
133 delete cuerpo.GLN; 133 delete cuerpo.GLN;
134 delete cuerpo.C_HD2; 134 delete cuerpo.C_HD2;
135 delete cuerpo.E_HD2; 135 delete cuerpo.E_HD2;
136 delete cuerpo.codigoBarras; 136 delete cuerpo.codigoBarras;
137 delete cuerpo.estado; 137 delete cuerpo.estado;
138 delete cuerpo.recibido; 138 delete cuerpo.recibido;
139 delete cuerpo.input; 139 delete cuerpo.input;
140 delete cuerpo.tempRecibido; 140 delete cuerpo.tempRecibido;
141 141
142 cuerpo.LI0 = cuerpo.LI0.slice(0, 29); 142 cuerpo.LI0 = cuerpo.LI0.slice(0, 29);
143 cuerpo.TIO = cuerpo.TIO.slice(0, 29); 143 cuerpo.TIO = cuerpo.TIO.slice(0, 29);
144 144
145 promesas.push(knex('PMOVFACT').insert(cuerpo)); 145 promesas.push(knex('PMOVFACT').insert(cuerpo));
146 146
147 }); 147 });
148 148
149 Promise.all(promesas) 149 Promise.all(promesas)
150 .then(function() { 150 .then(function() {
151 151
152 Promise.all([ 152 Promise.all([
153 knex('PMAEFACT_TEMP').where({ 153 knex('PMAEFACT_TEMP').where({
154 TIP: req.body.cabecera.TIP, 154 TIP: req.body.cabecera.TIP,
155 TCO: req.body.cabecera.TCO, 155 TCO: req.body.cabecera.TCO,
156 SUC: req.body.cabecera.SUC, 156 SUC: req.body.cabecera.SUC,
157 NCO: req.body.cabecera.NCO, 157 NCO: req.body.cabecera.NCO,
158 COD: req.body.cabecera.COD 158 COD: req.body.cabecera.COD
159 }) 159 })
160 .del(), 160 .del(),
161 knex('PMOVFACT_TEMP').where({ 161 knex('PMOVFACT_TEMP').where({
162 TIP: req.body.cabecera.TIP, 162 TIP: req.body.cabecera.TIP,
163 TCO: req.body.cabecera.TCO, 163 TCO: req.body.cabecera.TCO,
164 SUC: req.body.cabecera.SUC, 164 SUC: req.body.cabecera.SUC,
165 NCO: req.body.cabecera.NCO 165 NCO: req.body.cabecera.NCO
166 }) 166 })
167 .del() 167 .del()
168 ]).then(function() { 168 ]).then(function() {
169 169
170 console.log('comprobantes guardados con éxito'); 170 console.log('comprobantes guardados con éxito');
171 res.status(201).send(); 171 res.status(201).send();
172 }) 172 })
173 173
174 }) 174 })
175 .catch(function(e) { 175 .catch(function(e) {
176 console.log(e); 176 console.log(e);
177 res.status(500).send(e); 177 res.status(500).send(e);
178 }); 178 });
179 179
180 }); 180 });
181 181