📄 info.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.wstore;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.model.*;
import org.compiere.util.*;
import org.compiere.wf.*;
/**
* Information Storage.
* Container for JSP Information, added in InfoLinkTag
*
* @author Jorg Janke
* @version $Id: Info.java,v 1.37 2005/11/28 03:34:21 jjanke Exp $
*/
public class Info
{
/**
* Get general Info
* @return info
*/
public static Info getGeneral()
{
if (m_general == null)
m_general = new Info (new Properties(), null);
return m_general;
} // getGeneral
/** General Info */
private static Info m_general = null;
/**
* Constructor
* @param ctx context
* @param wu BPartner
*/
public Info (Properties ctx, WebUser wu)
{
m_ctx = ctx;
m_wu = wu;
} // Info
/** JSP Name */
static public final String NAME = "info";
/** Logging */
private static CLogger log = CLogger.getCLogger(Info.class);
/** Context */
private Properties m_ctx = null;
/** Business Partner */
private WebUser m_wu = null;
/** Info Message */
private String m_infoMessage = null;
/** Info ID */
private int m_id = 0;
/**
* String Representation
* @return info
*/
public String toString()
{
StringBuffer sb = new StringBuffer("Info[");
sb.append(getC_BPartner_ID());
sb.append("]");
return sb.toString();
} // toString
/**
* Get Info Message & reset
* @return info message
*/
public String getMessage()
{
String retValue = m_infoMessage;
m_infoMessage = null;
return retValue;
} // getMessage
/**
* Get Info Message - do not reset
* @return info message
*/
public String getInfo()
{
return m_infoMessage;
} // getInfo
/**
* Set Info Message
* @param msg info message
*/
public void setMessage (String msg)
{
m_infoMessage = msg;
} // setMessage
/**
* Get Info Message
* @return info id
*/
public int getId()
{
return m_id;
} // getId
/**
* Set Info Message
* @param id info id
*/
public void setId (String id)
{
try
{
setId (Integer.parseInt (id));
}
catch (NumberFormatException ex)
{
log.log(Level.SEVERE, "ID=" + id + " - " + ex.toString());
m_id = 0;
}
} // setId
/**
* Set Info Message
* @param id info id
*/
public void setId (int id)
{
log.info("ID=" + id);
m_id = id;
} // setId
/**
* Get Client
* @return AD_Client_ID
*/
public int getAD_Client_ID()
{
if (m_wu == null)
return -1;
return m_wu.getAD_Client_ID();
} // getC_BPartner_ID
/**
* Get BPartner
* @return C_BPartner_ID
*/
public int getC_BPartner_ID()
{
if (m_wu == null)
return -1;
return m_wu.getC_BPartner_ID();
} // getC_BPartner_ID
/**
* Get BPartner Contact/User
* @return AD_User_ID
*/
public int getAD_User_ID()
{
if (m_wu == null)
return -1;
return m_wu.getAD_User_ID();
} // getAD_User_ID
/**
* Get BPartner Contact/User
* @return AD_User_ID
*/
public int getUser_ID()
{
return getAD_User_ID();
} // getAD_User_ID
/**************************************************************************
* Get Orders
* @return invoices of BP
*/
public ArrayList<MOrder> getOrders()
{
m_infoMessage = null;
ArrayList<MOrder> list = new ArrayList<MOrder>();
if (m_wu != null &&
!m_wu.hasBPAccess(X_AD_UserBPAccess.BPACCESSTYPE_BusinessDocuments,
new Object[] {MDocType.DOCBASETYPE_PurchaseOrder, MDocType.DOCBASETYPE_SalesOrder}))
{
log.info("No Access");
return list;
}
String sql = "SELECT * FROM C_Order WHERE Bill_BPartner_ID=?"
+ " AND DocStatus NOT IN ('DR','IN') "
+ "ORDER BY DocumentNo DESC";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, getC_BPartner_ID());
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add(new MOrder (m_ctx, rs, null));
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
log.fine("#" + list.size());
return list;
} // getOrders
/**
* Get Order.
* Needs to have ID set first
* @return invoice of BP with ID
*/
public MOrder getOrder()
{
m_infoMessage = null;
MOrder retValue = null;
if (m_wu != null &&
!m_wu.hasBPAccess(X_AD_UserBPAccess.BPACCESSTYPE_BusinessDocuments,
new Object[] {MDocType.DOCBASETYPE_PurchaseOrder, MDocType.DOCBASETYPE_SalesOrder}))
{
log.info("No Access");
return null;
}
String sql = "SELECT * FROM C_Order WHERE Bill_BPartner_ID=? AND C_Order_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, getC_BPartner_ID());
pstmt.setInt(2, m_id);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = new MOrder (m_ctx, rs, null);
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, "C_Order_ID=" + m_id, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
log.fine("C_Order_ID=" + m_id + " - " + retValue);
return retValue;
} // getOrder
/**
* Get Shipments
* @return shipments of BP
*/
public ArrayList<MInOut> getShipments()
{
m_infoMessage = null;
ArrayList<MInOut> list = new ArrayList<MInOut>();
if (m_wu != null &&
!m_wu.hasBPAccess(X_AD_UserBPAccess.BPACCESSTYPE_BusinessDocuments,
new Object[] {MDocType.DOCBASETYPE_MaterialReceipt, MDocType.DOCBASETYPE_MaterialDelivery}))
{
log.info("No Access");
return list;
}
String sql = "SELECT * FROM M_InOut WHERE C_BPartner_ID=?"
+ " AND DocStatus NOT IN ('DR','IN') "
+ " ORDER BY DocumentNo DESC";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, getC_BPartner_ID());
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add(new MInOut (m_ctx, rs, null));
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
log.fine("#" + list.size());
return list;
} // getShipments
/**
* Get Own Requests
* @return Array of Own Requests
*/
public ArrayList getRequestsOwn ()
{
return getRequests(true);
} // getRequestsOwn
/**
* Get Own Requests
* @return Array of Assigned Requests
*/
public ArrayList getRequestsAssigned ()
{
return getRequests(false);
} // getRequestsAssigned
/**
* Get Requests
* @param own if true its own requests otherwise or
* @return Array of Requests
*/
public ArrayList<MRequest> getRequests (boolean own)
{
m_infoMessage = null;
ArrayList<MRequest> list = new ArrayList<MRequest>();
String sql = null;
if (own) // All Requests
sql = "SELECT * FROM R_Request r "
+ "WHERE r.C_BPartner_ID=?" // #1
+ " AND (r.AD_User_ID=?" // #2
+ " OR EXISTS (SELECT * FROM AD_User u "
+ "WHERE u.AD_User_ID=? AND r.C_BPartner_ID=u.C_BPartner_ID AND IsFullBPAccess='Y')" // #3
+ " OR EXISTS (SELECT * FROM AD_User u INNER JOIN AD_UserBPAccess a ON (u.AD_User_ID=a.AD_User_ID) "
+ "WHERE u.AD_User_ID=? AND r.C_BPartner_ID=u.C_BPartner_ID" // #4
+ " AND a.BPAccessType='R' AND (a.R_RequestType_ID IS NULL OR a.R_RequestType_ID=r.R_RequestType_ID)) ) "
+ "ORDER BY r.DocumentNo DESC";
else // Open Requests of Sales Rep
sql = "SELECT * FROM R_Request "
+ "WHERE SalesRep_ID IN (SELECT AD_User_ID FROM AD_User WHERE C_BPartner_ID=?)"
+ " AND R_Status_ID IN (SELECT R_Status_ID FROM R_Status WHERE IsClosed='N')"
+ "ORDER BY DocumentNo DESC";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, getC_BPartner_ID());
if (own)
{
pstmt.setInt(2, getAD_User_ID());
pstmt.setInt(3, getAD_User_ID());
pstmt.setInt(4, getAD_User_ID());
}
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add (new MRequest (m_ctx, rs, null));
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
log.fine("Own=" + own +" #" + list.size());
return list;
} // getRequests
/**
* Get Request.
* Needs to have ID set first; Check that it is owned / created by requestor
* @return invoice of BP with ID
*/
public MRequest getRequest()
{
m_infoMessage = null;
MRequest retValue = null;
String sql = "SELECT * FROM R_Request "
+ "WHERE R_Request_ID=?"
+ " AND (C_BPartner_ID=?"
+ " OR SalesRep_ID IN (SELECT AD_User_ID FROM AD_User WHERE C_BPartner_ID=?))";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, m_id);
pstmt.setInt(2, getC_BPartner_ID());
pstmt.setInt(3, getC_BPartner_ID());
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = new MRequest (m_ctx, rs, null);
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, "R_Request_ID=" + m_id, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
log.fine("R_Request_ID=" + m_id + " - " + retValue);
return retValue;
} // getRequest
/**
* Get Request Types
* @return Array of Request Types
*/
public ArrayList<MRequestType> getRequestTypes ()
{
m_infoMessage = null;
ArrayList<MRequestType> list = new ArrayList<MRequestType>();
String sql = "SELECT * FROM R_RequestType "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -