private void btnGuardar_Click(object sender, EventArgs e) { try { int anho = int.Parse(this.cboAnho.SelectedValue.ToString()); int mes = int.Parse(this.cboMes.SelectedValue.ToString()); bool rpta = false; var lnMetaSala = new LN.MetaSala(); for (int i = 0; i < this.lstUiMetasSalas.Count; i++) { var uiMetaSala = this.lstUiMetasSalas[i]; if (uiMetaSala.Id > 0) { rpta = lnMetaSala.Actualizar(uiMetaSala); } else { rpta = lnMetaSala.Insertar(ref uiMetaSala); this.lstUiMetasSalas[i].Id = uiMetaSala.Id; } } if (rpta) { Util.InformationMessage("Se guardo las metas por salas"); this.CargarListaMetas(); } } catch (Exception ex) { Util.ErrorMessage(ex.Message); } }
/// <summary> /// Bono que se da si cumple con las siguientes condiciones /// 1. Grupal : /// 1.1. Alcanzar la meta de la sala. /// 1.2. Tener un máximo de 30% de tardanzas por sala /// 1.3. Tener un máximo de 30% de faltas por sala /// 1.4. Tener un máximo de 30% de observaciones. /// </summary> /// <param name="idSala">ID de la Sala</param> /// <returns></returns> private double BonoMetaGrupal(int idSala) { try { double bonoMeta = 0.0; #region Obtener Monto de Bono Grupal var beBono = new LN.Bono().Obtener(2); if (beBono != null) { bonoMeta = beBono.Monto; } beBono = null; #endregion #region Meta Grupal bool cumpleMetaGrupal = false; int cantidadTrabajadoresSala = 0; // Alcanzar la meta de la sala bool cumpleMetaSala = false; var beMetaSala = new LN.MetaSala().Obtener(idSala, this.Anho, this.Mes); if (beMetaSala != null) { cumpleMetaSala = beMetaSala.Cumplido; bonoMeta = beMetaSala.MontoPersonal; cantidadTrabajadoresSala = beMetaSala.CantidadPersonal; } else { throw new Exception("No existe una meta definida para esta sala y periodo"); } beMetaSala = null; //Tener un máximo de 30% de tardanzas por sala bool cumpleMetaTardanzas = false; double maxPorcentajeTardanzas = 30.0; double porcentajeTardanzas = 0; if (porcentajeTardanzas <= maxPorcentajeTardanzas) { cumpleMetaTardanzas = true; } //FALTA //Tener un máximo de 30% de faltas por sala bool cumpleMetaFaltas = false; double maxPorcentajeFaltas = 30.0; double porcentajeFaltas = 0.0; if (porcentajeFaltas <= maxPorcentajeFaltas) { cumpleMetaFaltas = true; } //FALTA //Tener un máximo de 30% de observaciones bool cumpleMetaObservaciones = false; double maxPorcentajeObservaciones = 30.0; int cntObservacionesSala = new LN.ObservacionEmpleado().CantidadObservacionesSala(this.Anho, this.Mes, idSala); double porcentajeObservaciones = (cntObservacionesSala / cantidadTrabajadoresSala) * 100; if (porcentajeObservaciones <= maxPorcentajeObservaciones) { cumpleMetaObservaciones = true; } if (cumpleMetaSala == true && cumpleMetaFaltas == true && cumpleMetaTardanzas == true && cumpleMetaObservaciones == true) { cumpleMetaGrupal = true; } #endregion if (cumpleMetaGrupal == false) { bonoMeta = 0.0; } return(bonoMeta); } catch (Exception ex) { throw ex; } }