Пример #1
0
        public void execute(GDS_NuevoMundoPersistencia.classSession session, List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> boletos)
        {
            var          logger = new GestorLog();
            const double MONTO_MAXIMO_DEUDA_PENDIENTE = 20;

            try
            {
                var lstLog = new List <string> {
                };

                // Crea una instancia de serviceBoleto para obtener los boletos con deuda pendiente
                var service = new ServiceBoleto(TipoProceso.AVISO_ANULACION, null);

                // Obtiene los boletos con deuda pendiente
                boletos = service.obtenerBoletosDeudaPendiente(boletos);

                // Si existen boletos con deuda pendiente
                if (boletos != null && boletos.Any())
                {
                    // Envía aviso solo Si los boletos tienen una deuda pendiente mayor al máximo de deuda indicado por la empresa (en este caso 20.00) o el DK es de prueba
                    var boletosAvisoAnulacion = boletos.Where(boleto => boleto.TotalPendiente >= MONTO_MAXIMO_DEUDA_PENDIENTE || boleto.IdCliente == Configuracion.dkPrueba).ToList();
                    if (boletosAvisoAnulacion.Any())
                    {
                        logger.info(string.Format("Se encontraron {0} boletos a enviar Aviso de anulación...", boletosAvisoAnulacion.Count));
                        boletosAvisoAnulacion.ForEach(obj => logger.info(string.Format("[{0} - {1} - {2} - {3}] :: [ Aviso Anulacion ]  TotalPendiente: {5} | DK: {6}", obj.Pseudo, obj.PNR, obj.NumeroBoleto, obj.Vendedor.FirmaAgente, obj.MarcaFacturado, obj.TotalPendiente, obj.Cliente.DK)));

                        // Si es AGCORP envía un asunto distinto, ya que por el momento no se está realizando el proceso de voideo a sus clientes
                        var asuntoMailAviso = "NM".Equals(Configuracion.empresa) ? "Boletos sin pago sera anulado" : "Boletos pendientes de pago ";

                        var valor = Configuracion.Gds == GDS.SABRE ? "AVI" : "AVI_A";

                        // Ejecutar el proceso de envio de correos
                        new classBO().EjecutarProcesoAvisoVoideo(boletosAvisoAnulacion, valor, asuntoMailAviso, ref lstLog, Configuracion.codigoSeguimiento, Configuracion.idGDS, Configuracion.firmaGDS, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual, session);
                    }

                    if ("NM".Equals(Configuracion.empresa)) // Solo para NM
                    {
                        // Si tienen una deuda pendiente menor que 20 se envía un correo solo avisando que debe cancelar la deuda pero no se anulará el boleto
                        var boletosConPendienteMinimo = boletos.Where(boleto => boleto.TotalPendiente < MONTO_MAXIMO_DEUDA_PENDIENTE).ToList();
                        if (boletosConPendienteMinimo.Any())
                        {
                            logger.info(string.Format("Se encontraron {0} boletos con deudar menor a {1} ...", boletosConPendienteMinimo.Count, MONTO_MAXIMO_DEUDA_PENDIENTE));
                            boletosConPendienteMinimo.ForEach(obj => logger.info(string.Format("[{0} - {1} - {2} - {3}] :: [ Aviso Anulacion - Pendiente menor de {7} ]  TotalPendiente: {5} | DK: {6}", obj.Pseudo, obj.PNR, obj.NumeroBoleto, obj.Vendedor.FirmaAgente, obj.MarcaFacturado, obj.TotalPendiente, obj.Cliente.DK, MONTO_MAXIMO_DEUDA_PENDIENTE)));
                            var asunto = "Boletos pendientes de Pago ";
                            new classBO().EvaluarBoletosXCliente(boletosConPendienteMinimo, "AVIC", asunto, ref lstLog, Configuracion.codigoSeguimiento, Configuracion.idGDS, Configuracion.firmaGDS, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual, session);
                        }
                    }
                }
                MailUtils.getInstance().sendMailConfirmacion(TipoProceso.AVISO_ANULACION);
            }
            catch (Exception ex)
            {
                logger.info("Ocurrió un error al ejecutar el ProcesoAvisoAnulacion ");
                logger.info("Exception: " + ex.ToString());
                throw ex;
            }
        }
Пример #2
0
        public void execute(GDS_NuevoMundoPersistencia.classSession session, List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> boletos)
        {
            var logger = new GestorLog();

            logger.info("Ejecutando ProcesoAvisoAnulacion...");
            try
            {
                double MONTO_MAXIMO_DEUDA_PENDIENTE = 20;
                // Crear instancia de service boleto para obtener boletos con deuda pendiente
                var service = new ServiceBoleto(TipoProceso.ANULACION, null);

                // Filtrar boletos con deuda Pendiente
                boletos = service.obtenerBoletosDeudaPendiente(boletos);

                // Si existen boletos con deuda pendiente.
                if (boletos != null && boletos.Any())
                {
                    // Anular solo Si los boletos tienen una deuda pendiente mayor al máximo de deuda indicado por la empresa (en este caso 20.00) o el DK es de prueba
                    var boletosAAnular = boletos.Where(boleto => boleto.TotalPendiente >= MONTO_MAXIMO_DEUDA_PENDIENTE || boleto.IdCliente == Configuracion.dkPrueba).ToList();
                    if (boletosAAnular.Any())
                    {
                        logger.info(string.Format("Se encontraron {0} boletos a Anular...", boletosAAnular.Count));

                        // Grabar log de los boletos que va a anular el robot
                        boletosAAnular.ForEach(obj => logger.info(string.Format("[{0} - {1} - {2} - {3}] :: [ Anulacion ]  TotalPendiente: {5} | DK: {6}", obj.Pseudo, obj.PNR, obj.NumeroBoleto, obj.Vendedor.FirmaAgente, obj.MarcaFacturado, obj.TotalPendiente, obj.Cliente.DK)));
                        var asunto = "Boletos anulados";
                        var lstLog = new List <string> {
                        };

                        // Ejecutar el proceso de anulación
                        new classBO().EjecutarProcesoAvisoVoideo(boletosAAnular, "VOI", asunto, ref lstLog, Configuracion.codigoSeguimiento, Configuracion.idGDS, Configuracion.firmaGDS, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual, session);

                        // Grabar log de las respuestas de los comandos de sabre.
                        lstLog.ForEach(data => logger.info(data));
                    }
                }
                MailUtils.getInstance().sendMailConfirmacion(TipoProceso.ANULACION);
            }
            catch (Exception e)
            {
                logger.info("Ocurrió un error en el proceso de Anulacion");
                throw e;
            }
        }
Пример #3
0
        public void execute(GDS_NuevoMundoPersistencia.classSession session, List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> boletos, string fecha)
        {
            var logger = new GestorLog();

            logger.info(string.Format("Ejecutando ProcesoAvisoNoEnPTA [{0}] ", fecha));
            try
            {
                var boletosNoFiguranPTA = boletos.Where(obj => !obj.ExistePTA).ToList();
                logger.info(string.Format("Se encontraron {0} boletos No En PTA de ...", boletosNoFiguranPTA.Count));
                if (boletosNoFiguranPTA.Any())
                {
                    var service = new ServiceBoleto(TipoProceso.AVISO_NO_EN_PTA, fecha);
                    boletosNoFiguranPTA = service.filtrarBoletosNoFiguranEnOtroPTA(boletosNoFiguranPTA);
                    logger.info(string.Format("Se encontraron {0} boletos Que No están en Ningún PTA...", boletosNoFiguranPTA.Count));
                    boletosNoFiguranPTA.ForEach(obj => logger.info(string.Format("[{0} - {1} - {2} - {3}] :: No figura en PTA", obj.Pseudo, obj.PNR, obj.NumeroBoleto, obj.Vendedor.FirmaAgente)));
                    string asuntoMail = "Boletos no figuran en PTA - BACKOFFICE ";
                    var    lstLog     = new List <string> {
                    };

                    var lProceso = Configuracion.Gds == GDS.SABRE ? "NBD" : "NBD_A";

                    var pseudosEmitenBoletos = boletosNoFiguranPTA.Select(x => x.Pseudo).Distinct().ToList();
                    foreach (var pseudo in pseudosEmitenBoletos)
                    {
                        var boletosPorPseudo = boletosNoFiguranPTA.Where(x => x.Pseudo.Equals(pseudo)).ToList();
                        new classBO().EjecutarProcesoAvisoVoideo(boletosPorPseudo, lProceso, asuntoMail, ref lstLog, Configuracion.codigoSeguimiento, Configuracion.idGDS, Configuracion.firmaGDS, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual, session);
                        //new classBO().EjecutarProcesoAvisoVoideo(boletosNoFiguranPTA, "NBD", asuntoMail, ref lstLog, Configuracion.codigoSeguimiento, Configuracion.idGDS, Configuracion.firmaGDS, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual, session);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.info("Ocurrió un error al ejecutar el ProcesoAvisoNoEnPTA ");
                logger.info("Exception: " + ex.ToString());
                throw ex;
            }
        }