public ParametroFormulaBE GetFormulaParametro(ParametroFormulaBE entidad) { try { using (IDbConnection db = new OracleConnection(CadenaConexion)) { string sp = sPackage + "USP_SEL_FORMULA_PARAMETRO"; var p = new OracleDynamicParameters(); p.Add("PI_ID_PARAMETRO", entidad.ID_PARAMETRO); p.Add("PI_ID_ENFOQUE", entidad.ID_ENFOQUE); p.Add("PI_ID_MEDMIT", entidad.ID_MEDMIT); p.Add("PO_CURSOR", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); entidad = db.Query <ParametroFormulaBE>(sp, p, commandType: CommandType.StoredProcedure).FirstOrDefault(); } } catch (Exception ex) { Log.Error(ex); } return(entidad); }
/* NUEVOS PROCEDIMIENTOS */ public static List <IndicadorDataBE> CalculoIndicador(List <IndicadorDataBE> listaEntidad) { decimal ldecImporte = 0; decimal lde_porcentaje = 0; foreach (IndicadorDataBE item in listaEntidad) { ParametroFormulaBE formulaBE = new ParametroFormulaBE() { ID_PARAMETRO = item.ID_PARAMETRO, ID_ENFOQUE = item.ID_ENFOQUE, ID_MEDMIT = item.ID_MEDMIT }; formulaBE = new IndicadorFormulaDA().GetFormulaParametro(formulaBE); if (formulaBE != null) { switch (formulaBE.COMPORTAMIENTO) { case "C": ldecImporte = Decimal.Parse(formulaBE.VALOR); break; case "%": case "=": if (formulaBE.COMPORTAMIENTO == "%") { lde_porcentaje = Decimal.Parse(formulaBE.VALOR) / 100; } //Analizamos la formula int ll_ancho, ll_x; string lc_dato = ""; string ls_formulanew = "", ls_subformula = ""; string lstrFormula = formulaBE.FORMULA.Trim(); ll_ancho = lstrFormula.Trim().Length; for (ll_x = 0; ll_x < ll_ancho; ll_x++) { lc_dato = lstrFormula.Substring(ll_x, 1); switch (lc_dato) { case "[": int ll_finoperando, ll_long; string ls_operando; ll_finoperando = lstrFormula.IndexOf("]", ll_x); //Ubica Posicion Fin del Operando ll_long = ll_finoperando - ll_x - 1; //Determina longitud del Operando ls_operando = lstrFormula.Substring(ll_x + 1, ll_long); //Captura Operando ll_x = ll_finoperando; //Lleva puntero al final de operando //Quita Espacios en Blanco dentro del Operando ls_operando = ls_operando.Replace(" ", ""); //Verificando Operando ls_subformula = VerificaOperando(ls_operando, listaEntidad); break; default: ls_subformula = lc_dato; break; } ls_formulanew += ls_subformula; } //Si la formula esta vacia if (ls_formulanew == "") { ls_formulanew = "0"; } decimal lde_Aux = 0; lde_Aux = Calculate(ls_formulanew); if (formulaBE.COMPORTAMIENTO == "COMPORTAMIENTO") { ldecImporte = lde_Aux * lde_porcentaje; } else { ldecImporte = lde_Aux; } break; } item.VALOR = ldecImporte.ToString(); } } return(listaEntidad); }