KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > model > MSetup


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.model;
15
16 import java.util.*;
17 import java.sql.*;
18 import java.io.*;
19
20 import org.compiere.util.*;
21
22 /**
23  * Initial Setup Model
24  *
25  * @author Jorg Janke
26  * @version $Id: MSetup.java,v 1.27 2003/11/06 07:08:06 jjanke Exp $
27  */

28 public final class MSetup
29 {
30     /**
31      * Constructor
32      * @param ctx context
33      * @param WindowNo window
34      */

35     public MSetup(Properties ctx, int WindowNo)
36     {
37         m_ctx = ctx;
38         m_lang = Env.getAD_Language(m_ctx);
39         m_WindowNo = WindowNo;
40     } // MSetup
41

42     private Properties m_ctx;
43     private String JavaDoc m_lang;
44     private int m_WindowNo;
45     private StringBuffer JavaDoc m_info;
46     //
47
private String JavaDoc m_clientName;
48     private String JavaDoc m_orgName;
49     //
50
private String JavaDoc m_stdColumns = "AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy";
51     private String JavaDoc m_stdValues;
52     private String JavaDoc m_stdValuesOrg;
53     //
54
private NaturalAccountMap m_nap = null;
55     //
56
private int AD_Client_ID = 1000001; // initial Client_ID
57
//
58
private int AD_Org_ID;
59     private int AD_User_ID;
60     private String JavaDoc AD_User_Name;
61     private int AD_User_U_ID;
62     private String JavaDoc AD_User_U_Name;
63     private int AD_Role_ID;
64     private int C_Calendar_ID;
65     private int C_AcctSchema_ID;
66     private int C_Currency_ID;
67     private int AD_Tree_Account_ID;
68     private int C_Cycle_ID;
69     //
70
private boolean m_hasProject = false;
71     private boolean m_hasMCampaign = false;
72     private boolean m_hasSRegion = false;
73     private AcctSchema m_AcctSchema = null;
74
75
76     /**
77      * Create Client Info.
78      * - Client, Trees, Org, Role, User, User_Role
79      * @param clientName client name
80      * @param orgName org name
81      * @param userClient user id client
82      * @param userOrg user id org
83      * @return true if created
84      */

85     public boolean createClient (String JavaDoc clientName, String JavaDoc orgName,
86         String JavaDoc userClient, String JavaDoc userOrg)
87     {
88         Log.trace(Log.l3_Util, "MSetup.createClient");
89         // info header
90
m_info = new StringBuffer JavaDoc();
91         // Standarc columns
92
String JavaDoc name = null;
93         String JavaDoc sql = null;
94         int no = 0;
95
96         /**
97          * Create Client
98          */

99         AD_Client_ID = DB.getKeyNextNo (AD_Client_ID, "AD_Client");
100         Env.setContext(m_ctx, m_WindowNo, "AD_Client_ID", AD_Client_ID);
101
102         // Standard Values
103
m_stdValues = String.valueOf(AD_Client_ID) + ",0,'Y',SysDate,0,SysDate,0";
104
105         // Create Client
106
name = clientName;
107         if (name == null || name.length() == 0)
108             name = "newClient";
109         name = name.trim();
110         m_clientName = name;
111         sql = "INSERT INTO AD_Client(" + m_stdColumns + ",Value,Name,Description)"
112             + " VALUES (" + m_stdValues + ",'" + name + "','" + name + "','" + name + "')";
113         no = DB.executeUpdate(sql);
114         if (no != 1)
115         {
116             String JavaDoc err = "MSetup.createClient - Client NOT inserted";
117             Log.error(err);
118             m_info.append(err);
119             return false;
120         }
121         // Info - Client
122
m_info.append(Msg.translate(m_lang, "AD_Client_ID")).append("=").append(name).append("\n");
123
124         /**
125          * Create Trees
126          */

127         String JavaDoc sql2 = null;
128         if (Env.isBaseLanguage(m_lang, "AD_Ref_List")) // Get TreeTypes & Name
129
sql2 = "SELECT Value, Name FROM AD_Ref_List WHERE AD_Reference_ID=120";
130         else
131             sql2 = "SELECT l.Value, t.Name FROM AD_Ref_List l, AD_Ref_List_Trl t "
132                 + "WHERE l.AD_Reference_ID=120 AND l.AD_Ref_List_ID=t.AD_Ref_List_ID";
133
134         // Tree IDs
135
int AD_Tree_Org_ID=0, AD_Tree_BPartner_ID=0, AD_Tree_Project_ID=0,
136             AD_Tree_SalesRegion_ID=0, AD_Tree_Product_ID=0;
137
138         try
139         {
140             Statement stmt = DB.createStatement();
141             ResultSet rs = stmt.executeQuery(sql2);
142             while (rs.next())
143             {
144                 String JavaDoc value = rs.getString(1);
145                 int AD_Tree_ID = 0;
146                 if (value.equals("OO"))
147                 {
148                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
149                     AD_Tree_Org_ID = AD_Tree_ID;
150                 }
151                 else if (value.equals("BP"))
152                 {
153                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
154                     AD_Tree_BPartner_ID = AD_Tree_ID;
155                 }
156                 else if (value.equals("PJ"))
157                 {
158                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
159                     AD_Tree_Project_ID = AD_Tree_ID;
160                 }
161                 else if (value.equals("SR"))
162                 {
163                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
164                     AD_Tree_SalesRegion_ID = AD_Tree_ID;
165                 }
166                 else if (value.equals("PR"))
167                 {
168                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
169                     AD_Tree_Product_ID = AD_Tree_ID;
170                 }
171                 else if (value.endsWith("EV"))
172                 {
173                     AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
174                     AD_Tree_Account_ID = AD_Tree_ID;
175                 }
176                 else if (value.equals("MM")) // No Menu
177
;
178                 else
179                     // PC (Product Category), BB (BOM), MC (Marketing Campaign), AY (Activity)
180
AD_Tree_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Tree");
181
182                 //
183
if (AD_Tree_ID != 0)
184                 {
185                     name = m_clientName + " " + rs.getString(2);
186                     sql = "INSERT INTO AD_Tree(" + m_stdColumns + ",AD_Tree_ID,Name,Description,TreeType)"
187                         + " VALUES (" + m_stdValues + "," + AD_Tree_ID + ",'" + name + "','" + name + "','" + value + "')";
188                     no = DB.executeUpdate(sql);
189                     if (no == 1)
190                         m_info.append(Msg.translate(m_lang, "AD_Tree_ID")).append("=").append(name).append("\n");
191                     else
192                         Log.error("MSetup.createClient - Tree NOT created: " + name);
193                 }
194             }
195             rs.close();
196             stmt.close();
197         }
198         catch (SQLException e1)
199         {
200             Log.error ("MSetup.createClient - Trees", e1);
201         }
202
203         // Get Primary Tree
204
int AD_Tree_Menu_ID = 10; // hardcoded
205

206         // Create ClientInfo
207
sql = "INSERT INTO AD_ClientInfo(" + m_stdColumns + ",Acct2_Active,Acct3_Active,"
208             + "AD_Tree_Menu_ID,AD_Tree_Org_ID,AD_Tree_BPartner_ID,AD_Tree_Project_ID,AD_Tree_SalesRegion_ID,AD_Tree_Product_ID)"
209             + " VALUES (" + m_stdValues + ",'N','N',"
210             + AD_Tree_Menu_ID + "," + AD_Tree_Org_ID + "," + AD_Tree_BPartner_ID + "," + AD_Tree_Project_ID + "," + AD_Tree_SalesRegion_ID + "," + AD_Tree_Product_ID + ")";
211         no = DB.executeUpdate(sql);
212         if (no != 1)
213         {
214             String JavaDoc err = "MSetup.createClient - ClientInfo NOT inserted";
215             Log.error(err);
216             m_info.append(err);
217             return false;
218         }
219         // Info
220
// m_info.append(Msg.translate(m_lang, "AD_ClientInfo")).append("\n");
221

222         /**
223          * Create Org
224          */

225         AD_Org_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Org");
226         m_stdValuesOrg = AD_Client_ID + "," + AD_Org_ID + ",'Y',SysDate,0,SysDate,0";
227
228         name = orgName;
229         if (name == null || name.length() == 0)
230             name = "newOrg";
231         m_orgName = name;
232         sql = "INSERT INTO AD_Org (" + m_stdColumns + ",Value,Name,IsSummary)"
233             + " VALUES (" + m_stdValuesOrg + ",'" + name + "','" + name + "','N')";
234         no = DB.executeUpdate(sql);
235         if (no != 1)
236         {
237             String JavaDoc err = "MSetup.createClient - Org NOT inserted";
238             Log.error(err);
239             m_info.append(err);
240             return false;
241         }
242         // Info
243
m_info.append(Msg.translate(m_lang, "AD_Org_ID")).append("=").append(name).append("\n");
244
245         /**
246          * Create Roles
247          * - Admin
248          * - User
249          */

250         name = m_clientName + " Admin";
251         AD_Role_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Role");
252         sql = "INSERT INTO AD_Role(" + m_stdColumns + ",AD_Role_ID,"
253             + "Name,Description,UserLevel,ClientList,OrgList)"
254             + " VALUES (" + m_stdValues + "," + AD_Role_ID + ","
255             + "'" + name + "','" + name + "',' CO','" + AD_Client_ID + "','0," + AD_Org_ID + "')";
256         no = DB.executeUpdate(sql);
257         if (no != 1)
258         {
259             String JavaDoc err = "MSetup.createClient - Admin Role A NOT inserted";
260             Log.error(err);
261             m_info.append(err);
262             return false;
263         }
264         // OrgAccess x,0
265
sql = "INSERT INTO AD_Role_OrgAccess(" + m_stdColumns + ",AD_Role_ID) VALUES ("
266             + m_stdValues + "," + AD_Role_ID + ")";
267         no = DB.executeUpdate(sql);
268         if (no != 1)
269             Log.error("MSetup.createClient - Admin Role_OrgAccess 0 NOT created");
270         // OrgAccess x,y
271
sql = "INSERT INTO AD_Role_OrgAccess(" + m_stdColumns + ",AD_Role_ID) VALUES ("
272             + m_stdValuesOrg + "," + AD_Role_ID + ")";
273         no = DB.executeUpdate(sql);
274         if (no != 1)
275             Log.error("MSetup.createClient - Admin Role_OrgAccess NOT created");
276         // Info - Admin Role
277
m_info.append(Msg.translate(m_lang, "AD_Role_ID")).append("=").append(name).append("\n");
278
279         //
280
name = m_clientName + " User";
281         int AD_Role_ID_U = DB.getKeyNextNo(AD_Client_ID, "AD_Role");
282         sql = "INSERT INTO AD_Role(" + m_stdColumns + ",AD_Role_ID,"
283             + "Name,Description,UserLevel,ClientList,OrgList)"
284             + " VALUES (" + m_stdValues + "," + AD_Role_ID_U + ","
285             + "'" + name + "','" + name + "',' O','" + AD_Client_ID + "','" + AD_Org_ID + "')";
286         no = DB.executeUpdate(sql);
287         if (no != 1)
288         {
289             String JavaDoc err = "MSetup.createClient - User Role A NOT inserted";
290             Log.error(err);
291             m_info.append(err);
292             return false;
293         }
294         // OrgAccess x,y
295
sql = "INSERT INTO AD_Role_OrgAccess(" + m_stdColumns + ",AD_Role_ID) VALUES ("
296             + m_stdValuesOrg + "," + AD_Role_ID_U + ")";
297         no = DB.executeUpdate(sql);
298         if (no != 1)
299             Log.error("MSetup.createClient - User Role_OrgAccess NOT created");
300         // Info - Client Role
301
m_info.append(Msg.translate(m_lang, "AD_Role_ID")).append("=").append(name).append("\n");
302
303         /**
304          * Create Users
305          * - Client
306          * - Org
307          */

308         name = userClient;
309         if (name == null || name.length() == 0)
310             name = m_clientName + "Client";
311         AD_User_ID = DB.getKeyNextNo(AD_Client_ID, "AD_User");
312         AD_User_Name = name;
313         sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID,"
314             + "Name,Description,Password)"
315             + " VALUES (" + m_stdValues + "," + AD_User_ID + ","
316             + "'" + AD_User_Name + "','" + AD_User_Name + "','" + AD_User_Name + "')";
317         no = DB.executeUpdate(sql);
318         if (no != 1)
319         {
320             String JavaDoc err = "MSetup.createClient - Admin User NOT inserted - " + AD_User_Name;
321             Log.error(err);
322             m_info.append(err);
323             return false;
324         }
325         // Info
326
m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_Name).append("/").append(AD_User_Name).append("\n");
327
328         name = userOrg;
329         if (name == null || name.length() == 0)
330             name = m_clientName + "Org";
331         AD_User_U_ID = DB.getKeyNextNo(AD_Client_ID, "AD_User");
332         AD_User_U_Name = name;
333         sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID,"
334             + "Name,Description,Password)"
335             + " VALUES (" + m_stdValues + "," + AD_User_U_ID + ","
336             + "'" + AD_User_U_Name + "','" + AD_User_U_Name + "','" + AD_User_U_Name + "')";
337         no = DB.executeUpdate(sql);
338         if (no != 1)
339         {
340             String JavaDoc err = "MSetup.createClient - Org User NOT inserted - " + AD_User_U_Name;
341             Log.error(err);
342             m_info.append(err);
343             return false;
344         }
345         // Info
346
m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_U_Name).append("/").append(AD_User_U_Name).append("\n");
347
348         /**
349          * Create User-Role
350          */

351         // ClientUser - Admin & User
352
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
353             + " VALUES (" + m_stdValues + "," + AD_User_ID + "," + AD_Role_ID + ")";
354         no = DB.executeUpdate(sql);
355         if (no != 1)
356             Log.error("MSetup.createClient - UserRole ClientUser+Admin NOT inserted");
357         sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
358             + " VALUES (" + m_stdValues + "," + AD_User_ID + "," + AD_Role_ID_U + ")";
359         no = DB.executeUpdate(sql);
360         if (no != 1)
361             Log.error("MSetup.createClient - UserRole ClientUser+User NOT inserted");
362         // OrgUser - User
363
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
364             + " VALUES (" + m_stdValues + "," + AD_User_U_ID + "," + AD_Role_ID_U + ")";
365         no = DB.executeUpdate(sql);
366         if (no != 1)
367             Log.error("MSetup.createClient - UserRole OrgUser+Org NOT inserted");
368         // SuperUser(100) - Admin & User
369
sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
370             + " VALUES (" + m_stdValues + ",100," + AD_Role_ID + ")";
371         no = DB.executeUpdate(sql);
372         if (no != 1)
373             Log.error("MSetup.createClient - UserRole SuperUser+Admin NOT inserted");
374         sql = "INSERT INTO AD_User_Roles(" + m_stdColumns + ",AD_User_ID,AD_Role_ID)"
375             + " VALUES (" + m_stdValues + ",100," + AD_Role_ID_U + ")";
376         no = DB.executeUpdate(sql);
377         if (no != 1)
378             Log.error("MSetup.createClient - UserRole SuperUser+User NOT inserted");
379
380         return true;
381     } // createClient
382

383
384
385     /*************************************************************************/
386
387     /**
388      * Create Accounting elements.
389      * - Calendar
390      * - Account Trees
391      * - Account Values
392      * - Accounting Schema
393      * - Default Accounts
394      *
395      * @param newC_Currency_ID currency
396      * @param curName currency name
397      * @param hasProduct has product segment
398      * @param hasBPartner has bp segment
399      * @param hasProject has project segment
400      * @param hasMCampaign has campaign segment
401      * @param hasSRegion has sales region segment
402      * @param AccountingFile file name of accounting file
403      * @return true if created
404      */

405     public boolean createAccounting(int newC_Currency_ID, String JavaDoc curName,
406         boolean hasProduct, boolean hasBPartner, boolean hasProject,
407         boolean hasMCampaign, boolean hasSRegion,
408         File AccountingFile)
409     {
410         Log.trace(Log.l3_Util, "MSetup.createAccount");
411         //
412
C_Currency_ID = newC_Currency_ID;
413         m_hasProject = hasProject;
414         m_hasMCampaign = hasMCampaign;
415         m_hasSRegion = hasSRegion;
416
417         // Standard variables
418
m_info = new StringBuffer JavaDoc();
419         String JavaDoc name = null;
420         StringBuffer JavaDoc sqlCmd = null;
421         int no = 0;
422
423         /**
424          * Create Calendar
425          */

426         C_Calendar_ID = DB.getKeyNextNo(AD_Client_ID, "C_Calendar");
427         name = m_clientName + " " + Msg.translate(m_lang, "C_Calendar_ID");
428         sqlCmd = new StringBuffer JavaDoc("INSERT INTO C_Calendar(");
429         sqlCmd.append(m_stdColumns).append(",C_Calendar_ID,Name)").append(" VALUES (");
430         sqlCmd.append(m_stdValues).append(",").append(C_Calendar_ID).append(",'").append(name).append("')");
431         no = DB.executeUpdate(sqlCmd.toString());
432         if (no != 1)
433         {
434             String JavaDoc err = "MSetup.createAccounting - Calendar NOT inserted";
435             Log.error(err);
436             m_info.append(err);
437             return false;
438         }
439         // Info
440
m_info.append(Msg.translate(m_lang, "C_Calendar_ID")).append("=").append(name).append("\n");
441
442         // Year
443
int C_Year_ID = DB.getKeyNextNo(AD_Client_ID, "C_Year");
444         sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Year ");
445         sqlCmd.append("(C_Year_ID,").append(m_stdColumns).append(",");
446         sqlCmd.append("Year,C_Calendar_ID) VALUES (");
447         sqlCmd.append(C_Year_ID).append(",").append(m_stdValues).append(",");
448         sqlCmd.append("TO_CHAR(SysDate,'YYYY'),").append(C_Calendar_ID).append(")");
449         no = DB.executeUpdate(sqlCmd.toString());
450         if (no != 1)
451             Log.error("MSetup.createAccounting - Year NOT inserted");
452         /** @todo Create Periods */
453
454
455         // Create Account Elements
456
int C_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_Element");
457         name = m_clientName + " " + Msg.translate(m_lang, "Account_ID");
458         sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_ELEMENT(");
459         sqlCmd.append(m_stdColumns).append(",C_Element_ID,Name,Description,")
460             .append("VFormat,ElementType,IsBalancing,IsNaturalAccount,AD_Tree_ID)").append(" VALUES (");
461         sqlCmd.append(m_stdValues).append(",").append(C_Element_ID).append(",'").append(name).append("','").append(name).append("',")
462             .append("NULL,'A','N','Y',").append(AD_Tree_Account_ID).append(")");
463         no = DB.executeUpdate(sqlCmd.toString());
464         if (no != 1)
465         {
466             String JavaDoc err = "MSetup.createAccounting - Acct Element NOT inserted";
467             Log.error(err);
468             m_info.append(err);
469             return false;
470         }
471         m_info.append(Msg.translate(m_lang, "C_Element_ID")).append("=").append(name).append("\n");
472
473         // Create Account Values
474
m_nap = new NaturalAccountMap(m_ctx);
475         String JavaDoc errMsg = m_nap.parseFile(AccountingFile);
476         if (errMsg.length() != 0)
477         {
478             Log.error(errMsg);
479             m_info.append(errMsg);
480             return false;
481         }
482         if (m_nap.createAccounts(AD_Client_ID, AD_Org_ID, C_Element_ID))
483             m_info.append(Msg.translate(m_lang, "C_ElementValue_ID")).append(" # ").append(m_nap.size()).append("\n");
484         else
485         {
486             String JavaDoc err = "MSetup.createAccounting - Acct Element Values NOT inserted";
487             Log.error(err);
488             m_info.append(err);
489             return false;
490         }
491
492         int C_ElementValue_ID = m_nap.getC_ElementValue_ID("DEFAULT_ACCT");
493         Log.trace(Log.l4_Data, "C_ElementValue_ID=" + C_ElementValue_ID);
494
495         /**
496          * Create AccountingSchema
497          */

498         C_AcctSchema_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema");
499         //
500
String JavaDoc GAAP = "US"; // AD_Reference_ID=123
501
String JavaDoc CostingMethod = "A"; // AD_Reference_ID=122
502
name = m_clientName + " " + GAAP + "/" + CostingMethod + "/" + curName;
503         //
504
sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_AcctSchema(");
505         sqlCmd.append(m_stdColumns).append(",C_AcctSchema_ID,Name,")
506             .append("GAAP,IsAccrual,CostingMethod,C_Currency_ID,")
507             .append("AutoPeriodControl,Separator,HasAlias,HasCombination)")
508             .append(" VALUES (");
509         sqlCmd.append(m_stdValues).append(",").append(C_AcctSchema_ID).append(",'").append(name).append("',")
510             .append("'").append(GAAP).append("','Y','").append(CostingMethod).append("',").append(C_Currency_ID).append(",")
511             .append("'N','-','Y','N')");
512         no = DB.executeUpdate(sqlCmd.toString());
513         if (no != 1)
514         {
515             String JavaDoc err = "MSetup.createAccounting - AcctSchema NOT inserted";
516             Log.error(err);
517             m_info.append(err);
518             return false;
519         }
520         // Info
521
m_info.append(Msg.translate(m_lang, "C_AcctSchema_ID")).append("=").append(name).append("\n");
522
523         /**
524          * Create AccountingSchema Elements (Structure)
525          */

526         String JavaDoc sql2 = null;
527         if (Env.isBaseLanguage(m_lang, "AD_Reference")) // Get TreeTypes & Name
528
sql2 = "SELECT Value, Name FROM AD_Ref_List WHERE AD_Reference_ID=181";
529         else
530             sql2 = "SELECT l.Value, t.Name FROM AD_Ref_List l, AD_Ref_List_Trl t "
531                 + "WHERE l.AD_Reference_ID=181 AND l.AD_Ref_List_ID=t.AD_Ref_List_ID";
532         //
533
int Element_OO=0, Element_AC=0, Element_PR=0, Element_BP=0, Element_PJ=0,
534             Element_MC=0, Element_SR=0;
535         try
536         {
537             Statement stmt = DB.createStatement();
538             ResultSet rs = stmt.executeQuery(sql2);
539             while (rs.next())
540             {
541                 String JavaDoc ElementType = rs.getString(1);
542                 name = rs.getString(2);
543                 //
544
String JavaDoc IsMandatory = null;
545                 String JavaDoc IsBalanced = "N";
546                 int SeqNo = 0;
547                 int C_AcctSchema_Element_ID = 0;
548
549                 if (ElementType.equals("OO"))
550                 {
551                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
552                     Element_OO = C_AcctSchema_Element_ID;
553                     IsMandatory = "Y";
554                     IsBalanced = "Y";
555                     SeqNo = 10;
556                 }
557                 else if (ElementType.equals("AC"))
558                 {
559                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
560                     Element_AC = C_AcctSchema_Element_ID;
561                     IsMandatory = "Y";
562                     SeqNo = 20;
563                 }
564                 else if (ElementType.equals("PR") && hasProduct)
565                 {
566                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
567                     Element_PR = C_AcctSchema_Element_ID;
568                     IsMandatory = "N";
569                     SeqNo = 30;
570                 }
571                 else if (ElementType.equals("BP") && hasBPartner)
572                 {
573                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
574                     Element_BP = C_AcctSchema_Element_ID;
575                     IsMandatory = "N";
576                     SeqNo = 40;
577                 }
578                 else if (ElementType.equals("PJ") && hasProject)
579                 {
580                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
581                     Element_PJ = C_AcctSchema_Element_ID;
582                     IsMandatory = "N";
583                     SeqNo = 50;
584                 }
585                 else if (ElementType.equals("MC") && hasMCampaign)
586                 {
587                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
588                     Element_MC = C_AcctSchema_Element_ID;
589                     IsMandatory = "N";
590                     SeqNo = 60;
591                 }
592                 else if (ElementType.equals("SR") && hasSRegion)
593                 {
594                     C_AcctSchema_Element_ID = DB.getKeyNextNo(AD_Client_ID, "C_AcctSchema_Element");
595                     Element_SR = C_AcctSchema_Element_ID;
596                     IsMandatory = "N";
597                     SeqNo = 70;
598                 }
599                 // Not OT, LF, LT, U1, U2, AY
600

601                 if (IsMandatory != null)
602                 {
603                     sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_AcctSchema_Element(");
604                     sqlCmd.append(m_stdColumns).append(",C_AcctSchema_Element_ID,C_AcctSchema_ID,")
605                         .append("ElementType,Name,SeqNo,IsMandatory,IsBalanced) VALUES (");
606                     sqlCmd.append(m_stdValues).append(",").append(C_AcctSchema_Element_ID).append(",").append(C_AcctSchema_ID).append(",")
607                         .append("'").append(ElementType).append("','").append(name).append("',").append(SeqNo).append(",'")
608                         .append(IsMandatory).append("','").append(IsBalanced).append("')");
609                     no = DB.executeUpdate(sqlCmd.toString());
610                     if (no == 1)
611                         m_info.append(Msg.translate(m_lang, "C_AcctSchema_Element_ID")).append("=").append(name).append("\n");
612
613                     /** Default value for mandatory elements: OO and AC */
614                     if (ElementType.equals("OO"))
615                     {
616                         sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET Org_ID=");
617                         sqlCmd.append(AD_Org_ID).append(" WHERE C_AcctSchema_Element_ID=").append(C_AcctSchema_Element_ID);
618                         no = DB.executeUpdate(sqlCmd.toString());
619                         if (no != 1)
620                             Log.error("MSetup.createAccounting - Default Org in AcctSchamaElement NOT updated");
621                     }
622                     if (ElementType.equals("AC"))
623                     {
624                         sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET C_ElementValue_ID=");
625                         sqlCmd.append(C_ElementValue_ID).append(", C_Element_ID=").append(C_Element_ID);
626                         sqlCmd.append(" WHERE C_AcctSchema_Element_ID=").append(C_AcctSchema_Element_ID);
627                         no = DB.executeUpdate(sqlCmd.toString());
628                         if (no != 1)
629                             Log.error("MSetup.createAccounting - Default Account in AcctSchamaElement NOT updated");
630                     }
631                 }
632             }
633             rs.close();
634             stmt.close();
635         }
636         catch (SQLException e1)
637         {
638             Log.error ("MSetup.createAccounting - Elements", e1);
639         }
640         // Create AcctSchema
641
m_AcctSchema = new AcctSchema (C_AcctSchema_ID);
642
643
644         // Create GL Accounts
645
sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_ACCTSCHEMA_GL (");
646         sqlCmd.append(m_stdColumns).append(",C_ACCTSCHEMA_ID,"
647             + "USESUSPENSEBALANCING,SUSPENSEBALANCING_ACCT,"
648             + "USESUSPENSEERROR,SUSPENSEERROR_ACCT,"
649             + "USECURRENCYBALANCING,CURRENCYBALANCING_ACCT,"
650             + "RETAINEDEARNING_ACCT,INCOMESUMMARY_ACCT,"
651             + "INTERCOMPANYDUETO_ACCT,INTERCOMPANYDUEFROM_ACCT,"
652             + "PPVOFFSET_ACCT) VALUES (");
653         sqlCmd.append(m_stdValues).append(",").append(C_AcctSchema_ID).append(",");
654         sqlCmd.append("'Y',").append(getAcct("SUSPENSEBALANCING_ACCT")).append(",");
655         sqlCmd.append("'Y',").append(getAcct("SUSPENSEERROR_ACCT")).append(",");
656         sqlCmd.append("'Y',").append(getAcct("CURRENCYBALANCING_ACCT")).append(",");
657         // RETAINEDEARNING_ACCT,INCOMESUMMARY_ACCT,
658
sqlCmd.append(getAcct("RETAINEDEARNING_ACCT")).append(",");
659         sqlCmd.append(getAcct("INCOMESUMMARY_ACCT")).append(",");
660         // INTERCOMPANYDUETO_ACCT,INTERCOMPANYDUEFROM_ACCT)
661
sqlCmd.append(getAcct("INTERCOMPANYDUETO_ACCT")).append(",");
662         sqlCmd.append(getAcct("INTERCOMPANYDUEFROM_ACCT")).append(",");
663         sqlCmd.append(getAcct("PPVOFFSET_ACCT")).append(")");
664         no = DB.executeUpdate(sqlCmd.toString());
665         if (no != 1)
666         {
667             String JavaDoc err = "MSetup.createAccounting - GL Accounts NOT inserted";
668             Log.error(err);
669             m_info.append(err);
670             return false;
671         }
672
673         // Create Std Accounts
674
sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_ACCTSCHEMA_DEFAULT (");
675         sqlCmd.append(m_stdColumns).append(",C_ACCTSCHEMA_ID,"
676             + "W_INVENTORY_ACCT,W_DIFFERENCES_ACCT,W_REVALUATION_ACCT,W_INVACTUALADJUST_ACCT, "
677             + "P_REVENUE_ACCT,P_EXPENSE_ACCT,P_ASSET_ACCT,P_COGS_ACCT, "
678             + "P_PURCHASEPRICEVARIANCE_ACCT,P_INVOICEPRICEVARIANCE_ACCT,P_TRADEDISCOUNTREC_ACCT,P_TRADEDISCOUNTGRANT_ACCT, "
679             + "C_RECEIVABLE_ACCT,C_PREPAYMENT_ACCT, "
680             + "V_LIABILITY_ACCT,V_LIABILITY_SERVICES_ACCT,V_PREPAYMENT_ACCT, "
681             + "PAYDISCOUNT_EXP_ACCT,PAYDISCOUNT_REV_ACCT,WRITEOFF_ACCT, "
682             + "UNREALIZEDGAIN_ACCT,UNREALIZEDLOSS_ACCT,REALIZEDGAIN_ACCT,REALIZEDLOSS_ACCT, "
683             + "WITHHOLDING_ACCT,E_PREPAYMENT_ACCT,E_EXPENSE_ACCT, "
684             + "PJ_ASSET_ACCT,PJ_WIP_ACCT,"
685             + "T_EXPENSE_ACCT,T_LIABILITY_ACCT,T_RECEIVABLES_ACCT,T_DUE_ACCT,T_CREDIT_ACCT, "
686             + "B_INTRANSIT_ACCT,B_ASSET_ACCT,B_EXPENSE_ACCT,B_INTERESTREV_ACCT,B_INTERESTEXP_ACCT,"
687             + "B_UNIDENTIFIED_ACCT,B_SETTLEMENTGAIN_ACCT,B_SETTLEMENTLOSS_ACCT,"
688             + "B_REVALUATIONGAIN_ACCT,B_REVALUATIONLOSS_ACCT,B_PAYMENTSELECT_ACCT,B_UNALLOCATEDCASH_ACCT, "
689             + "CH_EXPENSE_ACCT,CH_REVENUE_ACCT, "
690             + "UNEARNEDREVENUE_ACCT,NOTINVOICEDRECEIVABLES_ACCT,NOTINVOICEDREVENUE_ACCT,NOTINVOICEDRECEIPTS_ACCT, "
691             + "CB_ASSET_ACCT,CB_CASHTRANSFER_ACCT,CB_DIFFERENCES_ACCT,CB_EXPENSE_ACCT,CB_RECEIPT_ACCT) VALUES (");
692         sqlCmd.append(m_stdValues).append(",").append(C_AcctSchema_ID).append(",");
693         // W_INVENTORY_ACCT,W_DIFFERENCES_ACCT,W_REVALUATION_ACCT,W_INVACTUALADJUST_ACCT
694
sqlCmd.append(getAcct("W_INVENTORY_ACCT")).append(",");
695         sqlCmd.append(getAcct("W_DIFFERENCES_ACCT")).append(",");
696         sqlCmd.append(getAcct("W_REVALUATION_ACCT")).append(",");
697         sqlCmd.append(getAcct("W_INVACTUALADJUST_ACCT")).append(", ");
698         // P_REVENUE_ACCT,P_EXPENSE_ACCT,P_ASSET_ACCT,P_COGS_ACCT,
699
sqlCmd.append(getAcct("P_REVENUE_ACCT")).append(",");
700         sqlCmd.append(getAcct("P_EXPENSE_ACCT")).append(",");
701         sqlCmd.append(getAcct("P_ASSET_ACCT")).append(",");
702         sqlCmd.append(getAcct("P_COGS_ACCT")).append(", ");
703         // P_PURCHASEPRICEVARIANCE_ACCT,P_INVOICEPRICEVARIANCE_ACCT,P_TRADEDISCOUNTREC_ACCT,P_TRADEDISCOUNTGRANT_ACCT,
704
sqlCmd.append(getAcct("P_PURCHASEPRICEVARIANCE_ACCT")).append(",");
705         sqlCmd.append(getAcct("P_INVOICEPRICEVARIANCE_ACCT")).append(",");
706         sqlCmd.append(getAcct("P_TRADEDISCOUNTREC_ACCT")).append(",");
707         sqlCmd.append(getAcct("P_TRADEDISCOUNTGRANT_ACCT")).append(", ");
708         // C_RECEIVABLE_ACCT,C_PREPAYMENT_ACCT,
709
sqlCmd.append(getAcct("C_RECEIVABLE_ACCT")).append(",");
710         sqlCmd.append(getAcct("C_PREPAYMENT_ACCT")).append(", ");
711         // V_LIABILITY_ACCT,V_LIABILITY_SERVICES_ACCT,V_PREPAYMENT_ACCT,
712
sqlCmd.append(getAcct("V_LIABILITY_ACCT")).append(",");
713         sqlCmd.append(getAcct("V_LIABILITY_SERVICES_ACCT")).append(",");
714         sqlCmd.append(getAcct("V_PREPAYMENT_ACCT")).append(", ");
715         // PAYDISCOUNT_EXP_ACCT,PAYDISCOUNT_REV_ACCT,WRITEOFF_ACCT,
716
sqlCmd.append(getAcct("PAYDISCOUNT_EXP_ACCT")).append(",");
717         sqlCmd.append(getAcct("PAYDISCOUNT_REV_ACCT")).append(",");
718         sqlCmd.append(getAcct("WRITEOFF_ACCT")).append(", ");
719         // UNREALIZEDGAIN_ACCT,UNREALIZEDLOSS_ACCT,REALIZEDGAIN_ACCT,REALIZEDLOSS_ACCT,
720
sqlCmd.append(getAcct("UNREALIZEDGAIN_ACCT")).append(",");
721         sqlCmd.append(getAcct("UNREALIZEDLOSS_ACCT")).append(",");
722         sqlCmd.append(getAcct("REALIZEDGAIN_ACCT")).append(",");
723         sqlCmd.append(getAcct("REALIZEDLOSS_ACCT")).append(", ");
724         // WITHHOLDING_ACCT,E_PREPAYMENT_ACCT,E_EXPENSE_ACCT,
725
sqlCmd.append(getAcct("WITHHOLDING_ACCT")).append(",");
726         sqlCmd.append(getAcct("E_PREPAYMENT_ACCT")).append(",");
727         sqlCmd.append(getAcct("E_EXPENSE_ACCT")).append(", ");
728         // PJ_ASSET_ACCT,PJ_WIP_ACCT,
729
sqlCmd.append(getAcct("PJ_ASSET_ACCT")).append(",");
730         sqlCmd.append(getAcct("PJ_WIP_ACCT")).append(",");
731         // T_EXPENSE_ACCT,T_LIABILITY_ACCT,T_RECEIVABLES_ACCT,T_DUE_ACCT,T_CREDIT_ACCT,
732
sqlCmd.append(getAcct("T_EXPENSE_ACCT")).append(",");
733         sqlCmd.append(getAcct("T_LIABILITY_ACCT")).append(",");
734         sqlCmd.append(getAcct("T_RECEIVABLES_ACCT")).append(",");
735         sqlCmd.append(getAcct("T_DUE_ACCT")).append(",");
736         sqlCmd.append(getAcct("T_CREDIT_ACCT")).append(", ");
737         // B_INTRANSIT_ACCT,B_ASSET_ACCT,B_EXPENSE_ACCT,B_INTERESTREV_ACCT,B_INTERESTEXP_ACCT,
738
sqlCmd.append(getAcct("B_INTRANSIT_ACCT")).append(",");
739         sqlCmd.append(getAcct("B_ASSET_ACCT")).append(",");
740         sqlCmd.append(getAcct("B_EXPENSE_ACCT")).append(",");
741         sqlCmd.append(getAcct("B_INTERESTREV_ACCT")).append(",");
742         sqlCmd.append(getAcct("B_INTERESTEXP_ACCT")).append(",");
743         // B_UNIDENTIFIED_ACCT,B_SETTLEMENTGAIN_ACCT,B_SETTLEMENTLOSS_ACCT,
744
sqlCmd.append(getAcct("B_UNIDENTIFIED_ACCT")).append(",");
745         sqlCmd.append(getAcct("B_SETTLEMENTGAIN_ACCT")).append(",");
746         sqlCmd.append(getAcct("B_SETTLEMENTLOSS_ACCT")).append(",");
747         // B_REVALUATIONGAIN_ACCT,B_REVALUATIONLOSS_ACCT,B_PAYMENTSELECT_ACCT,B_UNALLOCATEDCASH_ACCT,
748
sqlCmd.append(getAcct("B_REVALUATIONGAIN_ACCT")).append(",");
749         sqlCmd.append(getAcct("B_REVALUATIONLOSS_ACCT")).append(",");
750         sqlCmd.append(getAcct("B_PAYMENTSELECT_ACCT")).append(",");
751         sqlCmd.append(getAcct("B_UNALLOCATEDCASH_ACCT")).append(", ");
752         // CH_EXPENSE_ACCT,CH_REVENUE_ACCT,
753
sqlCmd.append(getAcct("CH_EXPENSE_ACCT")).append(",");
754         sqlCmd.append(getAcct("CH_REVENUE_ACCT")).append(", ");
755         // UNEARNEDREVENUE_ACCT,NOTINVOICEDRECEIVABLES_ACCT,NOTINVOICEDREVENUE_ACCT,NOTINVOICEDRECEIPTS_ACCT,
756
sqlCmd.append(getAcct("UNEARNEDREVENUE_ACCT")).append(",");
757         sqlCmd.append(getAcct("NOTINVOICEDRECEIVABLES_ACCT")).append(",");
758         sqlCmd.append(getAcct("NOTINVOICEDREVENUE_ACCT")).append(",");
759         sqlCmd.append(getAcct("NOTINVOICEDRECEIPTS_ACCT")).append(", ");
760         // CB_ASSET_ACCT,CB_CASHTRANSFER_ACCT,CB_DIFFERENCES_ACCT,CB_EXPENSE_ACCT,CB_RECEIPT_ACCT)
761
sqlCmd.append(getAcct("CB_ASSET_ACCT")).append(",");
762         sqlCmd.append(getAcct("CB_CASHTRANSFER_ACCT")).append(",");
763         sqlCmd.append(getAcct("CB_DIFFERENCES_ACCT")).append(",");
764         sqlCmd.append(getAcct("CB_EXPENSE_ACCT")).append(",");
765         sqlCmd.append(getAcct("CB_RECEIPT_ACCT")).append(")");
766         no = DB.executeUpdate(sqlCmd.toString());
767         if (no != 1)
768         {
769             String JavaDoc err = "MSetup.createAccounting - Default Accounts NOT inserted";
770             Log.error(err);
771             m_info.append(err);
772             return false;
773         }
774
775         // GL Categories
776
createGLCategory("Standard", "M", true);
777         int GL_None = createGLCategory("None", "D", false);
778         int GL_GL = createGLCategory("Manual", "M", false);
779         int GL_ARI = createGLCategory("AR Invoice", "D", false);
780         int GL_ARR = createGLCategory("AR Receipt", "D", false);
781         int GL_MM = createGLCategory("Material Management", "D", false);
782         int GL_API = createGLCategory("AP Invoice", "D", false);
783         int GL_APP = createGLCategory("AP Payment", "D", false);
784
785         // Base DocumentTypes
786
createDocType("GL Journal", "Journal", "GLJ", null, 0, 0, 1000, GL_GL);
787         int DT_I = createDocType("AR Invoice", "Invoice", "ARI", null, 0, 0, 100000, GL_ARI);
788         int DT_II = createDocType("AR Invoice Indirect", "Invoice", "ARI", null, 0, 0, 200000, GL_ARI);
789         createDocType("AR Credit Memo", "Credit Memo", "ARC", null, 0, 0, 300000, GL_ARI);
790         createDocType("AR Receipt", "Receipt", "ARR", null, 0, 0, 400000, GL_ARR);
791         int DT_S = createDocType("MM Shipment", "Delivery Note", "MMS", null, 0, 0, 500000, GL_MM);
792         int DT_SI = createDocType("MM Shipment Indirect", "Delivery Note", "MMS", null, 0, 0, 600000, GL_MM);
793         createDocType("MM Receipt", "Vendor Delivery", "MMR", null, 0, 0, 0, GL_MM);
794         createDocType("AP Invoice", "Vendor Invoice", "API", null, 0, 0, 0, GL_API);
795         createDocType("AP CreditMemo", "Vendor Credit Memo", "APC", null, 0, 0, 0, GL_API);
796         createDocType("AP Payment", "Vendor Payment", "APP", null, 0, 0, 700000, GL_APP);
797         createDocType("Purchase Order", "Purchase Order", "POO", null, 0, 0, 800000, GL_None);
798         createDocType("Purchase Requisition", "Purchase Requisition", "POR", null, 0, 0, 900000, GL_None);
799
800         // Order Entry
801
createDocType("Quotation", "Binding offer", "SOO", "OB", 0, 0, 10000, GL_None);
802         createDocType("Proposal", "Non binding offer", "SOO", "ON", 0, 0, 20000, GL_None);
803         createDocType("Prepay Order", "Prepay Order", "SOO", "PR", DT_S, DT_I, 30000, GL_None);
804         createDocType("Return Material", "Return Material Authorization", "SOO", "RM", DT_S, DT_I, 40000, GL_None);
805         createDocType("Standard Order", "Order Confirmation", "SOO", "SO", DT_S, DT_I, 50000, GL_None);
806         createDocType("Credit Order", "Order Confirmation", "SOO", "WI", DT_SI, DT_I, 60000, GL_None); // RE
807
createDocType("Warehouse Order", "Order Confirmation", "SOO", "WP", DT_S, DT_I, 70000, GL_None); // LS
808
int DT = createDocType("POS Order", "Order Confirmation", "SOO", "WR", DT_SI, DT_II, 80000, GL_None); // Bar
809
createPreference("C_DocTypeTarget_ID", String.valueOf(DT), 143);
810
811         // Update ClientInfo
812
sqlCmd = new StringBuffer JavaDoc ("UPDATE AD_ClientInfo SET ");
813         sqlCmd.append("C_AcctSchema1_ID=").append(C_AcctSchema_ID)
814             .append(", C_Calendar_ID=").append(C_Calendar_ID)
815             .append(" WHERE AD_Client_ID=").append(AD_Client_ID);
816         no = DB.executeUpdate(sqlCmd.toString());
817         if (no != 1)
818         {
819             String JavaDoc err = "MSetup.createAccounting - ClientInfo not updated";
820             Log.error(err);
821             m_info.append(err);
822             return false;
823         }
824
825         //
826
return true;
827     } // createAccounting
828

829     /**
830      * Get Account ID for key
831      * @param key key
832      * @return C_ValidCombination_ID
833      */

834     private int getAcct (String JavaDoc key)
835     {
836         Log.trace(Log.l4_Data, "MSetup.getAcct - " + key);
837         // Element
838
int C_ElementValue_ID = m_nap.getC_ElementValue_ID(key);
839         Account vc = Account.getDefault(m_AcctSchema, true); // optional null
840
vc.setAccount_ID(C_ElementValue_ID);
841         vc.save(AD_Client_ID, 0);
842         int C_ValidCombination_ID = vc.getC_ValidCombination_ID();
843
844         // Error
845
if (C_ValidCombination_ID == 0)
846             Log.error("MSetup.getAcct - no account for " + key);
847         return C_ValidCombination_ID;
848     } // getAcct
849

850     /**
851      * Create GL Category
852      * @param Name name
853      * @param CategoryType category type
854      * @param isDefault is default value
855      * @return GL_Category_ID
856      */

857     private int createGLCategory (String JavaDoc Name, String JavaDoc CategoryType, boolean isDefault)
858     {
859         int GL_Category_ID = DB.getKeyNextNo(AD_Client_ID, "GL_Category");
860         StringBuffer JavaDoc sqlCmd = new StringBuffer JavaDoc ("INSERT INTO GL_Category ");
861         sqlCmd.append("(GL_Category_ID,").append(m_stdColumns).append(",")
862             .append("Name,CategoryType,IsDefault) VALUES (")
863             .append(GL_Category_ID).append(",").append(m_stdValues).append(",")
864             .append("'").append(Name).append("','").append(CategoryType).append("','")
865             .append(isDefault ? "Y" : "N").append("')");
866         int no = DB.executeUpdate(sqlCmd.toString());
867         if (no != 1)
868             Log.error("MSetup.createGLCategory - GL Category NOT created - " + Name);
869         //
870
return GL_Category_ID;
871     } // createGLCategory
872

873     /**
874      * Create Document Types with Sequence
875      * @param Name name
876      * @param PrintName print name
877      * @param DocBaseType document base type
878      * @param DocSubTypeSO sales order sub type
879      * @param C_DocTypeShipment_ID shipment doc
880      * @param C_DocTypeInvoice_ID invoice doc
881      * @param StartNo start doc no
882      * @param GL_Category_ID gl category
883      * @return C_DocType_ID doc type
884      */

885     private int createDocType (String JavaDoc Name, String JavaDoc PrintName,
886         String JavaDoc DocBaseType, String JavaDoc DocSubTypeSO,
887         int C_DocTypeShipment_ID, int C_DocTypeInvoice_ID,
888         int StartNo, int GL_Category_ID)
889     {
890         StringBuffer JavaDoc sqlCmd = null;
891         // Get Sequence
892
int AD_Sequence_ID = 0;
893         if (StartNo != 0) // manual sequenec, if startNo == 0
894
{
895             AD_Sequence_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Sequence");
896             sqlCmd = new StringBuffer JavaDoc ("INSERT INTO AD_Sequence ");
897             sqlCmd.append("(AD_Sequence_ID,").append(m_stdColumns).append(",");
898             sqlCmd.append("Name,IsAutoSequence,IncrementNo,StartNo,CurrentNext,");
899             sqlCmd.append("CurrentNextSys,IsTableID) VALUES (");
900             sqlCmd.append(AD_Sequence_ID).append(",").append(m_stdValues).append(",");
901             sqlCmd.append("'").append(Name).append("','Y',1,").append(StartNo).append(",").append(StartNo).append(",");
902             sqlCmd.append(StartNo/10).append(",'N')");
903             int no = DB.executeUpdate(sqlCmd.toString());
904             if (no != 1)
905                 Log.error("MSetup.createDocType - Sequence NOT created - " + Name);
906         }
907
908         // Get Document Type
909
int C_DocType_ID = DB.getKeyNextNo(AD_Client_ID, "C_DocType");
910         sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_DocType ");
911         sqlCmd.append("(C_DocType_ID,").append(m_stdColumns).append(",");
912         sqlCmd.append("Name,PrintName,DocBaseType,DocSubTypeSO,");
913         sqlCmd.append("C_DocTypeShipment_ID,C_DocTypeInvoice_ID,");
914         sqlCmd.append("IsDocNoControlled,DocNoSequence_ID,GL_Category_ID,");
915         sqlCmd.append("IsPrinted,IsTransferred,DocumentCopies,IsSOTrx)");
916         //
917
sqlCmd.append(" VALUES (").append(C_DocType_ID).append(",").append(m_stdValues).append(",");
918         // Name,PrintName,DocBaseType,DocSubTypeSO,
919
sqlCmd.append("'").append(Name).append("','").append(PrintName).append("','").append(DocBaseType).append("',");
920         if (DocSubTypeSO == null || DocSubTypeSO.length() == 0)
921             sqlCmd.append("NULL,");
922         else
923             sqlCmd.append("'").append(DocSubTypeSO).append("',");
924         // C_DocTypeShipment_ID,C_DocTypeInvoice_ID,
925
if (C_DocTypeShipment_ID == 0)
926             sqlCmd.append("NULL,");
927         else
928             sqlCmd.append(C_DocTypeShipment_ID).append(",");
929         if (C_DocTypeInvoice_ID == 0)
930             sqlCmd.append("NULL,");
931         else
932             sqlCmd.append(C_DocTypeInvoice_ID).append(",");
933         // IsDocNoControlled,DocNoSequence_ID,GL_Category_ID,
934
if (AD_Sequence_ID == 0)
935             sqlCmd.append("'N',NULL,");
936         else
937             sqlCmd.append("'Y',").append(AD_Sequence_ID).append(",");
938         sqlCmd.append(GL_Category_ID).append(",");
939         // IsPrinted,IsTransferred,DocumentCopies,IsSOTrx)
940
sqlCmd.append("'Y',");
941         if (DocBaseType.equals("SOO"))
942             sqlCmd.append("'N',");
943         else
944             sqlCmd.append("'Y',");
945         sqlCmd.append("0,");
946         if (DocBaseType.startsWith("AR") || DocBaseType.equals("MMS") || DocBaseType.equals("SOO"))
947             sqlCmd.append("'Y'");
948         else
949             sqlCmd.append("'N'");
950         sqlCmd.append(")");
951         int no = DB.executeUpdate(sqlCmd.toString());
952         if (no != 1)
953             Log.error("MSetup.createDocType - DocType NOT created - " + Name);
954         //
955
return C_DocType_ID;
956     } // createDocType
957

958     /*************************************************************************/
959
960     /**
961      * Create Default main entities.
962      * - Dimensions & BPGroup, Prod Category)
963      * - Location, Locator, Warehouse
964      * - PriceList
965      * - Cashbook, PaymentTerm
966      * @param C_Country_ID country
967      * @param City city
968      * @param C_Region_ID region
969      * @return true if created
970      */

971     public boolean createEntities (int C_Country_ID, String JavaDoc City, int C_Region_ID)
972     {
973         Log.trace(Log.l3_Util, "MSetup.createEntries", "C_Country_ID=" + C_Country_ID + ", City=" + City + ", C_Region_ID=" + C_Region_ID);
974         m_info.append("\n----\n");
975         //
976
String JavaDoc defaultName = Msg.translate(m_lang, "Standard");
977         String JavaDoc defaultEntry = "'" + defaultName + "',";
978         StringBuffer JavaDoc sqlCmd = null;
979         int no = 0;
980
981         // Create Marketing Channel/Campaign
982
int C_Channel_ID = DB.getKeyNextNo(AD_Client_ID, "C_Channel");
983         sqlCmd = new StringBuffer JavaDoc("INSERT INTO C_Channel ");
984         sqlCmd.append("(C_Channel_ID,Name,");
985         sqlCmd.append(m_stdColumns).append(") VALUES (");
986         sqlCmd.append(C_Channel_ID).append(",").append(defaultEntry);
987         sqlCmd.append(m_stdValues).append(")");
988         no = DB.executeUpdate(sqlCmd.toString());
989         if (no != 1)
990             Log.error("MSetup.createEntities - Channel NOT inserted");
991         int C_Campaign_ID = DB.getKeyNextNo(AD_Client_ID, "C_Campaign");
992         sqlCmd = new StringBuffer JavaDoc("INSERT INTO C_Campaign ");
993         sqlCmd.append("(C_Campaign_ID,C_Channel_ID,").append(m_stdColumns).append(",");
994         sqlCmd.append(" Value,Name,Costs) VALUES (");
995         sqlCmd.append(C_Campaign_ID).append(",").append(C_Channel_ID).append(",").append(m_stdValues).append(",");
996         sqlCmd.append(defaultEntry).append(defaultEntry).append("0)");
997         no = DB.executeUpdate(sqlCmd.toString());
998         if (no == 1)
999             m_info.append(Msg.translate(m_lang, "C_Campaign_ID")).append("=").append(defaultName).append("\n");
1000        else
1001            Log.error("MSetup.createEntities - Campaign NOT inserted");
1002        if (m_hasMCampaign)
1003        {
1004            // Default
1005
sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET ");
1006            sqlCmd.append("C_Campaign_ID=").append(C_Campaign_ID);
1007            sqlCmd.append(" WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID);
1008            sqlCmd.append(" AND ElementType='MC'");
1009            no = DB.executeUpdate(sqlCmd.toString());
1010            if (no != 1)
1011                Log.error("MSetup.createEntities - AcctSchema ELement Campaign NOT updated");
1012        }
1013
1014        // Create Sales Region
1015
int C_SalesRegion_ID = DB.getKeyNextNo(AD_Client_ID, "C_SalesRegion");
1016        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_SalesRegion ");
1017        sqlCmd.append("(C_SalesRegion_ID,").append(m_stdColumns).append(",");
1018        sqlCmd.append(" Value,Name,IsSummary) VALUES (");
1019        sqlCmd.append(C_SalesRegion_ID).append(",").append(m_stdValues).append(", ");
1020        sqlCmd.append(defaultEntry).append(defaultEntry).append("'N')");
1021        no = DB.executeUpdate(sqlCmd.toString());
1022        if (no == 1)
1023            m_info.append(Msg.translate(m_lang, "C_SalesRegion_ID")).append("=").append(defaultName).append("\n");
1024        else
1025            Log.error("MSetup.createEntities - SalesRegion NOT inserted");
1026        if (m_hasSRegion)
1027        {
1028            // Default
1029
sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET ");
1030            sqlCmd.append("C_SalesRegion_ID=").append(C_SalesRegion_ID);
1031            sqlCmd.append(" WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID);
1032            sqlCmd.append(" AND ElementType='SR'");
1033            no = DB.executeUpdate(sqlCmd.toString());
1034            if (no != 1)
1035                Log.error("MSetup.createEntities - AcctSchema ELement SalesRegion NOT updated");
1036        }
1037
1038        /**
1039         * Business Partner
1040         */

1041        // Create BP Group
1042
int C_BP_Group_ID = DB.getKeyNextNo(AD_Client_ID, "C_BP_Group");
1043        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BP_Group ");
1044        sqlCmd.append("(C_BP_Group_ID,").append(m_stdColumns).append(",");
1045        sqlCmd.append(" Value,Name,IsDefault) VALUES ( ");
1046        sqlCmd.append(C_BP_Group_ID).append(",").append(m_stdValues).append(", ");
1047        sqlCmd.append(defaultEntry).append(defaultEntry).append("'Y')");
1048        no = DB.executeUpdate(sqlCmd.toString());
1049        if (no == 1)
1050            m_info.append(Msg.translate(m_lang, "C_BP_Group_ID")).append("=").append(defaultName).append("\n");
1051        else
1052            Log.error("MSetup.createEntities - BP Group NOT inserted");
1053
1054        // Create BPartner
1055
int C_BPartner_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner");
1056        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner ");
1057        sqlCmd.append("(C_BPartner_ID,").append(m_stdColumns).append(",");
1058        sqlCmd.append("Value,Name,C_BP_Group_ID,IsSummary) VALUES (");
1059        sqlCmd.append(C_BPartner_ID).append(",").append(m_stdValues).append(", ");
1060        sqlCmd.append(defaultEntry).append(defaultEntry).append(C_BP_Group_ID).append(",'N')");
1061        no = DB.executeUpdate(sqlCmd.toString());
1062        if (no == 1)
1063            m_info.append(Msg.translate(m_lang, "C_BPartner_ID")).append("=").append(defaultName).append("\n");
1064        else
1065            Log.error("MSetup.createEntities - BPartner NOT inserted");
1066        // Default
1067
sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET ");
1068        sqlCmd.append("C_BPartner_ID=").append(C_BPartner_ID);
1069        sqlCmd.append(" WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID);
1070        sqlCmd.append(" AND ElementType='BP'");
1071        no = DB.executeUpdate(sqlCmd.toString());
1072        if (no != 1)
1073            Log.error("MSetup.createEntities - AcctSchema Element BPartner NOT updated");
1074        createPreference("C_BPartner_ID", String.valueOf(C_BPartner_ID), 143);
1075
1076        /**
1077         * Product
1078         */

1079        // Create Product Category
1080
int M_Product_Category_ID = DB.getKeyNextNo(AD_Client_ID, "M_Product_Category");
1081        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_Product_Category ");
1082        sqlCmd.append("(M_Product_Category_ID,").append(m_stdColumns).append(",");
1083        sqlCmd.append(" Value,Name,IsDefault,PlannedMargin) VALUES (");
1084        sqlCmd.append(M_Product_Category_ID).append(",").append(m_stdValues).append(", ");
1085        sqlCmd.append(defaultEntry).append(defaultEntry).append("'Y',0)");
1086        no = DB.executeUpdate(sqlCmd.toString());
1087        if (no == 1)
1088            m_info.append(Msg.translate(m_lang, "M_Product_Category_ID")).append("=").append(defaultName).append("\n");
1089        else
1090            Log.error("MSetup.createEntities - Product Category NOT inserted");
1091
1092        // UOM (EA)
1093
int C_UOM_ID = 100;
1094
1095        // TaxCategory
1096
int C_TaxCategory_ID = DB.getKeyNextNo(AD_Client_ID, "C_TaxCategory");
1097        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_TaxCategory ");
1098        sqlCmd.append("(C_TaxCategory_ID,").append(m_stdColumns).append(",");
1099        sqlCmd.append(" Name,IsDefault) VALUES (");
1100        sqlCmd.append(C_TaxCategory_ID).append(",").append(m_stdValues).append(", ");
1101        if (C_Country_ID == 100) // US
1102
sqlCmd.append("'Sales Tax','Y')");
1103        else
1104            sqlCmd.append(defaultEntry).append("'Y')");
1105        no = DB.executeUpdate(sqlCmd.toString());
1106        if (no != 1)
1107            Log.error("MSetup.createEntities - TaxCategory NOT inserted");
1108
1109        // Tax - Zero Rate
1110
// MTax tax = new MTax (m_ctx, "Standard", Env.ZERO, C_TaxCategory_ID);
1111
int C_Tax_ID = DB.getKeyNextNo(AD_Client_ID, "C_Tax");
1112        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Tax ");
1113        sqlCmd.append("(C_Tax_ID,").append(m_stdColumns).append(",");
1114        sqlCmd.append(" Name,Rate,C_TaxCategory_ID,C_Country_ID,TO_Country_ID,ValidFrom,SoPoType,IsDefault) VALUES (");
1115        sqlCmd.append(C_Tax_ID).append(",").append(m_stdValues).append(", ");
1116        sqlCmd.append(defaultEntry).append("0,").append(C_TaxCategory_ID).append(",")
1117            .append(C_Country_ID).append(",").append(C_Country_ID)
1118            .append(",TO_DATE('1990-01-01','YYYY-MM-DD'),'B','Y')");
1119        no = DB.executeUpdate(sqlCmd.toString());
1120        if (no == 1)
1121            m_info.append(Msg.translate(m_lang, "C_Tax_ID")).append("=").append(defaultName).append("\n");
1122        else
1123            Log.error("MSetup.createEntities - Tax NOT inserted");
1124
1125        // Create Product
1126
int M_Product_ID = DB.getKeyNextNo(AD_Client_ID, "M_Product");
1127        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_Product ");
1128        sqlCmd.append("(M_Product_ID,").append(m_stdColumns).append(",");
1129        sqlCmd.append(" Value,Name,C_UOM_ID,M_Product_Category_ID,C_TaxCategory_ID) VALUES (");
1130        sqlCmd.append(M_Product_ID).append(",").append(m_stdValues).append(", ");
1131        sqlCmd.append(defaultEntry).append(defaultEntry);
1132        sqlCmd.append(C_UOM_ID).append(",").append(M_Product_Category_ID).append(",");
1133        sqlCmd.append(C_TaxCategory_ID).append(")");
1134        no = DB.executeUpdate(sqlCmd.toString());
1135        if (no == 1)
1136            m_info.append(Msg.translate(m_lang, "M_Product_ID")).append("=").append(defaultName).append("\n");
1137        else
1138            Log.error("MSetup.createEntities - Product NOT inserted");
1139        // Default
1140
sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET ");
1141        sqlCmd.append("M_Product_ID=").append(M_Product_ID);
1142        sqlCmd.append(" WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID);
1143        sqlCmd.append(" AND ElementType='PR'");
1144        no = DB.executeUpdate(sqlCmd.toString());
1145        if (no != 1)
1146            Log.error("MSetup.createEntities - AcctSchema Element Product NOT updated");
1147
1148        /**
1149         * Warehouse
1150         */

1151        // Location (Company)
1152
int C_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_Location");
1153        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Location ")
1154            .append("(C_Location_ID,").append(m_stdColumns).append(",")
1155            .append("City,C_Country_ID,C_Region_ID) VALUES (");
1156        sqlCmd.append(C_Location_ID).append(",").append(m_stdValues).append(",")
1157            .append("'").append(City).append("',").append(C_Country_ID).append(",");
1158        if (C_Region_ID != 0)
1159            sqlCmd.append(C_Region_ID).append(")");
1160        else
1161            sqlCmd.append("null)");
1162        DB.executeUpdate(sqlCmd.toString());
1163        sqlCmd = new StringBuffer JavaDoc ("UPDATE AD_OrgInfo SET C_Location_ID=");
1164        sqlCmd.append(C_Location_ID).append(" WHERE AD_Org_ID=").append(AD_Org_ID);
1165        no = DB.executeUpdate(sqlCmd.toString());
1166        if (no != 1)
1167            Log.error("MSetup.createEntities - Location NOT inserted");
1168        createPreference("C_Country_ID", String.valueOf(C_Country_ID), 0);
1169
1170        // Default Warehouse
1171
int M_Warehouse_ID = DB.getKeyNextNo(AD_Client_ID, "M_Warehouse");
1172        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_Warehouse ");
1173        sqlCmd.append("(M_Warehouse_ID,").append(m_stdColumns).append(",");
1174        sqlCmd.append(" Value,Name,C_Location_ID,Separator) VALUES (");
1175        sqlCmd.append(M_Warehouse_ID).append(",").append(m_stdValues).append(", ");
1176        sqlCmd.append(defaultEntry).append(defaultEntry).append(C_Location_ID).append(",'-')");
1177        no = DB.executeUpdate(sqlCmd.toString());
1178        if (no != 1)
1179            Log.error("MSetup.createEntities - Warehouse NOT inserted");
1180
1181        // Locator
1182
int M_Locator_ID = DB.getKeyNextNo(AD_Client_ID, "M_Locator");
1183        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_Locator ");
1184        sqlCmd.append("(M_Locator_ID,").append(m_stdColumns).append(",");
1185        sqlCmd.append(" Value,M_Warehouse_ID,X,Y,Z,PriorityNo,IsDefault) VALUES (");
1186        sqlCmd.append(M_Locator_ID).append(",").append(m_stdValues).append(", ");
1187        sqlCmd.append(defaultEntry).append(M_Warehouse_ID).append(",0,0,0,50,'Y')");
1188        no = DB.executeUpdate(sqlCmd.toString());
1189        if (no != 1)
1190            Log.error("MSetup.createEntities - Locator NOT inserted");
1191
1192        // Update ClientInfo
1193
sqlCmd = new StringBuffer JavaDoc ("UPDATE AD_ClientInfo SET ");
1194        sqlCmd.append("C_BPartnerCashTrx_ID=").append(C_BPartner_ID);
1195        sqlCmd.append(",M_ProductFreight_ID=").append(M_Product_ID);
1196// sqlCmd.append("C_UOM_Volume_ID=");
1197
// sqlCmd.append(",C_UOM_Weight_ID=");
1198
// sqlCmd.append(",C_UOM_Length_ID=");
1199
// sqlCmd.append(",C_UOM_Time_ID=");
1200
sqlCmd.append(" WHERE AD_Client_ID=").append(AD_Client_ID);
1201        no = DB.executeUpdate(sqlCmd.toString());
1202        if (no != 1)
1203        {
1204            String JavaDoc err = "MSetup.createEntities - ClientInfo not updated";
1205            Log.error(err);
1206            m_info.append(err);
1207            return false;
1208        }
1209
1210        /**
1211         * Other
1212         */

1213        // PriceList
1214
int M_PriceList_ID = DB.getKeyNextNo(AD_Client_ID, "M_PriceList");
1215        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_PriceList ");
1216        sqlCmd.append("(M_PriceList_ID,").append(m_stdColumns).append(",");
1217        sqlCmd.append(" Name,C_Currency_ID,IsDefault) VALUES (");
1218        sqlCmd.append(M_PriceList_ID).append(",").append(m_stdValues).append(", ");
1219        sqlCmd.append(defaultEntry).append(C_Currency_ID).append(",'Y')");
1220        no = DB.executeUpdate(sqlCmd.toString());
1221        if (no != 1)
1222            Log.error("MSetup.createEntities - PriceList NOT inserted");
1223        // DiscountSchema
1224
int M_DiscountSchema_ID = DB.getKeyNextNo(AD_Client_ID, "M_DiscountSchema");
1225        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_DiscountSchema ");
1226        sqlCmd.append("(M_DiscountSchema_ID,").append(m_stdColumns).append(",");
1227        sqlCmd.append(" Name,ValidFrom,DiscountType, FlatDiscount) VALUES (");
1228        sqlCmd.append(M_DiscountSchema_ID).append(",").append(m_stdValues).append(", ");
1229        sqlCmd.append(defaultEntry).append("SysDate,'P',0)"); // PriceList
1230
no = DB.executeUpdate(sqlCmd.toString());
1231        if (no != 1)
1232            Log.error("MSetup.createEntities - DiscountSchema NOT inserted");
1233        // PriceList Version
1234
int M_PriceList_Version_ID = DB.getKeyNextNo(AD_Client_ID, "M_PriceList_Version");
1235        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_PriceList_Version ");
1236        sqlCmd.append("(M_PriceList_Version_ID,").append(m_stdColumns).append(",");
1237        sqlCmd.append(" Name,ValidFrom,M_PriceList_ID,M_DiscountSchema_ID) VALUES (");
1238        sqlCmd.append(M_PriceList_Version_ID).append(",").append(m_stdValues).append(",");
1239        sqlCmd.append("TO_CHAR(SysDate,'YYYY-MM-DD'),SysDate,").append(M_PriceList_ID)
1240            .append(",").append(M_DiscountSchema_ID).append(")");
1241        no = DB.executeUpdate(sqlCmd.toString());
1242        if (no != 1)
1243            Log.error("MSetup.createEntities - PriceList_Version NOT inserted");
1244        // ProductPrice
1245
sqlCmd = new StringBuffer JavaDoc ("INSERT INTO M_ProductPrice ");
1246        sqlCmd.append("(M_PriceList_Version_ID,").append(m_stdColumns).append(",");
1247        sqlCmd.append("M_Product_ID,PriceList,PriceStd,PriceLimit) VALUES (");
1248        sqlCmd.append(M_PriceList_Version_ID).append(",").append(m_stdValues).append(",");
1249        sqlCmd.append(M_Product_ID).append(",1,1,1)");
1250        no = DB.executeUpdate(sqlCmd.toString());
1251        if (no != 1)
1252            Log.error("MSetup.createEntities - ProductPrice NOT inserted");
1253
1254        // Location for Standard BP
1255
C_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_Location");
1256        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Location ")
1257            .append("(C_Location_ID,").append(m_stdColumns).append(",")
1258            .append("City,C_Country_ID,C_Region_ID) VALUES (");
1259        sqlCmd.append(C_Location_ID).append(",").append(m_stdValues).append(",")
1260            .append("'").append(City).append("',").append(C_Country_ID).append(",");
1261        if (C_Region_ID != 0)
1262            sqlCmd.append(C_Region_ID).append(")");
1263        else
1264            sqlCmd.append("null)");
1265        DB.executeUpdate(sqlCmd.toString());
1266        int C_BPartner_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner_Location");
1267        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner_Location ");
1268        sqlCmd.append("(C_BPartner_Location_ID,").append(m_stdColumns).append(",");
1269        sqlCmd.append("Name,C_BPartner_ID,C_Location_ID) VALUES (");
1270        sqlCmd.append(C_BPartner_Location_ID).append(",").append(m_stdValues).append(",");
1271        sqlCmd.append("'").append(City).append("',").append(C_BPartner_ID).append(",").append(C_Location_ID).append(")");
1272        no = DB.executeUpdate(sqlCmd.toString());
1273        if (no != 1)
1274            Log.error("MSetup.createEntities - BP_Location (Standard) NOT inserted");
1275
1276        // Create Sales Rep for Client-User
1277
C_BPartner_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner");
1278        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner ");
1279        sqlCmd.append("(C_BPartner_ID,").append(m_stdColumns).append(",");
1280        sqlCmd.append("Value,Name,C_BP_Group_ID,IsSummary,IsEmployee,IsSalesRep,IsVendor) VALUES (");
1281        sqlCmd.append(C_BPartner_ID).append(",").append(m_stdValues).append(",");
1282        sqlCmd.append("'").append(AD_User_U_Name).append("','").append(AD_User_U_Name).append("',");
1283        sqlCmd.append(C_BP_Group_ID).append(",'N','Y','Y','Y')");
1284        no = DB.executeUpdate(sqlCmd.toString());
1285        if (no == 1)
1286            m_info.append(Msg.translate(m_lang, "SalesRep_ID")).append("=").append(AD_User_U_Name).append("\n");
1287        else
1288            Log.error("MSetup.createEntities - SalesRep (User) NOT inserted");
1289        // Update User
1290
sqlCmd = new StringBuffer JavaDoc ("UPDATE AD_User SET C_BPartner_ID=");
1291        sqlCmd.append(C_BPartner_ID).append(" WHERE AD_User_ID=").append(AD_User_U_ID);
1292        no = DB.executeUpdate(sqlCmd.toString());
1293        if (no != 1)
1294            Log.error("MSetup.createEntities - User of SalesRep (User) NOT updated");
1295
1296        // Location for Client-User
1297
C_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_Location");
1298        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Location ")
1299            .append("(C_Location_ID,").append(m_stdColumns).append(",")
1300            .append("City,C_Country_ID,C_Region_ID) VALUES (");
1301        sqlCmd.append(C_Location_ID).append(",").append(m_stdValues).append(",")
1302            .append("'").append(City).append("',").append(C_Country_ID).append(",");
1303        if (C_Region_ID != 0)
1304            sqlCmd.append(C_Region_ID).append(")");
1305        else
1306            sqlCmd.append("null)");
1307        DB.executeUpdate(sqlCmd.toString());
1308        C_BPartner_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner_Location");
1309        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner_Location ");
1310        sqlCmd.append("(C_BPartner_Location_ID,").append(m_stdColumns).append(",");
1311        sqlCmd.append("Name,C_BPartner_ID,C_Location_ID) VALUES (");
1312        sqlCmd.append(C_BPartner_Location_ID).append(",").append(m_stdValues).append(",");
1313        sqlCmd.append("'").append(City).append("',").append(C_BPartner_ID).append(",").append(C_Location_ID).append(")");
1314        no = DB.executeUpdate(sqlCmd.toString());
1315        if (no != 1)
1316            Log.error("MSetup.createEntities - BP_Location (User) NOT inserted");
1317
1318
1319        // Create Sales Rep for Client-Admin
1320
C_BPartner_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner");
1321        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner ");
1322        sqlCmd.append("(C_BPartner_ID,").append(m_stdColumns).append(",");
1323        sqlCmd.append("Value,Name,C_BP_Group_ID,IsSummary,IsEmployee,IsSalesRep,IsVendor) VALUES (");
1324        sqlCmd.append(C_BPartner_ID).append(",").append(m_stdValues).append(",");
1325        sqlCmd.append("'").append(AD_User_Name).append("','").append(AD_User_Name).append("',");
1326        sqlCmd.append(C_BP_Group_ID).append(",'N','Y','Y','Y')");
1327        no = DB.executeUpdate(sqlCmd.toString());
1328        if (no == 1)
1329            m_info.append(Msg.translate(m_lang, "SalesRep_ID")).append("=").append(AD_User_Name).append("\n");
1330        else
1331            Log.error("MSetup.createEntities - SalesRep (Admin) NOT inserted");
1332        // Update User
1333
sqlCmd = new StringBuffer JavaDoc ("UPDATE AD_User SET C_BPartner_ID=");
1334        sqlCmd.append(C_BPartner_ID).append(" WHERE AD_User_ID=").append(AD_User_ID);
1335        no = DB.executeUpdate(sqlCmd.toString());
1336        if (no != 1)
1337            Log.error("MSetup.createEntities - User of SalesRep (Admin) NOT updated");
1338
1339        // Location for Client-Admin
1340
C_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_Location");
1341        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Location ")
1342            .append("(C_Location_ID,").append(m_stdColumns).append(",")
1343            .append("City,C_Country_ID,C_Region_ID) VALUES (");
1344        sqlCmd.append(C_Location_ID).append(",").append(m_stdValues).append(",")
1345            .append("'").append(City).append("',").append(C_Country_ID).append(",");
1346        if (C_Region_ID != 0)
1347            sqlCmd.append(C_Region_ID).append(")");
1348        else
1349            sqlCmd.append("null)");
1350        DB.executeUpdate(sqlCmd.toString());
1351        C_BPartner_Location_ID = DB.getKeyNextNo(AD_Client_ID, "C_BPartner_Location");
1352        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_BPartner_Location ");
1353        sqlCmd.append("(C_BPartner_Location_ID,").append(m_stdColumns).append(",");
1354        sqlCmd.append("Name,C_BPartner_ID,C_Location_ID) VALUES (");
1355        sqlCmd.append(C_BPartner_Location_ID).append(",").append(m_stdValues).append(",");
1356        sqlCmd.append("'").append(City).append("',").append(C_BPartner_ID).append(",").append(C_Location_ID).append(")");
1357        no = DB.executeUpdate(sqlCmd.toString());
1358        if (no != 1)
1359            Log.error("MSetup.createEntities - BP_Location (Admin) NOT inserted");
1360
1361
1362        // Payment Term
1363
int C_PaymentTerm_ID = DB.getKeyNextNo(AD_Client_ID, "C_PaymentTerm");
1364        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_PaymentTerm ");
1365        sqlCmd.append("(C_PaymentTerm_ID,").append(m_stdColumns).append(",");
1366        sqlCmd.append("Value,Name,NetDays,GraceDays,DiscountDays,Discount,DiscountDays2,Discount2,IsDefault) VALUES (");
1367        sqlCmd.append(C_PaymentTerm_ID).append(",").append(m_stdValues).append(",");
1368        sqlCmd.append("'Immediate','Immediate',0,0,0,0,0,0,'Y')");
1369        no = DB.executeUpdate(sqlCmd.toString());
1370        if (no != 1)
1371            Log.error("MSetup.createEntities - PaymentTerm NOT inserted");
1372
1373        // Project Cycle
1374
C_Cycle_ID = DB.getKeyNextNo(AD_Client_ID, "C_Cycle");
1375        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Cycle ");
1376        sqlCmd.append("(C_Cycle_ID,").append(m_stdColumns).append(",");
1377        sqlCmd.append(" Name,C_Currency_ID) VALUES (");
1378        sqlCmd.append(C_Cycle_ID).append(",").append(m_stdValues).append(", ");
1379        sqlCmd.append(defaultEntry).append(C_Currency_ID).append(")");
1380        no = DB.executeUpdate(sqlCmd.toString());
1381        if (no != 1)
1382            Log.error("MSetup.createEntities - Cycle NOT inserted");
1383
1384        /**
1385         * Organization level data ===========================================
1386         */

1387
1388        // Create Default Project
1389
int C_Project_ID = DB.getKeyNextNo(AD_Client_ID, "C_Project");
1390        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_Project ");
1391        sqlCmd.append("(C_Project_ID,").append(m_stdColumns).append(",");
1392        sqlCmd.append(" Value,Name,C_Currency_ID,IsSummary) VALUES (");
1393        sqlCmd.append(C_Project_ID).append(",").append(m_stdValuesOrg).append(", ");
1394        sqlCmd.append(defaultEntry).append(defaultEntry).append(C_Currency_ID).append(",'N')");
1395        no = DB.executeUpdate(sqlCmd.toString());
1396        if (no == 1)
1397            m_info.append(Msg.translate(m_lang, "C_Project_ID")).append("=").append(defaultName).append("\n");
1398        else
1399            Log.error("MSetup.createEntities - Project NOT inserted");
1400        // Default Project
1401
if (m_hasProject)
1402        {
1403            sqlCmd = new StringBuffer JavaDoc ("UPDATE C_AcctSchema_Element SET ");
1404            sqlCmd.append("C_Project_ID=").append(C_Project_ID);
1405            sqlCmd.append(" WHERE C_AcctSchema_ID=").append(C_AcctSchema_ID);
1406            sqlCmd.append(" AND ElementType='PJ'");
1407            no = DB.executeUpdate(sqlCmd.toString());
1408            if (no != 1)
1409                Log.error("MSetup.createEntities - AcctSchema ELement Project NOT updated");
1410        }
1411
1412        // CashBook
1413
int C_CashBook_ID = DB.getKeyNextNo(AD_Client_ID, "C_CashBook");
1414        sqlCmd = new StringBuffer JavaDoc ("INSERT INTO C_CashBook ");
1415        sqlCmd.append("(C_CashBook_ID,").append(m_stdColumns).append(",");
1416        sqlCmd.append(" Name,C_Currency_ID) VALUES (");
1417        sqlCmd.append(C_CashBook_ID).append(",").append(m_stdValuesOrg).append(", ");
1418        sqlCmd.append(defaultEntry).append(C_Currency_ID).append(")");
1419        no = DB.executeUpdate(sqlCmd.toString());
1420        if (no == 1)
1421            m_info.append(Msg.translate(m_lang, "C_CashBook_ID")).append("=").append(defaultName).append("\n");
1422        else
1423            Log.error("MSetup.createEntities - CashBook NOT inserted");
1424
1425        return true;
1426    } // createEntities
1427

1428    /**
1429     * Create Preference
1430     * @param Attribute attribute
1431     * @param Value value
1432     * @param AD_Window_ID window
1433     */

1434    private void createPreference (String JavaDoc Attribute, String JavaDoc Value, int AD_Window_ID)
1435    {
1436        int AD_Preference_ID = DB.getKeyNextNo(AD_Client_ID, "AD_Preference");
1437        StringBuffer JavaDoc sqlCmd = new StringBuffer JavaDoc ("INSERT INTO AD_Preference ");
1438        sqlCmd.append("(AD_Preference_ID,").append(m_stdColumns).append(",");
1439        sqlCmd.append("Attribute,Value,AD_Window_ID) VALUES (");
1440        sqlCmd.append(AD_Preference_ID).append(",").append(m_stdValues).append(",");
1441        sqlCmd.append("'").append(Attribute).append("','").append(Value).append("',");
1442        if (AD_Window_ID == 0)
1443            sqlCmd.append("NULL)");
1444        else
1445            sqlCmd.append(AD_Window_ID).append(")");
1446        int no = DB.executeUpdate(sqlCmd.toString());
1447        if (no != 1)
1448            Log.error("MSetup.createPreference - Preference NOT inserted - " + Attribute);
1449    } // createPreference
1450

1451    /*************************************************************************/
1452
1453    /**
1454     * Get Client
1455     * @return AD_Client_ID
1456     */

1457    public int getAD_Client_ID()
1458    {
1459        return AD_Client_ID;
1460    }
1461    public int getAD_Org_ID()
1462    {
1463        return AD_Org_ID;
1464    }
1465    public int getAD_User_ID()
1466    {
1467        return AD_User_ID;
1468    }
1469    public int getAD_Role_ID()
1470    {
1471        return AD_Role_ID;
1472    }
1473    public int getC_AcctSchema_ID()
1474    {
1475        return C_AcctSchema_ID;
1476    }
1477    public String JavaDoc getInfo()
1478    {
1479        return m_info.toString();
1480    }
1481} // MSetup
1482
Popular Tags