module.exports = router = express.Router(); router.get('/comprobantes/:gln*?', function(req, res) { var cabecera = knex('PMAEFACT_TEMP') .where(function(qb) { if (req.params.gln) { qb.where({GLN: req.params.gln}); } }) .select('*'); var cuerpo = knex('PMOVFACT_TEMP') .where(function(qb) { if (req.params.gln) { qb.where({GLN: req.params.gln}); } }) .select('*'); Promise.all([cabecera, cuerpo]).then(function(data) { var result = []; data[0].forEach((cabecera) => { let idCabecera = cabecera.TIP + cabecera.TCO + cabecera.SUC + cabecera.NCO; var cuerpos = data[1].filter((cuerpo) => { let idCuerpo = cuerpo.TIP + cuerpo.TCO + cuerpo.SUC + cuerpo.NCO; return idCuerpo == idCabecera }); result.push({ cabecera: cabecera, cuerpo: cuerpos }); }); res.status(200).send(result); }); }); router.post('/comprobante', function(req, res) { var recadv = require('../recadv')(JSON.parse(JSON.stringify(req.body.cabecera)), JSON.parse(JSON.stringify(req.body.cuerpo))); 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 && cuerpo.RUB == 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.recibido || cuerpo.CAN, 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.CAN = 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'); res.status(201).send(); }) }) .catch(function(e) { console.log(e); res.status(500).send(e); }); });