예제 #1
0
        /**
         *  Is R_Status_ID Valid
         *	@param R_Status_ID id
         *	@return true if valid
         */
        public bool IsR_Status_IDValid(int R_Status_ID)
        {
            if (R_Status_ID == 0)
            {
                return(true);
            }

            _Status = MStatus.Get(GetCtx(), R_Status_ID);
            int R_StatusCategory_ID = _Status.GetR_StatusCategory_ID();
            //
            int R_RequestType_ID = GetR_RequestType_ID();

            if (R_RequestType_ID == 0)
            {
                log.Warning("No Client Request Type");
                return(false);
            }
            MRequestType rt = MRequestType.Get(GetCtx(), R_RequestType_ID);

            if (rt.GetR_StatusCategory_ID() != R_StatusCategory_ID)
            {
                log.Warning("Status Category different - Status("
                            + R_StatusCategory_ID + ") <> RequestType("
                            + rt.GetR_StatusCategory_ID() + ")");
                return(false);
            }
            return(true);
        }
예제 #2
0
        /**
         *  Get Default Request Type
         *	@param ctx context
         *	@return Request Type
         */
        public static MRequestType GetDefault(Ctx ctx)
        {
            MRequestType retValue     = null;
            int          AD_Client_ID = ctx.GetAD_Client_ID();
            String       sql          = "SELECT * FROM R_RequestType "
                                        + "WHERE AD_Client_ID IN (0,11) AND IsActive='Y'"
                                        + "ORDER BY IsDefault DESC, AD_Client_ID DESC, R_Request_ID DESC";
            DataSet ds;

            try
            {
                ds = new DataSet();
                ds = DataBase.DB.ExecuteDataset(sql, null, null);
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    retValue = new MRequestType(ctx, dr, null);
                    if (!retValue.IsDefault())
                    {
                        retValue = null;
                    }
                    break;
                }
                ds = null;
            }
            catch (SqlException ex)
            {
                _log.Log(Level.SEVERE, sql, ex);
            }
            finally
            {
                ds = null;
            }
            return(retValue);
        }
예제 #3
0
        /**
         *  Get Request Type (cached)
         *	@param ctx context
         *	@param R_RequestType_ID id
         *	@return Request Type
         */
        public static MRequestType Get(Ctx ctx, int R_RequestType_ID)
        {
            int          key      = R_RequestType_ID;
            MRequestType retValue = (MRequestType)_cache[key];

            if (retValue == null)
            {
                retValue = new MRequestType(ctx, R_RequestType_ID, null);
                _cache.Add(key, retValue);
            }
            return(retValue);
        }
예제 #4
0
        /**
         *  Get R_RequestType_ID
         *	@return Request Type
         */
        private int GetR_RequestType_ID()
        {
            MClientInfo ci = MClientInfo.Get(GetCtx(), GetAD_Client_ID());
            int         R_RequestType_ID = ci.GetR_RequestType_ID();

            if (R_RequestType_ID != 0)
            {
                return(R_RequestType_ID);
            }
            log.Warning("Set Request Type in Window Client Info");

            //	Default
            MRequestType rt = MRequestType.GetDefault(GetCtx());

            if (rt != null)
            {
                R_RequestType_ID = rt.GetR_RequestType_ID();
                ci.SetR_RequestType_ID(R_RequestType_ID);
                ci.Save();
                return(R_RequestType_ID);
            }
            //
            return(0);
        }
예제 #5
0
        /**
         *  Update/save Goals with Requests
         *  @return true if updated
         */
        private Boolean UpdateRequests()
        {
            if (!MEASURETYPE_Request.Equals(GetMeasureType()) ||
                GetR_RequestType_ID() == 0)
            {
                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
                }
                //
                Decimal?     ManualActual = null;
                MRequestType rt           = MRequestType.Get(GetCtx(), GetR_RequestType_ID());
                String       sql          = rt.GetSqlPI(goal.GetRestrictions(false),
                                                        goal.GetMeasureScope(), GetMeasureDataType(), null, role);
                //PreparedStatement pstmt = null;
                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);
        }