index.js 4.04 KB
module.exports = function(config) {

  return {
    getEntity: function (message) {

      return new Promise(function(resolve, reject) {

        var promise;

        if (message.queryString) {

          promise = knex.schema.raw(message.queryString);
        } else {

          promise = knex(message.tableName).where(message.where).select('*');
        }

        promise.then(function (data) {

          message.data = data[0];
          resolve(message);
        });
      });
    },

    guardarComprobante: function (req) {

      return new Promise((resolve, reject) => {

        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 = [
          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)) {
      
            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.cantidadRecibida,
              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.cantidadRecibida = 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() {

            console.log('comprobantes guardados con éxito');
            resolve();

          })
          .catch(function(e) {
            console.log(e);
            reject('Ocurrió un error');
          });
      });
    }
  }
}