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

  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');
});