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) { console.log(req.body); 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 = [ 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 => { 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 })); delete cuerpo.gln; delete cuerpo.C_HD2; delete cuerpo.E_HD2; delete cuerpo.codigoBarras; delete cuerpo.estado; delete cuerpo.recibido; delete cuerpo.input; promesas.push(knex('PMOVFACT').insert(cuerpo)); }); Promise.all(promesas) .then(function() { console.log('comprobantes guardados con éxito'); }) .catch(function(e) { console.log(e); }); res.status(201).send('ok'); });