Exemplo n.º 1
0
 public RegistrarTarifaPSLPRE(IRegistrarTarifaPSLVIS vistaActual, IucTarifaPSLVIS vistaTarifas)
 {
     this.vista         = vistaActual;
     presentadorTarifas = new ucTarifaPSLPRE(vistaTarifas);
     dctx        = FacadeBR.ObtenerConexion();
     tarifaPSLBR = new TarifaPSLBR();
 }
        private TarifaPSLBO ConsultarTarifa(TarifaPSLBO tarifa)
        {
            try {
                if (tarifa == null)
                {
                    throw new Exception("Se esperaba el objeto TarifaPSLBO");
                }
                if (tarifa.TarifaPSLID == null)
                {
                    throw new Exception("Se necesita el identificador de la tarifa");
                }

                List <TarifaPSLBO> lstTemp = new List <TarifaPSLBO>();
                tarifaBR = new TarifaPSLBR();
                lstTemp  = tarifaBR.ConsultarCompleto(dctx, tarifa);
                if (lstTemp.Count == 0)
                {
                    throw new Exception("No se encontro ningún registro en la base datos");
                }
                if (lstTemp.Count > 1)
                {
                    throw new Exception("Inconsistencias en los registros de la base datos, se encontro mas de un registro de la tarifa que desea buscar");
                }
                return(lstTemp[0]);
            } catch (Exception ex) {
                throw new Exception(nombreClase + ".ConsultarTarifa:Inconsistencias al consultar los datos de la Tarifa." + ex.Message);
            }
        }
 public EditarTarifaPSLPRE(IEditarTarifaPSLVIS vistaActual, IucTarifaPSLVIS vistaTarifa)
 {
     try {
         this.vista         = vistaActual;
         presentadorTarifas = new ucTarifaPSLPRE(vistaTarifa);
         tarifaBR           = new TarifaPSLBR();
         dctx = FacadeBR.ObtenerConexion();
     } catch (Exception ex) {
         this.MostrarMensaje("Inconsistencias al configurar el presentador", ETipoMensajeIU.ERROR, nombreClase + ".EditarTarifaPSLPRE:" + ex.Message);
     }
 }
        /// <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>
        /// Método que realiza la consulta de las tarifas para cargar a la interfaz
        /// </summary>
        public void ConsultarTarifas()
        {
            try {
                TarifaPSLBO tarifa = InterfazUsuarioADato();
                tarifaBr = new TarifaPSLBR();
                List <TarifaPSLBO> lstTarifas = tarifaBr.ConsultarCompleto(dctx, tarifa);
                this.vista.ListaTarifas = lstTarifas != null?lstTarifas.ConvertAll(t => (TarifaPSLBO)t) : new List <TarifaPSLBO>();

                if (lstTarifas.Count != 0)
                {
                    this.vista.ActualizarListaTarifas();
                }
                else
                {
                    this.vista.ListaTarifas = null;
                    this.vista.ActualizarListaTarifas();
                    MostrarMensaje("No se han encontrado tarifas con los filtros proporcionados",
                                   ETipoMensajeIU.INFORMACION);
                }
            } catch (Exception ex) {
                this.MostrarMensaje("Inconsistencias al momento de buscar las tarifas", ETipoMensajeIU.ERROR, nombreClase + ".ConsultarTarifas:" + ex.Message);
            }
        }
        /// <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 CalcularTarifas()
        {
            try {
                this.vista.Tarifa            = null;
                this.vista.TarifaHrAdicional = null;

                if (this.vista.PeriodoTarifa != null && this.vista.TarifaTurno != null && this.vista.TipoTarifaID != null && this.vista.UnidadOperativaID != null && this.vista.ModeloID != null)
                {
                    ETipoTarifa tipo     = (ETipoTarifa)Enum.Parse(typeof(ETipoTarifa), this.vista.TipoTarifaID.ToString());
                    TarifaPSLBR tarifaBR = new TarifaPSLBR();
                    TarifaPSLBO tarifaBO = new TarifaPSLBO();
                    tarifaBO.PeriodoTarifa = (EPeriodosTarifa)this.vista.PeriodoTarifa;
                    tarifaBO.TipoTarifaID  = tipo.ToString();
                    tarifaBO.TarifaTurno   = this.vista.TarifaTurno;
                    tarifaBO.Modelo        = new ModeloBO {
                        Id = this.vista.ModeloID
                    };
                    tarifaBO.Sucursal = new SucursalBO {
                        Id = this.vista.SucursalID, UnidadOperativa = new UnidadOperativaBO {
                            Id = this.vista.UnidadOperativaID
                        }
                    };
                    tarifaBO.Activo = true;
                    List <TarifaPSLBO> lstTarifas = tarifaBR.Consultar(this.dataContext, tarifaBO);
                    if (lstTarifas.Any())
                    {
                        Decimal tipoCambioAplicar = 1M;

                        // Seleccionar tarifa de la misma moneda con la que se trabaja
                        TarifaPSLBO tarifaAplicar = lstTarifas.FirstOrDefault(t => t.Divisa.MonedaDestino.Codigo == this.vista.CodigoMoneda);

                        // Si no se encuentra tarifa con misma moneda se selecciona la primera que se encuentre
                        if (tarifaAplicar == null)
                        {
                            tarifaAplicar = lstTarifas.FirstOrDefault();

                            // Calcular el tipo de cambio
                            DivisaBO divisaConversion = new DivisaBO()
                            {
                                MonedaOrigen  = tarifaAplicar.Divisa.MonedaDestino,
                                MonedaDestino = new MonedaBO()
                                {
                                    Codigo = this.vista.CodigoMoneda
                                },
                                FechaTipoCambio = DateTime.Now.Date
                            };
                            divisaConversion = FacadeBR.ConsultarTipoCambio(this.dataContext, divisaConversion).FirstOrDefault();

                            if (divisaConversion == null)
                            {
                                throw new Exception("No se encuentra tipo de cambio de " + tarifaAplicar.Divisa.MonedaDestino.Codigo
                                                    + " a " + this.vista.CodigoMoneda + ".");
                            }

                            tipoCambioAplicar = divisaConversion.TipoCambio.Value;
                        }

                        this.vista.Tarifa            = tarifaAplicar.Tarifa * tipoCambioAplicar;
                        this.vista.TarifaHrAdicional = tarifaAplicar.TarifaHrAdicional * tipoCambioAplicar;
                        this.CalcularSeguro(this.vista.Tarifa);
                    }
                    else
                    {
                        this.vista.MostrarMensaje("No se encontró una tarifa configurada que coincida con el filtro proporcionado.", ETipoMensajeIU.ADVERTENCIA);
                    }
                }
            } catch (Exception ex) {
                throw new Exception(this.nombreClase + ".CalcularTarifas: Error al obtener las tarifas. " + ex.Message);
            }
        }