📄 mbpartner.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.math.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.util.*;
/**
* Business Partner Model
*
* @author Jorg Janke
* @version $Id: MBPartner.java,v 1.60 2006/01/24 05:16:35 jjanke Exp $
*/
public class MBPartner extends X_C_BPartner
{
/**
* Get Empty Template Business Partner
* @param ctx context
* @param AD_Client_ID client
* @return Template Business Partner or null
*/
public static MBPartner getTemplate (Properties ctx, int AD_Client_ID)
{
MBPartner template = getBPartnerCashTrx (ctx, AD_Client_ID);
if (template == null)
template = new MBPartner (ctx, 0, null);
// Reset
if (template != null)
{
template.set_ValueNoCheck ("C_BPartner_ID", new Integer(0));
template.setValue ("");
template.setName ("");
template.setName2 (null);
template.setDUNS("");
template.setFirstSale(null);
//
template.setSO_CreditLimit (Env.ZERO);
template.setSO_CreditUsed (Env.ZERO);
template.setTotalOpenBalance (Env.ZERO);
// s_template.setRating(null);
//
template.setActualLifeTimeValue(Env.ZERO);
template.setPotentialLifeTimeValue(Env.ZERO);
template.setAcqusitionCost(Env.ZERO);
template.setShareOfCustomer(0);
template.setSalesVolume(0);
}
return template;
} // getTemplate
/**
* Get Cash Trx Business Partner
* @param ctx context
* @param AD_Client_ID client
* @return Cash Trx Business Partner or null
*/
public static MBPartner getBPartnerCashTrx (Properties ctx, int AD_Client_ID)
{
MBPartner retValue = null;
String sql = "SELECT * FROM C_BPartner "
+ "WHERE C_BPartner_ID=(SELECT C_BPartnerCashTrx_ID FROM AD_ClientInfo WHERE AD_Client_ID=?)";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Client_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = new MBPartner (ctx, rs, null);
else
s_log.log(Level.SEVERE, "Not found for AD_Client_ID=" + AD_Client_ID);
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
s_log.log(Level.SEVERE, sql, e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
return retValue;
} // getBPartnerCashTrx
/**
* Get BPartner with Value
* @param ctx context
* @param Value value
* @return BPartner or null
*/
public static MBPartner get (Properties ctx, String Value)
{
if (Value == null || Value.length() == 0)
return null;
MBPartner retValue = null;
int AD_Client_ID = Env.getAD_Client_ID(ctx);
String sql = "SELECT * FROM C_BPartner WHERE Value=? AND AD_Client_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setString(1, Value);
pstmt.setInt(2, AD_Client_ID);
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
retValue = new MBPartner(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;
}
return retValue;
} // get
/**
* Get Not Invoiced Shipment Value
* @param C_BPartner_ID partner
* @return value in accounting currency
*/
public static BigDecimal getNotInvoicedAmt (int C_BPartner_ID)
{
BigDecimal retValue = null;
String sql = "SELECT SUM(COALESCE("
+ "currencyBase((ol.QtyDelivered-ol.QtyInvoiced)*ol.PriceActual,o.C_Currency_ID,o.DateOrdered, o.AD_Client_ID,o.AD_Org_ID) ,0)) "
+ "FROM C_OrderLine ol"
+ " INNER JOIN C_Order o ON (ol.C_Order_ID=o.C_Order_ID) "
+ "WHERE o.IsSOTrx='Y' AND Bill_BPartner_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, C_BPartner_ID);
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
retValue = rs.getBigDecimal(1);
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;
}
return retValue;
} // getNotInvoicedAmt
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger (MBPartner.class);
/**************************************************************************
* Constructor for new BPartner from Template
* @param ctx context
*/
public MBPartner (Properties ctx)
{
this (ctx, -1, null);
} // MBPartner
/**
* Default Constructor
* @param ctx context
* @param rs ResultSet to load from
*/
public MBPartner (Properties ctx, ResultSet rs, String trxName)
{
super(ctx, rs, trxName);
} // MBPartner
/**
* Default Constructor
* @param ctx context
* @param C_BPartner_ID partner or 0 or -1 (load from template)
* @param trxName trx name
*/
public MBPartner (Properties ctx, int C_BPartner_ID, String trxName)
{
super (ctx, C_BPartner_ID, trxName);
//
if (C_BPartner_ID == -1)
{
initTemplate (Env.getContextAsInt(ctx, "AD_Client_ID"));
C_BPartner_ID = 0;
}
if (C_BPartner_ID == 0)
{
// setValue ("");
// setName ("");
// setName2 (null);
// setDUNS("");
//
setIsCustomer (true);
setIsProspect (true);
//
setSendEMail (false);
setIsOneTime (false);
setIsVendor (false);
setIsSummary (false);
setIsEmployee (false);
setIsSalesRep (false);
setIsTaxExempt(false);
setIsDiscountPrinted(false);
//
setSO_CreditLimit (Env.ZERO);
setSO_CreditUsed (Env.ZERO);
setTotalOpenBalance (Env.ZERO);
setSOCreditStatus(SOCREDITSTATUS_NoCreditCheck);
//
setFirstSale(null);
setActualLifeTimeValue(Env.ZERO);
setPotentialLifeTimeValue(Env.ZERO);
setAcqusitionCost(Env.ZERO);
setShareOfCustomer(0);
setSalesVolume(0);
}
log.fine(toString());
} // MBPartner
/**
* Import Contstructor
* @param impBP import
*/
public MBPartner (X_I_BPartner impBP)
{
this (impBP.getCtx(), 0, impBP.get_TrxName());
setClientOrg(impBP);
setUpdatedBy(impBP.getUpdatedBy());
//
String value = impBP.getValue();
if (value == null || value.length() == 0)
value = impBP.getEMail();
if (value == null || value.length() == 0)
value = impBP.getContactName();
setValue(value);
String name = impBP.getName();
if (name == null || name.length() == 0)
name = impBP.getContactName();
if (name == null || name.length() == 0)
name = impBP.getEMail();
setName(name);
setName2(impBP.getName2());
setDescription(impBP.getDescription());
// setHelp(impBP.getHelp());
setDUNS(impBP.getDUNS());
setTaxID(impBP.getTaxID());
setNAICS(impBP.getNAICS());
setC_BP_Group_ID(impBP.getC_BP_Group_ID());
} // MBPartner
/** Users */
private MUser[] m_contacts = null;
/** Addressed */
private MBPartnerLocation[] m_locations = null;
/** BP Bank Accounts */
private MBPBankAccount[] m_accounts = null;
/** Prim Address */
private Integer m_primaryC_BPartner_Location_ID = null;
/** Prim User */
private Integer m_primaryAD_User_ID = null;
/** Credit Limit recently calcualted */
private boolean m_TotalOpenBalanceSet = false;
/** BP Group */
private MBPGroup m_group = null;
/**
* Load Default BPartner
* @param AD_Client_ID client
*/
private boolean initTemplate (int AD_Client_ID)
{
if (AD_Client_ID == 0)
throw new IllegalArgumentException ("Client_ID=0");
boolean success = true;
String sql = "SELECT * FROM C_BPartner "
+ "WHERE C_BPartner_ID=(SELECT C_BPartnerCashTrx_ID FROM AD_ClientInfo WHERE AD_Client_ID=?)";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Client_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
success = load (rs);
else
{
load(0, null);
success = false;
log.severe ("None found");
}
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;
}
setStandardDefaults();
// Reset
set_ValueNoCheck ("C_BPartner_ID", I_ZERO);
setValue ("");
setName ("");
setName2(null);
return success;
} // getTemplate
/**
* Get All Contacts
* @param reload if true users will be requeried
* @return contacts
*/
public MUser[] getContacts (boolean reload)
{
if (reload || m_contacts == null || m_contacts.length == 0)
;
else
return m_contacts;
//
ArrayList<MUser> list = new ArrayList<MUser>();
String sql = "SELECT * FROM AD_User WHERE C_BPartner_ID=?";
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 MUser (getCtx(), 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;
}
m_contacts = new MUser[list.size()];
list.toArray(m_contacts);
return m_contacts;
} // getContacts
/**
* Get specified or first Contact
* @param AD_User_ID optional user
* @return contact or null
*/
public MUser getContact (int AD_User_ID)
{
MUser[] users = getContacts(false);
if (users.length == 0)
return null;
for (int i = 0; AD_User_ID != 0 && i < users.length; i++)
{
if (users[i].getAD_User_ID() == AD_User_ID)
return users[i];
}
return users[0];
} // getContact
/**
* Get All Locations
* @param reload if true locations will be requeried
* @return locations
*/
public MBPartnerLocation[] getLocations (boolean reload)
{
if (reload || m_locations == null || m_locations.length == 0)
;
else
return m_locations;
//
ArrayList<MBPartnerLocation> list = new ArrayList<MBPartnerLocation>();
String sql = "SELECT * FROM C_BPartner_Location WHERE C_BPartner_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, get_TrxName());
pstmt.setInt(1, getC_BPartner_ID());
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add(new MBPartnerLocation (getCtx(), rs, get_TrxName()));
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;
}
m_locations = new MBPartnerLocation[list.size()];
list.toArray(m_locations);
return m_locations;
} // getLocations
/**
* Get explicit or first bill Location
* @param C_BPartner_Location_ID optional explicit location
* @return location or null
*/
public MBPartnerLocation getLocation(int C_BPartner_Location_ID)
{
MBPartnerLocation[] locations = getLocations(false);
if (locations.length == 0)
return null;
MBPartnerLocation retValue = null;
for (int i = 0; i < locations.length; i++)
{
if (locations[i].getC_BPartner_Location_ID() == C_BPartner_Location_ID)
return locations[i];
if (retValue == null && locations[i].isBillTo())
retValue = locations[i];
}
if (retValue == null)
return locations[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -