📄 msetup.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.model;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.process.*;
import org.compiere.util.*;
/**
* Initial Setup Model
*
* @author Jorg Janke
* @version $Id: MSetup.java,v 1.58 2005/10/26 00:37:41 jjanke Exp $
*/
public final class MSetup
{
/**
* Constructor
* @param ctx context
* @param WindowNo window
*/
public MSetup(Properties ctx, int WindowNo)
{
m_ctx = new Properties(ctx); // copy
m_lang = Env.getAD_Language(m_ctx);
m_WindowNo = WindowNo;
} // MSetup
/** Logger */
protected CLogger log = CLogger.getCLogger(getClass());
private Trx m_trx = Trx.get(Trx.createTrxName("Setup"), true);
private Properties m_ctx;
private String m_lang;
private int m_WindowNo;
private StringBuffer m_info;
//
private String m_clientName;
// private String m_orgName;
//
private String m_stdColumns = "AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy";
private String m_stdValues;
private String m_stdValuesOrg;
//
private NaturalAccountMap<String,MElementValue> m_nap = null;
//
private MClient m_client;
private MOrg m_org;
private MAcctSchema m_as;
//
private int AD_User_ID;
private String AD_User_Name;
private int AD_User_U_ID;
private String AD_User_U_Name;
private MCalendar m_calendar;
private int m_AD_Tree_Account_ID;
private int C_Cycle_ID;
//
private boolean m_hasProject = false;
private boolean m_hasMCampaign = false;
private boolean m_hasSRegion = false;
/** Account Creation OK */
private boolean m_accountsOK = false;
/**
* Create Client Info.
* - Client, Trees, Org, Role, User, User_Role
* @param clientName client name
* @param orgName org name
* @param userClient user id client
* @param userOrg user id org
* @return true if created
*/
public boolean createClient (String clientName, String orgName,
String userClient, String userOrg)
{
log.info(clientName);
m_trx.start();
// info header
m_info = new StringBuffer();
// Standarc columns
String name = null;
String sql = null;
int no = 0;
/**
* Create Client
*/
name = clientName;
if (name == null || name.length() == 0)
name = "newClient";
m_clientName = name;
m_client = new MClient(m_ctx, 0, true, m_trx.getTrxName());
m_client.setValue(m_clientName);
m_client.setName(m_clientName);
if (!m_client.save())
{
String err = "Client NOT created";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
int AD_Client_ID = m_client.getAD_Client_ID();
Env.setContext(m_ctx, m_WindowNo, "AD_Client_ID", AD_Client_ID);
Env.setContext(m_ctx, "#AD_Client_ID", AD_Client_ID);
// Standard Values
m_stdValues = String.valueOf(AD_Client_ID) + ",0,'Y',SysDate,0,SysDate,0";
// Info - Client
m_info.append(Msg.translate(m_lang, "AD_Client_ID")).append("=").append(name).append("\n");
// Setup Sequences
if (!MSequence.checkClientSequences (m_ctx, AD_Client_ID, m_trx.getTrxName()))
{
String err = "Sequences NOT created";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
// Trees and Client Info
if (!m_client.setupClientInfo(m_lang))
{
String err = "Client Info NOT created";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
m_AD_Tree_Account_ID = m_client.getSetup_AD_Tree_Account_ID();
/**
* Create Org
*/
name = orgName;
if (name == null || name.length() == 0)
name = "newOrg";
m_org = new MOrg (m_client, name);
if (!m_org.save())
{
String err = "Organization NOT created";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
Env.setContext(m_ctx, m_WindowNo, "AD_Org_ID", getAD_Org_ID());
Env.setContext(m_ctx, "#AD_Org_ID", getAD_Org_ID());
m_stdValuesOrg = AD_Client_ID + "," + getAD_Org_ID() + ",'Y',SysDate,0,SysDate,0";
// Info
m_info.append(Msg.translate(m_lang, "AD_Org_ID")).append("=").append(name).append("\n");
/**
* Create Roles
* - Admin
* - User
*/
name = m_clientName + " Admin";
MRole admin = new MRole(m_ctx, 0, m_trx.getTrxName());
admin.setClientOrg(m_client);
admin.setName(name);
admin.setUserLevel(MRole.USERLEVEL_ClientPlusOrganization);
admin.setPreferenceType(MRole.PREFERENCETYPE_Client);
admin.setIsShowAcct(true);
if (!admin.save())
{
String err = "Admin Role A NOT inserted";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
// OrgAccess x, 0
MRoleOrgAccess adminClientAccess = new MRoleOrgAccess (admin, 0);
if (!adminClientAccess.save())
log.log(Level.SEVERE, "Admin Role_OrgAccess 0 NOT created");
// OrgAccess x,y
MRoleOrgAccess adminOrgAccess = new MRoleOrgAccess (admin, m_org.getAD_Org_ID());
if (!adminOrgAccess.save())
log.log(Level.SEVERE, "Admin Role_OrgAccess NOT created");
// Info - Admin Role
m_info.append(Msg.translate(m_lang, "AD_Role_ID")).append("=").append(name).append("\n");
//
name = m_clientName + " User";
MRole user = new MRole (m_ctx, 0, m_trx.getTrxName());
user.setClientOrg(m_client);
user.setName(name);
if (!user.save())
{
String err = "User Role A NOT inserted";
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
// OrgAccess x,y
MRoleOrgAccess userOrgAccess = new MRoleOrgAccess (user, m_org.getAD_Org_ID());
if (!userOrgAccess.save())
log.log(Level.SEVERE, "User Role_OrgAccess NOT created");
// Info - Client Role
m_info.append(Msg.translate(m_lang, "AD_Role_ID")).append("=").append(name).append("\n");
/**
* Create Users
* - Client
* - Org
*/
name = userClient;
if (name == null || name.length() == 0)
name = m_clientName + "Client";
AD_User_ID = getNextID(AD_Client_ID, "AD_User");
AD_User_Name = name;
name = DB.TO_STRING(name);
sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID,"
+ "Name,Description,Password)"
+ " VALUES (" + m_stdValues + "," + AD_User_ID + ","
+ name + "," + name + "," + name + ")";
no = DB.executeUpdate(sql, m_trx.getTrxName());
if (no != 1)
{
String err = "Admin User NOT inserted - " + AD_User_Name;
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
// Info
m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_Name).append("/").append(AD_User_Name).append("\n");
name = userOrg;
if (name == null || name.length() == 0)
name = m_clientName + "Org";
AD_User_U_ID = getNextID(AD_Client_ID, "AD_User");
AD_User_U_Name = name;
name = DB.TO_STRING(name);
sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID,"
+ "Name,Description,Password)"
+ " VALUES (" + m_stdValues + "," + AD_User_U_ID + ","
+ name + "," + name + "," + name + ")";
no = DB.executeUpdate(sql, m_trx.getTrxName());
if (no != 1)
{
String err = "Org User NOT inserted - " + AD_User_U_Name;
log.log(Level.SEVERE, err);
m_info.append(err);
m_trx.rollback();
m_trx.close();
return false;
}
// Info
m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_U_Name).append("/").append(AD_User_U_Name).append("\n");
/**
* Create User-Role
*/
// ClientUser - Admin & User
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
+ " VALUES (" + m_stdValues + "," + AD_User_ID + "," + admin.getAD_Role_ID() + ")";
no = DB.executeUpdate(sql, m_trx.getTrxName());
if (no != 1)
log.log(Level.SEVERE, "UserRole ClientUser+Admin NOT inserted");
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
+ " VALUES (" + m_stdValues + "," + AD_User_ID + "," + user.getAD_Role_ID() + ")";
no = DB.executeUpdate(sql, m_trx.getTrxName());
if (no != 1)
log.log(Level.SEVERE, "UserRole ClientUser+User NOT inserted");
// OrgUser - User
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
+ " VALUES (" + m_stdValues + "," + AD_User_U_ID + "," + user.getAD_Role_ID() + ")";
no = DB.executeUpdate(sql, m_trx.getTrxName());
if (no != 1)
log.log(Level.SEVERE, "UserRole OrgUser+Org NOT inserted");
// Processors
MAcctProcessor ap = new MAcctProcessor(m_client, AD_User_ID);
ap.save();
MRequestProcessor rp = new MRequestProcessor (m_client, AD_User_ID);
rp.save();
log.info("fini");
return true;
} // createClient
/**************************************************************************
* Create Accounting elements.
* - Calendar
* - Account Trees
* - Account Values
* - Accounting Schema
* - Default Accounts
*
* @param currency currency
* @param hasProduct has product segment
* @param hasBPartner has bp segment
* @param hasProject has project segment
* @param hasMCampaign has campaign segment
* @param hasSRegion has sales region segment
* @param AccountingFile file name of accounting file
* @return true if created
*/
public boolean createAccounting(KeyNamePair currency,
boolean hasProduct, boolean hasBPartner, boolean hasProject,
boolean hasMCampaign, boolean hasSRegion,
File AccountingFile)
{
log.info(m_client.toString());
//
m_hasProject = hasProject;
m_hasMCampaign = hasMCampaign;
m_hasSRegion = hasSRegion;
// Standard variables
m_info = new StringBuffer();
String name = null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -