diff --git a/base/src/org/compiere/util/Login.java b/base/src/org/compiere/util/Login.java index e4a60b67a2..8a0edac5a8 100644 --- a/base/src/org/compiere/util/Login.java +++ b/base/src/org/compiere/util/Login.java @@ -30,17 +30,24 @@ import javax.swing.JOptionPane; import org.compiere.Adempiere; import org.compiere.db.CConnection; +import org.compiere.model.MAcctSchema; +import org.compiere.model.MAcctSchemaElement; +import org.compiere.model.MClientInfo; import org.compiere.model.MCountry; import org.compiere.model.MRole; import org.compiere.model.MSystem; import org.compiere.model.MTree_Base; import org.compiere.model.ModelValidationEngine; +import org.compiere.report.MReportTree; /** * Login Manager * - * @author Jorg Janke + * @author Jorg Janke + * @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com + *
  • Incorrect global Variable when you use multi Account Schema + * @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=2531597&group_id=176962 * @version $Id: Login.java,v 1.6 2006/10/02 05:19:06 jjanke Exp $ */ public class Login @@ -785,8 +792,10 @@ public class Login PreparedStatement pstmt = null; ResultSet rs = null; try - { - int C_AcctSchema_ID = 0; + { + + int C_AcctSchema_ID = 0; + pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, AD_Client_ID); rs = pstmt.executeQuery(); @@ -806,7 +815,36 @@ public class Login Env.setContext(m_ctx, "$HasAlias", rs.getString("HasAlias")); } rs.close(); - pstmt.close(); + pstmt.close(); + + /**Define AcctSchema , Currency, HasAlias for Multi AcctSchema**/ + MAcctSchema[] ass = MAcctSchema.getClientAcctSchema(Env.getCtx(), AD_Client_ID); + if(ass != null && ass.length > 1) + { + for(MAcctSchema as: ass) + { + C_AcctSchema_ID = MClientInfo.get(Env.getCtx(), AD_Client_ID).getC_AcctSchema1_ID(); + boolean skip = false; + if (as.getAD_OrgOnly_ID() != 0) + { + if (as.getOnlyOrgs() == null) + as.setOnlyOrgs(MReportTree.getChildIDs(Env.getCtx(), + 0, MAcctSchemaElement.ELEMENTTYPE_Organization, + as.getAD_OrgOnly_ID())); + skip = as.isSkipOrg(AD_Org_ID); + if(skip) + break; + else + { + C_AcctSchema_ID = as.getC_AcctSchema_ID(); + Env.setContext(m_ctx, "$C_AcctSchema_ID", C_AcctSchema_ID); + Env.setContext(m_ctx, "$C_Currency_ID", as.getC_Currency_ID()); + Env.setContext(m_ctx, "$HasAlias", as.isHasAlias()); + break; + } + } + } + } // Accounting Elements sql = "SELECT ElementType "