📄 mgoal.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.model;
import java.awt.*;
import java.math.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.util.*;
/**
* Performance Goal
*
* @author Jorg Janke
* @version $Id: MGoal.java,v 1.7 2006/01/21 02:23:37 jjanke Exp $
*/
public class MGoal extends X_PA_Goal
{
/**
* Get User Goals
* @param ctx context
* @param AD_User_ID user
* @return array of goals
*/
public static MGoal[] getUserGoals(Properties ctx, int AD_User_ID)
{
if (AD_User_ID < 0)
return getTestGoals(ctx);
ArrayList<MGoal> list = new ArrayList<MGoal>();
String sql = "SELECT * FROM PA_Goal g "
+ "WHERE IsActive='Y'"
+ " AND AD_Client_ID=?" // #1
+ " AND ((AD_User_ID IS NULL AND AD_Role_ID IS NULL)"
+ " OR AD_User_ID=?" // #2
+ " OR EXISTS (SELECT * FROM AD_User_Roles ur "
+ "WHERE g.AD_User_ID=ur.AD_User_ID AND g.AD_Role_ID=ur.AD_Role_ID AND ur.IsActive='Y')) "
+ "ORDER BY SeqNo";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, Env.getAD_Client_ID(ctx));
pstmt.setInt (2, AD_User_ID);
ResultSet rs = pstmt.executeQuery ();
while (rs.next ())
{
MGoal goal = new MGoal (ctx, rs, null);
goal.updateGoal(false);
list.add (goal);
}
rs.close ();
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
s_log.log (Level.SEVERE, sql, e);
}
try
{
if (pstmt != null)
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
MGoal[] retValue = new MGoal[list.size ()];
list.toArray (retValue);
return retValue;
} // getUserGoals
/**
* Get Accessible Goals
* @param ctx context
* @return array of goals
*/
public static MGoal[] getGoals(Properties ctx)
{
ArrayList<MGoal> list = new ArrayList<MGoal>();
String sql = "SELECT * FROM PA_Goal WHERE IsActive='Y' "
+ "ORDER BY SeqNo";
sql = MRole.getDefault(ctx, false).addAccessSQL(sql, "PA_Goal",
false, true); // RW to restrict Access
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
ResultSet rs = pstmt.executeQuery ();
while (rs.next ())
{
MGoal goal = new MGoal (ctx, rs, null);
goal.updateGoal(false);
list.add (goal);
}
rs.close ();
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
s_log.log (Level.SEVERE, sql, e);
}
try
{
if (pstmt != null)
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
MGoal[] retValue = new MGoal[list.size ()];
list.toArray (retValue);
return retValue;
} // getGoals
/**
* Create Test Goals
* @param ctx context
* @return array of goals
*/
public static MGoal[] getTestGoals(Properties ctx)
{
MGoal[] retValue = new MGoal[4];
retValue[0] = new MGoal (ctx, "Test 1", "Description 1", new BigDecimal (1000), null);
retValue[0].setMeasureActual(new BigDecimal (200));
retValue[1] = new MGoal (ctx, "Test 2", "Description 2", new BigDecimal (1000), null);
retValue[1].setMeasureActual(new BigDecimal (900));
retValue[2] = new MGoal (ctx, "Test 3", "Description 3", new BigDecimal (1000), null);
retValue[2].setMeasureActual(new BigDecimal (1200));
retValue[3] = new MGoal (ctx, "Test 4", "Description 4", new BigDecimal (1000), null);
retValue[3].setMeasureActual(new BigDecimal (3200));
return retValue;
} // getTestGoals
/**
* Get Goals with Measure
* @param ctx context
* @param PA_Measure_ID measure
* @return goals
*/
public static MGoal[] getMeasureGoals (Properties ctx, int PA_Measure_ID)
{
ArrayList<MGoal> list = new ArrayList<MGoal>();
String sql = "SELECT * FROM PA_Goal WHERE IsActive='Y' AND PA_Measure_ID=? "
+ "ORDER BY SeqNo";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, PA_Measure_ID);
ResultSet rs = pstmt.executeQuery ();
while (rs.next ())
list.add (new MGoal (ctx, rs, null));
rs.close ();
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
s_log.log (Level.SEVERE, sql, e);
}
try
{
if (pstmt != null)
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
MGoal[] retValue = new MGoal[list.size ()];
list.toArray (retValue);
return retValue;
} // getMeasureGoals
/**
* Get Multiplier from Scope to Display
* @param goal goal
* @return null if error or multiplier
*/
public static BigDecimal getMultiplier (MGoal goal)
{
String MeasureScope = goal.getMeasureScope();
String MeasureDisplay = goal.getMeasureDisplay();
if (MeasureDisplay == null
|| MeasureScope.equals(MeasureDisplay))
return Env.ONE; // 1:1
if (MeasureScope.equals(MEASURESCOPE_Total)
|| MeasureDisplay.equals(MEASUREDISPLAY_Total))
return null; // Error
BigDecimal Multiplier = null;
if (MeasureScope.equals(MEASURESCOPE_Year))
{
if (MeasureDisplay.equals(MEASUREDISPLAY_Quarter))
Multiplier = new BigDecimal(1.0/4.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Month))
Multiplier = new BigDecimal(1.0/12.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Week))
Multiplier = new BigDecimal(1.0/52.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Day))
Multiplier = new BigDecimal(1.0/364.0);
}
else if (MeasureScope.equals(MEASURESCOPE_Quarter))
{
if (MeasureDisplay.equals(MEASUREDISPLAY_Year))
Multiplier = new BigDecimal(4.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Month))
Multiplier = new BigDecimal(1.0/3.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Week))
Multiplier = new BigDecimal(1.0/13.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Day))
Multiplier = new BigDecimal(1.0/91.0);
}
else if (MeasureScope.equals(MEASURESCOPE_Month))
{
if (MeasureDisplay.equals(MEASUREDISPLAY_Year))
Multiplier = new BigDecimal(12.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Quarter))
Multiplier = new BigDecimal(3.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Week))
Multiplier = new BigDecimal(1.0/4.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Day))
Multiplier = new BigDecimal(1.0/30.0);
}
else if (MeasureScope.equals(MEASURESCOPE_Week))
{
if (MeasureDisplay.equals(MEASUREDISPLAY_Year))
Multiplier = new BigDecimal(52.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Quarter))
Multiplier = new BigDecimal(13.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Month))
Multiplier = new BigDecimal(4.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Day))
Multiplier = new BigDecimal(1.0/7.0);
}
else if (MeasureScope.equals(MEASURESCOPE_Day))
{
if (MeasureDisplay.equals(MEASUREDISPLAY_Year))
Multiplier = new BigDecimal(364.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Quarter))
Multiplier = new BigDecimal(91.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Month))
Multiplier = new BigDecimal(30.0);
else if (MeasureDisplay.equals(MEASUREDISPLAY_Week))
Multiplier = new BigDecimal(7.0);
}
return Multiplier;
} // getMultiplier
/** Logger */
private static CLogger s_log = CLogger.getCLogger (MGoal.class);
/**************************************************************************
* Standard Constructor
* @param ctx context
* @param PA_Goal_ID id
* @param trxName trx
*/
public MGoal (Properties ctx, int PA_Goal_ID, String trxName)
{
super (ctx, PA_Goal_ID, trxName);
if (PA_Goal_ID == 0)
{
// setName (null);
// setAD_User_ID (0);
// setPA_ColorSchema_ID (0);
setSeqNo (0);
setIsSummary (false);
setMeasureScope (MEASUREDISPLAY_Year);
setGoalPerformance (Env.ZERO);
setRelativeWeight (Env.ONE);
setMeasureTarget (Env.ZERO);
setMeasureActual (Env.ZERO);
}
} // MGoal
/**
* Load Constructor
* @param ctx context
* @param rs result set
* @param trxName trx
*/
public MGoal (Properties ctx, ResultSet rs, String trxName)
{
super (ctx, rs, trxName);
} // MGoal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -