📄 mrequest.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.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.util.*;
/**
* Request Model
*
* @author Jorg Janke
* @version $Id: MRequest.java,v 1.38 2006/01/28 01:28:28 jjanke Exp $
*/
public class MRequest extends X_R_Request
{
/**
* Get Request ID from mail text
* @param mailText mail text
* @return ID if it contains request tag otherwise 0
*/
public static int getR_Request_ID (String mailText)
{
if (mailText == null)
return 0;
int indexStart = mailText.indexOf(TAG_START);
if (indexStart == -1)
return 0;
int indexEnd = mailText.indexOf(TAG_END, indexStart);
if (indexEnd == -1)
return 0;
//
indexStart += 5;
String idString = mailText.substring(indexStart, indexEnd);
int R_Request_ID = 0;
try
{
R_Request_ID = Integer.parseInt(idString);
}
catch (Exception e)
{
s_log.severe ("Cannot parse " + idString);
}
return R_Request_ID;
} // getR_Request_ID
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger (MRequest.class);
/** Request Tag Start */
private static final String TAG_START = "[Req#";
/** Request Tag End */
private static final String TAG_END = "#ID]";
/**************************************************************************
* Constructor
* @param ctx context
* @param R_Request_ID request or 0 for new
*/
public MRequest(Properties ctx, int R_Request_ID, String trxName)
{
super (ctx, R_Request_ID, trxName);
if (R_Request_ID == 0)
{
setDueType (DUETYPE_Due);
// setSalesRep_ID (0);
// setDocumentNo (null);
setConfidentialType (CONFIDENTIALTYPE_CustomerConfidential); // A
setConfidentialTypeEntry (CONFIDENTIALTYPEENTRY_CustomerConfidential); // A
setProcessed (false);
setRequestAmt (Env.ZERO);
setPriorityUser (PRIORITY_Low);
// setR_RequestType_ID (0);
// setSummary (null);
setIsEscalated (false);
setIsSelfService (false);
setIsInvoiced (false);
}
} // MRequest
/**
* SelfService Constructor
* @param ctx context
* @param SalesRep_ID SalesRep
* @param R_RequestType_ID request type
* @param Summary summary
* @param isSelfService self service
*/
public MRequest (Properties ctx, int SalesRep_ID,
int R_RequestType_ID, String Summary, boolean isSelfService, String trxName)
{
this(ctx, 0, trxName);
set_Value ("SalesRep_ID", new Integer(SalesRep_ID)); // could be 0
set_Value ("R_RequestType_ID", new Integer(R_RequestType_ID));
setSummary (Summary);
setIsSelfService(isSelfService);
getRequestType();
if (m_requestType != null)
{
String ct = m_requestType.getConfidentialType();
if (ct != null)
{
setConfidentialType (ct);
setConfidentialTypeEntry (ct);
}
}
} // MRequest
/**
* Load Constructor
* @param ctx context
* @param rs result set
*/
public MRequest (Properties ctx, ResultSet rs, String trxName)
{
super(ctx, rs, trxName);
} // MRequest
/** Request Type */
private MRequestType m_requestType = null;
/** Changed */
private boolean m_changed = false;
/** BPartner */
private MBPartner m_partner = null;
/** User/Contact */
private MUser m_user = null;
/** List of EMail Notices */
private StringBuffer m_emailTo = new StringBuffer();
/** Separator line */
public static final String SEPARATOR =
"\n---------.----------.----------.----------.----------.----------\n";
/**************************************************************************
* Set Default Request Type.
*/
public void setR_RequestType_ID ()
{
m_requestType = MRequestType.getDefault(getCtx());
if (m_requestType == null)
log.warning("No default found");
else
super.setR_RequestType_ID(m_requestType.getR_RequestType_ID());
} // setR_RequestType_ID
/**
* Set Default Request Status.
*/
public void setR_Status_ID ()
{
MStatus status = MStatus.getDefault(getCtx(), getR_RequestType_ID());
if (status == null)
{
log.warning("No default found");
if (getR_Status_ID() != 0)
setR_Status_ID(0);
}
else
setR_Status_ID(status.getR_Status_ID());
} // setR_Status_ID
/**
* Add To Result
* @param Result
*/
public void addToResult (String Result)
{
String oldResult = getResult();
if (Result == null || Result.length() == 0)
;
else if (oldResult == null || oldResult.length() == 0)
setResult (Result);
else
setResult (oldResult + "\n-\n" + Result);
} // addToResult
/**
* Set DueType based on Date Next Action
*/
public void setDueType()
{
Timestamp due = getDateNextAction();
if (due == null)
return;
//
Timestamp overdue = TimeUtil.addDays(due, getRequestType().getDueDateTolerance());
Timestamp now = new Timestamp (System.currentTimeMillis());
//
String DueType = DUETYPE_Due;
if (now.before(due))
DueType = DUETYPE_Scheduled;
else if (now.after(overdue))
DueType = DUETYPE_Overdue;
super.setDueType(DueType);
} // setDueType
/**************************************************************************
* Get Action History
* @return array of actions
*/
public MRequestAction[] getActions()
{
String sql = "SELECT * FROM R_RequestAction "
+ "WHERE R_Request_ID=? "
+ "ORDER BY Created DESC";
ArrayList<MRequestAction> list = new ArrayList<MRequestAction>();
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, get_TrxName());
pstmt.setInt(1, getR_Request_ID());
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add(new MRequestAction(getCtx(), rs, get_TrxName()));
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
try
{
if (pstmt != null)
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
//
MRequestAction[] retValue = new MRequestAction[list.size()];
list.toArray(retValue);
return retValue;
} // getActions
/**
* Get Updates
* @param confidentialType maximum confidential type - null = all
* @return updates
*/
public MRequestUpdate[] getUpdates(String confidentialType)
{
String sql = "SELECT * FROM R_RequestUpdate "
+ "WHERE R_Request_ID=? "
+ "ORDER BY Created DESC";
ArrayList<MRequestUpdate> list = new ArrayList<MRequestUpdate>();
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, get_TrxName());
pstmt.setInt(1, getR_Request_ID());
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
MRequestUpdate ru = new MRequestUpdate(getCtx(), rs, get_TrxName());
if (confidentialType != null)
{
// Private only if private
if (ru.getConfidentialTypeEntry().equals(CONFIDENTIALTYPEENTRY_PrivateInformation)
&& !confidentialType.equals(CONFIDENTIALTYPEENTRY_PrivateInformation))
continue;
// Internal not if Customer/Public
if (ru.getConfidentialTypeEntry().equals(CONFIDENTIALTYPEENTRY_Internal)
&& (confidentialType.equals(CONFIDENTIALTYPEENTRY_CustomerConfidential)
|| confidentialType.equals(CONFIDENTIALTYPEENTRY_PublicInformation)))
continue;
// No Customer if public
if (ru.getConfidentialTypeEntry().equals(CONFIDENTIALTYPEENTRY_CustomerConfidential)
&& confidentialType.equals(CONFIDENTIALTYPEENTRY_PublicInformation))
continue;
}
list.add(ru);
}
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
try
{
if (pstmt != null)
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
//
MRequestUpdate[] retValue = new MRequestUpdate[list.size()];
list.toArray(retValue);
return retValue;
} // getUpdates
/**
* Get Public Updates
* @return public updates
*/
public MRequestUpdate[] getUpdatesPublic()
{
return getUpdates(CONFIDENTIALTYPE_PublicInformation);
} // getUpdatesPublic
/**
* Get Customer Updates
* @return customer updates
*/
public MRequestUpdate[] getUpdatesCustomer()
{
return getUpdates(CONFIDENTIALTYPE_CustomerConfidential);
} // getUpdatesCustomer
/**
* Get Internal Updates
* @return internal updates
*/
public MRequestUpdate[] getUpdatesInternal()
{
return getUpdates(CONFIDENTIALTYPE_Internal);
} // getUpdatesInternal
/**
* Get Request Type
* @return Request Type
*/
public MRequestType getRequestType()
{
if (m_requestType == null)
{
int R_RequestType_ID = getR_RequestType_ID();
if (R_RequestType_ID == 0)
{
setR_RequestType_ID();
R_RequestType_ID = getR_RequestType_ID();
}
m_requestType = MRequestType.get (getCtx(), R_RequestType_ID);
}
return m_requestType;
} // getRequestType
/**
* Get Request Type Text (for jsp)
* @return Request Type Text
*/
public String getRequestTypeName()
{
if (m_requestType == null)
getRequestType();
if (m_requestType == null)
return "??";
return m_requestType.getName();
} // getRequestTypeText
/**
* Get Request Category
* @return category
*/
public MRequestCategory getCategory()
{
if (getR_Category_ID() == 0)
return null;
return MRequestCategory.get(getCtx(), getR_Category_ID());
} // getCategory
/**
* Get Request Category Name
* @return name
*/
public String getCategoryName()
{
MRequestCategory cat = getCategory();
if (cat == null)
return "";
return cat.getName();
} // getCategoryName
/**
* Get Request Group
* @return group
*/
public MGroup getGroup()
{
if (getR_Group_ID() == 0)
return null;
return MGroup.get(getCtx(), getR_Group_ID());
} // getGroup
/**
* Get Request Group Name
* @return name
*/
public String getGroupName()
{
MGroup grp = getGroup();
if (grp == null)
return "";
return grp.getName();
} // getGroupName
/**
* Get Status
* @return status
*/
public MStatus getStatus()
{
if (getR_Status_ID() == 0)
return null;
return MStatus.get(getCtx(), getR_Status_ID());
} // getStatus
/**
* Get Request Status Name
* @return name
*/
public String getStatusName()
{
MStatus sta = getStatus();
if (sta == null)
return "?";
return sta.getName();
} // getStatusName
/**
* Get Request Resolution
* @return resolution
*/
public MResolution getResolution()
{
if (getR_Resolution_ID() == 0)
return null;
return MResolution.get(getCtx(), getR_Resolution_ID());
} // getResolution
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -