Пример #1
0
        private List <BoletoRobotDTO> anularBoletos(List <BoletoRobotDTO> boletosAAnular)
        {
            List <BoletoRobotDTO> lrespuesta = new List <BoletoRobotDTO>();

            foreach (var lboleto in boletosAAnular)
            {
                try
                {
                    logger.info(string.Format("Anular boleto por servicio: {0} - {1}", lboleto.PNR, lboleto.BoletoFull));

                    var lwsProcesosGDS = new WS_ProcesosGDS.ProcesosGDS();
                    lwsProcesosGDS.CredencialesValue = getCredencialesWS();

                    var ldatosAplicacion = new WS_ProcesosGDS.CE_DatosAplicacion();
                    ldatosAplicacion.strGDS               = WS_ProcesosGDS.CE_TipoGDS.GDS_AMADEUS;
                    ldatosAplicacion.strNameApp           = WS_ProcesosGDS.CE_Aplicaciones.SabreRed;
                    ldatosAplicacion.strPNR               = lboleto.PNR;
                    ldatosAplicacion.strPseudo            = lboleto.Pseudo;
                    ldatosAplicacion.strPseudoVenta       = lboleto.Pseudo;
                    ldatosAplicacion.strCodigoSeguimiento = "*****@*****.**";

                    var ldatosUsuario = new WS_ProcesosGDS.CE_DatosUsuario();
                    ldatosUsuario.idUsuarioPTA     = "123";
                    ldatosUsuario.strCorreoUsuario = "*****@*****.**";

                    var ldatosCliente = new WS_ProcesosGDS.CE_DatosCliente();
                    ldatosCliente.intTipoCliente = lboleto.TipoDeCliente;
                    ldatosCliente.strDKCliente   = Convert.ToString(lboleto.IdCliente);
                    ldatosCliente.strDireccion   = "Lima";

                    var oRecuperarReservaRQ = new WS_ProcesosGDS.CE_ReservaRQ();
                    oRecuperarReservaRQ.oDatosAplicacion = ldatosAplicacion;
                    oRecuperarReservaRQ.oDatosUsuario    = ldatosUsuario;
                    oRecuperarReservaRQ.oDatosCliente    = ldatosCliente;
                    oRecuperarReservaRQ.CambiarPseudo    = true;
                    oRecuperarReservaRQ.RealizarDQB      = true;

                    var oRecuperarReservaRS = lwsProcesosGDS.RecuperarReservaGDS(oRecuperarReservaRQ);
                    if (oRecuperarReservaRS != null)
                    {
                        if (oRecuperarReservaRS.lstMensajeError != null)
                        {
                            lboleto.AnulacionOkPorRobot = false;
                            lboleto.MensajeError        = string.Join("/", oRecuperarReservaRS.lstMensajeError);
                        }
                        else
                        {
                            if (oRecuperarReservaRS.lstBoletos != null && oRecuperarReservaRS.lstBoletos.Any())
                            {
                                var currentBoleto = oRecuperarReservaRS.lstBoletos.Where(b => b.eTicketNumber.Equals(lboleto.BoletoFull)).FirstOrDefault();
                                if (currentBoleto != null)
                                {
                                    currentBoleto.VoidearBoletoEnServicio = true;
                                    var oAnulacionBoletoRQ = new WS_ProcesosGDS.CE_VoidearBoletoRQ
                                    {
                                        oDatosAplicacion = ldatosAplicacion,
                                        oDatosCliente    = ldatosCliente,
                                        oDatosUsuario    = ldatosUsuario,
                                        lstBoletos       = new WS_ProcesosGDS.CE_Boleto[] { currentBoleto },
                                        TipoAnulacion    = WS_ProcesosGDS.CE_Anulacion.Parcial,
                                        SESSION          = oRecuperarReservaRS.SESSION
                                    };
                                    var oAnulacionBoletoRS = lwsProcesosGDS.VoidearBoletosGDS(oAnulacionBoletoRQ);

                                    if (oAnulacionBoletoRS != null)
                                    {
                                        if (oAnulacionBoletoRS.lstMensajeError == null && oAnulacionBoletoRS.lstBoletosVoid != null && oAnulacionBoletoRS.lstBoletosVoid.Any())
                                        {
                                            lboleto.AnulacionOkPorRobot = true;
                                            lboleto.Estado = oAnulacionBoletoRS.lstBoletosVoid.Where(b => b.eTicketNumber.Equals(lboleto.BoletoFull)).First().Estado;
                                        }
                                        else
                                        {
                                            lboleto.AnulacionOkPorRobot = false;
                                            lboleto.MensajeError        = string.Join("/", oAnulacionBoletoRS.lstMensajeError);
                                            logger.info(string.Format("Mensaje de error devuelto por el servicio de anulacion: ", lboleto.MensajeError));
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        lboleto.AnulacionOkPorRobot = false;
                        lboleto.MensajeError        = "No se pudo recuperar la reserva para proceder con la anulacion del boleto";
                        logger.info(lboleto.MensajeError);
                    }
                }
                catch (Exception e)
                {
                    logger.info(string.Format("Ocurrió un error al ejecutar el servicio de anulación Amadeus,  boleto {0} - {1}", lboleto.PNR, lboleto.BoletoFull));
                    logger.info(string.Format("Mensaje error: ", e.ToString()));
                }
                lrespuesta.Add(lboleto);
            }

            logger.info("Se realizara nuevamente el reporte Diario para validar el estado real de los boletos");
            var service          = BoletoFactory.getBoletoFactory(TipoProceso.ANULACION, getFechaPorTipoProceso(TipoProceso.ANULACION));
            var boletosGDSActual = service.ObtenerReporteDiarioGDS();

            foreach (var lboletoAnulado in lrespuesta)
            {
                var lcurrentBoletoGDS = boletosGDSActual.Where(b => b.BoletoFull.Equals(lboletoAnulado.BoletoFull)).First();
                lboletoAnulado.Estado = lcurrentBoletoGDS.Estado;
                if (lcurrentBoletoGDS.Estado.Equals("VOID"))
                {
                    lboletoAnulado.AnulacionOkPorRobot = true;
                    lboletoAnulado.MensajeError        = "";
                }
                else
                {
                    lboletoAnulado.AnulacionOkPorRobot = false;
                    lboletoAnulado.MensajeError        = string.IsNullOrEmpty(lboletoAnulado.MensajeError) ? "Error desconocido" : lboletoAnulado.MensajeError;
                }
            }
            return(lrespuesta);
        }
Пример #2
0
        public void execute(GDS_NuevoMundoPersistencia.classSession session, List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> boletos)
        {
            var logger = new GestorLog();

            var encriptador   = new EncriptaCadena();
            var CLAVE_ENCRYPT = "GDS_S1S73M45";
            var wsProcesosGDS = new WS_ProcesosGDS.ProcesosGDS();

            wsProcesosGDS.CredencialesValue = new WS_ProcesosGDS.Credenciales
            {
                username = encriptador.DES_Encrypt("gd5_3m1s10n3s", CLAVE_ENCRYPT),
                password = encriptador.DES_Encrypt("pw_gd5_3m1s10n3s", CLAVE_ENCRYPT)
            };

            var boletosVoideados = new List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente>();

            var agentes = boletos.Select(x => x.Vendedor.FirmaAgente).Distinct().ToList();

            foreach (var agente in agentes)
            {
                var boletosPorVendedor = boletos.Where(x => x.Vendedor.FirmaAgente.Equals(agente)).ToList();

                foreach (var boleto in boletosPorVendedor)
                {
                    var reservaRQ = new WS_ProcesosGDS.CE_ReservaRQ();
                    reservaRQ.oDatosAplicacion                      = new WS_ProcesosGDS.CE_DatosAplicacion();
                    reservaRQ.oDatosUsuario                         = new WS_ProcesosGDS.CE_DatosUsuario();
                    reservaRQ.oDatosAplicacion.strGDS               = WS_ProcesosGDS.CE_TipoGDS.GDS_AMADEUS;
                    reservaRQ.oDatosAplicacion.strNameApp           = WS_ProcesosGDS.CE_Aplicaciones.InteragenciaExtranet;
                    reservaRQ.oDatosAplicacion.strPNR               = boleto.PNR;
                    reservaRQ.oDatosAplicacion.strPseudo            = boleto.Pseudo;
                    reservaRQ.oDatosAplicacion.strPseudoVenta       = boleto.Pseudo;
                    reservaRQ.oDatosAplicacion.strCodigoSeguimiento = "*****@*****.**";

                    reservaRQ.oDatosUsuario.strCorreoUsuario = "*****@*****.**";
                    reservaRQ.oDatosUsuario.idUsuarioPTA     = "123";
                    reservaRQ.CambiarPseudo = true;
                    reservaRQ.RealizarDQB   = true;

                    reservaRQ.oDatosCliente = new WS_ProcesosGDS.CE_DatosCliente();
                    reservaRQ.oDatosCliente.strDKCliente = Convert.ToString(boleto.IdCliente);
                    reservaRQ.oDatosCliente.strDireccion = "Lima";

                    var dataReserva = wsProcesosGDS.RecuperarReservaGDS(reservaRQ);

                    if (dataReserva != null)
                    {
                        if (dataReserva.CodigoError == 0)
                        {
                            try
                            {
                                var lEstadoActivo = "ACTIVO";
                                var boletoVoid    = dataReserva.lstBoletos.Where(b => b.eTicketNumber.EndsWith(boleto.NumeroBoleto) && b.Estado.Equals(lEstadoActivo)).FirstOrDefault();
                                if (boletoVoid != null)
                                {
                                    boletoVoid.VoidearBoletoEnServicio = true;
                                    var listaBoletos = new List <WS_ProcesosGDS.CE_Boleto>();
                                    listaBoletos.Add(boletoVoid);

                                    //boleto.NumeroBoleto
                                    var objAnulacionBoletoRQ = new WS_ProcesosGDS.CE_VoidearBoletoRQ();
                                    objAnulacionBoletoRQ.oDatosAplicacion = reservaRQ.oDatosAplicacion;
                                    objAnulacionBoletoRQ.oDatosCliente    = reservaRQ.oDatosCliente;
                                    objAnulacionBoletoRQ.oDatosUsuario    = reservaRQ.oDatosUsuario;
                                    objAnulacionBoletoRQ.lstBoletos       = listaBoletos.ToArray();
                                    objAnulacionBoletoRQ.SESSION          = dataReserva.SESSION;
                                    objAnulacionBoletoRQ.TipoAnulacion    = WS_ProcesosGDS.CE_Anulacion.Parcial;

                                    var response = wsProcesosGDS.VoidearBoletosGDS(objAnulacionBoletoRQ);
                                    if (response != null)
                                    {
                                        if (response.lstMensajeError == null && response.lstWarning == null)
                                        {
                                            boletosVoideados.Add(boleto);
                                            logger.info("Anulación correcta: " + boleto.NumeroBoleto);
                                        }
                                        else
                                        {
                                            logger.info("Ocurrió una incidencia al intentar voidear el boleto : " + boleto.NumeroBoleto);
                                        }
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                logger.info(e.ToString());
                            }
                        }
                    }
                }
                if (boletosVoideados.Any())
                {
                    new classBO().EnviarCorreoAvisoVoideo(boletosVoideados, "Counter", "VOI", "Boletos anulados", Configuracion.codigoSeguimiento);
                }
            }
        }
Пример #3
0
        private void procesarAnulacion(BoletoRobotDTO boleto)
        {
            logger.info("Anular boleto: " + boleto.BoletoFull);
            var lwsProcesosGDS = new WS_ProcesosGDS.ProcesosGDS();

            lwsProcesosGDS.CredencialesValue = getCredencialesWS();

            var ldatosAplicacion = new WS_ProcesosGDS.CE_DatosAplicacion();

            ldatosAplicacion.strGDS               = WS_ProcesosGDS.CE_TipoGDS.GDS_AMADEUS;
            ldatosAplicacion.strNameApp           = WS_ProcesosGDS.CE_Aplicaciones.SabreRed;
            ldatosAplicacion.strPNR               = boleto.PNR;
            ldatosAplicacion.strPseudo            = boleto.Pseudo;
            ldatosAplicacion.strPseudoVenta       = boleto.Pseudo;
            ldatosAplicacion.strCodigoSeguimiento = "*****@*****.**";

            var ldatosUsuario = new WS_ProcesosGDS.CE_DatosUsuario();

            ldatosUsuario.idUsuarioPTA     = "123";
            ldatosUsuario.strCorreoUsuario = "*****@*****.**";

            var ldatosCliente = new WS_ProcesosGDS.CE_DatosCliente();

            ldatosCliente.intTipoCliente = boleto.TipoDeCliente;
            ldatosCliente.strDKCliente   = Convert.ToString(boleto.IdCliente);
            ldatosCliente.strDireccion   = "Lima";

            var oRecuperarReservaRQ = new WS_ProcesosGDS.CE_ReservaRQ();

            oRecuperarReservaRQ.oDatosAplicacion = ldatosAplicacion;
            oRecuperarReservaRQ.oDatosUsuario    = ldatosUsuario;
            oRecuperarReservaRQ.oDatosCliente    = ldatosCliente;
            oRecuperarReservaRQ.CambiarPseudo    = true;
            oRecuperarReservaRQ.RealizarDQB      = true;

            var oRecuperarReservaRS = lwsProcesosGDS.RecuperarReservaGDS(oRecuperarReservaRQ);

            if (oRecuperarReservaRS != null)
            {
                if (oRecuperarReservaRS.lstBoletos != null && oRecuperarReservaRS.lstBoletos.Any())
                {
                    var currentBoleto = oRecuperarReservaRS.lstBoletos.Where(b => b.eTicketNumber.Equals(boleto.BoletoFull)).FirstOrDefault();
                    if (currentBoleto != null)
                    {
                        currentBoleto.VoidearBoletoEnServicio = true;
                        var oAnulacioBoletoRQ = new WS_ProcesosGDS.CE_VoidearBoletoRQ
                        {
                            oDatosAplicacion = ldatosAplicacion,
                            oDatosCliente    = ldatosCliente,
                            oDatosUsuario    = ldatosUsuario,
                            lstBoletos       = new WS_ProcesosGDS.CE_Boleto[] { currentBoleto },
                            TipoAnulacion    = WS_ProcesosGDS.CE_Anulacion.Parcial,
                            SESSION          = oRecuperarReservaRS.SESSION
                        };
                        var oAnulacionBoletoRS = lwsProcesosGDS.VoidearBoletosGDS(oAnulacioBoletoRQ);
                        if (oAnulacionBoletoRS != null)
                        {
                            if (oAnulacionBoletoRS.lstMensajeError == null && oAnulacionBoletoRS.CodigoError == 0)
                            {
                                logger.info("Anulación exitosa");
                            }
                            else
                            {
                                logger.info("Ocurrió un error al anular boleto:" + oAnulacionBoletoRS.lstMensajeError);
                            }
                        }
                    }
                }
            }
            logger.info("Response: ");
        }