comprobantes.js 2 KB
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) {

  let recadv = require('../recadv')(JSON.parse(JSON.stringify(req.body.cabecera)),
    JSON.parse(JSON.stringify(req.body.cuerpo)));

  let cabecera = 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();

  let cuerpo = 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()

  wsServer.guardarComprobante(req.body, req.body.cabecera.GLN).then(() => {

    Promise.all([
      recadv,
      cabecera,
      cuerpo
    ])
    .then(() => {
      res.status(200).send({data: 'Comprobante guardado con éxito'});
    })
    .catch(err => {
      console.log(err);
      res.status(500).send(err);
    });
  })
  .catch((err) => {

    Promise.all([cabecera, cuerpo]).then(() => {

      res.status(err).send(err)
    })
  });

});