IDEMPIERE-417 - Update BPLocation.Name
This commit is contained in:
parent
e251dbbc26
commit
af759b7134
|
@ -20,18 +20,18 @@ import java.sql.ResultSet;
|
|||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
/**
|
||||
* Partner Location Model
|
||||
* Partner Location Model
|
||||
*
|
||||
* @author Jorg Janke
|
||||
* @version $Id: MBPartnerLocation.java,v 1.3 2006/07/30 00:51:03 jjanke Exp $
|
||||
* @author Teo Sarca, www.arhipac.ro
|
||||
* <li>FR [ 2788465 ] MBPartnerLocation.getForBPartner method add trxName
|
||||
* https://sourceforge.net/tracker/index.php?func=detail&aid=2788465&group_id=176962&atid=879335
|
||||
* @author Jorg Janke
|
||||
* @version $Id: MBPartnerLocation.java,v 1.3 2006/07/30 00:51:03 jjanke Exp $
|
||||
* @author Teo Sarca, www.arhipac.ro <li>FR [ 2788465 ]
|
||||
* MBPartnerLocation.getForBPartner method add trxName
|
||||
* https://sourceforge
|
||||
* .net/tracker/index.php?func=detail&aid=2788465&group_id
|
||||
* =176962&atid=879335
|
||||
*/
|
||||
public class MBPartnerLocation extends X_C_BPartner_Location
|
||||
{
|
||||
public class MBPartnerLocation extends X_C_BPartner_Location {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -39,148 +39,216 @@ public class MBPartnerLocation extends X_C_BPartner_Location
|
|||
|
||||
/**
|
||||
* Get Locations for BPartner
|
||||
* @param ctx context
|
||||
* @param C_BPartner_ID bp
|
||||
*
|
||||
* @param ctx
|
||||
* context
|
||||
* @param C_BPartner_ID
|
||||
* bp
|
||||
* @return array of locations
|
||||
* @deprecated Since 3.5.3a. Please use {@link #getForBPartner(Properties, int, String)}.
|
||||
* @deprecated Since 3.5.3a. Please use
|
||||
* {@link #getForBPartner(Properties, int, String)}.
|
||||
*/
|
||||
public static MBPartnerLocation[] getForBPartner (Properties ctx, int C_BPartner_ID)
|
||||
{
|
||||
public static MBPartnerLocation[] getForBPartner(Properties ctx,
|
||||
int C_BPartner_ID) {
|
||||
return getForBPartner(ctx, C_BPartner_ID, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Locations for BPartner
|
||||
* @param ctx context
|
||||
* @param C_BPartner_ID bp
|
||||
*
|
||||
* @param ctx
|
||||
* context
|
||||
* @param C_BPartner_ID
|
||||
* bp
|
||||
* @param trxName
|
||||
* @return array of locations
|
||||
*/
|
||||
public static MBPartnerLocation[] getForBPartner (Properties ctx, int C_BPartner_ID, String trxName)
|
||||
{
|
||||
List<MBPartnerLocation> list = new Query(ctx, Table_Name, "C_BPartner_ID=?", trxName)
|
||||
.setParameters(C_BPartner_ID)
|
||||
.list();
|
||||
MBPartnerLocation[] retValue = new MBPartnerLocation[list.size ()];
|
||||
list.toArray (retValue);
|
||||
public static MBPartnerLocation[] getForBPartner(Properties ctx,
|
||||
int C_BPartner_ID, String trxName) {
|
||||
List<MBPartnerLocation> list = new Query(ctx, Table_Name,
|
||||
"C_BPartner_ID=?", trxName).setParameters(C_BPartner_ID).list();
|
||||
MBPartnerLocation[] retValue = new MBPartnerLocation[list.size()];
|
||||
list.toArray(retValue);
|
||||
return retValue;
|
||||
} // getForBPartner
|
||||
} // getForBPartner
|
||||
|
||||
/**************************************************************************
|
||||
* Default Constructor
|
||||
* @param ctx context
|
||||
* @param C_BPartner_Location_ID id
|
||||
* @param trxName transaction
|
||||
* Default Constructor
|
||||
*
|
||||
* @param ctx
|
||||
* context
|
||||
* @param C_BPartner_Location_ID
|
||||
* id
|
||||
* @param trxName
|
||||
* transaction
|
||||
*/
|
||||
public MBPartnerLocation (Properties ctx, int C_BPartner_Location_ID, String trxName)
|
||||
{
|
||||
super (ctx, C_BPartner_Location_ID, trxName);
|
||||
if (C_BPartner_Location_ID == 0)
|
||||
{
|
||||
setName (".");
|
||||
public MBPartnerLocation(Properties ctx, int C_BPartner_Location_ID,
|
||||
String trxName) {
|
||||
super(ctx, C_BPartner_Location_ID, trxName);
|
||||
if (C_BPartner_Location_ID == 0) {
|
||||
setName(".");
|
||||
//
|
||||
setIsShipTo (true);
|
||||
setIsRemitTo (true);
|
||||
setIsPayFrom (true);
|
||||
setIsBillTo (true);
|
||||
setIsShipTo(true);
|
||||
setIsRemitTo(true);
|
||||
setIsPayFrom(true);
|
||||
setIsBillTo(true);
|
||||
}
|
||||
} // MBPartner_Location
|
||||
} // MBPartner_Location
|
||||
|
||||
/**
|
||||
* BP Parent Constructor
|
||||
* @param bp partner
|
||||
* BP Parent Constructor
|
||||
*
|
||||
* @param bp
|
||||
* partner
|
||||
*/
|
||||
public MBPartnerLocation (MBPartner bp)
|
||||
{
|
||||
this (bp.getCtx(), 0, bp.get_TrxName());
|
||||
public MBPartnerLocation(MBPartner bp) {
|
||||
this(bp.getCtx(), 0, bp.get_TrxName());
|
||||
setClientOrg(bp);
|
||||
// may (still) be 0
|
||||
set_ValueNoCheck ("C_BPartner_ID", new Integer(bp.getC_BPartner_ID()));
|
||||
} // MBPartner_Location
|
||||
// may (still) be 0
|
||||
set_ValueNoCheck("C_BPartner_ID", new Integer(bp.getC_BPartner_ID()));
|
||||
} // MBPartner_Location
|
||||
|
||||
/**
|
||||
* Constructor from ResultSet row
|
||||
* @param ctx context
|
||||
* @param rs current row of result set to be loaded
|
||||
* @param trxName transaction
|
||||
* Constructor from ResultSet row
|
||||
*
|
||||
* @param ctx
|
||||
* context
|
||||
* @param rs
|
||||
* current row of result set to be loaded
|
||||
* @param trxName
|
||||
* transaction
|
||||
*/
|
||||
public MBPartnerLocation (Properties ctx, ResultSet rs, String trxName)
|
||||
{
|
||||
public MBPartnerLocation(Properties ctx, ResultSet rs, String trxName) {
|
||||
super(ctx, rs, trxName);
|
||||
} // MBPartner_Location
|
||||
} // MBPartner_Location
|
||||
|
||||
/** Cached Location */
|
||||
private MLocation m_location = null;
|
||||
/** Unique Name */
|
||||
private String m_uniqueName = null;
|
||||
private int m_unique = 0;
|
||||
/** Cached Location */
|
||||
private MLocation m_location = null;
|
||||
/** Unique Name */
|
||||
private String m_uniqueName = null;
|
||||
private int m_unique = 0;
|
||||
|
||||
/**
|
||||
* Get Location/Address
|
||||
* @param requery requery
|
||||
* @return location
|
||||
* Get Location/Address
|
||||
*
|
||||
* @param requery
|
||||
* requery
|
||||
* @return location
|
||||
*/
|
||||
public MLocation getLocation (boolean requery)
|
||||
{
|
||||
public MLocation getLocation(boolean requery) {
|
||||
if (m_location == null)
|
||||
m_location = MLocation.get (getCtx(), getC_Location_ID(), get_TrxName());
|
||||
m_location = MLocation.get(getCtx(), getC_Location_ID(),
|
||||
get_TrxName());
|
||||
return m_location;
|
||||
} // getLoaction
|
||||
} // getLoaction
|
||||
|
||||
/**
|
||||
* String Representation
|
||||
* @return info
|
||||
* String Representation
|
||||
*
|
||||
* @return info
|
||||
*/
|
||||
public String toString ()
|
||||
{
|
||||
StringBuffer sb = new StringBuffer ("MBPartner_Location[ID=")
|
||||
.append(get_ID())
|
||||
.append(",C_Location_ID=").append(getC_Location_ID())
|
||||
.append(",Name=").append(getName())
|
||||
.append ("]");
|
||||
return sb.toString ();
|
||||
} // toString
|
||||
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer("MBPartner_Location[ID=")
|
||||
.append(get_ID()).append(",C_Location_ID=")
|
||||
.append(getC_Location_ID()).append(",Name=").append(getName())
|
||||
.append("]");
|
||||
return sb.toString();
|
||||
} // toString
|
||||
|
||||
/**************************************************************************
|
||||
* Before Save.
|
||||
* - Set Name
|
||||
* @param newRecord new
|
||||
* @return save
|
||||
* Before Save. - Set Name
|
||||
*
|
||||
* @param newRecord
|
||||
* new
|
||||
* @return save
|
||||
*/
|
||||
protected boolean beforeSave (boolean newRecord)
|
||||
{
|
||||
protected boolean beforeSave(boolean newRecord) {
|
||||
if (getC_Location_ID() == 0)
|
||||
return false;
|
||||
|
||||
// Set New Name
|
||||
// Set New Name
|
||||
if (!newRecord)
|
||||
return true;
|
||||
MLocation address = getLocation(true);
|
||||
setName(getBPLocName(address));
|
||||
return true;
|
||||
} // beforeSave
|
||||
|
||||
/**
|
||||
* Make name Unique
|
||||
*
|
||||
* @param address
|
||||
* address
|
||||
*/
|
||||
private void makeUnique(MLocation address) {
|
||||
m_uniqueName = "";
|
||||
|
||||
// 0 - City
|
||||
if (m_unique >= 0 || m_uniqueName.length() == 0) {
|
||||
String xx = address.getCity();
|
||||
if (xx != null && xx.length() > 0)
|
||||
m_uniqueName = xx;
|
||||
}
|
||||
// 1 + Address1
|
||||
if (m_unique >= 1 || m_uniqueName.length() == 0) {
|
||||
String xx = address.getAddress1();
|
||||
if (xx != null && xx.length() > 0) {
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 2 + Address2
|
||||
if (m_unique >= 2 || m_uniqueName.length() == 0) {
|
||||
String xx = address.getAddress2();
|
||||
if (xx != null && xx.length() > 0) {
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 3 - Region
|
||||
if (m_unique >= 3 || m_uniqueName.length() == 0) {
|
||||
String xx = address.getRegionName(true);
|
||||
if (xx != null && xx.length() > 0) {
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 4 - ID
|
||||
if (m_unique >= 4 || m_uniqueName.length() == 0) {
|
||||
int id = get_ID();
|
||||
if (id == 0)
|
||||
id = address.get_ID();
|
||||
m_uniqueName += "#" + id;
|
||||
}
|
||||
} // makeUnique
|
||||
|
||||
public String getBPLocName(MLocation address) {
|
||||
m_uniqueName = getName();
|
||||
m_unique = MSysConfig.getIntValue(MSysConfig.START_VALUE_BPLOCATION_NAME, 0, getAD_Client_ID(), getAD_Org_ID());
|
||||
m_unique = MSysConfig.getIntValue("START_VALUE_BPLOCATION_NAME", 0,
|
||||
getAD_Client_ID(), getAD_Org_ID());
|
||||
if (m_unique < 0 || m_unique > 4)
|
||||
m_unique = 0;
|
||||
if (m_uniqueName != null && m_uniqueName.equals(".")) {
|
||||
// default
|
||||
if (m_uniqueName != null) { // && m_uniqueName.equals(".")) {
|
||||
// default
|
||||
m_uniqueName = null;
|
||||
makeUnique(address);
|
||||
}
|
||||
|
||||
// Check uniqueness
|
||||
MBPartnerLocation[] locations = getForBPartner(getCtx(), getC_BPartner_ID());
|
||||
// Check uniqueness
|
||||
MBPartnerLocation[] locations = getForBPartner(getCtx(),
|
||||
getC_BPartner_ID());
|
||||
boolean unique = locations.length == 0;
|
||||
while (!unique)
|
||||
{
|
||||
while (!unique) {
|
||||
unique = true;
|
||||
for (int i = 0; i < locations.length; i++)
|
||||
{
|
||||
for (int i = 0; i < locations.length; i++) {
|
||||
MBPartnerLocation location = locations[i];
|
||||
if (location.getC_BPartner_Location_ID() == get_ID())
|
||||
continue;
|
||||
if (m_uniqueName.equals(location.getName()))
|
||||
{
|
||||
//m_uniqueName = null;
|
||||
if (m_uniqueName.equals(location.getName())) {
|
||||
// m_uniqueName = null;
|
||||
m_unique++;
|
||||
makeUnique(address);
|
||||
unique = false;
|
||||
|
@ -188,67 +256,7 @@ public class MBPartnerLocation extends X_C_BPartner_Location
|
|||
}
|
||||
}
|
||||
}
|
||||
setName (m_uniqueName);
|
||||
return true;
|
||||
} // beforeSave
|
||||
return m_uniqueName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make name Unique
|
||||
* @param address address
|
||||
*/
|
||||
private void makeUnique (MLocation address)
|
||||
{
|
||||
|
||||
m_uniqueName = "";
|
||||
|
||||
// 0 - City
|
||||
if (m_unique >= 0 || m_uniqueName.length() == 0)
|
||||
{
|
||||
String xx = address.getCity();
|
||||
if (xx != null && xx.length() > 0)
|
||||
m_uniqueName = xx;
|
||||
}
|
||||
// 1 + Address1
|
||||
if (m_unique >= 1 || m_uniqueName.length() == 0)
|
||||
{
|
||||
String xx = address.getAddress1();
|
||||
if (xx != null && xx.length() > 0)
|
||||
{
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 2 + Address2
|
||||
if (m_unique >= 2 || m_uniqueName.length() == 0)
|
||||
{
|
||||
String xx = address.getAddress2();
|
||||
if (xx != null && xx.length() > 0)
|
||||
{
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 3 - Region
|
||||
if (m_unique >= 3 || m_uniqueName.length() == 0)
|
||||
{
|
||||
String xx = address.getRegionName(true);
|
||||
if (xx != null && xx.length() > 0)
|
||||
{
|
||||
if (m_uniqueName.length() > 0)
|
||||
m_uniqueName += " ";
|
||||
m_uniqueName += xx;
|
||||
}
|
||||
}
|
||||
// 4 - ID
|
||||
if (m_unique >= 4 || m_uniqueName.length() == 0)
|
||||
{
|
||||
int id = get_ID();
|
||||
if (id == 0)
|
||||
id = address.get_ID();
|
||||
m_uniqueName += "#" + id;
|
||||
}
|
||||
} // makeUnique
|
||||
|
||||
} // MBPartnerLocation
|
||||
} // MBPartnerLocation
|
||||
|
|
|
@ -654,6 +654,15 @@ public class MLocation extends X_C_Location implements Comparator<Object>
|
|||
MAccount.updateValueDescription(getCtx(),
|
||||
"(C_LocFrom_ID=" + getC_Location_ID()
|
||||
+ " OR C_LocTo_ID=" + getC_Location_ID() + ")", get_TrxName());
|
||||
|
||||
//Update BP_Location name IDEMPIERE 417
|
||||
int bplID = DB.getSQLValueEx(get_TrxName(), "SELECT C_BPartner_Location_ID FROM C_BPartner_Location WHERE C_Location_ID = " + getC_Location_ID());
|
||||
if (bplID>0)
|
||||
{
|
||||
MBPartnerLocation bpl = new MBPartnerLocation(getCtx(), bplID, get_TrxName());
|
||||
bpl.setName(bpl.getBPLocName(this));
|
||||
bpl.saveEx();
|
||||
}
|
||||
return success;
|
||||
} // afterSave
|
||||
|
||||
|
|
Loading…
Reference in New Issue