예제 #1
0
        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);
        }
예제 #2
0
        /* 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);
        }