Beispiel #1
0
        /**
         *  Get MMeasureCalc from Cache
         *	@param ctx Ctx
         *	@param PA_MeasureCalc_ID id
         *	@return MMeasureCalc
         */
        public static MMeasureCalc Get(Ctx ctx, int PA_MeasureCalc_ID)
        {
            int          key      = PA_MeasureCalc_ID;
            MMeasureCalc retValue = (MMeasureCalc)_cache[key];

            if (retValue != null)
            {
                return(retValue);
            }
            retValue = new MMeasureCalc(ctx, PA_MeasureCalc_ID, null);
            if (retValue.Get_ID() != 0)
            {
                _cache.Add(key, retValue);
            }
            return(retValue);
        }
Beispiel #2
0
        /**
         *  Update/save Goals with Calculation
         *  @return true if updated
         */
        private Boolean UpdateCalculatedGoals()
        {
            if (!MEASURETYPE_Calculated.Equals(GetMeasureType()))
            {
                return(false);
            }
            MGoal[] goals = MGoal.GetMeasureGoals(GetCtx(), GetPA_Measure_ID());
            for (int i = 0; i < goals.Length; i++)
            {
                MGoal goal = goals[i];
                //	Find Role
                MRole role = null;
                if (goal.GetAD_Role_ID() != 0)
                {
                    role = MRole.Get(GetCtx(), goal.GetAD_Role_ID());
                }
                else if (goal.GetAD_User_ID() != 0)
                {
                    MUser   user  = MUser.Get(GetCtx(), goal.GetAD_User_ID());
                    MRole[] roles = user.GetRoles(goal.GetAD_Org_ID());
                    if (roles.Length > 0)
                    {
                        role = roles[0];
                    }
                }
                if (role == null)
                {
                    role = MRole.GetDefault(GetCtx(), false);   //	could result in wrong data
                }
                //
                MMeasureCalc mc = MMeasureCalc.Get(GetCtx(), GetPA_MeasureCalc_ID());
                if (mc == null || mc.Get_ID() == 0 || mc.Get_ID() != GetPA_MeasureCalc_ID())
                {
                    log.Log(Level.SEVERE, "Not found PA_MeasureCalc_ID=" + GetPA_MeasureCalc_ID());
                    return(false);
                }

                Decimal?ManualActual = null;
                String  sql          = mc.GetSqlPI(goal.GetRestrictions(false),
                                                   goal.GetMeasureScope(), GetMeasureDataType(), null, role);
                IDataReader idr = null;
                try             //	SQL statement could be wrong
                {
                    idr = DataBase.DB.ExecuteReader(sql, null, null);
                    if (idr.Read())
                    {
                        ManualActual = Utility.Util.GetValueOfDecimal(idr[0]);
                    }
                    idr.Close();
                }
                catch (Exception e)
                {
                    if (idr != null)
                    {
                        idr.Close();
                    }
                    log.Log(Level.SEVERE, sql, e);
                }

                //	SQL may return no rows or null
                if (ManualActual == null)
                {
                    ManualActual = Env.ZERO;
                    log.Fine("No Value = " + sql);
                }
                goal.SetMeasureActual(ManualActual);
                goal.Save();
            }
            return(true);
        }