Exemple #1
0
        /// <summary>
        /// Constructor por defecto de la Consulta
        /// </summary>
        /// <param name="vista">Vista de la Consulta</param>
        public ConsultarPagosNoFacturadosPRE(IConsultarPagosNoFacturadosVIS vista)
        {
            if (vista == null)
            {
                throw new ArgumentNullException("vista");
            }
            Vista       = vista;
            dataContext = FacadeBR.ObtenerConexion();

            Controlador    = new PagoUnidadContratoBR();
            ControladorPSL = new PagoContratoPSLBR();
        }
        public PagosMasterPRE(IPagosMasterVIS vista)
        {
            if (vista == null)
            {
                throw new ArgumentNullException("vista");
            }
            Vista = vista;

            dataContext = FacadeBR.ObtenerConexion();

            Controlador    = new PagoUnidadContratoBR();
            ControladorPSL = new PagoContratoPSLBR();
        }
Exemple #3
0
 /// <summary>
 /// Constructor por default
 /// </summary>
 /// <param name="view">Vista a la que se asociada el presentador</param>
 public ucInformacionCabeceraPRE(IucInformacionCabeceraVIS view)
 {
     try
     {
         this.vista = view;
         this.dctx  = FacadeBR.ObtenerConexion();
         this.pagoUnidadContratoBR   = new PagoUnidadContratoBR();
         this.formaPagoFacturacionBR = new FormaPagoFacturacionBR();
     }
     catch (Exception ex)
     {
         this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".ucContratoManttoPRE:" + ex.Message);
     }
 }
 /// <summary>
 /// Constructor por default
 /// </summary>
 /// <param name="view">Vista a la que se asociada el presentador</param>
 public ucCostosAdicionalesFacturaContratoPRE(IucCostosAdicionalesFacturaContratoVIS view)
 {
     try
     {
         this.vista = view;
         this.dctx  = FacadeBR.ObtenerConexion();
         this.pagoUnidadContratoBR     = new PagoUnidadContratoBR();
         this.tipoRenglonFacturacionBR = new TipoRenglonFacturacionBR();
     }
     catch (Exception ex)
     {
         this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".ucContratoManttoPRE:" + ex.Message);
     }
 }
        //PagoContratoPSLBR pagosBr;
        #endregion

        #region Constructores
        /// <summary>
        /// Constructor que recibe la vista sobre la que actuará el presentador
        /// </summary>
        /// <param name="vistaActual">vista sobre la que actuará el presentador</param>
        /// <param name="herramientas">Presentador de la barra de herramientas</param>
        /// /// <param name="infoContrato">Presentador de la Información General</param>
        /// <param name="vistadg">Vista de los datos generales de la unidad</param>
        /// <param name="vistaea">Vista de los datos de los equipos aliados</param>
        public CerrarContratoPSLPRE(ICerrarContratoPSLVIS vistaActual, IucHerramientasPSLVIS vistaHerramientas, IucResumenContratoPSLVIS vistaInfoContrato, IucCargosAdicionalesCierrePSLVIS viewCA)
        {
            try {
                this.vista = vistaActual;

                this.presentadorResumen      = new ucResumenContratoPSLPRE(vistaInfoContrato);
                this.presentadorHerramientas = new ucHerramientasPSLPRE(vistaHerramientas);
                this.presentadorCargosA      = new ucCargosAdicionalesCierrePSLPRE(viewCA);

                this.controlador = new ContratoPSLBR();
                this.pagosBr     = new PagoUnidadContratoBR();
                this.dctx        = FacadeBR.ObtenerConexion();
            } catch (Exception ex) {
                this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoRDPRE:" + ex.Message);
            }
        }
        private short UltimoPago(int?contratoId)
        {
            var pagoBR = new PagoUnidadContratoBR();

            //SC0026, Utilización de clase concreta segun el tipo de contrato
            var pago = new PagoUnidadContratoBOF
            {
                ReferenciaContrato = new ReferenciaContratoBO {
                    ReferenciaContratoID = contratoId
                }
            };

            var pagos = pagoBR.Consultar(dataContext, pago);

            var max = pagos.Max(p => p.NumeroPago);

            return(max ?? 0);
        }
        /// <summary>
        /// Valida los campos necesarios para poder realizar el cambio de sucursal
        /// </summary>
        /// <returns>Cadena que contiene los elementos que faltan por completar</returns>
        private string ValidarCampos()
        {
            String s = String.Empty;

            if (this.vista.SucursalIdNueva == null)
            {
                s = String.IsNullOrEmpty(s) ? "SucursalId" : ", SucursalId";
            }
            if (this.vista.SucursalNombreNueva == null)
            {
                s = String.IsNullOrEmpty(s) ? "Nombre Sucursal" : ", Nombre Sucursal";
            }
            if (!String.IsNullOrEmpty(s))
            {
                return("Los siguientes campos no pueden estar vacios: " + s);
            }

            if (this.vista.SucursalIdAntigua == this.vista.SucursalIdNueva)
            {
                return("El contrato ya pertenece a la Sucursal de " + this.vista.SucursalNombreAntigua + ", seleccione otra Sucursal");
            }

            PagoUnidadContratoBR  pagoBr = new PagoUnidadContratoBR();
            PagoUnidadContratoBOF pago   = new PagoUnidadContratoBOF()
            {
                ReferenciaContrato = new ReferenciaContratoBO()
                {
                    ReferenciaContratoID = this.vista.ContratoId
                }, EnviadoFacturacion = false, Activo = true
            };
            DateTime fechaHoy             = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 23, 59, 59);
            var      listaPagosPendientes = pagoBr.Consultar(this.dataContext, pago);

            if (listaPagosPendientes.Any())
            {
                if (listaPagosPendientes.Any(x => x.FechaVencimiento < fechaHoy))
                {
                    return("Aún existen pagos pendientes por enviar a Facturar del Día de Hoy. Envie los pagos a facturar para poder cambiar el Contrato de Sucursal");
                }
            }

            return(String.Empty);
        }
        public CerrarContratoManttoPRE(ICerrarContratoManttoVIS vistaActual, IucHerramientasManttoVIS vistaHerramientas, IucContratoManttoVIS vistaContrato, IucLineaContratoManttoVIS vistaLinea)
        {
            try
            {
                this.vista = vistaActual;

                this.presentadorContrato     = new ucContratoManttoPRE(vistaContrato, vistaLinea);
                this.presentadorHerramientas = new ucHerramientasManttoPRE(vistaHerramientas);

                this.controlador    = new ContratoManttoBR();
                this.pagoCtrl       = new PagoUnidadContratoBR();
                this.generadorPagos = new GeneradorPagosManttoBR();

                this.dctx = FacadeBR.ObtenerConexion();
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoManttoPRE:" + ex.Message);
            }
        }
Exemple #9
0
        /// <summary>
        /// Constructor que recibe la vista sobre la que actuará el presentador
        /// </summary>
        /// <param name="vistaActual">vista sobre la que actuará el presentador</param>
        /// <param name="herramientas">Presentador de la barra de herramientas</param>
        /// /// <param name="infoContrato">Presentador de la Informacion General</param>
        /// <param name="vistadg">Vista de los datos generales de la unidad</param>
        /// <param name="vistaea">Vista de los datos de los equipos aliados</param>
        public CerrarContratoRDPRE(ICerrarContratoRDVIS vistaActual, IucHerramientasRDVIS vistaHerramientas, IucResumenContratoRDVIS vistaInfoContrato, IucDatosGeneralesElementoVIS vistadg, IucEquiposAliadosUnidadVIS vistaea)
        {
            try
            {
                this.vista = vistaActual;

                this.presentadorResumen      = new ucResumenContratoRDPRE(vistaInfoContrato);
                this.presentadorDG           = new ucDatosGeneralesElementoPRE(vistadg);
                this.presentadorEA           = new ucEquiposAliadosUnidadPRE(vistaea);
                this.presentadorHerramientas = new ucHerramientasRDPRE(vistaHerramientas);

                this.controlador = new ContratoRDBR();
                this.pagosBr     = new PagoUnidadContratoBR();
                this.dctx        = FacadeBR.ObtenerConexion();
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoRDPRE:" + ex.Message);
            }
        }
        private List <PagoUnidadContratoFSLBO> ObtenerPagos(ContratoFSLBO contrato, DateTime FechaCierre)
        {
            var pagoBR = new PagoUnidadContratoBR();

            var pago = new PagoUnidadContratoBOF
            {
                ReferenciaContrato = new ReferenciaContratoBO {
                    ReferenciaContratoID = contrato.ContratoID, UnidadOperativa = new UnidadOperativaBO {
                        Id = vista.UnidadOperativaContratoID
                    }
                },
                Facturado = false,
                FechaVencimientoInicial = FechaCierre, Sucursales = new List <SucursalBO> {
                    contrato.Sucursal
                },
            };

            var pagos = pagoBR.ConsultarFiltroSinCuentas(dataContext, pago, true);

            return(pagos.Cast <PagoUnidadContratoFSLBO>().ToList());
        }
        /// <summary>
        /// Determina si es posible generar el pago adicional del contrato
        /// </summary>
        /// <returns>Devuelve la inconsitencia encontrada para genera el pago adicional</returns>
        private string ValidarPagoAdicional()
        {
            if (this.vista.TipoContrato == null)
            {
                return("No se ha seleccionado del Departamento del Contrato");
            }
            if (this.vista.SucursalID == null)
            {
                return("No se ha seleccionado la Sucursal del Contrato");
            }
            if (String.IsNullOrEmpty(this.vista.FolioContrato))
            {
                return("No se ha introducido el Folio del Contrato");
            }

            ContratoBO contratoBo = null;

            List <ContratoBO> contratos = new List <ContratoBO>();

            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                contratoBo = new ContratoRDBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosRD = new ContratoRDBR().Consultar(this.dctx, (ContratoRDBO)contratoBo);
                contratos.AddRange(contratosRD);
                break;

            case ETipoContrato.FSL:
                contratoBo = new ContratoFSLBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosFsl = new ContratoFSLBR().Consultar(this.dctx, (ContratoFSLBO)contratoBo);
                contratos.AddRange(contratosFsl);
                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                contratoBo = new ContratoManttoBO {
                    NumeroContrato = vista.FolioContrato, Tipo = vista.TipoContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosMantto = new ContratoManttoBR().Consultar(this.dctx, (ContratoManttoBO)contratoBo);
                contratos.AddRange(contratosMantto);
                break;
            }

            if (!contratos.Any())
            {
                return("No se encontró el Contrato solicitado");
            }
            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                var contratoRD = contratos.FirstOrDefault() as ContratoRDBO;
                if (!String.IsNullOrEmpty(TiempoMaximoRecepcionRD))
                {
                    if (DateTime.Now < contratoRD.FechaPromesaDevolucion.Value.AddHours(int.Parse(TiempoMaximoRecepcionRD)))
                    {
                        return("Deben pasar al menos " + TiempoMaximoRecepcionRD + " hrs para poder generar un pago adicional después de la Fecha de Promesa de Devolución.");
                    }
                }

                break;
            }
            this.vista.ContratoID = contratos.FirstOrDefault().ContratoID;

            PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF {
                ReferenciaContrato = new ReferenciaContratoBO()
                {
                    ReferenciaContratoID = this.vista.ContratoID
                }
            };
            PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR();
            var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo);

            if (!pagos.Any())
            {
                return("No se han generado Pagos para el Contrato");
            }

            var ultimoPago = pagos.Last(x => x.Activo.Value);

            if (ultimoPago.EnviadoFacturacion != null && !ultimoPago.EnviadoFacturacion.Value)
            {
                return("No se ha Facturado el Último Pago Activo del Contrato");
            }

            this.ultimoPagoContrato = ultimoPago;

            return(null);
        }
        /// <summary>
        /// Metodo que genera el pago adicional
        /// </summary>
        public void GenerarPagoAdicional()
        {
            try
            {
                string validacion = this.ValidarPagoAdicional();
                if (!String.IsNullOrEmpty(validacion))
                {
                    this.vista.MostrarMensaje("No se puede generar el pago Adicional: " + validacion, ETipoMensajeIU.INFORMACION);
                    return;
                }

                ContratoBO        contratoBo     = null;
                IGeneradorPagosBR generadorPagos = null;
                SeguridadBO       seguridadBo    = this.CrearObjetoSeguridad();
                List <ContratoBO> contratos      = new List <ContratoBO>();
                switch (vista.TipoContrato)
                {
                case ETipoContrato.RD:
                    contratoBo = new ContratoRDBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosRd = new ContratoRDBR().ConsultarCompleto(this.dctx, (ContratoRDBO)contratoBo, false);
                    contratos.AddRange(contratosRd);
                    generadorPagos = new GeneradorPagoRDBR();
                    break;

                case ETipoContrato.FSL:
                    contratoBo = new ContratoFSLBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosFsl = new ContratoFSLBR().ConsultarCompleto(this.dctx, (ContratoFSLBO)contratoBo);
                    contratos.AddRange(contratosFsl);
                    generadorPagos = new GeneradorPagosFSLBR();
                    break;

                case ETipoContrato.CM:
                case ETipoContrato.SD:
                    contratoBo = new ContratoManttoBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosMantto = new ContratoManttoBR().ConsultarCompleto(this.dctx, (ContratoManttoBO)contratoBo, true, false);
                    contratos.AddRange(contratosMantto);
                    generadorPagos = new GeneradorPagosManttoBR();
                    break;
                }
                if (generadorPagos == null)
                {
                    throw new Exception("No se pudo determinar el Tipo del Pago a Generar.");
                }

                generadorPagos.GenerarPagoAdicional(this.dctx, contratos.First(), (ultimoPagoContrato.NumeroPago.Value + 1), seguridadBo, false, true);
                PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF {
                    ReferenciaContrato = new ReferenciaContratoBO()
                    {
                        ReferenciaContratoID = this.vista.ContratoID
                    }
                };
                PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR();
                var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo);

                this.Inicializar();

                this.vista.MostrarMensaje("El pago " + pagos.Last().NumeroPago.ToString() + " con Fecha " + pagos.Last().FechaVencimiento.Value.ToShortDateString() + " se ha Creado con Éxito.", ETipoMensajeIU.EXITO);
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Error al generar el pago Adicional", ETipoMensajeIU.ERROR, NombreClase + ".GenerarPagoAdicional: " + ex.GetBaseException().Message);
            }
        }
        /// <summary>
        /// Realiza la impresión del Historico de Pagos para una referencia de Contrato Seleccionada
        /// </summary>
        public void ImprimirPagos()
        {
            try
            {
                var numeroContrato = Vista.NumeroContrato;

                // Validar la Informacion de la Referencia de Contrato Seleccionada
                var msg = ValidarDatos(numeroContrato);

                if (!string.IsNullOrEmpty(msg))
                {
                    Vista.MostrarMensaje(msg, ETipoMensajeIU.ADVERTENCIA);
                    return;
                }


                // Validar la existencia de folio del contrato
                var contratoBR = new ContratoBR();
                var contratos  = contratoBR.Consultar(dataContext, new ContratoProxyBO {
                    NumeroContrato = numeroContrato.ToUpper()
                });
                if (!contratos.Any())
                {
                    Vista.MostrarMensaje("No existe un Contrato con el Folio proporcionado.", ETipoMensajeIU.ADVERTENCIA);
                    return;
                }

                var referencia = contratos.First();
                var usuario    = new UsuarioBO {
                    Id = Vista.UsuarioId
                };
                var unidadOperativa = new UnidadOperativaBO {
                    Id = Vista.UnidadOperativaId
                };
                var sucursales = ConsultarSucursales(usuario, unidadOperativa);

                // Validar que el contrato pertenezca a una sucursal del usuario
                if (sucursales.All(x => x.Id != referencia.Sucursal.Id))
                {
                    Vista.MostrarMensaje("El Folio del Contrato proporcionado pertence a una sucursal no asignada al usuario.", ETipoMensajeIU.ADVERTENCIA);
                    return;
                }

                // Validar la existencia de Pagos del Contrato
                int conteo = 0;
                ReferenciaContratoBO referenciaContrato = new ReferenciaContratoBO {
                    ReferenciaContratoID = referencia.ContratoID, UnidadOperativa = unidadOperativa
                };

                switch (referencia.Tipo)
                {
                case ETipoContrato.RO:
                case ETipoContrato.RE:
                case ETipoContrato.ROC:
                    PagoContratoPSLBOF pagoPsl = new PagoContratoPSLBOF()
                    {
                        ReferenciaContrato = referenciaContrato, Sucursales = sucursales
                    };
                    PagoContratoPSLBR pagosPslBR = new PagoContratoPSLBR();
                    conteo = pagosPslBR.ContarPagos(dataContext, pagoPsl);
                    break;

                default:
                    PagoUnidadContratoBOF pago = new PagoUnidadContratoBOF {
                        ReferenciaContrato = referenciaContrato, Sucursales = sucursales
                    };
                    PagoUnidadContratoBR pagosBR = new PagoUnidadContratoBR();
                    conteo = pagosBR.ContarPagos(dataContext, pago);
                    break;
                }

                if (conteo == 0)
                {
                    Vista.MostrarMensaje("El contrato no cuenta con pagos generados.", ETipoMensajeIU.ADVERTENCIA);
                    return;
                }

                //Obtener Datos de Reporte
                var adscripcion = new AdscripcionBO {
                    UnidadOperativa = unidadOperativa
                };
                var seguridad      = new SeguridadBO(Guid.Empty, usuario, adscripcion);
                var imprmirPagosBR = new ImprimirPagosBR();
                var datosReporte   = imprmirPagosBR.ObtenerDatosHistoricoPagos(dataContext,
                                                                               referenciaContrato, unidadOperativa, seguridad, this.Vista.URLLogoEmpresa);

                Vista.EstablecerPaqueteNavegacionImprimir(codigoImprimirHistorico, datosReporte);
                Vista.IrAImprimirHistorico();
            }
            catch (Exception ex)
            {
                var strMetodo = new StackFrame().GetMethod().Name;
                var strMsg    = string.Format("{0}.{1}: {2}", nombreClase, strMetodo, ex.Message);
                Vista.MostrarMensaje("Inconsistencias al Desplegar los Pagos del Contrato", ETipoMensajeIU.ERROR, strMsg);
            }
        }
        /// <summary>
        /// Actualiza el cierre de un contrato Full Service Leasing
        /// </summary>
        public void CerrarContrato()
        {
            Guid firma = Guid.NewGuid();

            try
            {
                string resultado = finalizacionPRE.ValidarDatosCierre();
                if (!string.IsNullOrEmpty(resultado))
                {
                    vista.MostrarMensaje(resultado, ETipoMensajeIU.INFORMACION);
                    return;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message);
            }
            try
            {
                #region Transaccion

                dataContext.SetCurrentProvider("Outsourcing");
                dataContext.OpenConnection(firma);
                dataContext.BeginTransaction(firma);

                #endregion

                ContratoFSLBO anterior = vista.UltimoObjeto;
                ContratoFSLBO actual   = InterfazUsuarioADatos();
                actual.FC      = anterior.FC;
                actual.UC      = anterior.UC;
                actual.Estatus = EEstatusContrato.EnCurso;
                var contratoBR = new ContratoFSLBR();

                var seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO {
                    Id = vista.UsuarioID
                }, new AdscripcionBO
                {
                    Departamento    = new DepartamentoBO(),
                    Sucursal        = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO {
                        Id = vista.UnidadAdscripcionID
                    }
                });

                // Determinar si es Cierre anticipado
                bool cierreAnticipado = actual.CierreAnticipado();

                // Terminar el Contrato
                contratoBR.Terminar(dataContext, actual, anterior, seguridadBO, cierreAnticipado);


                if (cierreAnticipado)
                {
                    // Cancelar los pagos restantes
                    var pagosFaltantes = ObtenerPagos(anterior, (DateTime)actual.CierreContrato.Fecha);
                    var pagoBR         = new PagoUnidadContratoBR();
                    foreach (var faltante in pagosFaltantes)
                    {
                        //SC0026, Generación de clase concreta segun el tipo de contrato
                        var cancelado = new PagoUnidadContratoFSLBO(faltante)
                        {
                            Activo = false
                        };
                        cancelado.Auditoria.FUA = vista.FUA;
                        cancelado.Auditoria.UUA = vista.UUA;
                        pagoBR.Actualizar(dataContext, cancelado, faltante, seguridadBO);
                    }
                }


                var generadorPagoBR = new GeneradorPagosFSLBR();

                // Calcular Ultimo Pago
                var pago      = UltimoPago(anterior.ContratoID);
                var nuevoPago = ++pago;

                // Generar los pagos adicionales
                generadorPagoBR.GenerarPagoAdicional(dataContext, actual, nuevoPago, seguridadBO, true, true);

                dataContext.CommitTransaction(firma);

                RegresarADetalles();
            }
            catch (Exception ex)
            {
                dataContext.RollbackTransaction(firma);
                throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message);
            }
            finally
            {
                if (dataContext.ConnectionState == ConnectionState.Open)
                {
                    dataContext.CloseConnection(firma);
                }
            }
        }
        /// <summary>
        /// Decide que controlador usar para consultar pagos
        /// </summary>
        private List <PagoUnidadContratoBO> ConsultarPagos(Int32?pagoId, Int32?referenciaContratoId, Int32?unidadId, ETipoContrato?tipoContrato, Boolean esCompleto)
        {
            var listaPagos = new List <PagoUnidadContratoBO>();
            PagoUnidadContratoBR pagoBr = null;
            PagoUnidadContratoBO pago   = new PagoUnidadContratoBOF();

            switch (tipoContrato)
            {
            case ETipoContrato.FSL:
                pagoBr = new PagoUnidadContratoFSLBR();
                pago   = new PagoUnidadContratoFSLBO()
                {
                    Tarifa = new TarifaPagoEquipoBO()
                };
                break;

            case ETipoContrato.RD:
                pagoBr = new PagoUnidadContratoRDBR();
                pago   = new PagoUnidadContratoRDBO()
                {
                    Tarifa = new TarifaPagoEquipoBO()
                };
                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                pagoBr = new PagoUnidadContratoBR();
                pago   = new PagoUnidadContratoManttoBO(tipoContrato.Value)
                {
                    Tarifa = new TarifaPagoEquipoBO()
                };
                break;
            }

            if (pagoId != null)
            {
                pago.PagoID = pagoId;
            }
            if (referenciaContratoId != null)
            {
                pago.ReferenciaContrato = new ReferenciaContratoBO()
                {
                    ReferenciaContratoID = referenciaContratoId
                }
            }
            ;
            if (unidadId != null)
            {
                pago.Unidad = new UnidadBO()
                {
                    UnidadID = unidadId
                }
            }
            ;

            switch (tipoContrato)
            {
            case ETipoContrato.FSL:
                listaPagos.AddRange(esCompleto ? ((PagoUnidadContratoFSLBR)pagoBr).ConsultarCompleto(this.dataContext, (PagoUnidadContratoFSLBO)pago, true) : ((PagoUnidadContratoFSLBR)pagoBr).Consultar(this.dataContext, (PagoUnidadContratoFSLBO)pago));
                break;

            case ETipoContrato.RD:
                listaPagos.AddRange(esCompleto ? ((PagoUnidadContratoRDBR)pagoBr).ConsultarCompleto(this.dataContext, (PagoUnidadContratoRDBO)pago) : ((PagoUnidadContratoRDBR)pagoBr).Consultar(this.dataContext, (PagoUnidadContratoRDBO)pago));
                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                listaPagos.AddRange(esCompleto ? pagoBr.ConsultarCompleto(this.dataContext, pago) : pagoBr.Consultar(this.dataContext, pago));
                break;
            }

            return(listaPagos);
        }