/// <summary>
 /// Obtiene la información relacionada con las tarifas personalizadas
 /// </summary>
 private void DatosSesionTarifaPersonalizada()
 {
     try {
         object objectoDevuelto = this.vista.ObtenerPaqueteNavegacion("TarifaPersonalizaPSLDevuelta");
         TarifaPersonalizadaPSLModel tarifaModel = null;
         if (objectoDevuelto != null)
         {
             if (objectoDevuelto is TarifaPersonalizadaPSLModel)
             {
                 tarifaModel  = (TarifaPersonalizadaPSLModel)objectoDevuelto;
                 vista.Tarifa = tarifaModel.TarifaPersonalizadaTarifa;
                 vista.PorcentajeDescuentoTarifa       = tarifaModel.TarifaPersonalizadaPorcentajeDescuento;
                 vista.PorcentajeMaximoDescuentoTarifa = tarifaModel.TarifaPersonalizadaDescuentoMax;
                 vista.TarifaEtiqueta = tarifaModel.TarifaPersonalizadaEtiqueta;
             }
         }
         if (vista.PorcentajeDescuentoTarifa.GetValueOrDefault() <= 0)
         {
             vista.PorcentajeDescuentoTarifa = null;
             vista.TarifaConDescuento        = null;
         }
         else
         {
             decimal tarifa             = this.vista.Tarifa.GetValueOrDefault();
             decimal descuento          = this.vista.PorcentajeDescuentoTarifa.GetValueOrDefault();
             decimal tarifaConDescuento = Math.Round(tarifa - (tarifa * descuento / 100), 2);//Redondea a dos posiciones
             vista.TarifaConDescuento = tarifaConDescuento;
         }
         this.CalcularSeguro(vista.Tarifa);
     } catch {
         throw new Exception(this.nombreClase + ".ObtenerDatosTarifaPersonalizada: Error al obtener los datos de las tarifas personalizadas");
     }
 }
        /// <summary>
        /// Limpia los campos del dialogo y
        /// Copia los datos de tarifa de la interfaz de usuario
        /// </summary>
        public void PrepararDatosTarifaPersonalizada()
        {
            TarifaPersonalizadaPSLModel tarifa = new TarifaPersonalizadaPSLModel();

            tarifa.UnidadOperativaID = vista.UnidadOperativaID;
            tarifa.SucursalID        = vista.SucursalID;
            tarifa.ModeloID          = vista.ModeloID;
            tarifa.ModuloID          = vista.ModuloID;
            tarifa.UsuarioID         = vista.UsuarioID;
            tarifa.CuentaClienteID   = vista.CuentaClienteID;
            tarifa.TarifaPersonalizadaDescuentoMax      = vista.PorcentajeMaximoDescuentoTarifa;
            tarifa.TarifaPersonalizadaTarifa            = vista.Tarifa;
            tarifa.TarifaPersonalizadaTipoTarifa        = vista.TarifaPersonalizadaTipoTarifa;
            tarifa.TarifaPersonalizadaTurno             = vista.TarifaPersonalizadaTurno;
            tarifa.TarifaPersonalizadaTarifaHrAdicional = vista.TarifaHrAdicional;
            tarifa.TarifaBaseTipoTarifaID  = (ETipoTarifa)Enum.Parse(typeof(ETipoTarifa), this.vista.TipoTarifaID.ToString());
            tarifa.TarifaBasePeriodoTarifa = (EPeriodosTarifa)this.vista.PeriodoTarifa;
            tarifa.TarifaBaseDivisa        = new DivisaBO {
                MonedaDestino = new MonedaBO {
                    Codigo = this.vista.CodigoMoneda
                }
            };
            tarifa.TarifaBaseActivo = true;
            tarifa.TarifaPersonalizadaPorcentajeDescuento = this.vista.PorcentajeDescuentoTarifa;
            tarifa.TarifaPersonalizadaTarifaConDescuento  = this.vista.TarifaConDescuento;
            tarifa.TarifaPersonalizadaPorcentajeSeguro    = this.vista.PorcentajeSeguro;

            this.vista.LimpiarPaqueteNavegacion("TarifaPersonalizaPSLEnviada");
            this.vista.EstablecerPaqueteNavegacion("TarifaPersonalizaPSLEnviada", tarifa);
        }
        /// <summary>
        /// Calcula la tarifa de la unidad, dependiendo de los campos Periodo, Tarifa Turno, Tipo Tarifa, Unidad Operativa y Modelo de la unidad.
        /// </summary>
        public void ObtieneTarifaBase()
        {
            try {
                TarifaPSLBO tarifaBO = new TarifaPSLBO();
                TarifaPersonalizadaPSLModel tarifaModel = (TarifaPersonalizadaPSLModel)this.vista.ObtenerPaqueteNavegacion("TarifaPersonalizaPSLEnviada");
                tarifaBO.PeriodoTarifa = tarifaModel.TarifaBasePeriodoTarifa;
                tarifaBO.TipoTarifaID  = tarifaModel.TarifaPersonalizadaTipoTarifa;
                tarifaBO.Divisa        = tarifaModel.TarifaBaseDivisa;
                int valorTurno;
                switch (this.vista.UnidadOperativaID)
                {
                case (int)ETipoEmpresa.Construccion:
                    valorTurno           = BPMO.Facade.SDNI.BR.FacadeBR.ObtenerValorEnumerador <ETarifaTurnoConstruccion>(tarifaModel.TarifaPersonalizadaTurno);
                    tarifaBO.TarifaTurno = (ETarifaTurnoConstruccion)valorTurno;
                    break;

                case (int)ETipoEmpresa.Generacion:
                    valorTurno           = BPMO.Facade.SDNI.BR.FacadeBR.ObtenerValorEnumerador <ETarifaTurnoGeneracion>(tarifaModel.TarifaPersonalizadaTurno);
                    tarifaBO.TarifaTurno = (ETarifaTurnoGeneracion)valorTurno;
                    break;

                case (int)ETipoEmpresa.Equinova:
                    valorTurno           = BPMO.Facade.SDNI.BR.FacadeBR.ObtenerValorEnumerador <ETarifaTurnoEquinova>(tarifaModel.TarifaPersonalizadaTurno);
                    tarifaBO.TarifaTurno = (ETarifaTurnoEquinova)valorTurno;
                    break;
                }
                tarifaBO.Modelo = new BPMO.Servicio.Catalogos.BO.ModeloBO {
                    Id = this.vista.ModeloID
                };
                tarifaBO.Sucursal = new SucursalBO {
                    Id = this.vista.SucursalID, UnidadOperativa = new UnidadOperativaBO {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                tarifaBO.Activo = true;
                TarifaPSLBR        tarifaBR   = new TarifaPSLBR();
                List <TarifaPSLBO> lstTarifas = tarifaBR.Consultar(this.dataContext, tarifaBO);
                if (lstTarifas != null && lstTarifas.Count > 0)
                {
                    this.vista.TarifaBase = lstTarifas[0].Tarifa;
                }
                else
                {
                    this.vista.MostrarMensaje("No se encontró una tarifa configurada.", ETipoMensajeIU.ADVERTENCIA);
                }
            } catch  {
                throw new Exception(this.nombreClase + ".ObtieneTarifaBase: Error al obtener la tarifa");
            }
        }
 /// <summary>
 /// Actualiza la tarifa en base al diálogo de personalización de tarifa
 /// </summary>
 public void ActualizarTarifaPersonalizada()
 {
     try {
         object objetoDevuelto = this.vista.ObtenerPaqueteNavegacion("TarifaPersonalizaPSLDevuelta");
         if (objetoDevuelto != null)
         {
             TarifaPersonalizadaPSLModel tarifaNueva = (TarifaPersonalizadaPSLModel)objetoDevuelto;
             this.vista.Tarifa = tarifaNueva.TarifaPersonalizadaTarifa;
             this.vista.PorcentajeDescuentoTarifa = tarifaNueva.TarifaPersonalizadaPorcentajeDescuento;
             this.vista.TarifaConDescuento        = tarifaNueva.TarifaPersonalizadaTarifaConDescuento;
         }
     } catch {
         new Exception(this.nombreClase + ".ActualizarTarifaPersonalizada: Error al actualizar la tarifa personalizada");
     }
 }
        /// <summary>
        /// Actualiza la tarifa seleccionada con los datos de la tarifa personalizada
        /// </summary>
        public void ActualizarTarifa()
        {
            TarifaPersonalizadaPSLModel tarifa = new TarifaPersonalizadaPSLModel();

            tarifa.TarifaPersonalizadaEtiqueta = this.vista.esTarifaAlza ? null : this.vista.TarifaPersonalizadaEtiqueta;

            tarifa.TarifaPersonalizadaTarifa              = this.vista.TarifaPersonalizadaTarifa;
            tarifa.TarifaPersonalizadaDescuentoMax        = this.vista.esTarifaAlza ? null : this.vista.TarifaPersonalizadaDescuentoMax;
            tarifa.TarifaPersonalizadaPorcentajeDescuento = this.vista.esTarifaAlza ? null : this.vista.TarifaPersonalizadaPorcentajeDescuento;
            tarifa.TarifaPersonalizadaTarifaConDescuento  = this.vista.esTarifaAlza ? null : this.vista.TarifaPersonalizadaTarifaConDescuento;

            this.vista.LimpiarPaqueteNavegacion("TarifaPersonalizaPSLDevuelta");
            this.vista.EstablecerPaqueteNavegacion("TarifaPersonalizaPSLDevuelta", tarifa);

            this.vista.MostrarMensaje("Se ha personalizado la tarifa con éxito", ETipoMensajeIU.EXITO);
        }
        /// <summary>
        /// Despliega los datos de la unidad a la interfaz
        /// </summary>
        /// <param name="unidad"></param>
        private void DatoAInterfazUsuario(TarifaPersonalizadaPSLModel tarifa)
        {
            vista.UnidadOperativaID                    = tarifa.UnidadOperativaID;
            vista.SucursalID                           = tarifa.SucursalID;
            vista.ModeloID                             = tarifa.ModeloID;
            vista.ModuloID                             = tarifa.ModuloID;
            vista.CuentaClienteID                      = tarifa.CuentaClienteID;
            vista.UsuarioID                            = tarifa.UsuarioID;
            vista.TarifaPersonalizadaTarifa            = tarifa.TarifaPersonalizadaTarifa;
            vista.TarifaPersonalizadaTipoTarifa        = tarifa.TarifaPersonalizadaTipoTarifa; //Se asigna el get de la misma propiedad, esta regresa un string con el tipo tarifa seleccionada
            vista.TarifaPersonalizadaTurno             = tarifa.TarifaPersonalizadaTurno;      //Se asigna el get de la misma propiedad, esta regresa un string con el turno seleccionado
            vista.TarifaPersonalizadaTarifaHrAdicional = tarifa.TarifaPersonalizadaTarifaHrAdicional;
            vista.TarifaPersonalizadaDescuentoMax      = tarifa.TarifaPersonalizadaDescuentoMax;

            vista.TarifaPersonalizadaTarifaConDescuento  = tarifa.TarifaPersonalizadaTarifaConDescuento;
            vista.TarifaPersonalizadaPorcentajeDescuento = tarifa.TarifaPersonalizadaPorcentajeDescuento;
            vista.TarifaBase    = tarifa.TarifaPersonalizadaTarifa;
            vista.DescuentoBase = tarifa.TarifaPersonalizadaPorcentajeDescuento;
            vista.TarifaPersonalizadaPorcentajeSeguro = tarifa.TarifaPersonalizadaPorcentajeSeguro;
        }
        /// <summary>
        /// Establece le paquete de datos de navegación
        /// </summary>
        /// <param name="paqueteNavegacion">Paquete de Navegación</param>
        private void EstablecerDatosNavegacion(object paqueteNavegacion)
        {
            try {
                if (paqueteNavegacion == null)
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No se puede identificar qué contrato se desea consultar.");
                }
                if (!(paqueteNavegacion is TarifaPersonalizadaPSLModel))
                {
                    throw new Exception("Se esperaba un Contrato de Renta Ordinaría.");
                }

                TarifaPersonalizadaPSLModel bo = (TarifaPersonalizadaPSLModel)paqueteNavegacion;

                this.DatoAInterfazUsuario(bo);
            } catch (Exception ex) {
                this.DatoAInterfazUsuario(new TarifaPersonalizadaPSLModel());
                throw new Exception(this.nombreClase + ".EstablecerDatosNavegacion: " + ex.Message);
            }
        }