示例#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
        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: ");
        }