Exemplo n.º 1
0
        /// <summary>
        /// Obtener boletos emitidos en el DQB
        /// </summary>
        /// <returns></returns>
        public List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> ObtenerListaBoletosDQB(TipoProceso tipoProceso)
        {
            var lstBoletoEmitidoDQB = new List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente>();

            string lpseudosEvaluacion = "";

            if (this.tipoProceso == TipoProceso.ANULACION || this.tipoProceso == TipoProceso.AVISO_ANULACION)
            {
                lpseudosEvaluacion = Configuracion.pseudosUnificados;
            }
            else
            {
                lpseudosEvaluacion = Configuracion.pseudosEmpresa;
            }

            var lstReporteVentas = obtenerReporteDQB(lpseudosEvaluacion);

            if (lstReporteVentas != null)
            {
                foreach (var reporteDQB in lstReporteVentas)
                {
                    if (reporteDQB.Boletos != null)
                    {
                        // Solo se filtran los boletos que nacieron VOID, los boletos que están VOID por el usuario NO porque se necesitarán para el reporte de AVISO_VOID_DQB_NO_EN_PTA
                        var lstBoletoReporteVentaDQB = reporteDQB.Boletos.Where(boleto => !boleto.PNR.Equals("NO PNR")).ToList();
                        if (lstBoletoReporteVentaDQB.Any())
                        {
                            // Solo para el caso de DM necesitamos filtrar estos boletos VOID
                            lstBoletoReporteVentaDQB = lstBoletoReporteVentaDQB.Where(boleto => !boleto.Estado.Equals("VOID")).ToList();
                            // Boletos emitidos en el pseudo QQ05
                            if (reporteDQB.Pseudo.Equals(PSEUDO_DM))
                            {
                                if (lstBoletoReporteVentaDQB.Any())
                                {
                                    //Vendedores DM
                                    var vendedoresDM           = objDominio.ObtenerVendedoresPorEmpresa(Configuracion.codigoSeguimiento, Configuracion.firmaBD, Configuracion.EsquemaDB.Destinos);
                                    var vendedoresDM_CounterIA = vendedoresDM.Where(v => ID_DEPARTAMENTO_COUNTER_IA_EN_DM.Equals(v.IdDepartamentoVendedor)).ToList();
                                    // Obtener todos los boletos Emitidos en Destinos Mundiales y filtramos los que no están VOID
                                    var boletosRegistradosPTA_DM      = obtenerBoletoRegistradosPTA(Configuracion.EsquemaDB.Destinos);
                                    var boletosRegistradosPTA_Activos = new List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente>();
                                    if (boletosRegistradosPTA_DM != null && boletosRegistradosPTA_DM.Any())
                                    {
                                        boletosRegistradosPTA_Activos = boletosRegistradosPTA_DM.Where(boleto => boleto.MarcaVoid == 0).ToList();
                                    }
                                    //Recorrer todos los boletos emitidos en QQ05
                                    foreach (var boletoEnDQB in lstBoletoReporteVentaDQB)
                                    {
                                        // Todos los boletos Emitidos al DK de Nuevo Mundo en Destinos por qué son doble facturación NM => DM
                                        var boletoEsDobleFacturacion = boletosRegistradosPTA_Activos.Where(boleto => boletoEnDQB.NumBoleto.EndsWith(boleto.NumeroBoleto) && boleto.Cliente.DK == DK_NM_EN_DM).FirstOrDefault() != null;
                                        //vendedoresCounterIA.Where(v => v.IdFirmaVendedor.EndsWith(boleto.Vendedor.FirmaAgente.Substring(1))).ToList().Any())
                                        // Boleto fue emitido por counter IA en DM
                                        var boletoEsEmitidoPorCounterIA = vendedoresDM_CounterIA.Where(v => v.IdFirmaVendedor.Equals(boletoEnDQB.Agente.Substring(1, 2))).ToList().Any();
                                        if (boletoEsDobleFacturacion || boletoEsEmitidoPorCounterIA)
                                        {
                                            var objBoleto = new GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente();
                                            objBoleto.Pseudo         = reporteDQB.Pseudo;
                                            objBoleto.NombrePseudo   = reporteDQB.NombrePseudo;
                                            objBoleto.PrefijoBoleto  = boletoEnDQB.NumBoleto.Substring(0, 3);
                                            objBoleto.Hora           = boletoEnDQB.Hora;
                                            objBoleto.NumeroBoleto   = boletoEnDQB.NumBoleto.Substring(3, 10);
                                            objBoleto.PNR            = boletoEnDQB.PNR;
                                            objBoleto.NombrePasajero = boletoEnDQB.NombrePasajero;
                                            var auxAgente = new GDS_NuevoMundoPersistencia.classDatosAgente();
                                            auxAgente.FirmaAgente     = boletoEnDQB.Agente;
                                            objBoleto.Vendedor        = auxAgente;
                                            objBoleto.Estado          = boletoEnDQB.Estado;
                                            objBoleto.EmisionPseudoNM = boletoEsDobleFacturacion;
                                            lstBoletoEmitidoDQB.Add(objBoleto);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                foreach (var boleto in lstBoletoReporteVentaDQB)
                                {
                                    var objBoleto = new GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente();
                                    objBoleto.Pseudo         = reporteDQB.Pseudo;
                                    objBoleto.NombrePseudo   = reporteDQB.NombrePseudo;
                                    objBoleto.PrefijoBoleto  = boleto.NumBoleto.Substring(0, 3);
                                    objBoleto.Hora           = boleto.Hora;
                                    objBoleto.NumeroBoleto   = boleto.NumBoleto.Substring(3, 10);
                                    objBoleto.PNR            = boleto.PNR;
                                    objBoleto.NombrePasajero = boleto.NombrePasajero;
                                    var auxAgente = new GDS_NuevoMundoPersistencia.classDatosAgente();
                                    auxAgente.FirmaAgente     = boleto.Agente;
                                    objBoleto.Vendedor        = auxAgente;
                                    objBoleto.EmisionPseudoNM = false;
                                    objBoleto.Estado          = boleto.Estado;
                                    lstBoletoEmitidoDQB.Add(objBoleto);
                                }
                            }
                        }
                    }
                }
            }
            return(lstBoletoEmitidoDQB);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Consolida / Unifica los datos de los boletos del DQB y los boletos PTA
        /// </summary>
        /// <param name="boletosEnDQB">Boletos DQB</param>
        /// <param name="lstReporteBoletoEmitidoPTA">Boletos PTA</param>
        /// <returns></returns>
        public List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> consolidarBoletos(List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> boletosEnDQB, List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente> lstReporteBoletoEmitidoPTA)
        {
            if (boletosEnDQB == null || !boletosEnDQB.Any() || lstReporteBoletoEmitidoPTA == null || !lstReporteBoletoEmitidoPTA.Any())
            {
                return(new List <GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente>());
            }

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

            var vendedores = objDominio.ObtenerVendedoresPorEmpresa(Configuracion.codigoSeguimiento, Configuracion.firmaBD, Configuracion.EsquemaDB.Actual);

            var boletosAEvaluar = filtrarBoletosAEvaluar(boletosEnDQB, vendedores);

            if (boletosAEvaluar.Any())
            {
                foreach (var boletoEnDQB in boletosAEvaluar)
                {
                    try
                    {
                        var boletoPTA = lstReporteBoletoEmitidoPTA.Where(boleto => boleto.NumeroBoleto.Equals(boletoEnDQB.NumeroBoleto)).FirstOrDefault();

                        // No evaluar los boletos Emitidos al DK de Agcorp en NM, doble facturación
                        if (Configuracion.empresa.Equals("NM") && boletoPTA != null && boletoPTA.Cliente.DK == DK_AGCORP_EN_NM)
                        {
                            continue;
                        }

                        var eBoleto = new GDS_NuevoMundoPersistencia.robotBoletoPendientePago.robotBoletoPendiente();
                        eBoleto.NumeroBoleto   = boletoEnDQB.NumeroBoleto;
                        eBoleto.PrefijoBoleto  = boletoEnDQB.PrefijoBoleto;
                        eBoleto.PNR            = boletoEnDQB.PNR;
                        eBoleto.Pseudo         = boletoEnDQB.Pseudo;
                        eBoleto.NombrePseudo   = boletoEnDQB.NombrePseudo;
                        eBoleto.NombrePasajero = boletoEnDQB.NombrePasajero;
                        eBoleto.Hora           = boletoEnDQB.Hora;
                        eBoleto.Estado         = boletoEnDQB.Estado;

                        var auxAgente = new GDS_NuevoMundoPersistencia.classDatosAgente();
                        auxAgente.FirmaAgente = boletoEnDQB.Vendedor.FirmaAgente;
                        var objVendedor = vendedores.Where(ven => ven.IdFirmaVendedor.EndsWith(auxAgente.FirmaAgente.Substring(1))).FirstOrDefault();
                        if (objVendedor != null)
                        {
                            auxAgente.CorreoVendedor = objVendedor.CorreoVendedor;
                            auxAgente.CorreoJefe     = objVendedor.CorreoJefe;
                            auxAgente.NombreVendedor = objVendedor.NombreVendedor;
                            auxAgente.IdVendedor     = objVendedor.IdVendedor;
                        }

                        if (boletoPTA == null)
                        {
                            // Boleto no está en PTA
                            eBoleto.Vendedor  = auxAgente;
                            eBoleto.ExistePTA = false;
                        }
                        else
                        {
                            auxAgente.CorreoCaja = boletoPTA.Vendedor.CorreoCaja;
                            eBoleto.Vendedor     = auxAgente;
                            eBoleto.ExistePTA    = true;

                            var auxCliente = new GDS_NuevoMundoPersistencia.classCliente();
                            auxCliente.DK              = boletoPTA.Cliente.DK;
                            auxCliente.TipoDeCliente   = boletoPTA.Cliente.TipoDeCliente;
                            auxCliente.NombreComercial = boletoPTA.Cliente.NombreComercial;
                            auxCliente.EmailAgencia    = boletoPTA.Cliente.EmailAgencia;
                            auxCliente.Condicion       = boletoPTA.Cliente.Condicion;
                            eBoleto.Cliente            = new GDS_NuevoMundoPersistencia.classCliente();
                            eBoleto.Cliente            = auxCliente;

                            var auxPromotor = new GDS_NuevoMundoPersistencia.classPromotor();
                            auxPromotor.NombrePromotor = boletoPTA.Promotor.NombrePromotor;
                            auxPromotor.EmailPromotor  = boletoPTA.Promotor.EmailPromotor;
                            auxPromotor.CodigoVendedor = boletoPTA.Promotor.CodigoVendedor;

                            var objVendedorByCode = vendedores.Where(ven => ven.IdVendedor.Equals(boletoPTA.Promotor.CodigoVendedor)).FirstOrDefault();
                            if (objVendedorByCode != null)
                            {
                                auxPromotor.CorreoJefePromotor = objVendedorByCode.CorreoJefe;
                            }
                            eBoleto.Promotor = new GDS_NuevoMundoPersistencia.classPromotor();
                            eBoleto.Promotor = auxPromotor;

                            eBoleto.IdSucursal        = boletoPTA.IdSucursal;
                            eBoleto.Descripcion       = boletoPTA.Descripcion;
                            eBoleto.File              = boletoPTA.File;
                            eBoleto.IdProveedor       = boletoPTA.IdProveedor;
                            eBoleto.FechaAltaPTA      = boletoPTA.FechaAltaPTA;
                            eBoleto.FechaEmision      = boletoPTA.FechaEmision;
                            eBoleto.Gds               = boletoPTA.Gds;
                            eBoleto.Ruta              = boletoPTA.Ruta;
                            eBoleto.MarcaVoid         = boletoPTA.MarcaVoid;
                            eBoleto.NoAnular          = boletoPTA.NoAnular;
                            eBoleto.MontoVenta        = boletoPTA.MontoVenta;
                            eBoleto.MontoAplicado     = boletoPTA.MontoAplicado;
                            eBoleto.MarcaFacturado    = boletoPTA.MarcaFacturado;
                            eBoleto.ID_FacturaCabeza  = boletoPTA.ID_FacturaCabeza;
                            eBoleto.IdTipoComprobante = boletoPTA.IdTipoComprobante;
                            eBoleto.NumeroSerie1      = boletoPTA.NumeroSerie1;
                            eBoleto.Comprobante       = boletoPTA.IdTipoComprobante + "-" + boletoPTA.NumeroSerie1 + "-" + boletoPTA.ID_FacturaCabeza;
                            eBoleto.IdCliente         = boletoPTA.Cliente.DK;
                            eBoleto.MontoPendiente    = boletoPTA.MontoPendiente;
                            eBoleto.MontoOtroDK       = boletoPTA.MontoOtroDK;
                            eBoleto.TotalPendiente    = double.Parse(eBoleto.MontoPendiente) - double.Parse(eBoleto.MontoOtroDK);
                            eBoleto.File              = boletoPTA.File;
                        }
                        boletosConsolidados.Add(eBoleto);
                    }
                    catch (Exception e)
                    {
                        logger.info(string.Format("Error Metodo consolidarBoletos, Evaluando el boleto {0} - {1} , descripcion : {2} ", boletoEnDQB.PNR, boletoEnDQB.NumeroBoleto, e.ToString()));
                        throw e;
                    }
                }
                ;
            }
            return(boletosConsolidados);
        }