/// <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); }
/// <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); }