Commit 1798fe5137fd385533177c81743ae1b3f2b4042e

Authored by Eric Fernandez
1 parent cafb195b5c
Exists in master

producto no encontrado, rechazados

Showing 2 changed files with 41 additions and 36 deletions   Show diff stats
1 module.exports = function(planex, wsServer) { 1 module.exports = function(planex, wsServer) {
2 2
3 return new Promise(function(resolve, reject) { 3 return new Promise(function(resolve, reject) {
4 4
5 var promesasArticulo = []; 5 var promesasArticulo = [];
6 6
7 var tipoCuit = planex.identificaxEmisor.cuit.slice(0, 2); 7 var tipoCuit = planex.identificaxEmisor.cuit.slice(0, 2);
8 var digitoVerificador = planex.identificaxEmisor.cuit[planex.identificaxEmisor.cuit.length - 1]; 8 var digitoVerificador = planex.identificaxEmisor.cuit[planex.identificaxEmisor.cuit.length - 1];
9 var cuitToDebo = tipoCuit + '-' + planex.identificaxEmisor.cuit.slice(2, 10) + '-' + digitoVerificador; 9 var cuitToDebo = tipoCuit + '-' + planex.identificaxEmisor.cuit.slice(2, 10) + '-' + digitoVerificador;
10 10
11 var promiseProveedores = wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, 'PROVEED', {CUIT: cuitToDebo}); 11 var promiseProveedores = wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, 'PROVEED', {CUIT: cuitToDebo});
12 var promiseEmp = wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, 'APAREMP'); 12 var promiseEmp = wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, 'APAREMP');
13 13
14 planex.itemsFactura.forEach(item => { 14 planex.itemsFactura.forEach(item => {
15 15
16 var queryString = 'select cb.*, art.CodRub, art.DET_LAR from CODBAR cb ' + 16 var queryString = 'select cb.*, art.CodRub, art.DET_LAR from CODBAR cb ' +
17 'join ARTICULOS art on cb.CodArt = art.CodArt and cb.CodSec = art.CodSec where cb.CodBar = \'' + 17 'join ARTICULOS art on cb.CodArt = art.CodArt and cb.CodSec = art.CodSec where cb.CodBar = \'' +
18 item.codigoUPCEAN13 + '\''; 18 item.codigoUPCEAN13 + '\'';
19 19
20 promesasArticulo.push( 20 promesasArticulo.push(
21 wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, null, {}, queryString) 21 wsServer.getEntidad(planex.identificaxReceptorFactura.glnReceptor, null, {}, queryString)
22 ); 22 );
23 }); 23 });
24 24
25 promesas = promesasArticulo.concat([promiseProveedores, promiseEmp]); 25 promesas = promesasArticulo.concat([promiseProveedores, promiseEmp]);
26 26
27 Promise.all(promesas).then(function(values) { 27 Promise.all(promesas).then(function(values) {
28 28
29 planex.itemsFactura.forEach((item, index) => { 29 planex.itemsFactura.forEach((item, index) => {
30 30
31 if (!values[index]) { 31 if (!values[index]) {
32 32
33 console.error('No se encontró el articulo Código de barras = ' + item.codigoUPCEAN13); 33 console.error('No se encontró el articulo Código de barras = ' + item.codigoUPCEAN13);
34 return; 34
35 } 35 }
36 36
37 item.CodArt = values[index].CodArt; 37 item.CodArt = values[index] ? values[index].CodArt : 0;
38 item.CodSec = values[index].CodSec; 38 item.CodSec = values[index] ? values[index].CodSec : 0;
39 item.CodRub = values[index].CodRub; 39 item.CodRub = values[index] ? values[index].CodRub : 0;
40 item.DET_LAR = values[index].DET_LAR; 40 item.DET_LAR = values[index] ? values[index].DET_LAR : item.descripcion;
41 41
42 delete values[index]; 42 delete values[index];
43 }); 43 });
44 44
45 values = values.filter(function(p) { 45 values = values.filter(function(p) {
46 return p; 46 return p;
47 }); 47 });
48 48
49 resolve({planex, values}); 49 resolve({planex, values});
50 50
51 }).catch(function(e) { 51 }).catch(function(e) {
52 reject(e); 52 reject(e);
53 }); 53 });
54 54
55 }); 55 });
56 } 56 }
57 57
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 delete req.body.cabecera.gln; 46 delete req.body.cabecera.gln;
47 delete req.body.cabecera.C_HD2; 47 delete req.body.cabecera.C_HD2;
48 delete req.body.cabecera.E_HD2; 48 delete req.body.cabecera.E_HD2;
49 49
50 //smalldatetime 50 //smalldatetime
51 req.body.cabecera.FEC = new Date(req.body.cabecera.FEC).toISOString().slice(0, 19).replace('T', ' '); 51 req.body.cabecera.FEC = new Date(req.body.cabecera.FEC).toISOString().slice(0, 19).replace('T', ' ');
52 req.body.cabecera.FECCAI = new Date(req.body.cabecera.FECCAI).toISOString().slice(0, 19).replace('T', ' '); 52 req.body.cabecera.FECCAI = new Date(req.body.cabecera.FECCAI).toISOString().slice(0, 19).replace('T', ' ');
53 req.body.cabecera.FECVEN = new Date(req.body.cabecera.FECVEN).toISOString().slice(0, 19).replace('T', ' '); 53 req.body.cabecera.FECVEN = new Date(req.body.cabecera.FECVEN).toISOString().slice(0, 19).replace('T', ' ');
54 54
55 //datetime 55 //datetime
56 req.body.cabecera.FEV = moment(req.body.cabecera.FEV).format('YYYYMMDD'); 56 req.body.cabecera.FEV = moment(req.body.cabecera.FEV).format('YYYYMMDD');
57 req.body.cabecera.FEP = moment(req.body.cabecera.FEP).format('YYYYMMDD'); 57 req.body.cabecera.FEP = moment(req.body.cabecera.FEP).format('YYYYMMDD');
58 58
59 var promesas = [ 59 var promesas = [
60 knex('PMAEFACT').insert(req.body.cabecera), 60 knex('PMAEFACT').insert(req.body.cabecera),
61 knex('PCOBYPAG').insert({ 61 knex('PCOBYPAG').insert({
62 COD: req.body.cabecera.COD, 62 COD: req.body.cabecera.COD,
63 FEP: req.body.cabecera.FEC, 63 FEP: req.body.cabecera.FEC,
64 TIP: req.body.cabecera.TIP, 64 TIP: req.body.cabecera.TIP,
65 TCO: req.body.cabecera.TCO, 65 TCO: req.body.cabecera.TCO,
66 SUC: req.body.cabecera.SUC, 66 SUC: req.body.cabecera.SUC,
67 NCO: req.body.cabecera.NCO, 67 NCO: req.body.cabecera.NCO,
68 IPA: req.body.cabecera.TOT, 68 IPA: req.body.cabecera.TOT,
69 SAL: 0, 69 SAL: 0,
70 TCA: 1, 70 TCA: 1,
71 ZONA: req.body.cabecera.ZON, 71 ZONA: req.body.cabecera.ZON,
72 FPA: req.body.cabecera.FPA, 72 FPA: req.body.cabecera.FPA,
73 REC: 0, 73 REC: 0,
74 FER: '19000101 00:00', 74 FER: '19000101 00:00',
75 PRO: '', 75 PRO: '',
76 FEV: req.body.cabecera.FEV, 76 FEV: req.body.cabecera.FEV,
77 ANU: '', 77 ANU: '',
78 PLA: 0, 78 PLA: 0,
79 LUG: 0, 79 LUG: 0,
80 RES: 0, 80 RES: 0,
81 CCU: 0, 81 CCU: 0,
82 UCU: 0, 82 UCU: 0,
83 HOS: '', 83 HOS: '',
84 E_HD: '', 84 E_HD: '',
85 C_HD: '' 85 C_HD: ''
86 }) 86 })
87 ]; 87 ];
88 88
89 req.body.cuerpo.forEach(cuerpo => { 89 req.body.cuerpo.forEach(cuerpo => {
90 90
91 if (cuerpo.estado == 'rechazado') return; 91 if (cuerpo.estado = 'rechazado' && !(cuerpo.COD == 0 && cuerpo.ART == 0 && cuerpo.RUB == 0)) {
92 promesas.push(knex('AMOVSTOC').insert({ 92
93 SEC: cuerpo.COD, 93 promesas.push(knex('AMOVSTOC').insert({
94 ART: cuerpo.ART, 94 SEC: cuerpo.COD,
95 FEC: req.body.cabecera.FEC, 95 ART: cuerpo.ART,
96 CYV: 'C', 96 FEC: req.body.cabecera.FEC,
97 TIP: req.body.cabecera.TIP, 97 CYV: 'C',
98 TCO: req.body.cabecera.TCO, 98 TIP: req.body.cabecera.TIP,
99 PVE: req.body.cabecera.SUC, 99 TCO: req.body.cabecera.TCO,
100 NCO: req.body.cabecera.NCO, 100 PVE: req.body.cabecera.SUC,
101 ORD: cuerpo.ORD, 101 NCO: req.body.cabecera.NCO,
102 CAN: cuerpo.recibido || cuerpo.CAN, 102 ORD: cuerpo.ORD,
103 PUN: cuerpo.PUN, 103 CAN: cuerpo.recibido || cuerpo.CAN,
104 COD: req.body.cabecera.COD, 104 PUN: cuerpo.PUN,
105 DTO: cuerpo.DTO, 105 COD: req.body.cabecera.COD,
106 IMI: cuerpo.IMI, 106 DTO: cuerpo.DTO,
107 PLA: 0, 107 IMI: cuerpo.IMI,
108 LUG: 0, 108 PLA: 0,
109 ANU: '', 109 LUG: 0,
110 TIM: 'Co', 110 ANU: '',
111 OPE: -888, // <= TODO: Cuando se haga el login poner codigo operario 111 TIM: 'Co',
112 IMI2: cuerpo.IMI2, 112 OPE: -888, // <= TODO: Cuando se haga el login poner codigo operario
113 E_HD: '', 113 IMI2: cuerpo.IMI2,
114 C_HD: '', 114 E_HD: '',
115 JUS: 'PLANEX', 115 C_HD: '',
116 NLC: 0, 116 JUS: 'PLANEX',
117 IMI3: cuerpo.IMI3, 117 NLC: 0,
118 JJN: '', 118 IMI3: cuerpo.IMI3,
119 JDJ: '', 119 JJN: '',
120 ID_MOTIVO_NANB: 0 120 JDJ: '',
121 })); 121 ID_MOTIVO_NANB: 0
122 }));
123 };
124
125 cuerpo.estado == 'rechazado' ? cuerpo.CAN = 0 : false;
122 126
123 delete cuerpo.gln; 127 delete cuerpo.gln;
124 delete cuerpo.C_HD2; 128 delete cuerpo.C_HD2;
125 delete cuerpo.E_HD2; 129 delete cuerpo.E_HD2;
126 delete cuerpo.codigoBarras; 130 delete cuerpo.codigoBarras;
127 delete cuerpo.estado; 131 delete cuerpo.estado;
128 delete cuerpo.recibido; 132 delete cuerpo.recibido;
129 delete cuerpo.input; 133 delete cuerpo.input;
134 delete cuerpo.tempRecibido;
130 135
131 cuerpo.LI0 = cuerpo.LI0.slice(0, 29); 136 cuerpo.LI0 = cuerpo.LI0.slice(0, 29);
132 cuerpo.TIO = cuerpo.TIO.slice(0, 29); 137 cuerpo.TIO = cuerpo.TIO.slice(0, 29);
133 138
134 promesas.push(knex('PMOVFACT').insert(cuerpo)); 139 promesas.push(knex('PMOVFACT').insert(cuerpo));
135 140
136 }); 141 });
137 142
138 Promise.all(promesas) 143 Promise.all(promesas)
139 .then(function() { 144 .then(function() {
140 145
141 Promise.all([ 146 Promise.all([
142 knex('PMAEFACT_TEMP').where({ 147 knex('PMAEFACT_TEMP').where({
143 TIP: req.body.cabecera.TIP, 148 TIP: req.body.cabecera.TIP,
144 TCO: req.body.cabecera.TCO, 149 TCO: req.body.cabecera.TCO,
145 SUC: req.body.cabecera.SUC, 150 SUC: req.body.cabecera.SUC,
146 NCO: req.body.cabecera.NCO, 151 NCO: req.body.cabecera.NCO,
147 COD: req.body.cabecera.COD 152 COD: req.body.cabecera.COD
148 }) 153 })
149 .del(), 154 .del(),
150 knex('PMOVFACT_TEMP').where({ 155 knex('PMOVFACT_TEMP').where({
151 TIP: req.body.cabecera.TIP, 156 TIP: req.body.cabecera.TIP,
152 TCO: req.body.cabecera.TCO, 157 TCO: req.body.cabecera.TCO,
153 SUC: req.body.cabecera.SUC, 158 SUC: req.body.cabecera.SUC,
154 NCO: req.body.cabecera.NCO 159 NCO: req.body.cabecera.NCO
155 }) 160 })
156 .del() 161 .del()
157 ]).then(function() { 162 ]).then(function() {
158 163
159 console.log('comprobantes guardados con éxito'); 164 console.log('comprobantes guardados con éxito');
160 res.status(201).send(); 165 res.status(201).send();
161 }) 166 })
162 167
163 }) 168 })
164 .catch(function(e) { 169 .catch(function(e) {
165 console.log(e); 170 console.log(e);
166 res.status(500).send(e); 171 res.status(500).send(e);
167 }); 172 });
168 173
169 }); 174 });
170 175