Beispiel #1
0
        /// <summary>
        /// Create element for the new account
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="m_AD_Org_ID"></param>
        /// <param name="value"></param>
        /// <param name="name"></param>
        /// <param name="isExpenseType"></param>
        /// <param name="m_C_Element_ID"></param>
        /// <returns></returns>
        public int CreateElementValue(Ctx ctx, int m_AD_Org_ID, String value, String name, Boolean isExpenseType, int m_C_Element_ID)
        {
            MElementValue ev = new MElementValue(ctx, value, name, null,
                                                 isExpenseType ? X_C_ElementValue.ACCOUNTTYPE_Expense : X_C_ElementValue.ACCOUNTTYPE_Revenue,
                                                 X_C_ElementValue.ACCOUNTSIGN_Natural,
                                                 false, false, null);

            ev.SetC_Element_ID(m_C_Element_ID);
            ev.SetAD_Org_ID(m_AD_Org_ID);
            if (!ev.Save())
            {
                //log.Log(Level.WARNING, "C_ElementValue_ID not created");
                Msg = "C_ElementValue_ID not created";
            }
            ID = ev.GetC_ElementValue_ID();
            return(ev.GetC_ElementValue_ID());
        }
        protected override string DoIt()
        {
            string msg       = "";
            string extension = filename;
            int    ind       = filename.LastIndexOf(".");

            extension = filename.Substring(ind, filename.Length - ind);
            int client = Util.GetValueOfInt(GetAD_Client_ID());
            int user   = GetAD_User_ID();

            if (extension.ToUpper() == ".XLS" || extension.ToUpper() == ".CSV")
            {
                try
                {
                    /////////////////lakhwinder
                    ExcelReader           reader = new ExcelReader(1, 1);
                    System.Data.DataTable dt     = reader.ExtractDataTable("D:\\gh.xls", "Sheet1$"); //extract all the records form excel to DataTable

                    /////////////////
                    //excel = AutomationFactory.CreateObject("Excel.Application");
                    //excel.Visible = true;
                    ////dynamic objExcel = AutomationFactory.CreateObject("Excel.Application");

                    //Microsoft.Office.Interop.Excel.Application xlsApp1;
                    //Microsoft.Office.Interop.Excel.Workbook xlsWorkbook1;
                    //Microsoft.Office.Interop.Excel.Worksheets xlsWorksheet1;

                    //Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
                    //Microsoft.Office.Interop.Excel.Workbook xlsWrkBook = (Microsoft.Office.Interop.Excel.Workbook)xlsApp.Workbooks.Open(filename, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);//
                    //Microsoft.Office.Interop.Excel.Worksheet wrkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsWrkBook.Worksheets.get_Item(1);

                    // Microsoft.Office.Interop.Excel.ApplicationClass xlsApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                    //  Microsoft.Office.Interop.Excel.WorkbookClass xlsWrkBook = (Microsoft.Office.Interop.Excel.WorkbookClass)xlsApp.Workbooks.Open(filename, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);//
                    //Microsoft.Office.Interop.Excel.Worksheet wrkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsWrkBook.Worksheets.get_Item(1);
                    //string name = wrkSheet.Name.ToString();
                    //OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties=Excel 8.0");
                    //OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + name + "$]", con);
                    //da.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        sql = "select ad_tree_id from c_element where c_element_id = " + C_Elememt_ID + " and ad_client_id = " + client;
                        int ad_tree_id = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            string key = Util.GetValueOfString(dt.Rows[i]["(Account_Value)"]);
                            if (key != "")
                            {
                                sql = "select c_elementvalue_id from c_elementvalue where value = '" + key + "' and ad_client_id = " + client;
                                int C_ElementValue_ID1 = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                                if (C_ElementValue_ID1 == 0)
                                {
                                    int parent_ID = Util.GetValueOfInt(dt.Rows[i]["(Account_Parent)"]);
                                    sql = "select c_elementvalue_id from c_elementvalue where value = '" + parent_ID + "' and ad_client_id = " + Util.GetValueOfInt(GetAD_Client_ID());
                                    int           C_ElementValue_ID_Parent = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                                    MElementValue eleValue          = new MElementValue(GetCtx(), 0, null);
                                    int           C_ElementValue_ID = DB.GetNextID(GetAD_Client_ID(), "C_ElementValue", null);
                                    string        accSign           = Util.GetValueOfString(dt.Rows[i]["(Account_Sign)"]);
                                    if (accSign == "")
                                    {
                                        eleValue.SetAccountSign("N");
                                    }
                                    else
                                    {
                                        eleValue.SetAccountSign(accSign);
                                    }
                                    eleValue.SetC_Element_ID(C_Elememt_ID);
                                    eleValue.SetC_ElementValue_ID(C_ElementValue_ID);
                                    eleValue.SetValue(Util.GetValueOfString(dt.Rows[i]["(Account_Value)"]));
                                    eleValue.SetName(Util.GetValueOfString(dt.Rows[i]["(Account_Name)"]));
                                    eleValue.SetDescription(Util.GetValueOfString(dt.Rows[i]["(Account_Description)"]));
                                    eleValue.SetIsActive(true);
                                    // For Summary
                                    if (dt.Rows[i]["(Account_Summary)"].ToString().ToUpper() == "YES")
                                    {
                                        eleValue.SetIsSummary(true);
                                    }
                                    else
                                    {
                                        eleValue.SetIsSummary(false);
                                    }
                                    // For Account Type
                                    if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "ASSET")
                                    {
                                        eleValue.SetAccountType("A");
                                    }
                                    else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "LIABILITY")
                                    {
                                        eleValue.SetAccountType("L");
                                    }
                                    else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "OWNER'S EQUITY")
                                    {
                                        eleValue.SetAccountType("O");
                                    }
                                    else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "REVENUE")
                                    {
                                        eleValue.SetAccountType("R");
                                    }
                                    else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "EXPENSE")
                                    {
                                        eleValue.SetAccountType("E");
                                    }
                                    else
                                    {
                                        eleValue.SetAccountType("M");
                                    }

                                    if (!eleValue.Save())
                                    {
                                        log.SaveError("NotSaved", "");
                                        return(msg);
                                    }
                                    VAdvantage.Model.MTree obj = new VAdvantage.Model.MTree(GetCtx(), ad_tree_id, null);
                                    C_ElementValue_ID = C_ElementValue_ID + 1;
                                    VAdvantage.Model.MTreeNode mNode = new VAdvantage.Model.MTreeNode(obj, C_ElementValue_ID);
                                    mNode.SetParent_ID(C_ElementValue_ID_Parent);
                                    if (!mNode.Save())
                                    {
                                        log.SaveError("NodeNotSaved", "");
                                        return(msg);
                                    }
                                }
                            }
                        }
                    }
                    msg = Msg.GetMsg(GetCtx(), "ImportedSuccessfully");
                    return(msg);
                }
                catch
                {
                    msg = Msg.GetMsg(GetCtx(), "ExcelSheetNotInProperFormat");
                    return(msg);
                }
            }
            else
            {
                msg = Msg.GetMsg(GetCtx(), "UseDefaultExcelSheet");
                return(msg);
            }
        }
        protected override string DoIt()
        {
            string extension = filename;
            string path      = HostingEnvironment.ApplicationPhysicalPath;

            if (filename.Contains("_FileCtrl"))
            {
                path = path + "TempDownload//" + filename;
                if (Directory.Exists(path))
                {
                    string[] files = Directory.GetFiles(path);
                    if (files != null && files.Length > 0)
                    {
                        filename = "//" + Path.GetFileName(files[0]);
                    }
                }
                else
                {
                    _message = Msg.GetMsg(GetCtx(), "PathNotExist");
                    return(_message);
                }
            }

            int ind = filename.LastIndexOf(".");

            extension = filename.Substring(ind, filename.Length - ind);

            int client = Util.GetValueOfInt(GetAD_Client_ID());
            int user   = GetAD_User_ID();

            sql = "select ad_tree_id from c_element where c_element_id = " + C_Elememt_ID + " and ad_client_id = " + client;
            int   ad_tree_id = 0;
            MTree tree       = null;

            try
            {
                ad_tree_id = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                tree       = new MTree(GetCtx(), ad_tree_id, null);
            }
            catch
            {
                ad_tree_id = 0;
            }
            if (ad_tree_id == 0)
            {
                _message = Msg.GetMsg(GetCtx(), "TreeNotBind");
                return(_message);
            }

            //  if (extension.ToUpper() == ".XLSX" || extension.ToUpper() == ".XLS" || extension.ToUpper() == ".CSV")
            if (extension.ToUpper() == ".XLSX" || extension.ToUpper() == ".CSV")
            {
                try
                {
                    DataSet ds = ImportExcelXLS(path + filename, false);

                    System.Data.DataTable dt = null;
                    if (ds != null)
                    {
                        dt = ds.Tables[0];
                    }

                    if (dt != null && dt.Rows.Count > 0)
                    {
                        //if (ad_tree_id == 0)
                        //{
                        //    int tableID = Convert.ToInt32(DB.ExecuteScalar("select ad_table_id from ad_table where lower(tablename)='vactwz_elementvalue'"));

                        //    tree = new MTree(GetCtx(), 0, null);

                        //    tree.SetName(CreateName("AcctWiz"));


                        //    tree.SetAD_Table_ID(tableID);
                        //    //tree.SetTreeType("EV");
                        //    tree.Save();
                        //    ad_tree_id = tree.Get_ID();
                        //}
                        MElementValue eleValue = null;
                        string        key      = "";
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            key = Util.GetValueOfString(dt.Rows[i]["(Account_Value)"]);
                            if (key != "")
                            {
                                sql = " SELECT c_elementvalue_id FROM c_elementvalue WHERE IsActive='Y' AND C_ELEMENT_ID=" + C_Elememt_ID + " AND value = '" + key + "' AND ad_client_id = " + client;
                                int C_ElementValue_ID = 0;
                                try
                                {
                                    C_ElementValue_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                                }
                                catch
                                {
                                    C_ElementValue_ID = 0;
                                }

                                eleValue = new MElementValue(GetCtx(), C_ElementValue_ID, null);

                                string parent_ID = Util.GetValueOfString(dt.Rows[i]["(Account_Parent)"]);
                                sql = "SELECT c_elementvalue_id FROM c_elementvalue WHERE IsActive='Y' AND C_Element_ID=" + C_Elememt_ID + " AND value = '" + parent_ID + "' AND ad_client_id = " + client;
                                int C_ElementValue_ID_Parent = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                                try
                                {
                                    C_ElementValue_ID_Parent = Util.GetValueOfInt(DB.ExecuteScalar(sql));
                                }
                                catch
                                {
                                    C_ElementValue_ID_Parent = 0;
                                }
                                //eleValue = new MElementValue(GetCtx(), 0, null);
                                //int C_ElementValue_ID = DB.GetNextID(GetAD_Client_ID(), "VACTWZ_ELEMENTVALUE", null);
                                string accSign = Util.GetValueOfString(dt.Rows[i]["(Account_Sign)"]);
                                if (accSign == "")
                                {
                                    eleValue.SetAccountSign("N");
                                }
                                else
                                {
                                    eleValue.SetAccountSign(accSign);
                                }
                                eleValue.SetC_Element_ID(C_Elememt_ID);
                                // eleValue.SetC_ElementValue_ID(C_ElementValue_ID);
                                eleValue.SetValue(Util.GetValueOfString(dt.Rows[i]["(Account_Value)"]));
                                eleValue.SetName(Util.GetValueOfString(dt.Rows[i]["(Account_Name)"]));
                                eleValue.SetDescription(Util.GetValueOfString(dt.Rows[i]["(Account_Description)"]));
                                eleValue.SetIsActive(true);
                                // For Summary
                                if (dt.Rows[i]["(Account_Summary)"].ToString().ToUpper() == "YES")
                                {
                                    eleValue.SetIsSummary(true);
                                }
                                else
                                {
                                    eleValue.SetIsSummary(false);
                                }
                                //For DefaultAccount
                                if (dt.Rows[i]["(Account_Document)"].ToString().ToUpper() == "YES")
                                {
                                    ///******************** Commented
                                    eleValue.SetIsDefault(true);
                                }
                                else
                                {
                                    ///******************** Commented
                                    eleValue.SetIsDefault(false);
                                }
                                //for MasterType
                                if (!string.IsNullOrEmpty(Util.GetValueOfString(dt.Rows[i]["(Master_Type)"])))
                                {
                                    eleValue.SetMasterAccountType(dt.Rows[i]["(Master_Type)"].ToString());
                                }

                                //For Primary Group
                                string primaryGroup = dt.Rows[i]["(Primary_Group)"].ToString();
                                if (!string.IsNullOrEmpty(primaryGroup))
                                {
                                    int primaryGroupID = Util.GetValueOfInt(DB.ExecuteScalar("select c_accountgroup_id from c_accountgroup where value='" + primaryGroup + "' AND AD_CLient_ID=" + GetCtx().GetAD_Client_ID()));
                                    if (primaryGroupID > 0)
                                    {
                                        eleValue.SetC_AccountGroup_ID(primaryGroupID);
                                    }

                                    //try
                                    //{
                                    //    eleValue.SetRef_C_AccountGroup_ID(Util.GetValueOfInt(primaryGroup));
                                    //}
                                    //catch { }
                                }
                                //For PrimarySub Group
                                string primarysubGroup = dt.Rows[i]["(Primary_Sub_Group)"].ToString();
                                if (!string.IsNullOrEmpty(primarysubGroup))
                                {
                                    int primarysubGroupID = Util.GetValueOfInt(DB.ExecuteScalar("select c_accountsubgroup_id from c_accountsubgroup where value='" + primarysubGroup + "' AND AD_CLient_ID=" + GetCtx().GetAD_Client_ID()));
                                    if (primarysubGroupID > 0)
                                    {
                                        eleValue.SetC_AccountSubGroup_ID(primarysubGroupID);
                                    }

                                    //eleValue.SetRef_C_AccountSubGroup_ID(Util.GetValueOfInt(primarysubGroup));
                                    //try
                                    //{
                                    //    eleValue.SetRef_C_AccountSubGroup_ID(Util.GetValueOfInt(primarysubGroup));
                                    //}
                                    //catch { }
                                }


                                // For Account Type
                                if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "ASSET")
                                {
                                    eleValue.SetAccountType("A");
                                }
                                else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "LIABILITY")
                                {
                                    eleValue.SetAccountType("L");
                                }
                                else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "OWNER'S EQUITY")
                                {
                                    eleValue.SetAccountType("O");
                                }
                                else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "REVENUE")
                                {
                                    eleValue.SetAccountType("R");
                                }
                                else if (Util.GetValueOfString(dt.Rows[i]["(Account_Type)"]).ToUpper() == "EXPENSE")
                                {
                                    eleValue.SetAccountType("E");
                                }
                                else
                                {
                                    eleValue.SetAccountType("M");
                                }


                                //string memo = dt.Rows[i]["(Memo_Ledger)"].ToString();
                                //if (dt.Rows[i]["(Memo_Ledger)"] != null && dt.Rows[i]["(Memo_Ledger)"] != DBNull.Value)
                                //{
                                //    try
                                //    {
                                //        eleValue.SetRef_C_ElementValue_ID(Util.GetValueOfInt(memo));
                                //    }
                                //    catch { }
                                //}
                                //eleValue.SetParent_ID(C_ElementValue_ID_Parent);
                                if (!string.IsNullOrEmpty(parent_ID))
                                {
                                    ///******************** Commented
                                    //eleValue.SetParentSerachKey(parent_ID.ToString());
                                }



                                if (!eleValue.Save())
                                {
                                    log.SaveError("NotSaved", "");

                                    //return msg;
                                }
                                VAdvantage.Model.MTree obj = new VAdvantage.Model.MTree(GetCtx(), ad_tree_id, null);
                                //C_ElementValue_ID = C_ElementValue_ID + 1;
                                VAdvantage.Model.MTreeNode mNode = VAdvantage.Model.MTreeNode.Get(obj, eleValue.Get_ID());
                                if (mNode == null)
                                {
                                    mNode = new VAdvantage.Model.MTreeNode(tree, eleValue.Get_ID());
                                }
                                mNode.SetParent_ID(C_ElementValue_ID_Parent);
                                // ((PO)mNode).Set_Value("Parent_ID", C_ElementValue_ID_Parent);
                                if (!mNode.Save())
                                {
                                    log.SaveError("NodeNotSaved", "");
                                    return(msg);
                                }
                            }
                            else
                            {
                            }
                        }
                        /////////Set Memo Ledger
                        //int tempElementID = 0;
                        //for (int i = 0; i < dt.Rows.Count; i++)
                        //{
                        //    if (dt.Rows[i]["(Memo_Ledger)"] != null && dt.Rows[i]["(Memo_Ledger)"] != DBNull.Value)
                        //    {
                        //        if (!(string.IsNullOrEmpty(dt.Rows[i]["(Memo_Ledger)"].ToString())))
                        //        {
                        //            refElementValID = Util.GetValueOfInt(DB.ExecuteScalar("Select vactwz_elementvalue_ID from vactwz_elementvalue WHERE Value='" + dt.Rows[i]["(Memo_Ledger)"] + "'"));
                        //            if (refElementValID > 0)
                        //            {
                        //                tempElementID = Util.GetValueOfInt(DB.ExecuteScalar("Select vactwz_elementvalue_ID from vactwz_elementvalue WHERE Value='" + dt.Rows[i]["(Account_Value)"] + "'"));
                        //                eleValue = new MElementValue(GetCtx(), tempElementID, null);
                        //                eleValue.SetRef_C_ElementValue_ID(refElementValID);
                        //                eleValue.Save();
                        //            }
                        //        }
                        //    }
                        //}

                        //******************** Commented
                        //if (tree != null)
                        //{
                        //    sql = "Update C_Element SET TreeID=" + tree.Get_ID() + " WHERE C_Element_ID=" + C_Elememt_ID;
                        //    DB.ExecuteQuery(sql);
                        //}

                        if (path.Contains("_FileCtrl"))
                        {
                            Directory.Delete(path, true);
                        }
                    }

                    msg = Msg.GetMsg(GetCtx(), "ImportedSuccessfully");
                    return(msg);
                }
                catch
                {
                    if (_message != "")
                    {
                        msg = _message;
                    }
                    else
                    {
                        msg = Msg.GetMsg(GetCtx(), "ExcelSheetNotInProperFormat");
                    }
                    return(msg);
                }
            }
            else
            {
                msg = Msg.GetMsg(GetCtx(), "UseDefaultExcelSheet");
                return(msg);
            }
        }
        }                                                                   //	prepare

        /// <summary>
        /// Perrform Process.
        /// </summary>
        /// <returns>Info</returns>
        protected override String DoIt()
        {
            StringBuilder sql         = null;
            int           no          = 0;
            String        clientCheck = " AND AD_Client_ID=" + _AD_Client_ID;

            //	****	Prepare	****

            //	Delete Old Imported
            if (_deleteOldImported)
            {
                sql = new StringBuilder("DELETE FROM I_ElementValue "
                                        + "WHERE I_IsImported='Y'").Append(clientCheck);
                no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
                log.Fine("Delete Old Impored =" + no);
            }

            //	Set Client, Org, IsActive, Created/Updated
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET AD_Client_ID = COALESCE (AD_Client_ID, ").Append(_AD_Client_ID).Append("),"
                                                                                                                  + " AD_Org_ID = COALESCE (AD_Org_ID, 0),"
                                                                                                                  + " IsActive = COALESCE (IsActive, 'Y'),"
                                                                                                                  + " Created = COALESCE (Created, SysDate),"
                                                                                                                  + " CreatedBy = COALESCE (CreatedBy, 0),"
                                                                                                                  + " Updated = COALESCE (Updated, SysDate),"
                                                                                                                  + " UpdatedBy = COALESCE (UpdatedBy, 0),"
                                                                                                                  + " I_ErrorMsg = NULL,"
                                                                                                                  + " I_IsImported = 'N' "
                                                                                                                  + "WHERE I_IsImported<>'Y' OR I_IsImported IS NULL");
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Reset=" + no);

            //	****	Prepare	****

            //	Set Element
            if (_C_Element_ID != 0)
            {
                sql = new StringBuilder("UPDATE I_ElementValue "
                                        + "SET ElementName=(SELECT Name FROM C_Element WHERE C_Element_ID=")
                      .Append(_C_Element_ID).Append(") "
                                                    + "WHERE ElementName IS NULL AND C_Element_ID IS NULL"
                                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
                no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
                log.Fine("Set Element Default=" + no);
            }
            //
            sql = new StringBuilder("UPDATE I_ElementValue i "
                                    + "SET C_Element_ID = (SELECT C_Element_ID FROM C_Element e"
                                    + " WHERE i.ElementName=e.Name AND i.AD_Client_ID=e.AD_Client_ID)"
                                    + "WHERE C_Element_ID IS NULL"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set Element=" + no);
            //
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg='ERR=Invalid Element, ' "
                                    + "WHERE C_Element_ID IS NULL"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid Element=" + no);

            //	No Name, Value
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg='ERR=No Name, ' "
                                    + "WHERE (Value IS NULL OR Name IS NULL)"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid Name=" + no);


            //	Set Column
            sql = new StringBuilder("UPDATE I_ElementValue i "
                                    + "SET AD_Column_ID = (SELECT AD_Column_ID FROM AD_Column c"
                                    + " WHERE UPPER(i.Default_Account)=UPPER(c.ColumnName)"
                                    + " AND c.AD_Table_ID IN (315,266) AND AD_Reference_ID=25) "
                                    + "WHERE Default_Account IS NOT NULL AND AD_Column_ID IS NULL"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set Column=" + no);
            //
            String ts = DataBase.DB.IsPostgreSQL() ? "COALESCE(I_ErrorMsg,'')"
                : "I_ErrorMsg";  //java bug, it could not be used directly

            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||'ERR=Invalid Column, ' "
                                    + "WHERE AD_Column_ID IS NULL AND Default_Account IS NOT NULL"
                                    + " AND UPPER(Default_Account)<>'DEFAULT_ACCT'" //	ignore default account
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid Column=" + no);

            //	Set Post* Defaults (ignore errors)
            String[] yColumns = new String[] { "PostActual", "PostBudget", "PostStatistical", "PostEncumbrance" };
            for (int i = 0; i < yColumns.Length; i++)
            {
                sql = new StringBuilder("UPDATE I_ElementValue SET ")
                      .Append(yColumns[i]).Append("='Y' WHERE ")
                      .Append(yColumns[i]).Append(" IS NULL OR ")
                      .Append(yColumns[i]).Append(" NOT IN ('Y','N')"
                                                  + " AND I_IsImported<>'Y'").Append(clientCheck);
                no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
                log.Fine("Set " + yColumns[i] + " Default=" + no);
            }
            //	Summary
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET IsSummary='N' "
                                    + "WHERE IsSummary IS NULL OR IsSummary NOT IN ('Y','N')"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set IsSummary Default=" + no);

            //	Doc Controlled
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET IsDocControlled = CASE WHEN AD_Column_ID IS NOT NULL THEN 'Y' ELSE 'N' END "
                                    + "WHERE IsDocControlled IS NULL OR IsDocControlled NOT IN ('Y','N')"
                                    + " AND I_IsImported='N'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set IsDocumentControlled Default=" + no);

            //	Check Account Type A (E) L M O R
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET AccountType='E' "
                                    + "WHERE AccountType IS NULL"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set AccountType Default=" + no);
            //
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||'ERR=Invalid AccountType, ' "
                                    + "WHERE AccountType NOT IN ('A','E','L','M','O','R')"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid AccountType=" + no);
            //	Check Account Sign (N) C B
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET AccountSign='N' "
                                    + "WHERE AccountSign IS NULL"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Set AccountSign Default=" + no);
            //
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||'ERR=Invalid AccountSign, ' "
                                    + "WHERE AccountSign NOT IN ('N','C','D')"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid AccountSign=" + no);

            //	No Value
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||'ERR=No Key, ' "
                                    + "WHERE (Value IS NULL OR Value='')"
                                    + " AND I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Invalid Key=" + no);

            //	****	Update ElementValue from existing
            sql = new StringBuilder("UPDATE I_ElementValue i "
                                    + "SET C_ElementValue_ID=(SELECT C_ElementValue_ID FROM C_ElementValue ev"
                                    + " INNER JOIN C_Element e ON (ev.C_Element_ID=e.C_Element_ID)"
                                    + " WHERE i.C_Element_ID=e.C_Element_ID AND i.AD_Client_ID=e.AD_Client_ID"
                                    + " AND i.Value=ev.Value) "
                                    + "WHERE C_ElementValue_ID IS NULL"
                                    + " AND I_IsImported='N'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Found ElementValue=" + no);

            Commit();

            //	-------------------------------------------------------------------
            int noInsert = 0;
            int noUpdate = 0;

            //	Go through Records
            sql = new StringBuilder("SELECT * "
                                    + "FROM I_ElementValue "
                                    + "WHERE I_IsImported='N'").Append(clientCheck)
                  .Append(" ORDER BY I_ElementValue_ID");
            IDataReader idr = null;

            try
            {
                //PreparedStatement pstmt = DataBase.prepareStatement(sql.ToString(), Get_TrxName());
                idr = DataBase.DB.ExecuteReader(sql.ToString(), null, Get_TrxName());
                while (idr.Read())
                {
                    X_I_ElementValue impEV = new X_I_ElementValue(GetCtx(), idr, Get_TrxName());
                    int C_ElementValue_ID  = impEV.GetC_ElementValue_ID();
                    int I_ElementValue_ID  = impEV.GetI_ElementValue_ID();

                    //	****	Create/Update ElementValue
                    if (C_ElementValue_ID == 0)         //	New
                    {
                        MElementValue ev = new MElementValue(impEV);
                        if (ev.Save())
                        {
                            noInsert++;
                            impEV.SetC_ElementValue_ID(ev.GetC_ElementValue_ID());
                            impEV.SetI_IsImported(X_I_ElementValue.I_ISIMPORTED_Yes);
                            impEV.Save();
                        }
                        else
                        {
                            sql = new StringBuilder("UPDATE I_ElementValue i "
                                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||").Append(DataBase.DB.TO_STRING("Insert ElementValue "))
                                  .Append("WHERE I_ElementValue_ID=").Append(I_ElementValue_ID);
                            DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
                        }
                    }
                    else                                                        //	Update existing
                    {
                        MElementValue ev = new MElementValue(GetCtx(), C_ElementValue_ID, null);
                        if (ev.Get_ID() != C_ElementValue_ID)
                        {
                        }
                        ev.Set(impEV);
                        if (ev.Save())
                        {
                            noUpdate++;
                            impEV.SetI_IsImported(X_I_ElementValue.I_ISIMPORTED_Yes);
                            impEV.Save();
                        }
                        else
                        {
                            sql = new StringBuilder("UPDATE I_ElementValue i "
                                                    + "SET I_IsImported='E', I_ErrorMsg=" + ts + "||").Append(DataBase.DB.TO_STRING("Update ElementValue"))
                                  .Append("WHERE I_ElementValue_ID=").Append(I_ElementValue_ID);
                            DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
                        }
                    }
                }       //	for all I_Product
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                throw new Exception("create", e);
            }

            //	Set Error to indicator to not imported
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_IsImported='N', Updated=SysDate "
                                    + "WHERE I_IsImported<>'Y'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            AddLog(0, null, Utility.Util.GetValueOfDecimal(no), "@Errors@");
            AddLog(0, null, Utility.Util.GetValueOfDecimal(noInsert), "@C_ElementValue_ID@: @Inserted@");
            AddLog(0, null, Utility.Util.GetValueOfDecimal(noUpdate), "@C_ElementValue_ID@: @Updated@");

            Commit();

            //	*****	Set Parent
            sql = new StringBuilder("UPDATE I_ElementValue i "
                                    + "SET ParentElementValue_ID=(SELECT C_ElementValue_ID"
                                    + " FROM C_ElementValue ev WHERE i.C_Element_ID=ev.C_Element_ID"
                                    + " AND i.ParentValue=ev.Value AND i.AD_Client_ID=ev.AD_Client_ID) "
                                    + "WHERE ParentElementValue_ID IS NULL"
                                    + " AND I_IsImported='Y' AND Processed='N'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Found Parent ElementValue=" + no);
            //
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET I_ErrorMsg=" + ts + "||'Info=ParentNotFound, ' "
                                    + "WHERE ParentElementValue_ID IS NULL AND ParentValue IS NOT NULL"
                                    + " AND I_IsImported='Y' AND Processed='N'").Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Config("Not Found Patent ElementValue=" + no);
            //
            sql = new StringBuilder("SELECT i.ParentElementValue_ID, i.I_ElementValue_ID,"
                                    + " e.AD_Tree_ID, i.C_ElementValue_ID, i.Value||'-'||i.Name AS Info "
                                    + "FROM I_ElementValue i"
                                    + " INNER JOIN C_Element e ON (i.C_Element_ID=e.C_Element_ID) "
                                    + "WHERE i.C_ElementValue_ID IS NOT NULL AND e.AD_Tree_ID IS NOT NULL"
                                    + " AND i.ParentElementValue_ID IS NOT NULL"
                                    + " AND i.I_IsImported='Y' AND Processed='N' AND i.AD_Client_ID=").Append(_AD_Client_ID);
            int noParentUpdate = 0;

            try
            {
                //PreparedStatement pstmt = DataBase.prepareStatement(sql.ToString(), Get_TrxName());
                idr = DataBase.DB.ExecuteReader(sql.ToString(), null, Get_TrxName());
                //
                String updateSQL = "UPDATE AD_TreeNode SET Parent_ID=@param1, SeqNo=@param2 "
                                   + "WHERE AD_Tree_ID=@param3 AND Node_ID=@param4";
                //PreparedStatement updateStmt = DataBase.prepareStatement(updateSQL, Get_TrxName());
                SqlParameter[] param = new SqlParameter[4];
                //IDataReader idr=null;
                while (idr.Read())
                {
                    //updateStmt.setInt(1, rs.getInt(1));		//	Parent
                    param[0] = new SqlParameter("@param1", Utility.Util.GetValueOfInt(idr[0]));
                    //updateStmt.setInt(2, rs.getInt(2));		//	SeqNo (assume sequenec in import is the same)
                    param[1] = new SqlParameter("@param2", Utility.Util.GetValueOfInt(idr[1]));
                    //updateStmt.setInt(3, rs.getInt(3));		//	Tree
                    param[2] = new SqlParameter("@param3", Utility.Util.GetValueOfInt(idr[2]));
                    //updateStmt.setInt(4, rs.getInt(4));		//	Node
                    param[3] = new SqlParameter("@param4", Utility.Util.GetValueOfInt(idr[3]));
                    try
                    {
                        no              = DataBase.DB.ExecuteQuery(updateSQL, param, Get_TrxName());
                        noParentUpdate += no;
                    }
                    catch (Exception ex)
                    {
                        log.Log(Level.SEVERE, "(ParentUpdate)", ex);
                        no = 0;
                    }
                    if (no == 0)
                    {
                        log.Info("Parent not found for " + Utility.Util.GetValueOfString(idr[4]));// rs.getString(5));
                    }
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                    idr = null;
                }
                log.Log(Level.SEVERE, "(ParentUpdateLoop) " + sql.ToString(), e);
            }
            AddLog(0, null, Utility.Util.GetValueOfDecimal(noParentUpdate), "@ParentElementValue_ID@: @Updated@");

            //	Reset Processing Flag
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET Processing='-'"
                                    + "WHERE I_IsImported='Y' AND Processed='N' AND Processing='Y'"
                                    + " AND C_ElementValue_ID IS NOT NULL")
                  .Append(clientCheck);
            if (_updateDefaultAccounts)
            {
                sql.Append(" AND AD_Column_ID IS NULL");
            }
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Reset Processing Flag=" + no);

            if (_updateDefaultAccounts)
            {
                UpdateDefaults(clientCheck);
            }

            //	Update Description
            sql = new StringBuilder("SELECT * FROM C_ValidCombination vc "
                                    + "WHERE EXISTS (SELECT * FROM I_ElementValue i "
                                    + "WHERE vc.Account_ID=i.C_ElementValue_ID)");

            //	Done
            sql = new StringBuilder("UPDATE I_ElementValue "
                                    + "SET Processing='N', Processed='Y'"
                                    + "WHERE I_IsImported='Y'")
                  .Append(clientCheck);
            no = DataBase.DB.ExecuteQuery(sql.ToString(), null, Get_TrxName());
            log.Fine("Processed=" + no);

            return("");
        }       //	doIt