Example #1
0
        public List <BoletoRobotDTO> getBoletosMock(TipoProceso tipoProceso)
        {
            List <BoletoRobotDTO> boletos = null;
            var service = BoletoFactory.getBoletoFactory(tipoProceso, getFechaPorTipoProceso(tipoProceso));

            var pathNoFacturados = @"C:\ROBOT_ANULACION_AMADEUS\JSON\BoletosNoFacturados.json";

            if (!File.Exists(pathNoFacturados))
            {
                boletos = service.ObtenerBoletosConDeudaPendiente();
                var ljsonBoletosDQB = Utilitario.Serializar(boletos);
                FileUtils.getInstance().write(pathNoFacturados, ljsonBoletosDQB);
            }
            else
            {
                var ljsonBoletosEmitidos = FileUtils.getInstance().read(pathNoFacturados);
                boletos = new JavaScriptSerializer().Deserialize <List <BoletoRobotDTO> >(ljsonBoletosEmitidos);
            }
            return(boletos);
        }
Example #2
0
        private void procesarAmadeus(TipoProceso tipoProceso)
        {
            logger.info("Inicio proceso Amadeus: " + tipoProceso);
            var service = BoletoFactory.getBoletoFactory(tipoProceso, getFechaPorTipoProceso(tipoProceso));
            List <BoletoRobotDTO> lboletosAProcesar = null;

            switch (tipoProceso)
            {
            case TipoProceso.ALMACENAR_BOLETOS_EMITIDOS_AMADEUS:
                service.AlmacenarBoletos();
                enviarLogProceso();
                break;

            case TipoProceso.ANULACION:
                lboletosAProcesar = service.ObtenerBoletosConDeudaPendiente();
                lboletosAProcesar = lboletosAProcesar.Where(boleto => boleto.TotalPendiente >= 20).ToList();
                logger.info(string.Format("Se envía a anular {0} boletos", lboletosAProcesar.Count));
                if (lboletosAProcesar.Any())
                {
                    List <BoletoRobotDTO> boletosResultadoAnulacion = anularBoletos(lboletosAProcesar);
                    if (boletosResultadoAnulacion.Any())
                    {
                        logger.info("Resultado anulacion:");
                        boletosResultadoAnulacion.ForEach(boleto =>
                        {
                            logger.info(string.Format("[ Anulacion ] :: [{0} - {1} - {2}] ::  Total Pendiente:{3} | Emisor: {4} - {5} | DK:{6} | Estado:{7} | Anulado? {8} - Mensaje: {9}",
                                                      boleto.Pseudo, boleto.PNR, boleto.BoletoFull, boleto.TotalPendiente.ToString().PadLeft(8), boleto.Vendedor.Firma, boleto.Vendedor.Id, boleto.IdCliente.ToString().PadLeft(7), boleto.Estado.PadLeft(7), boleto.AnulacionOkPorRobot.ToString().PadLeft(6), boleto.MensajeError));
                        });
                    }
                    new EnvioReportes(tipoProceso, boletosResultadoAnulacion).procesar();
                }
                enviarLogProceso();
                break;

            case TipoProceso.AVISO_ANULACION:
                lboletosAProcesar = service.ObtenerBoletosConDeudaPendiente();
                logger.info(string.Format("Se envía aviso de anulación a {0} boletos", lboletosAProcesar.Count));
                if (lboletosAProcesar.Any())
                {
                    lboletosAProcesar.ForEach(boleto =>
                    {
                        logger.info(string.Format("[ Aviso Anulacion ] :: [{0} - {1} - {2}] ::  Total Pendiente:{3} | Emisor: {4} - {5} | DK:{6}",
                                                  boleto.Pseudo, boleto.PNR, boleto.BoletoFull, boleto.TotalPendiente.ToString().PadLeft(8), boleto.Vendedor.Firma, boleto.Vendedor.Id, boleto.IdCliente.ToString().PadLeft(7)));
                    });
                    new EnvioReportes(tipoProceso, lboletosAProcesar).procesar();
                }
                enviarLogProceso();
                break;

            case TipoProceso.AVISO_NO_EN_PTA:
                lboletosAProcesar = service.ObtenerBoletosNoEncuentranEnPTA();
                logger.info(string.Format("Se envía aviso No En PTA a {0} boletos", lboletosAProcesar.Count));
                if (lboletosAProcesar.Any())
                {
                    new EnvioReportes(tipoProceso, lboletosAProcesar).procesar();
                }
                break;

            case TipoProceso.AVISO_NO_FACTURADOS:
                lboletosAProcesar = service.ObtenerBoletosNoFacturados();
                logger.info(string.Format("Se envía aviso de no facturados a {0} boletos", lboletosAProcesar.Count));
                if (lboletosAProcesar.Any())
                {
                    new EnvioReportes(tipoProceso, lboletosAProcesar).procesar();
                }
                break;
            }
        }
Example #3
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);
        }