FR [2976452] Implement included roles feature - thanks to Teo and Metas

Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2976452
This commit is contained in:
Carlos Ruiz 2010-04-08 20:10:54 +00:00
parent c91726015e
commit a21db5de0f
12 changed files with 1681 additions and 112 deletions

View File

@ -36,6 +36,11 @@ import org.compiere.util.Env;
*/
public class GridWindowVO implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 6884332743173214735L;
/**
* Create Window Value Object
* @param ctx context
@ -105,23 +110,16 @@ public class GridWindowVO implements Serializable
// -- Get Window
StringBuffer sql = new StringBuffer("SELECT Name,Description,Help,WindowType, "
+ "AD_Color_ID,AD_Image_ID, a.IsReadWrite, WinHeight,WinWidth, "
+ "AD_Color_ID,AD_Image_ID,WinHeight,WinWidth, "
+ "IsSOTrx ");
if (Env.isBaseLanguage(vo.ctx, "AD_Window"))
sql.append("FROM AD_Window w, AD_Window_Access a "
+ "WHERE w.AD_Window_ID=?"
+ " AND w.AD_Window_ID=a.AD_Window_ID AND a.AD_Role_ID=?"
+ " AND w.IsActive='Y' AND a.IsActive='Y'");
sql.append("FROM AD_Window w WHERE w.AD_Window_ID=? AND w.IsActive='Y'");
else
sql.append("FROM AD_Window_vt w, AD_Window_Access a "
+ "WHERE w.AD_Window_ID=?"
+ " AND w.AD_Window_ID=a.AD_Window_ID AND a.AD_Role_ID=?"
+ " AND a.IsActive='Y'")
sql.append("FROM AD_Window_vt w WHERE w.AD_Window_ID=?")
.append(" AND AD_Language='")
.append(Env.getAD_Language(vo.ctx)).append("'");
int AD_Role_ID = Env.getContextAsInt(vo.ctx, "#AD_Role_ID");
PreparedStatement pstmt = null;
ResultSet rs = null;
try
@ -129,7 +127,6 @@ public class GridWindowVO implements Serializable
// create statement
pstmt = DB.prepareStatement(sql.toString(), null);
pstmt.setInt(1, vo.AD_Window_ID);
pstmt.setInt(2, AD_Role_ID);
// get data
rs = pstmt.executeQuery();
if (rs.next())
@ -145,12 +142,12 @@ public class GridWindowVO implements Serializable
//
vo.AD_Color_ID = rs.getInt(5);
vo.AD_Image_ID = rs.getInt(6);
vo.IsReadWrite = rs.getString(7);
//vo.IsReadWrite = rs.getString(7);
//
vo.WinHeight = rs.getInt(8);
vo.WinWidth = rs.getInt(9);
vo.WinHeight = rs.getInt(7);
vo.WinWidth = rs.getInt(8);
//
vo.IsSOTrx = "Y".equals(rs.getString(10));
vo.IsSOTrx = "Y".equals(rs.getString(9));
}
else
vo = null;
@ -167,12 +164,15 @@ public class GridWindowVO implements Serializable
}
// Ensure ASP exceptions
MRole role = MRole.getDefault(ctx, false);
if (vo != null && role.getWindowAccess(vo.AD_Window_ID) == null)
final Boolean windowAccess = role.getWindowAccess(vo.AD_Window_ID);
if (vo != null && windowAccess == null)
vo = null; // Not found
if (vo != null && windowAccess != null)
vo.IsReadWrite = (windowAccess.booleanValue() ? "Y" : "N");
if (vo == null)
{
CLogger.get().log(Level.SEVERE, "No Window - AD_Window_ID=" + AD_Window_ID
+ ", AD_Role_ID=" + AD_Role_ID + " - " + sql);
+ ", AD_Role_ID=" + role + " - " + sql);
CLogger.get().saveError("AccessTableNoView", "(Not found)");
return null;
}
@ -267,8 +267,6 @@ public class GridWindowVO implements Serializable
WindowNo = windowNo;
} // MWindowVO
static final long serialVersionUID = 3802628212531678981L;
/** Properties */
public Properties ctx;
/** Window Number */

View File

@ -0,0 +1,150 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
* This program is free software, you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program, if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
package org.compiere.model;
import java.math.BigDecimal;
import java.sql.Timestamp;
import org.compiere.util.KeyNamePair;
/** Generated Interface for AD_Role_Included
* @author Adempiere (generated)
* @version Release 3.5.4a
*/
public interface I_AD_Role_Included
{
/** TableName=AD_Role_Included */
public static final String Table_Name = "AD_Role_Included";
/** AD_Table_ID=53222 */
public static final int Table_ID = MTable.getTable_ID(Table_Name);
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
/** AccessLevel = 6 - System - Client
*/
BigDecimal accessLevel = BigDecimal.valueOf(6);
/** Load Meta Data */
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
/** Get Client.
* Client/Tenant for this installation.
*/
public int getAD_Client_ID();
/** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
* Organizational entity within client
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
* Organizational entity within client
*/
public int getAD_Org_ID();
/** Column name AD_Role_ID */
public static final String COLUMNNAME_AD_Role_ID = "AD_Role_ID";
/** Set Role.
* Responsibility Role
*/
public void setAD_Role_ID (int AD_Role_ID);
/** Get Role.
* Responsibility Role
*/
public int getAD_Role_ID();
public I_AD_Role getAD_Role() throws RuntimeException;
/** Column name Created */
public static final String COLUMNNAME_Created = "Created";
/** Get Created.
* Date this record was created
*/
public Timestamp getCreated();
/** Column name CreatedBy */
public static final String COLUMNNAME_CreatedBy = "CreatedBy";
/** Get Created By.
* User who created this records
*/
public int getCreatedBy();
/** Column name Included_Role_ID */
public static final String COLUMNNAME_Included_Role_ID = "Included_Role_ID";
/** Set Included Role */
public void setIncluded_Role_ID (int Included_Role_ID);
/** Get Included Role */
public int getIncluded_Role_ID();
public I_AD_Role getIncluded_Role() throws RuntimeException;
/** Column name IsActive */
public static final String COLUMNNAME_IsActive = "IsActive";
/** Set Active.
* The record is active in the system
*/
public void setIsActive (boolean IsActive);
/** Get Active.
* The record is active in the system
*/
public boolean isActive();
/** Column name SeqNo */
public static final String COLUMNNAME_SeqNo = "SeqNo";
/** Set Sequence.
* Method of ordering records;
lowest number comes first
*/
public void setSeqNo (int SeqNo);
/** Get Sequence.
* Method of ordering records;
lowest number comes first
*/
public int getSeqNo();
/** Column name Updated */
public static final String COLUMNNAME_Updated = "Updated";
/** Get Updated.
* Date this record was updated
*/
public Timestamp getUpdated();
/** Column name UpdatedBy */
public static final String COLUMNNAME_UpdatedBy = "UpdatedBy";
/** Get Updated By.
* User who updated this records
*/
public int getUpdatedBy();
}

View File

@ -17,16 +17,23 @@
package org.compiere.model;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.Vector;
import java.util.Map.Entry;
import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.util.CCache;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
@ -51,8 +58,7 @@ public final class MRole extends X_AD_Role
/**
*
*/
private static final long serialVersionUID = 8472593143421441965L;
private static final long serialVersionUID = 3684323160980498188L;
/**
* Get Default (Client) Role
@ -138,6 +144,8 @@ public final class MRole extends X_AD_Role
*/
public static MRole get (Properties ctx, int AD_Role_ID)
{
return get(ctx, AD_Role_ID, Env.getAD_User_ID(ctx), false); // metas-2009_0021_AP1_G94 - we need to use this method because we need to load/reload all accesses
/* metas-2009_0021_AP1_G94
String key = String.valueOf(AD_Role_ID);
MRole role = (MRole)s_roles.get (key);
String trxName = null;
@ -151,6 +159,7 @@ public final class MRole extends X_AD_Role
}
}
return role;
/**/ // metas-2009_0021_AP1_G94
} // get
/**
@ -657,6 +666,7 @@ public final class MRole extends X_AD_Role
m_workflowAccess = null;
m_formAccess = null;
}
loadIncludedRoles(reload); // Load/Reload included roles - metas-2009_0021_AP1_G94
} // loadAccess
/**
@ -1499,9 +1509,23 @@ public final class MRole extends X_AD_Role
{
DB.close(rs, pstmt);
}
//
log.fine("#" + m_windowAccess.size());
mergeIncludedAccess("m_windowAccess"); // Load included accesses - metas-2009_0021_AP1_G94
} // reload
Boolean retValue = (Boolean)m_windowAccess.get(new Integer(AD_Window_ID));
Boolean retValue = m_windowAccess.get(AD_Window_ID);
//
// Check included roles - metas-2009_0021_AP1_G94
if (retValue == null)
{
for (MRole includedRole : getIncludedRoles(false))
{
retValue = includedRole.getWindowAccess(AD_Window_ID);
if (retValue != null)
break;
}
}
//
// log.fine("getWindowAccess - AD_Window_ID=" + AD_Window_ID + " - " + retValue);
return retValue;
} // getWindowAccess
@ -1570,8 +1594,10 @@ public final class MRole extends X_AD_Role
{
DB.close(rs, pstmt);
}
mergeIncludedAccess("m_processAccess"); // Load included accesses - metas-2009_0021_AP1_G94
} // reload
return (Boolean)m_processAccess.get(new Integer(AD_Process_ID));
Boolean retValue = m_processAccess.get(AD_Process_ID);
return retValue;
} // getProcessAccess
/**
@ -1635,8 +1661,10 @@ public final class MRole extends X_AD_Role
{
DB.close(rs, pstmt);
}
mergeIncludedAccess("m_taskAccess"); // Load included accesses - metas-2009_0021_AP1_G94
} // reload
return (Boolean)m_taskAccess.get(new Integer(AD_Task_ID));
Boolean retValue = m_taskAccess.get(AD_Task_ID);
return retValue;
} // getTaskAccess
/**
@ -1701,8 +1729,22 @@ public final class MRole extends X_AD_Role
{
DB.close(rs, pstmt);
}
mergeIncludedAccess("m_formAccess"); // Load included accesses - metas-2009_0021_AP1_G94
} // reload
return (Boolean)m_formAccess.get(new Integer(AD_Form_ID));
Boolean retValue = m_formAccess.get(AD_Form_ID);
//
// Check included roles - metas-2009_0021_AP1_G94
if (retValue == null)
{
for (MRole includedRole : getIncludedRoles(false))
{
retValue = includedRole.getFormAccess(AD_Form_ID);
if (retValue != null)
break;
}
}
//
return retValue;
} // getTaskAccess
/**
@ -1766,8 +1808,10 @@ public final class MRole extends X_AD_Role
{
DB.close(rs, pstmt);
}
mergeIncludedAccess("m_workflowAccess"); // Load included accesses - metas-2009_0021_AP1_G94
} // reload
return (Boolean)m_workflowAccess.get(new Integer(AD_Workflow_ID));
Boolean retValue = m_workflowAccess.get(AD_Workflow_ID);
return retValue;
} // getTaskAccess
@ -2377,4 +2421,528 @@ public final class MRole extends X_AD_Role
} // OrgAccess
/**
* Checks the access rights of the given role/client for the given document actions.
* @param clientId
* @param docTypeId
* @param options
* @param maxIndex
* @return number of valid actions in the String[] options
* @see metas-2009_0021_AP1_G94
*/
public int checkActionAccess(int clientId, int docTypeId, String[] options, int maxIndex)
{
if (maxIndex <= 0)
return maxIndex;
//
final Vector<String> validOptions = new Vector<String>();
final List<Object> params = new ArrayList<Object>();
params.add(clientId);
params.add(docTypeId);
//
final StringBuffer sql_values = new StringBuffer();
for (int i = 0; i < maxIndex; i++)
{
if (sql_values.length() > 0)
sql_values.append(",");
sql_values.append("?");
params.add(options[i]);
}
//
final String sql = "SELECT rl.Value FROM AD_Document_Action_Access a"
+ " INNER JOIN AD_Ref_List rl ON (rl.AD_Reference_ID=135 and rl.AD_Ref_List_ID=a.AD_Ref_List_ID)"
+ " WHERE a.IsActive='Y' AND a.AD_Client_ID=? AND a.C_DocType_ID=?" // #1,2
+ " AND rl.Value IN ("+sql_values+")"
+ " AND "+getIncludedRolesWhereClause("a.AD_Role_ID", params)
;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = DB.prepareStatement(sql, null);
DB.setParameters(pstmt, params);
rs = pstmt.executeQuery();
while (rs.next())
{
String op = rs.getString(1);
validOptions.add(op);
}
validOptions.toArray(options);
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
DB.close(rs, pstmt);
rs = null; pstmt = null;
}
//
int newMaxIndex = validOptions.size();
return newMaxIndex;
}
/** List of included roles. Do not access directly */
private List<MRole> m_includedRoles = null;
/**
* Include role permissions
* @param role
* @param seqNo
* @see metas-2009_0021_AP1_G94
*/
private void includeRole(MRole role, int seqNo)
{
if (this.getAD_Role_ID() == role.getAD_Role_ID())
{
return;
}
if (this.m_includedRoles == null)
{
m_includedRoles = new ArrayList<MRole>();
}
for (MRole r : this.m_includedRoles)
{
if (r.getAD_Role_ID() == role.getAD_Role_ID())
{
return;
}
}
System.out.println("Include "+role);
this.m_includedRoles.add(role);
role.setParentRole(this);
role.m_includedSeqNo = seqNo;
}
/**
*
* @return unmodifiable list of included roles
* @see metas-2009_0021_AP1_G94
*/
public List<MRole> getIncludedRoles(boolean recursive)
{
if (!recursive)
{
List<MRole> list = this.m_includedRoles;
if (list == null)
list = new ArrayList<MRole>();
return Collections.unmodifiableList(list);
}
else
{
List<MRole> list = new ArrayList<MRole>();
if (m_includedRoles != null)
{
for (MRole role : m_includedRoles)
{
list.add(role);
list.addAll(role.getIncludedRoles(true));
}
}
return list;
}
}
/**
* Load all included roles (direct inclusion or from user substitution)
* @param reload
* @see metas-2009_0021_AP1_G94
*/
private void loadIncludedRoles(boolean reload)
{
loadChildRoles(reload);
loadSubstitutedRoles(reload);
//
if (this.m_parent == null)
{
mergeAccesses(reload);
}
}
private void mergeAccesses(boolean reload)
{
OrgAccess[] orgAccess = new OrgAccess[]{};
MTableAccess[] tableAccess = new MTableAccess[]{};
MColumnAccess[] columnAccess = new MColumnAccess[]{};
MRecordAccess[] recordAccess = new MRecordAccess[]{};
MRecordAccess[] recordDependentAccess = new MRecordAccess[]{};
//
MRole last_role = null;
for (MRole role : getIncludedRoles(false))
{
boolean override = false;
//
// If roles have same SeqNo, then, the second role will override permissions from first role
if (last_role != null && last_role.m_includedSeqNo >= 0
&& role.m_includedSeqNo >= 0
&& last_role.m_includedSeqNo == role.m_includedSeqNo)
{
override = true;
}
//
role.loadAccess(reload);
role.mergeAccesses(reload);
orgAccess = mergeAccess(orgAccess, role.m_orgAccess, override);
tableAccess = mergeAccess(tableAccess, role.m_tableAccess, override);
columnAccess = mergeAccess(columnAccess, role.m_columnAccess, override);
recordAccess = mergeAccess(recordAccess, role.m_recordAccess, override);
recordDependentAccess = mergeAccess(recordDependentAccess, role.m_recordDependentAccess, override);
//
last_role = role;
}
//
// Merge permissions inside this role
this.m_orgAccess = mergeAccess(this.m_orgAccess, orgAccess, false);
this.m_tableAccess = mergeAccess(this.m_tableAccess, tableAccess, false);
this.m_columnAccess = mergeAccess(this.m_columnAccess, columnAccess, false);
this.m_recordAccess = mergeAccess(this.m_recordAccess, recordAccess, false);
this.m_recordDependentAccess = mergeAccess(this.m_recordDependentAccess, recordDependentAccess, false);
}
/**
* Load Child Roles
* @param reload
* @see metas-2009_0021_AP1_G94
*/
private void loadChildRoles(boolean reload)
{
m_includedRoles = null; // reset included roles
final int AD_User_ID = getAD_User_ID();
if (AD_User_ID < 0)
{
//throw new IllegalStateException("AD_User_ID is not set");
return ;
}
//
final String whereClause = X_AD_Role_Included.COLUMNNAME_AD_Role_ID+"=?";
List<X_AD_Role_Included> list = new Query(getCtx(), X_AD_Role_Included.Table_Name, whereClause, get_TrxName())
.setParameters(new Object[]{getAD_Role_ID()})
.setOnlyActiveRecords(true)
.setOrderBy(
X_AD_Role_Included.COLUMNNAME_SeqNo
+","+X_AD_Role_Included.COLUMNNAME_Included_Role_ID)
.list();
for (X_AD_Role_Included includedRole : list)
{
MRole role = MRole.get(getCtx(), includedRole.getIncluded_Role_ID());
includeRole(role, includedRole.getSeqNo());
}
}
/**
* Load substituted roles
* @param reload
* @see metas-2009_0021_AP1_G94
*/
private void loadSubstitutedRoles(boolean reload)
{
if (this.m_parent != null)
{
// load only if this is logged role (no parent roles)
return;
}
//
final int AD_User_ID = getAD_User_ID();
if (AD_User_ID < 0)
{
//throw new IllegalStateException("AD_User_ID is not set");
return;
}
//
final String whereClause = "EXISTS ("
+" SELECT 1 FROM AD_User_Roles ur"
+" INNER JOIN AD_User_Substitute us ON (us.AD_User_ID=ur.AD_User_ID)"
+" WHERE ur.AD_Role_ID=AD_Role.AD_Role_ID AND ur.IsActive='Y' AND us.IsActive='Y'"
+" AND (us.ValidFrom IS NULL OR us.ValidFrom <= getdate())"
+" AND (us.ValidTo IS NULL OR us.ValidTo >= getdate())"
+" AND us.Substitute_ID=?)";
List<MRole> list = new Query(getCtx(), Table_Name, whereClause, get_TrxName())
.setParameters(new Object[]{AD_User_ID})
.setClient_ID()
.setOrderBy(COLUMNNAME_AD_Role_ID)
.list();
for (MRole role : list)
{
includeRole(role, -1);
}
}
/** Parent Role */
private MRole m_parent = null;
/**
* Set parent role. This method is called when this role is included in a parent role.
* @param parent
* @see metas-2009_0021_AP1_G94
*/
private void setParentRole(MRole parent)
{
this.setAD_User_ID(parent.getAD_User_ID());
this.m_parent = parent;
}
private int m_includedSeqNo = -1;
/**
* Merge permissions access
* @param <T>
* @param array1
* @param array2
* @return array of merged values
* @see metas-2009_0021_AP1_G94
*/
@SuppressWarnings("unchecked")
private static final <T> T[] mergeAccess(T[] array1, T[] array2, boolean override)
{
if (array1 == null)
{
System.out.println("null !!!");
}
List<T> list = new ArrayList<T>();
for (T po : array1)
{
list.add(po);
}
for (T o2 : array2)
{
boolean found = false;
for (int i = 0; i < array1.length; i++)
{
final T o1 = array1[i];
if (o1 instanceof OrgAccess)
{
final OrgAccess oa1 = (OrgAccess)o1;
final OrgAccess oa2 = (OrgAccess)o2;
found = oa1.equals(oa2);
if (found && override)
{
// stronger permissions first
if (!oa2.readOnly)
oa1.readOnly = false;
}
}
else if (o1 instanceof MTableAccess)
{
final MTableAccess ta1 = (MTableAccess)o1;
final MTableAccess ta2 = (MTableAccess)o2;
found = ta1.getAD_Table_ID() == ta2.getAD_Table_ID();
if (found && override)
{
// stronger permissions first
if (ta2.isCanReport())
ta1.setIsCanExport(true);
if (ta2.isCanReport())
ta1.setIsCanReport(true);
if (!ta2.isReadOnly())
ta1.setIsCanExport(false);
if (!ta2.isExclude())
ta1.setIsExclude(false);
}
}
else if (o1 instanceof MColumnAccess)
{
final MColumnAccess ca1 = (MColumnAccess)o1;
final MColumnAccess ca2 = (MColumnAccess)o2;
found = ca1.getAD_Column_ID() == ca2.getAD_Column_ID();
if (found && override)
{
// stronger permissions first
if (!ca2.isReadOnly())
ca1.setIsReadOnly(false);
if (!ca2.isExclude())
ca1.setIsExclude(false);
}
}
else if (o1 instanceof MRecordAccess)
{
final MRecordAccess ra1 = (MRecordAccess)o1;
final MRecordAccess ra2 = (MRecordAccess)o2;
found = ra1.getAD_Table_ID() == ra2.getAD_Table_ID()
&& ra1.getRecord_ID() == ra2.getRecord_ID();
if (found && override)
{
// stronger permissions first
if(!ra2.isReadOnly())
ra1.setIsReadOnly(false);
if (!ra2.isDependentEntities())
ra1.setIsDependentEntities(false);
if (!ra2.isExclude())
ra1.setIsExclude(false);
}
}
else
{
throw new AdempiereException("Not supported objects - "+o1+", "+o2);
}
//
if (found)
{
break;
}
} // end for array1
if (!found)
{
//System.out.println("add "+o2);
list.add(o2);
}
}
T[] arr = (T[]) Array.newInstance(array1.getClass().getComponentType(), list.size());
return list.toArray(arr);
}
private static final HashMap<Integer,Boolean> mergeAccess(
HashMap<Integer,Boolean> map1, HashMap<Integer,Boolean> map2,
boolean override)
{
final HashMap<Integer,Boolean> map = new HashMap<Integer, Boolean>();
if (map1 != null)
{
map.putAll(map1);
}
//
for (final Entry<Integer, Boolean> e : map2.entrySet())
{
final Integer key = e.getKey();
final Boolean b2 = e.getValue();
if (b2 == null)
{
continue;
}
final Boolean b1 = map.get(key);
if (b1 == null)
{
map.put(key, b2);
}
else
{
if (override && b2 == true && b1 == false)
{
map.put(key, b2);
}
}
}
//
return map;
}
private void mergeIncludedAccess(String varname)
{
HashMap<Integer,Boolean> includedAccess = new HashMap<Integer, Boolean>();
MRole last_role = null;
for (MRole role : getIncludedRoles(false))
{
boolean override = false;
//
// If roles have same SeqNo, then, the second role will override permissions from first role
if (last_role != null && last_role.m_includedSeqNo >= 0
&& role.m_includedSeqNo >= 0
&& last_role.m_includedSeqNo == role.m_includedSeqNo)
{
override = true;
}
includedAccess = mergeAccess(includedAccess, role.getAccessMap(varname), override);
last_role = role;
}
setAccessMap(varname, mergeAccess(getAccessMap(varname), includedAccess, false));
}
private HashMap<Integer, Boolean> getAccessMap(String varname)
{
if ("m_windowAccess".equals(varname))
{
getWindowAccess(-1);
return m_windowAccess;
}
else if ("m_processAccess".equals(varname))
{
getProcessAccess(-1);
return m_processAccess;
}
else if ("m_taskAccess".equals(varname))
{
getTaskAccess(-1);
return m_taskAccess;
}
else if ("m_workflowAccess".equals(varname))
{
getWorkflowAccess(-1);
return m_workflowAccess;
}
else if ("m_formAccess".equals(varname))
{
getFormAccess(-1);
return m_formAccess;
}
else
{
throw new IllegalArgumentException("varname not supported - "+varname);
}
}
private void setAccessMap(String varname, HashMap<Integer, Boolean> map)
{
if ("m_windowAccess".equals(varname))
{
m_windowAccess = map;
}
else if ("m_processAccess".equals(varname))
{
m_processAccess = map;
}
else if ("m_taskAccess".equals(varname))
{
m_taskAccess = map;
}
else if ("m_workflowAccess".equals(varname))
{
m_workflowAccess = map;
}
else if ("m_formAccess".equals(varname))
{
m_formAccess = map;
}
else
{
throw new IllegalArgumentException("varname not supported - "+varname);
}
}
/**
* Get Role Where Clause.
* It will look something like myalias.AD_Role_ID IN (?, ?, ?).
* @param roleColumnSQL role columnname or role column SQL (e.g. myalias.AD_Role_ID)
* @param params a list where the method will put SQL parameters.
* If null, this method will generate a not parametrized query
* @return role SQL where clause
*/
public String getIncludedRolesWhereClause(String roleColumnSQL, List<Object> params)
{
StringBuffer whereClause = new StringBuffer();
if (params != null)
{
whereClause.append("?");
params.add(getAD_Role_ID());
}
else
{
whereClause.append(getAD_Role_ID());
}
//
for (MRole role : getIncludedRoles(true))
{
if (params != null)
{
whereClause.append(",?");
params.add(role.getAD_Role_ID());
}
else
{
whereClause.append(",").append(role.getAD_Role_ID());
}
}
//
whereClause.insert(0, roleColumnSQL+" IN (").append(")");
return whereClause.toString();
}
} // MRole

View File

@ -0,0 +1,139 @@
/**
*
*/
package org.compiere.model;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.exceptions.DBException;
import org.compiere.util.DB;
/**
* Included Role Model
* @author teo.sarca@gmail.com
*/
public class MRoleIncluded extends X_AD_Role_Included
{
/**
*
*/
private static final long serialVersionUID = -3284165639631581484L;
public MRoleIncluded(Properties ctx, int AD_Role_Included_ID, String trxName)
{
super(ctx, AD_Role_Included_ID, trxName);
}
public MRoleIncluded(Properties ctx, ResultSet rs, String trxName)
{
super(ctx, rs, trxName);
}
@Override
protected boolean beforeSave(boolean newRecord)
{
if (getAD_Role_ID() == getIncluded_Role_ID())
{
throw new AdempiereException("@AD_Role_ID@ == @Included_Role_ID@");
}
return true;
}
@Override
protected boolean afterSave(boolean newRecord, boolean success)
{
if (!success)
return success;
//
if (newRecord || is_ValueChanged(COLUMNNAME_Included_Role_ID))
{
List<Integer> trace = new ArrayList<Integer>();
if (hasLoop(Table_Name, COLUMNNAME_Included_Role_ID, COLUMNNAME_AD_Role_ID, getIncluded_Role_ID(), trace, get_TrxName()))
{
StringBuffer roles = new StringBuffer();
for (int role_id : trace)
{
MRole role = MRole.get(getCtx(), role_id);
if (roles.length() > 0)
roles.append(" - ");
roles.append(role.getName());
}
throw new AdempiereException("Loop has detected "+roles);
}
}
//
return true;
}
/**
* Check if there is a loop in the tree defined in given table
* @param tableName
* @param idColumnName Node_ID column name
* @param parentIdColumnName Parent_ID column name
* @param nodeId current Node_ID
* @param trace current tree path (optional)
* @param trxName transaction name
* @return true if loop detected. If you specified not null trace, you will have in that list the IDs from the loop
*/
// TODO: refactor this method and move into org.compiere.util.DB class because it's general and usefull of others too
private static boolean hasLoop(String tableName, String idColumnName, String parentIdColumnName,
int nodeId, List<Integer> trace,
String trxName)
{
final List<Integer> trace2;
if (trace == null)
{
trace2 = new ArrayList<Integer>(10);
}
else
{
trace2 = new ArrayList<Integer>(trace);
}
trace2.add(nodeId);
//
final String sql = "SELECT "+idColumnName+","+parentIdColumnName+" FROM "+tableName+" WHERE "+parentIdColumnName+"=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = DB.prepareStatement(sql, trxName);
pstmt.setInt(1, nodeId);
rs = pstmt.executeQuery();
while(rs.next())
{
final int childId = rs.getInt(1);
if (trace2.contains(childId))
{
trace.clear();
trace.addAll(trace2);
trace.add(childId);
return true;
}
if (hasLoop(tableName, idColumnName, parentIdColumnName, childId, trace2, trxName))
{
trace.clear();
trace.addAll(trace2);
return true;
}
}
}
catch(SQLException e)
{
throw new DBException(e, sql);
}
finally
{
DB.close(rs, pstmt);
rs = null; pstmt = null;
}
//
return false;
}
}

View File

@ -0,0 +1,147 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
* This program is free software, you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program, if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
/** Generated Model - DO NOT CHANGE */
package org.compiere.model;
import java.sql.ResultSet;
import java.util.Properties;
/** Generated Model for AD_Role_Included
* @author Adempiere (generated)
* @version Release 3.5.4a - $Id$ */
public class X_AD_Role_Included extends PO implements I_AD_Role_Included, I_Persistent
{
/**
*
*/
private static final long serialVersionUID = 20100325L;
/** Standard Constructor */
public X_AD_Role_Included (Properties ctx, int AD_Role_Included_ID, String trxName)
{
super (ctx, AD_Role_Included_ID, trxName);
/** if (AD_Role_Included_ID == 0)
{
setAD_Role_ID (0);
setIncluded_Role_ID (0);
setSeqNo (0);
// @SQL=SELECT NVL(MAX(SeqNo),0)+10 AS DefaultValue FROM AD_Role_Included WHERE AD_Role_ID=@AD_Role_ID@
} */
}
/** Load Constructor */
public X_AD_Role_Included (Properties ctx, ResultSet rs, String trxName)
{
super (ctx, rs, trxName);
}
/** AccessLevel
* @return 6 - System - Client
*/
protected int get_AccessLevel()
{
return accessLevel.intValue();
}
/** Load Meta Data */
protected POInfo initPO (Properties ctx)
{
POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName());
return poi;
}
public String toString()
{
StringBuffer sb = new StringBuffer ("X_AD_Role_Included[")
.append(get_ID()).append("]");
return sb.toString();
}
public I_AD_Role getAD_Role() throws RuntimeException
{
return (I_AD_Role)MTable.get(getCtx(), I_AD_Role.Table_Name)
.getPO(getAD_Role_ID(), get_TrxName()); }
/** Set Role.
@param AD_Role_ID
Responsibility Role
*/
public void setAD_Role_ID (int AD_Role_ID)
{
if (AD_Role_ID < 0)
set_ValueNoCheck (COLUMNNAME_AD_Role_ID, null);
else
set_ValueNoCheck (COLUMNNAME_AD_Role_ID, Integer.valueOf(AD_Role_ID));
}
/** Get Role.
@return Responsibility Role
*/
public int getAD_Role_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_Role_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public I_AD_Role getIncluded_Role() throws RuntimeException
{
return (I_AD_Role)MTable.get(getCtx(), I_AD_Role.Table_Name)
.getPO(getIncluded_Role_ID(), get_TrxName()); }
/** Set Included Role.
@param Included_Role_ID Included Role */
public void setIncluded_Role_ID (int Included_Role_ID)
{
if (Included_Role_ID < 1)
set_ValueNoCheck (COLUMNNAME_Included_Role_ID, null);
else
set_ValueNoCheck (COLUMNNAME_Included_Role_ID, Integer.valueOf(Included_Role_ID));
}
/** Get Included Role.
@return Included Role */
public int getIncluded_Role_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_Included_Role_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Sequence.
@param SeqNo
Method of ordering records; lowest number comes first
*/
public void setSeqNo (int SeqNo)
{
set_Value (COLUMNNAME_SeqNo, Integer.valueOf(SeqNo));
}
/** Get Sequence.
@return Method of ordering records; lowest number comes first
*/
public int getSeqNo ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_SeqNo);
if (ii == null)
return 0;
return ii.intValue();
}
}

View File

@ -13,15 +13,15 @@
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*
* Copyright (C) 2005 Robert KLEIN. robeklein@gmail.com *
* Contributor(s): ______________________________________.
* *
* Copyright (C) 2005 Robert KLEIN. robeklein@gmail.com *
* Contributor(s): ______________________________________. *
*****************************************************************************/
package org.compiere.process;
import java.math.BigDecimal;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.model.I_AD_Role_Included;
import org.compiere.util.DB;
import org.compiere.util.Env;
@ -73,12 +73,13 @@ public class CopyRole extends SvrProcess
protected String doIt() throws Exception
{
String[] tables = new String[] {"AD_Window_Access", "AD_Process_Access", "AD_Form_Access",
"AD_Workflow_Access", "AD_Task_Access", "AD_Document_Action_Access"};
"AD_Workflow_Access", "AD_Task_Access", "AD_Document_Action_Access",
I_AD_Role_Included.Table_Name,
};
String[] keycolumns = new String[] {"AD_Window_ID", "AD_Process_ID", "AD_Form_ID",
"AD_Workflow_ID", "AD_Task_ID", "C_DocType_ID, AD_Ref_List_ID"};
if ( m_AD_Role_ID_From == m_AD_Role_ID_To )
throw new AdempiereException("Cannot copy role to itself");
"AD_Workflow_ID", "AD_Task_ID", "C_DocType_ID, AD_Ref_List_ID",
I_AD_Role_Included.COLUMNNAME_Included_Role_ID,
};
int action = 0;
@ -89,25 +90,34 @@ public class CopyRole extends SvrProcess
String sql = "DELETE FROM " + table + " WHERE AD_Role_ID = " + m_AD_Role_ID_To;
int no = DB.executeUpdateEx(sql, get_TrxName());
addLog(action++, null, new BigDecimal(no), "Old records deleted from " + table );
addLog(action++, null, BigDecimal.valueOf(no), "Old records deleted from " + table );
final boolean column_IsReadWrite =
!table.equals("AD_Document_Action_Access")
&& !table.equals(I_AD_Role_Included.Table_Name);
final boolean column_SeqNo = table.equals(I_AD_Role_Included.Table_Name);
sql = "INSERT INTO " + table
+ " (AD_Client_ID, AD_Org_ID, CreatedBy, UpdatedBy, "
+ "AD_Role_ID, " + keycolumn +", isActive";
if ( ! table.equals("AD_Document_Action_Access"))
sql += ", isReadWrite) ";
else
sql += ") ";
sql += "SELECT " + m_AD_Client_ID
+ ", "+ m_AD_Org_ID
+ ", "+ Env.getAD_User_ID(Env.getCtx())
+ ", "+ Env.getAD_User_ID(Env.getCtx())
+ ", " + m_AD_Role_ID_To
+ ", " + keycolumn
+ ", IsActive ";
if ( ! table.equals("AD_Document_Action_Access") )
sql += ", isReadWrite ";
sql += "FROM " + table + " WHERE AD_Role_ID = " + m_AD_Role_ID_From;
+ " (AD_Client_ID, AD_Org_ID, Created, CreatedBy, Updated, UpdatedBy, "
+ "AD_Role_ID, " + keycolumn +", isActive";
if (column_SeqNo)
sql += ", SeqNo ";
if (column_IsReadWrite)
sql += ", isReadWrite) ";
else
sql += ") ";
sql += "SELECT " + m_AD_Client_ID
+ ", "+ m_AD_Org_ID
+ ", getdate(), "+ Env.getAD_User_ID(Env.getCtx())
+ ", getdate(), "+ Env.getAD_User_ID(Env.getCtx())
+ ", " + m_AD_Role_ID_To
+ ", " + keycolumn
+ ", IsActive ";
if (column_SeqNo)
sql += ", SeqNo ";
if (column_IsReadWrite)
sql += ", isReadWrite ";
sql += "FROM " + table + " WHERE AD_Role_ID = " + m_AD_Role_ID_From;
no = DB.executeUpdateEx (sql, get_TrxName());

View File

@ -23,7 +23,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Vector;
import java.util.logging.Level;
import org.compiere.acct.Doc;
@ -43,6 +42,7 @@ import org.compiere.model.MJournalBatch;
import org.compiere.model.MMovement;
import org.compiere.model.MOrder;
import org.compiere.model.MPayment;
import org.compiere.model.MRole;
import org.compiere.model.MTable;
import org.compiere.model.PO;
import org.compiere.util.CLogger;
@ -320,6 +320,7 @@ public class DocumentEngine implements DocAction
if (m_document instanceof PO && docsPostProcess.size() > 0) {
for (PO docafter : docsPostProcess) {
@SuppressWarnings("unused")
String ignoreError = DocumentEngine.postImmediate(docafter.getCtx(), docafter.getAD_Client_ID(), docafter.get_Table_ID(), docafter.get_ID(), true, docafter.get_TrxName());
}
}
@ -1195,49 +1196,7 @@ public class DocumentEngine implements DocAction
* @return number of valid actions in the String[] options
*/
public static int checkActionAccess(int clientId, int roleId, int docTypeId, String[] options, int maxIndex) {
if (maxIndex <= 0)
return maxIndex;
//
final Vector<String> validOptions = new Vector<String>();
StringBuffer sql_values = new StringBuffer();
for (int i = 0; i < maxIndex; i++) {
if (sql_values.length() > 0)
sql_values.append(",");
sql_values.append("?");
}
String sql = "SELECT rl.Value FROM AD_Document_Action_Access a"
+ " INNER JOIN AD_Ref_List rl ON (rl.AD_Reference_ID=135 and rl.AD_Ref_List_ID=a.AD_Ref_List_ID)"
+ " WHERE a.IsActive='Y' AND a.AD_Client_ID=? AND a.C_DocType_ID=? AND a.AD_Role_ID=?" // #1,2,3
+ " AND rl.Value IN ("+sql_values.toString()+")"; // #4...
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = DB.prepareStatement(sql, null);
int para_idx = 1;
pstmt.setInt(para_idx++, clientId);
pstmt.setInt(para_idx++, docTypeId);
pstmt.setInt(para_idx++, roleId);
for (int i = 0; i < maxIndex; i++) {
pstmt.setString(para_idx++, options[i]);
}
rs = pstmt.executeQuery();
while (rs.next()) {
String op = rs.getString(1);
validOptions.add(op);
}
validOptions.toArray(options);
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
finally
{
DB.close(rs, pstmt);
rs = null; pstmt = null;
}
return validOptions.size();
return MRole.get(Env.getCtx(), roleId).checkActionAccess(clientId, docTypeId, options, maxIndex);
}
/**

View File

@ -34,7 +34,6 @@ import java.util.ResourceBundle;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@ -45,6 +44,7 @@ import org.compiere.db.CConnection;
import org.compiere.db.CConnectionEditor;
import org.compiere.grid.ed.VComboBox;
import org.compiere.grid.ed.VDate;
import org.compiere.model.MSysConfig;
import org.compiere.model.MSystem;
import org.compiere.model.MUser;
import org.compiere.print.CPrinter;
@ -76,8 +76,7 @@ public final class ALogin extends CDialog
/**
*
*/
private static final long serialVersionUID = 7789299589024390163L;
private static final long serialVersionUID = -3057525535969948097L;
/**
* Construct the dialog.
@ -150,8 +149,8 @@ public final class ALogin extends CDialog
private ConfirmPanel confirmPanel = new ConfirmPanel(true, false, false, false, false, false, false);
//private OnlineHelp onlineHelp = new OnlineHelp(true);
//private CPanel helpPanel = new CPanel();
private JScrollPane helpScollPane = new JScrollPane();
private BorderLayout helpLayout = new BorderLayout();
// private JScrollPane helpScrollPane = new JScrollPane();
// private BorderLayout helpLayout = new BorderLayout();
/** Server Connection */
private CConnection m_cc;
@ -694,6 +693,19 @@ public final class ALogin extends CDialog
if (iniValue != null)
roleCombo.setSelectedItem(iniValue);
// If we have only one role, we can hide the combobox - metas-2009_0021_AP1_G94
if (roleCombo.getItemCount() == 1 && ! MSysConfig.getBooleanValue("ALogin_ShowOneRole", true))
{
roleCombo.setSelectedIndex(0);
roleLabel.setVisible(false);
roleCombo.setVisible(false);
}
else
{
roleLabel.setVisible(true);
roleCombo.setVisible(true);
}
userTextField.setBackground(AdempierePLAF.getFieldBackground_Normal());
passwordField.setBackground(AdempierePLAF.getFieldBackground_Normal());
//

View File

@ -43,7 +43,8 @@ public class Archive {
public KeyNamePair[] getProcessData()
{
// Processes
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
final MRole role = MRole.getDefault(); // metas
// int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Process");
String lang = Env.getAD_Language(Env.getCtx());
@ -52,7 +53,7 @@ public class Archive {
+ (trl ? "trl.Name" : "p.Name ")
+ " FROM AD_Process p INNER JOIN AD_Process_Access pa ON (p.AD_Process_ID=pa.AD_Process_ID) "
+ (trl ? "LEFT JOIN AD_Process_Trl trl on (trl.AD_Process_ID=p.AD_Process_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE pa.AD_Role_ID=" + AD_Role_ID
+ " WHERE "+role.getIncludedRolesWhereClause("pa.AD_Role_ID", null) // metas: use included roles
+ " AND p.IsReport='Y' AND p.IsActive='Y' AND pa.IsActive='Y' "
+ "ORDER BY 2";
return DB.getKeyNamePairs(sql, true);
@ -61,7 +62,8 @@ public class Archive {
public KeyNamePair[] getTableData()
{
// Tables
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
final MRole role = MRole.getDefault(); // metas
// int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Table");
String lang = Env.getAD_Language(Env.getCtx());
String sql = "SELECT DISTINCT t.AD_Table_ID,"
@ -69,7 +71,7 @@ public class Archive {
+ " FROM AD_Table t INNER JOIN AD_Tab tab ON (tab.AD_Table_ID=t.AD_Table_ID)"
+ " INNER JOIN AD_Window_Access wa ON (tab.AD_Window_ID=wa.AD_Window_ID) "
+ (trl ? "LEFT JOIN AD_Table_Trl trl on (trl.AD_Table_ID=t.AD_Table_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE wa.AD_Role_ID=" + AD_Role_ID
+ " WHERE "+role.getIncludedRolesWhereClause("wa.AD_Role_ID", null) // metas
+ " AND t.IsActive='Y' AND tab.IsActive='Y' "
+ "ORDER BY 2";
return DB.getKeyNamePairs(sql, true);
@ -192,18 +194,24 @@ public class Archive {
log.fine(sql.toString());
//metas: Bugfix zu included_Role
// Process Access
sql.append(" AND (AD_Process_ID IS NULL OR AD_Process_ID IN "
+ "(SELECT AD_Process_ID FROM AD_Process_Access WHERE AD_Role_ID=")
.append(role.getAD_Role_ID()).append("))");
.append(role.getAD_Role_ID())
.append(" OR ").append(role.getIncludedRolesWhereClause("AD_Role_ID", null))
.append("))");
// Table Access
sql.append(" AND (AD_Table_ID IS NULL "
+ "OR (AD_Table_ID IS NOT NULL AND AD_Process_ID IS NOT NULL) " // Menu Reports
+ "OR AD_Table_ID IN "
+ "(SELECT t.AD_Table_ID FROM AD_Tab t"
+ " INNER JOIN AD_Window_Access wa ON (t.AD_Window_ID=wa.AD_Window_ID) "
+ "WHERE wa.AD_Role_ID=").append(role.getAD_Role_ID()).append("))");
+ "WHERE wa.AD_Role_ID=").append(role.getAD_Role_ID())
.append(" OR ").append(role.getIncludedRolesWhereClause("wa.AD_Role_ID", null))
.append("))");
log.finest(sql.toString());
//metas: Bugfix zu included_Role ende
//
m_archives = MArchive.get(Env.getCtx(), sql.toString());
log.info("Length=" + m_archives.length);

View File

@ -0,0 +1,281 @@
-- Jul 27, 2009 7:44:04 PM EEST
-- FR2976452_Implement included roles feature
INSERT INTO AD_Table (AccessLevel,AD_Client_ID,AD_Org_ID,AD_Table_ID,AD_Window_ID,CopyColumnsFromTable,Created,CreatedBy,EntityType,ImportTable,IsActive,IsChangeLog,IsDeleteable,IsHighVolume,IsSecurityEnabled,IsView,LoadSeq,Name,ReplicationType,TableName,Updated,UpdatedBy) VALUES ('6',0,0,53222,111,'N',TO_DATE('2009-07-27 19:43:49','YYYY-MM-DD HH24:MI:SS'),0,'D','N','Y','N','Y','N','N','N',0,'Included Role','L','AD_Role_Included',TO_DATE('2009-07-27 19:43:49','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:44:04 PM EEST
INSERT INTO AD_Table_Trl (AD_Language,AD_Table_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Table_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Table t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Table_ID=53222 AND EXISTS (SELECT * FROM AD_Table_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Table_ID!=t.AD_Table_ID)
;
-- Jul 27, 2009 7:44:05 PM EEST
INSERT INTO AD_Sequence (AD_Client_ID,AD_Org_ID,AD_Sequence_ID,Created,CreatedBy,CurrentNext,CurrentNextSys,Description,IncrementNo,IsActive,IsAudited,IsAutoSequence,IsTableID,Name,StartNewYear,StartNo,Updated,UpdatedBy) VALUES (0,0,53330,TO_DATE('2009-07-27 19:44:04','YYYY-MM-DD HH24:MI:SS'),0,1000000,50000,'Table AD_Role_Included',1,'Y','N','Y','Y','AD_Role_Included','N',1000000,TO_DATE('2009-07-27 19:44:04','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:46:10 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57940,102,0,19,53222,'AD_Client_ID',TO_DATE('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,'@AD_Client_ID@','Client/Tenant for this installation.','D',22,'A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.','Y','N','N','N','N','Y','N','N','N','N','N','Client',0,TO_DATE('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:10 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57940 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:11 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,AD_Val_Rule_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57941,113,0,19,53222,148,'AD_Org_ID',TO_DATE('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,'@AD_Org_ID@','Organizational entity within client','D',22,'An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.','Y','N','N','N','N','Y','Y','N','N','N','N','Organization',0,TO_DATE('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:11 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57941 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57942,123,0,19,53222,'AD_Role_ID',TO_DATE('2009-07-27 19:46:11','YYYY-MM-DD HH24:MI:SS'),0,'Responsibility Role','D',22,'The Role determines security and access a user who has this Role will have in the System.','Y','N','N','N','N','Y','Y','N','N','N','N','Role',0,TO_DATE('2009-07-27 19:46:11','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57942 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57943,245,0,16,53222,'Created',TO_DATE('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,'Date this record was created','D',7,'The Created field indicates the date that this record was created.','Y','N','N','N','N','Y','N','N','N','N','N','Created',0,TO_DATE('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57943 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57944,246,0,18,110,53222,'CreatedBy',TO_DATE('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,'User who created this records','D',22,'The Created By field indicates the user who created this record.','Y','N','N','N','N','Y','N','N','N','N','N','Created By',0,TO_DATE('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57944 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57945,348,0,20,53222,'IsActive',TO_DATE('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,'Y','The record is active in the system','D',1,'There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports.
There are two reasons for de-activating and not deleting records:
(1) The system requires the record for audit purposes.
(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.','Y','N','N','N','N','Y','N','N','N','N','Y','Active',0,TO_DATE('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57945 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57946,405,0,20,53222,'IsReadOnly',TO_DATE('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,'Field is read only','D',1,'The Read Only indicates that this field may only be Read. It may not be updated.','Y','N','N','N','N','Y','N','N','N','N','Y','Read Only',0,TO_DATE('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57946 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57947,607,0,16,53222,'Updated',TO_DATE('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,'Date this record was updated','D',7,'The Updated field indicates the date that this record was updated.','Y','N','N','N','N','Y','N','N','N','N','N','Updated',0,TO_DATE('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57947 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:16 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57948,608,0,18,110,53222,'UpdatedBy',TO_DATE('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,'User who updated this records','D',22,'The Updated By field indicates the user who updated this record.','Y','N','N','N','N','Y','N','N','N','N','N','Updated By',0,TO_DATE('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:16 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57948 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:41 PM EEST
UPDATE AD_Column SET IsParent='N', IsUpdateable='Y',Updated=TO_DATE('2009-07-27 19:46:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:47:35 PM EEST
INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Org_ID,ColumnName,Created,CreatedBy,EntityType,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,53896,0,'Included_Role_ID',TO_DATE('2009-07-27 19:47:34','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','Included Role','Included Role',TO_DATE('2009-07-27 19:47:34','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:47:35 PM EEST
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Description,Help,Name,PO_Description,PO_Help,PO_Name,PO_PrintName,PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Element_ID, t.Description,t.Help,t.Name,t.PO_Description,t.PO_Help,t.PO_Name,t.PO_PrintName,t.PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=53896 AND EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Element_ID!=t.AD_Element_ID)
;
-- Jul 27, 2009 7:48:09 PM EEST
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_DATE('2009-07-27 19:48:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:49:08 PM EEST
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,53317,TO_DATE('2009-07-27 19:49:07','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','N','AD_Role',TO_DATE('2009-07-27 19:49:07','YYYY-MM-DD HH24:MI:SS'),0,'T')
;
-- Jul 27, 2009 7:49:08 PM EEST
INSERT INTO AD_Reference_Trl (AD_Language,AD_Reference_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Reference_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Reference t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Reference_ID=53317 AND EXISTS (SELECT * FROM AD_Reference_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Reference_ID!=t.AD_Reference_ID)
;
-- Jul 27, 2009 7:50:13 PM EEST
INSERT INTO AD_Ref_Table (AD_Client_ID,AD_Display,AD_Key,AD_Org_ID,AD_Reference_ID,AD_Table_ID,Created,CreatedBy,EntityType,IsActive,IsValueDisplayed,Updated,UpdatedBy) VALUES (0,532,531,0,53317,156,TO_DATE('2009-07-27 19:50:13','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','N',TO_DATE('2009-07-27 19:50:13','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:50:45 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,EntityType,FieldLength,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57949,53896,0,18,53317,53222,'Included_Role_ID',TO_DATE('2009-07-27 19:50:44','YYYY-MM-DD HH24:MI:SS'),0,'D',10,'Y','Y','N','N','N','N','N','Y','Y','N','N','N','N','Included Role',0,TO_DATE('2009-07-27 19:50:44','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:50:45 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57949 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:51:15 PM EEST
DELETE FROM AD_Column_Trl WHERE AD_Column_ID=57946
;
-- Jul 27, 2009 7:51:16 PM EEST
DELETE FROM AD_Column WHERE AD_Column_ID=57946
;
-- Jul 27, 2009 7:53:08 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57950,566,0,11,53222,'SeqNo',TO_DATE('2009-07-27 19:53:07','YYYY-MM-DD HH24:MI:SS'),0,'@SQL=SELECT NVL(MAX(SeqNo),0)+10 AS DefaultValue FROM AD_Role_Included WHERE AD_Role_ID=@AD_Role_ID@','Method of ordering records; lowest number comes first','D',10,'The Sequence indicates the order of records','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Sequence',0,TO_DATE('2009-07-27 19:53:07','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:53:08 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57950 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:53:22 PM EEST
UPDATE AD_Column SET IsMandatory='Y',Updated=TO_DATE('2009-07-27 19:53:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57950
;
-- Jul 27, 2009 7:54:10 PM EEST
UPDATE AD_Column SET AD_Val_Rule_ID=NULL,Updated=TO_DATE('2009-07-27 19:54:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:54:14 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30,Updated=TO_DATE('2009-07-27 19:54:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:54:20 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30,Updated=TO_DATE('2009-07-27 19:54:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57940
;
-- Jul 27, 2009 7:54:32 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30, IsUpdateable='N',Updated=TO_DATE('2009-07-27 19:54:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57942
;
-- Jul 27, 2009 7:55:39 PM EEST
INSERT INTO AD_Tab (AD_Client_ID,AD_Column_ID,AD_Org_ID,AD_Tab_ID,AD_Table_ID,AD_Window_ID,Created,CreatedBy,EntityType,HasTree,ImportFields,IsActive,IsAdvancedTab,IsInfoTab,IsInsertRecord,IsReadOnly,IsSingleRow,IsSortTab,IsTranslationTab,Name,Processing,SeqNo,TabLevel,Updated,UpdatedBy) VALUES (0,57942,0,53240,53222,111,TO_DATE('2009-07-27 19:55:38','YYYY-MM-DD HH24:MI:SS'),0,'D','N','N','Y','N','N','Y','N','N','N','N','Included roles','N',100,0,TO_DATE('2009-07-27 19:55:38','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:39 PM EEST
INSERT INTO AD_Tab_Trl (AD_Language,AD_Tab_ID, CommitWarning,Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Tab_ID, t.CommitWarning,t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Tab t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Tab_ID=53240 AND EXISTS (SELECT * FROM AD_Tab_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Tab_ID!=t.AD_Tab_ID)
;
-- Jul 27, 2009 7:55:42 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57945,57371,0,53240,TO_DATE('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0,'The record is active in the system',1,'D','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports.
There are two reasons for de-activating and not deleting records:
(1) The system requires the record for audit purposes.
(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.','Y','Y','Y','N','N','N','N','N','Active',TO_DATE('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:42 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57371 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:43 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57940,57372,0,53240,TO_DATE('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0,'Client/Tenant for this installation.',22,'D','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.','Y','Y','Y','N','N','N','N','N','Client',TO_DATE('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:43 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57372 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,DisplayLength,EntityType,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57949,57373,0,53240,TO_DATE('2009-07-27 19:55:43','YYYY-MM-DD HH24:MI:SS'),0,10,'D','Y','Y','Y','N','N','N','N','N','Included Role',TO_DATE('2009-07-27 19:55:43','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57373 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57941,57374,0,53240,TO_DATE('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0,'Organizational entity within client',22,'D','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.','Y','Y','Y','N','N','N','N','N','Organization',TO_DATE('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57374 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:45 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57942,57375,0,53240,TO_DATE('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0,'Responsibility Role',22,'D','The Role determines security and access a user who has this Role will have in the System.','Y','Y','Y','N','N','N','N','N','Role',TO_DATE('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:45 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57375 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:46 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57950,57376,0,53240,TO_DATE('2009-07-27 19:55:45','YYYY-MM-DD HH24:MI:SS'),0,'Method of ordering records; lowest number comes first',10,'D','The Sequence indicates the order of records','Y','Y','Y','N','N','N','N','N','Sequence',TO_DATE('2009-07-27 19:55:45','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:46 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57376 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:51 PM EEST
UPDATE AD_Tab SET TabLevel=1,Updated=TO_DATE('2009-07-27 19:55:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=53240
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=57372
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=57374
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y' WHERE AD_Field_ID=57376
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y' WHERE AD_Field_ID=57371
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y' WHERE AD_Field_ID=57375
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=57373
;
-- Jul 27, 2009 7:56:17 PM EEST
UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2009-07-27 19:56:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57371
;
-- Jul 27, 2009 7:56:22 PM EEST
UPDATE AD_Field SET DisplayLength=10,Updated=TO_DATE('2009-07-27 19:56:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57375
;
-- Jul 27, 2009 7:56:25 PM EEST
UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2009-07-27 19:56:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57373
;
-- Jul 27, 2009 7:59:00 PM EEST
UPDATE AD_Column SET IsParent='N',Updated=TO_DATE('2009-07-27 19:59:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57949
;
-- Jul 27, 2009 7:59:42 PM EEST
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_DATE('2009-07-27 19:59:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57949
;
CREATE TABLE AD_Role_Included (AD_Client_ID NUMBER(10) NOT NULL, AD_Org_ID NUMBER(10) NOT NULL, AD_Role_ID NUMBER(10) NOT NULL, Created DATE NOT NULL, CreatedBy NUMBER(10) NOT NULL, Included_Role_ID NUMBER(10) NOT NULL, IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL, SeqNo NUMBER(10) NOT NULL, Updated DATE NOT NULL, UpdatedBy NUMBER(10) NOT NULL, CONSTRAINT AD_Role_Included_Key PRIMARY KEY (AD_Role_ID, Included_Role_ID))
;
ALTER TABLE AD_Role_Included ADD CONSTRAINT AD_Role_Included_Parent FOREIGN KEY (AD_Role_ID)
REFERENCES AD_Role(AD_Role_ID) ON DELETE CASCADE;
ALTER TABLE AD_Role_Included ADD CONSTRAINT AD_Role_Included_Role FOREIGN KEY (Included_Role_ID)
REFERENCES AD_Role(AD_Role_ID);
-- Mar 25, 2010 10:30:48 AM COT
-- FR2976452_Implement included roles feature
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50041,'S',TO_DATE('2010-03-25 10:30:46','YYYY-MM-DD HH24:MI:SS'),100,'Show Role List Box when there is just one role to select','D','Y','ALogin_ShowOneRole',TO_DATE('2010-03-25 10:30:46','YYYY-MM-DD HH24:MI:SS'),100,'Y')
;

View File

@ -0,0 +1,283 @@
-- Jul 27, 2009 7:44:04 PM EEST
-- FR2976452_Implement included roles feature
INSERT INTO AD_Table (AccessLevel,AD_Client_ID,AD_Org_ID,AD_Table_ID,AD_Window_ID,CopyColumnsFromTable,Created,CreatedBy,EntityType,ImportTable,IsActive,IsChangeLog,IsDeleteable,IsHighVolume,IsSecurityEnabled,IsView,LoadSeq,Name,ReplicationType,TableName,Updated,UpdatedBy) VALUES ('6',0,0,53222,111,'N',TO_TIMESTAMP('2009-07-27 19:43:49','YYYY-MM-DD HH24:MI:SS'),0,'D','N','Y','N','Y','N','N','N',0,'Included Role','L','AD_Role_Included',TO_TIMESTAMP('2009-07-27 19:43:49','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:44:04 PM EEST
INSERT INTO AD_Table_Trl (AD_Language,AD_Table_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Table_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Table t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Table_ID=53222 AND EXISTS (SELECT * FROM AD_Table_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Table_ID!=t.AD_Table_ID)
;
-- Jul 27, 2009 7:44:05 PM EEST
INSERT INTO AD_Sequence (AD_Client_ID,AD_Org_ID,AD_Sequence_ID,Created,CreatedBy,CurrentNext,CurrentNextSys,Description,IncrementNo,IsActive,IsAudited,IsAutoSequence,IsTableID,Name,StartNewYear,StartNo,Updated,UpdatedBy) VALUES (0,0,53330,TO_TIMESTAMP('2009-07-27 19:44:04','YYYY-MM-DD HH24:MI:SS'),0,1000000,50000,'Table AD_Role_Included',1,'Y','N','Y','Y','AD_Role_Included','N',1000000,TO_TIMESTAMP('2009-07-27 19:44:04','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:46:10 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57940,102,0,19,53222,'AD_Client_ID',TO_TIMESTAMP('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,'@AD_Client_ID@','Client/Tenant for this installation.','D',22,'A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.','Y','N','N','N','N','Y','N','N','N','N','N','Client',0,TO_TIMESTAMP('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:10 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57940 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:11 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,AD_Val_Rule_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57941,113,0,19,53222,148,'AD_Org_ID',TO_TIMESTAMP('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,'@AD_Org_ID@','Organizational entity within client','D',22,'An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.','Y','N','N','N','N','Y','Y','N','N','N','N','Organization',0,TO_TIMESTAMP('2009-07-27 19:46:10','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:11 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57941 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57942,123,0,19,53222,'AD_Role_ID',TO_TIMESTAMP('2009-07-27 19:46:11','YYYY-MM-DD HH24:MI:SS'),0,'Responsibility Role','D',22,'The Role determines security and access a user who has this Role will have in the System.','Y','N','N','N','N','Y','Y','N','N','N','N','Role',0,TO_TIMESTAMP('2009-07-27 19:46:11','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57942 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57943,245,0,16,53222,'Created',TO_TIMESTAMP('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,'Date this record was created','D',7,'The Created field indicates the date that this record was created.','Y','N','N','N','N','Y','N','N','N','N','N','Created',0,TO_TIMESTAMP('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:12 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57943 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57944,246,0,18,110,53222,'CreatedBy',TO_TIMESTAMP('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,'User who created this records','D',22,'The Created By field indicates the user who created this record.','Y','N','N','N','N','Y','N','N','N','N','N','Created By',0,TO_TIMESTAMP('2009-07-27 19:46:12','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57944 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57945,348,0,20,53222,'IsActive',TO_TIMESTAMP('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,'Y','The record is active in the system','D',1,'There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports.
There are two reasons for de-activating and not deleting records:
(1) The system requires the record for audit purposes.
(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.','Y','N','N','N','N','Y','N','N','N','N','Y','Active',0,TO_TIMESTAMP('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:13 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57945 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57946,405,0,20,53222,'IsReadOnly',TO_TIMESTAMP('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,'Field is read only','D',1,'The Read Only indicates that this field may only be Read. It may not be updated.','Y','N','N','N','N','Y','N','N','N','N','Y','Read Only',0,TO_TIMESTAMP('2009-07-27 19:46:13','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57946 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57947,607,0,16,53222,'Updated',TO_TIMESTAMP('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,'Date this record was updated','D',7,'The Updated field indicates the date that this record was updated.','Y','N','N','N','N','Y','N','N','N','N','N','Updated',0,TO_TIMESTAMP('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:15 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57947 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:16 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,Description,EntityType,FieldLength,Help,IsActive,IsAlwaysUpdateable,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57948,608,0,18,110,53222,'UpdatedBy',TO_TIMESTAMP('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,'User who updated this records','D',22,'The Updated By field indicates the user who updated this record.','Y','N','N','N','N','Y','N','N','N','N','N','Updated By',0,TO_TIMESTAMP('2009-07-27 19:46:15','YYYY-MM-DD HH24:MI:SS'),0,1)
;
-- Jul 27, 2009 7:46:16 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57948 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:46:41 PM EEST
UPDATE AD_Column SET IsParent='N', IsUpdateable='Y',Updated=TO_TIMESTAMP('2009-07-27 19:46:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:47:35 PM EEST
INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Org_ID,ColumnName,Created,CreatedBy,EntityType,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,53896,0,'Included_Role_ID',TO_TIMESTAMP('2009-07-27 19:47:34','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','Included Role','Included Role',TO_TIMESTAMP('2009-07-27 19:47:34','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:47:35 PM EEST
INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Description,Help,Name,PO_Description,PO_Help,PO_Name,PO_PrintName,PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Element_ID, t.Description,t.Help,t.Name,t.PO_Description,t.PO_Help,t.PO_Name,t.PO_PrintName,t.PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=53896 AND EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Element_ID!=t.AD_Element_ID)
;
-- Jul 27, 2009 7:48:09 PM EEST
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2009-07-27 19:48:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:49:08 PM EEST
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,53317,TO_TIMESTAMP('2009-07-27 19:49:07','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','N','AD_Role',TO_TIMESTAMP('2009-07-27 19:49:07','YYYY-MM-DD HH24:MI:SS'),0,'T')
;
-- Jul 27, 2009 7:49:08 PM EEST
INSERT INTO AD_Reference_Trl (AD_Language,AD_Reference_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Reference_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Reference t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Reference_ID=53317 AND EXISTS (SELECT * FROM AD_Reference_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Reference_ID!=t.AD_Reference_ID)
;
-- Jul 27, 2009 7:50:13 PM EEST
INSERT INTO AD_Ref_Table (AD_Client_ID,AD_Display,AD_Key,AD_Org_ID,AD_Reference_ID,AD_Table_ID,Created,CreatedBy,EntityType,IsActive,IsValueDisplayed,Updated,UpdatedBy) VALUES (0,532,531,0,53317,156,TO_TIMESTAMP('2009-07-27 19:50:13','YYYY-MM-DD HH24:MI:SS'),0,'D','Y','N',TO_TIMESTAMP('2009-07-27 19:50:13','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:50:45 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_Value_ID,AD_Table_ID,ColumnName,Created,CreatedBy,EntityType,FieldLength,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57949,53896,0,18,53317,53222,'Included_Role_ID',TO_TIMESTAMP('2009-07-27 19:50:44','YYYY-MM-DD HH24:MI:SS'),0,'D',10,'Y','Y','N','N','N','N','N','Y','Y','N','N','N','N','Included Role',0,TO_TIMESTAMP('2009-07-27 19:50:44','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:50:45 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57949 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:51:15 PM EEST
DELETE FROM AD_Column_Trl WHERE AD_Column_ID=57946
;
-- Jul 27, 2009 7:51:16 PM EEST
DELETE FROM AD_Column WHERE AD_Column_ID=57946
;
-- Jul 27, 2009 7:53:08 PM EEST
INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Element_ID,AD_Org_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,DefaultValue,Description,EntityType,FieldLength,Help,IsActive,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSelectionColumn,IsSyncDatabase,IsTranslated,IsUpdateable,Name,SeqNo,Updated,UpdatedBy,Version) VALUES (0,57950,566,0,11,53222,'SeqNo',TO_TIMESTAMP('2009-07-27 19:53:07','YYYY-MM-DD HH24:MI:SS'),0,'@SQL=SELECT NVL(MAX(SeqNo),0)+10 AS DefaultValue FROM AD_Role_Included WHERE AD_Role_ID=@AD_Role_ID@','Method of ordering records; lowest number comes first','D',10,'The Sequence indicates the order of records','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Sequence',0,TO_TIMESTAMP('2009-07-27 19:53:07','YYYY-MM-DD HH24:MI:SS'),0,0)
;
-- Jul 27, 2009 7:53:08 PM EEST
INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=57950 AND EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Column_ID!=t.AD_Column_ID)
;
-- Jul 27, 2009 7:53:22 PM EEST
UPDATE AD_Column SET IsMandatory='Y',Updated=TO_TIMESTAMP('2009-07-27 19:53:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57950
;
-- Jul 27, 2009 7:54:10 PM EEST
UPDATE AD_Column SET AD_Val_Rule_ID=NULL,Updated=TO_TIMESTAMP('2009-07-27 19:54:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:54:14 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30,Updated=TO_TIMESTAMP('2009-07-27 19:54:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57941
;
-- Jul 27, 2009 7:54:20 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30,Updated=TO_TIMESTAMP('2009-07-27 19:54:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57940
;
-- Jul 27, 2009 7:54:32 PM EEST
UPDATE AD_Column SET AD_Reference_ID=30, IsUpdateable='N',Updated=TO_TIMESTAMP('2009-07-27 19:54:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57942
;
-- Jul 27, 2009 7:55:39 PM EEST
INSERT INTO AD_Tab (AD_Client_ID,AD_Column_ID,AD_Org_ID,AD_Tab_ID,AD_Table_ID,AD_Window_ID,Created,CreatedBy,EntityType,HasTree,ImportFields,IsActive,IsAdvancedTab,IsInfoTab,IsInsertRecord,IsReadOnly,IsSingleRow,IsSortTab,IsTranslationTab,Name,Processing,SeqNo,TabLevel,Updated,UpdatedBy) VALUES (0,57942,0,53240,53222,111,TO_TIMESTAMP('2009-07-27 19:55:38','YYYY-MM-DD HH24:MI:SS'),0,'D','N','N','Y','N','N','Y','N','N','N','N','Included roles','N',100,0,TO_TIMESTAMP('2009-07-27 19:55:38','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:39 PM EEST
INSERT INTO AD_Tab_Trl (AD_Language,AD_Tab_ID, CommitWarning,Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Tab_ID, t.CommitWarning,t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Tab t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Tab_ID=53240 AND EXISTS (SELECT * FROM AD_Tab_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Tab_ID!=t.AD_Tab_ID)
;
-- Jul 27, 2009 7:55:42 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57945,57371,0,53240,TO_TIMESTAMP('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0,'The record is active in the system',1,'D','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports.
There are two reasons for de-activating and not deleting records:
(1) The system requires the record for audit purposes.
(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.','Y','Y','Y','N','N','N','N','N','Active',TO_TIMESTAMP('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:42 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57371 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:43 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57940,57372,0,53240,TO_TIMESTAMP('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0,'Client/Tenant for this installation.',22,'D','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.','Y','Y','Y','N','N','N','N','N','Client',TO_TIMESTAMP('2009-07-27 19:55:42','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:43 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57372 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,DisplayLength,EntityType,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57949,57373,0,53240,TO_TIMESTAMP('2009-07-27 19:55:43','YYYY-MM-DD HH24:MI:SS'),0,10,'D','Y','Y','Y','N','N','N','N','N','Included Role',TO_TIMESTAMP('2009-07-27 19:55:43','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57373 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57941,57374,0,53240,TO_TIMESTAMP('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0,'Organizational entity within client',22,'D','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.','Y','Y','Y','N','N','N','N','N','Organization',TO_TIMESTAMP('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:44 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57374 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:45 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57942,57375,0,53240,TO_TIMESTAMP('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0,'Responsibility Role',22,'D','The Role determines security and access a user who has this Role will have in the System.','Y','Y','Y','N','N','N','N','N','Role',TO_TIMESTAMP('2009-07-27 19:55:44','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:45 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57375 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:46 PM EEST
INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Org_ID,AD_Tab_ID,Created,CreatedBy,Description,DisplayLength,EntityType,Help,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,Updated,UpdatedBy) VALUES (0,57950,57376,0,53240,TO_TIMESTAMP('2009-07-27 19:55:45','YYYY-MM-DD HH24:MI:SS'),0,'Method of ordering records; lowest number comes first',10,'D','The Sequence indicates the order of records','Y','Y','Y','N','N','N','N','N','Sequence',TO_TIMESTAMP('2009-07-27 19:55:45','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 27, 2009 7:55:46 PM EEST
INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Description,Help,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Field_ID, t.Description,t.Help,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=57376 AND EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language!=l.AD_Language OR tt.AD_Field_ID!=t.AD_Field_ID)
;
-- Jul 27, 2009 7:55:51 PM EEST
UPDATE AD_Tab SET TabLevel=1,Updated=TO_TIMESTAMP('2009-07-27 19:55:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=53240
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=57372
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=57374
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y' WHERE AD_Field_ID=57376
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y' WHERE AD_Field_ID=57371
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y' WHERE AD_Field_ID=57375
;
-- Jul 27, 2009 7:56:08 PM EEST
UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=57373
;
-- Jul 27, 2009 7:56:17 PM EEST
UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2009-07-27 19:56:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57371
;
-- Jul 27, 2009 7:56:22 PM EEST
UPDATE AD_Field SET DisplayLength=10,Updated=TO_TIMESTAMP('2009-07-27 19:56:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57375
;
-- Jul 27, 2009 7:56:25 PM EEST
UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2009-07-27 19:56:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=57373
;
-- Jul 27, 2009 7:59:00 PM EEST
UPDATE AD_Column SET IsParent='N',Updated=TO_TIMESTAMP('2009-07-27 19:59:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57949
;
-- Jul 27, 2009 7:59:42 PM EEST
UPDATE AD_Column SET IsParent='Y', IsUpdateable='N',Updated=TO_TIMESTAMP('2009-07-27 19:59:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=57949
;
CREATE TABLE AD_Role_Included (AD_Client_ID NUMERIC(10) NOT NULL, AD_Org_ID NUMERIC(10) NOT NULL, AD_Role_ID NUMERIC(10) NOT NULL, Created TIMESTAMP NOT NULL, CreatedBy NUMERIC(10) NOT NULL, Included_Role_ID NUMERIC(10) NOT NULL, IsActive CHAR(1) DEFAULT 'Y' CHECK (IsActive IN ('Y','N')) NOT NULL, SeqNo NUMERIC(10) NOT NULL, Updated TIMESTAMP NOT NULL, UpdatedBy NUMERIC(10) NOT NULL, CONSTRAINT AD_Role_Included_Key PRIMARY KEY (AD_Role_ID, Included_Role_ID))
;
ALTER TABLE AD_Role_Included ADD CONSTRAINT AD_Role_Included_Parent FOREIGN KEY (AD_Role_ID)
REFERENCES AD_Role(AD_Role_ID) ON DELETE CASCADE
;
ALTER TABLE AD_Role_Included ADD CONSTRAINT AD_Role_Included_Role FOREIGN KEY (Included_Role_ID)
REFERENCES AD_Role(AD_Role_ID)
;
-- Mar 25, 2010 10:30:48 AM COT
-- FR2976452_Implement included roles feature
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50041,'S',TO_TIMESTAMP('2010-03-25 10:30:46','YYYY-MM-DD HH24:MI:SS'),100,'Show Role List Box when there is just one role to select','D','Y','ALogin_ShowOneRole',TO_TIMESTAMP('2010-03-25 10:30:46','YYYY-MM-DD HH24:MI:SS'),100,'Y')
;

View File

@ -38,8 +38,8 @@ import org.adempiere.webui.theme.ITheme;
import org.adempiere.webui.theme.ThemeManager;
import org.adempiere.webui.util.UserPreference;
import org.adempiere.webui.window.LoginWindow;
import org.compiere.db.CConnection;
import org.compiere.model.MRole;
import org.compiere.model.MSysConfig;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Language;
@ -70,10 +70,10 @@ import org.zkoss.zul.Image;
*/
public class RolePanel extends Window implements EventListener, Deferrable
{
/**
/**
*
*/
private static final long serialVersionUID = 2808473294679524383L;
private static final long serialVersionUID = -2210467236654772389L;
private static final String RESOURCE = "org.compiere.apps.ALoginRes";
@ -261,6 +261,20 @@ public class RolePanel extends Window implements EventListener, Deferrable
if (lstRole.getSelectedIndex() == -1 && lstRole.getItemCount() > 0)
lstRole.setSelectedIndex(0);
//
// If we have only one role, we can hide the combobox - metas-2009_0021_AP1_G94
if (lstRole.getItemCount() == 1 && ! MSysConfig.getBooleanValue("ALogin_ShowOneRole", true))
{
lstRole.setSelectedIndex(0);
lblRole.setVisible(false);
lstRole.setVisible(false);
}
else
{
lblRole.setVisible(true);
lstRole.setVisible(true);
}
updateClientList();
}