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