Error in context when Key field is found in different tabs.
https://sourceforge.net/tracker/index.php?func=detail&aid=2910358&group_id=176962&atid=879332 Error in context when IsActive field is found in different https://sourceforge.net/tracker/?func=detail&aid=2910368&group_id=176962&atid=879332 kind regards Victor Perez www.e-evolution.com
This commit is contained in:
parent
bd92365e04
commit
bdf3c8a5ef
|
@ -59,15 +59,22 @@ import org.compiere.util.Evaluator;
|
|||
* @author Teo Sarca, teo.sarca@gmail.com
|
||||
* <li>BF [ 2874646 ] GridField issue when a lookup is key
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2874646&group_id=176962&atid=879332
|
||||
* @author victor.perez@e-evolution.com,www.e-evolution.com
|
||||
* <li>BF [ 2910358 ] Error in context when a field is found in different tabs.
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910358&group_id=176962&atid=879332
|
||||
* <li>BF [ 2910368 ] Error in context when IsActive field is found in different
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910368&group_id=176962&atid=879332
|
||||
* @version $Id: GridField.java,v 1.5 2006/07/30 00:51:02 jjanke Exp $
|
||||
*/
|
||||
public class GridField
|
||||
implements Serializable, Evaluatee
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1783359481690560938L;
|
||||
private static final long serialVersionUID = 1124123543602986028L;
|
||||
|
||||
/**
|
||||
* Field Constructor.
|
||||
|
@ -416,8 +423,9 @@ public class GridField
|
|||
return false;
|
||||
}
|
||||
|
||||
//BF [ 2910368 ]
|
||||
// Always editable if Active
|
||||
if (checkContext && "Y".equals(Env.getContext(m_vo.ctx, m_vo.WindowNo, "IsActive"))
|
||||
if (checkContext && "Y".equals(Env.getContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, "IsActive"))
|
||||
&& ( m_vo.ColumnName.equals("Processing")
|
||||
|| m_vo.ColumnName.equals("PaymentRule")
|
||||
|| m_vo.ColumnName.equals("DocAction")
|
||||
|
@ -433,9 +441,9 @@ public class GridField
|
|||
// IsActive field is editable, if record not processed
|
||||
if (m_vo.ColumnName.equals("IsActive"))
|
||||
return true;
|
||||
|
||||
// Record is not Active
|
||||
if (checkContext && !Env.getContext(m_vo.ctx, m_vo.WindowNo, "IsActive").equals("Y"))
|
||||
// BF [ 2910368 ]
|
||||
// Record is not Active
|
||||
if (checkContext && !Env.getContext(m_vo.ctx, m_vo.WindowNo,m_vo.TabNo, "IsActive").equals("Y"))
|
||||
return false;
|
||||
|
||||
// ultimately visibility decides
|
||||
|
@ -1284,9 +1292,14 @@ public class GridField
|
|||
{
|
||||
backupValue(); // teo_sarca [ 1699826 ]
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.ColumnName,
|
||||
((Boolean)newValue).booleanValue());
|
||||
((Boolean)newValue).booleanValue());
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName,
|
||||
m_value==null ? null : (((Boolean)m_value) ? "Y" : "N"));
|
||||
//BF [ 2910368 ]
|
||||
if(m_vo.ColumnName.equals("IsActive"))
|
||||
{
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo,m_vo.TabNo, m_vo.ColumnName, ((Boolean)newValue).booleanValue() ? "Y" : "N");
|
||||
}
|
||||
}
|
||||
else if (newValue instanceof Timestamp)
|
||||
{
|
||||
|
@ -1300,8 +1313,12 @@ public class GridField
|
|||
backupValue(); // teo_sarca [ 1699826 ]
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.ColumnName,
|
||||
m_value==null ? null : m_value.toString());
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName,
|
||||
m_value==null ? null : m_value.toString());
|
||||
//BF [ 2910358 ]
|
||||
if(isKey())
|
||||
{
|
||||
Env.setContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName,
|
||||
m_value==null ? null : m_value.toString());
|
||||
}
|
||||
}
|
||||
|
||||
// Does not fire, if same value
|
||||
|
|
|
@ -84,7 +84,12 @@ import org.compiere.util.ValueNamePair;
|
|||
* https://sourceforge.net/tracker/?func=detail&aid=2874109&group_id=176962&atid=879332
|
||||
* <li>BF [ 2905287 ] GridTab query is not build correctly
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2905287&group_id=176962&atid=879332
|
||||
* @author Victor Perez , e-Evolution.SC [1877902] Implement JSR 223 Scripting APIs to Callout
|
||||
* @author Victor Perez , e-Evolution.SC
|
||||
* <li>FR [1877902] Implement JSR 223 Scripting APIs to Callout
|
||||
* <li>BF [ 2910358 ] Error in context when a field is found in different tabs.
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910358&group_id=176962&atid=879332
|
||||
* <li>BF [ 2910368 ] Error in context when IsActive field is found in different
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910368&group_id=176962&atid=879332
|
||||
* @author Carlos Ruiz, qss FR [1877902]
|
||||
* @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1877902&group_id=176962 to FR [1877902]
|
||||
* @author Cristina Ghita, www.arhipac.ro FR [2870645] Set null value for an ID
|
||||
|
@ -94,6 +99,7 @@ import org.compiere.util.ValueNamePair;
|
|||
*/
|
||||
public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -619,10 +625,16 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
|||
}
|
||||
else
|
||||
{
|
||||
String value = Env.getContext(m_vo.ctx, m_vo.WindowNo, lc, true);
|
||||
//BF [ 2910358 ]
|
||||
//String value = Env.getContext(m_vo.ctx, m_vo.WindowNo, lc, true);
|
||||
String value = Env.getContext(m_vo.ctx, m_vo.WindowNo, this.getParentTabNo(),lc);
|
||||
//BF [ 2910358 ]
|
||||
// explicit parent link defined
|
||||
if ( m_parentColumnName.length() > 0 )
|
||||
value = Env.getContext(m_vo.ctx, m_vo.WindowNo, m_parentColumnName, true);
|
||||
{
|
||||
// value = Env.getContext(m_vo.ctx, m_vo.WindowNo, m_parentColumnName, true);
|
||||
value = Env.getContext(m_vo.ctx, m_vo.WindowNo, this.getParentTabNo(),m_parentColumnName);
|
||||
}
|
||||
|
||||
// Same link value?
|
||||
if (refresh)
|
||||
|
@ -3027,4 +3039,24 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
|||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//BF [ 2910358 ]
|
||||
/**
|
||||
* get Parent Tab No
|
||||
* @return Tab No
|
||||
*/
|
||||
private int getParentTabNo()
|
||||
{
|
||||
int tabNo = m_vo.TabNo;
|
||||
int currentLevel = Env.getContextAsInt(m_vo.ctx, m_vo.WindowNo, tabNo, GridTab.CTX_TabLevel);
|
||||
int parentLevel = currentLevel-1;
|
||||
if (parentLevel < 0)
|
||||
return tabNo;
|
||||
while (parentLevel != currentLevel)
|
||||
{
|
||||
tabNo--;
|
||||
currentLevel = Env.getContextAsInt(m_vo.ctx, m_vo.WindowNo, tabNo, GridTab.CTX_TabLevel);
|
||||
}
|
||||
return tabNo;
|
||||
}
|
||||
} // GridTab
|
||||
|
|
|
@ -73,14 +73,21 @@ import org.compiere.util.ValueNamePair;
|
|||
* <li>BF [ 1943682 ] Copy Record should not copy IsApproved and IsGenerated
|
||||
* <li>BF [ 1949543 ] Window freeze if there is a severe exception
|
||||
* <li>BF [ 1984310 ] GridTable.getClientOrg() doesn't work for AD_Client/AD_Org
|
||||
* @author victor.perez@e-evolution.com,www.e-evolution.com
|
||||
* <li>BF [ 2910358 ] Error in context when a field is found in different tabs.
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910358&group_id=176962&atid=879332
|
||||
* <li>BF [ 2910368 ] Error in context when IsActive field is found in different
|
||||
* https://sourceforge.net/tracker/?func=detail&aid=2910368&group_id=176962&atid=879332
|
||||
*/
|
||||
public class GridTable extends AbstractTableModel
|
||||
implements Serializable
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 4071601543088224064L;
|
||||
private static final long serialVersionUID = 4273775926021737068L;
|
||||
|
||||
/**
|
||||
* JDBC Based Buffered Table
|
||||
|
@ -115,6 +122,8 @@ public class GridTable extends AbstractTableModel
|
|||
private boolean m_withAccessControl;
|
||||
private boolean m_readOnly = true;
|
||||
private boolean m_deleteable = true;
|
||||
|
||||
public static final String CTX_KeyColumnName = "KeyColumnName";
|
||||
//
|
||||
|
||||
/** Rowcount */
|
||||
|
@ -291,8 +300,16 @@ public class GridTable extends AbstractTableModel
|
|||
select.append(" FROM ").append(m_tableName);
|
||||
m_SQL_Select = select.toString();
|
||||
m_SQL_Count = "SELECT COUNT(*) FROM " + m_tableName;
|
||||
//
|
||||
|
||||
//BF [ 2910358 ]
|
||||
//Restore the Original Value for Key Column Name based in Tab Context Value
|
||||
String parentKey = Env.getContext(m_ctx, m_WindowNo, getParentTabNo(), CTX_KeyColumnName);
|
||||
String valueKey = Env.getContext(m_ctx, m_WindowNo, getParentTabNo(), parentKey);
|
||||
|
||||
if(valueKey != null && valueKey.length() > 0)
|
||||
{
|
||||
Env.setContext(m_ctx, m_WindowNo, parentKey, valueKey);
|
||||
}
|
||||
|
||||
StringBuffer where = new StringBuffer("");
|
||||
// WHERE
|
||||
if (m_whereClause.length() > 0)
|
||||
|
@ -3227,4 +3244,23 @@ public class GridTable extends AbstractTableModel
|
|||
// @TODO: configurable aggressive - compare each column with the DB
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* get Parent Tab No
|
||||
* @return Tab No
|
||||
*/
|
||||
private int getParentTabNo()
|
||||
{
|
||||
int tabNo = m_TabNo;
|
||||
int currentLevel = Env.getContextAsInt(m_ctx, m_WindowNo, tabNo, GridTab.CTX_TabLevel);
|
||||
int parentLevel = currentLevel-1;
|
||||
if (parentLevel < 0)
|
||||
return tabNo;
|
||||
while (parentLevel != currentLevel)
|
||||
{
|
||||
tabNo--;
|
||||
currentLevel = Env.getContextAsInt(m_ctx, m_WindowNo, tabNo, GridTab.CTX_TabLevel);
|
||||
}
|
||||
return tabNo;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue