コード例 #1
0
        /// <summary>
        /// Load controls lookup etc.
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="windowNo"></param>
        /// <param name="C_AcctSchema_ID"></param>
        /// <returns>class lookups</returns>
        public AccountSchema AccountSchemaLoad(Ctx ctx, int windowNo, int C_AcctSchema_ID)
        {
            AccountSchema objSchema = new AccountSchema();

            MAcctSchemaElement[] elements = null;

            var _AcctSchema = new MAcctSchema(ctx, C_AcctSchema_ID, null);

            ctx.GetCtx(windowNo).SetContext(windowNo, "C_AcctSchema_ID", C_AcctSchema_ID);
            elements = _AcctSchema.GetAcctSchemaElements();

            objSchema.IsHasAlies = _AcctSchema.IsHasAlias();
            objSchema.Elements   = new List <AccountingElements>();
            for (int i = 0; i < elements.Length; i++)
            {
                AccountingElements obj = new AccountingElements();
                MAcctSchemaElement ase = elements[i];
                obj.Type         = ase.GetElementType();
                obj.IsMandatory  = ase.IsMandatory();
                obj.ID           = ase.Get_ID();
                obj.Name         = ase.GetName();
                obj.DefaultValue = ase.GetDefaultValue();
                obj.SeqNo        = ase.GetSeqNo();
                obj.AD_Column_ID = ase.GetAD_Column_ID();
                obj.IsHeavyData  = Util.GetValueOfBool(ase.Get_Value("IsHeavyData"));
                objSchema.Elements.Add(obj);
            }
            objSchema.Description = _AcctSchema.ToString();
            return(objSchema);
        }
コード例 #2
0
        }       //	getColumnName

        /// <summary>
        /// Get Value Query for Segment Type
        /// </summary>
        /// <returns>Query for first source element or null</returns>
        public String GetSourceValueQuery()
        {
            if (_sources != null && _sources.Length > 0)
            {
                return(MAcctSchemaElement.GetValueQuery(_sources[0].GetElementType()));
            }
            return(null);
        }       //
コード例 #3
0
 /// <summary>
 /// Balance all segments.
 /// - For all balancing segments
 /// - For all segment values
 /// - If balance <> 0 create dueTo/dueFrom line
 /// overwriting the segment value
 /// </summary>
 public void BalanceSegments()
 {
     MAcctSchemaElement[] elements = _acctSchema.GetAcctSchemaElements();
     //  check all balancing segments
     for (int i = 0; i < elements.Length; i++)
     {
         MAcctSchemaElement ase = elements[i];
         if (ase.IsBalanced())
         {
             BalanceSegment(ase.GetElementType());
         }
     }
 }
コード例 #4
0
        }       //	getTreeType

        /// <summary>
        /// Get Where Clause
        /// </summary>
        /// <param name="ID">start node</param>
        /// <returns>ColumnName = 1 or ColumnName IN (1,2,3)</returns>
        public String GetWhereClause(int ID)
        {
            log.Fine("(" + _ElementType + ") ID=" + ID);
            String ColumnName = MAcctSchemaElement.GetColumnName(_ElementType);

            if (ID == 0)        //	All
            {
                return(ColumnName + " IS NOT NULL");
            }
            VTreeNode nod = _tree.GetRootNode().FindNode(ID);

            log.Finest("Root=" + nod);
            //
            StringBuilder result = null;

            if (nod != null && nod.IsSummary)
            {
                StringBuilder sb = new StringBuilder();
                System.Collections.IEnumerator en = nod.preorderEnumeration();

                while (en.MoveNext())
                {
                    VTreeNode nn = (VTreeNode)en.Current;
                    if (!nn.IsSummary)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(",");
                        }
                        sb.Append(nn.GetNode_ID());
                        log.Finest("- " + nn);
                    }
                    else
                    {
                        log.Finest("- skipped parent (" + nn + ")");
                    }
                }

                result = new StringBuilder(ColumnName).Append(" IN (").Append(sb).Append(")");
            }
            else        //	not found or not summary
            {
                result = new StringBuilder(ColumnName).Append("=").Append(ID);
            }
            //
            log.Finest(result.ToString());
            return(result.ToString());
        }       //	getWhereClause
コード例 #5
0
        /// <summary>
        /// Are all segments balanced
        /// </summary>
        /// <returns>true if segments are balanced</returns>
        public bool IsSegmentBalanced()
        {
            if (_lines.Count == 0)
            {
                return(true);
            }

            MAcctSchemaElement[] elements = _acctSchema.GetAcctSchemaElements();
            //  check all balancing segments
            for (int i = 0; i < elements.Length; i++)
            {
                MAcctSchemaElement ase = elements[i];
                if (ase.IsBalanced() && !IsSegmentBalanced(ase.GetElementType()))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #6
0
        }       //	list

        /// <summary>
        ///	Get Source Column Name
        /// </summary>
        /// <returns>Source ColumnName</returns>
        public String GetSourceColumnName()
        {
            String ColumnName = null;

            for (int i = 0; i < _sources.Length; i++)
            {
                String col = MAcctSchemaElement.GetColumnName(_sources[i].GetElementType());
                if (ColumnName == null || ColumnName.Length == 0)
                {
                    ColumnName = col;
                }
                else if (!ColumnName.Equals(col))
                {
                    log.Config("More than one: " + ColumnName + " - " + col);
                    return(null);
                }
            }
            return(ColumnName);
        }       //	getColumnName
コード例 #7
0
        /// <summary>
        /// Create new Charge based on the parameters passed
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="m_C_AcctSchema_ID"></param>
        /// <param name="m_C_TaxCategory_ID"></param>
        /// <param name="name"></param>
        /// <param name="primaryC_ElementValue_ID"></param>
        /// <param name="expense"></param>
        /// <returns></returns>
        public int CreateCharge(Ctx ctx, int m_C_AcctSchema_ID, int m_C_TaxCategory_ID, String name, int primaryC_ElementValue_ID, Boolean expense)
        {
            MCharge charge = new MCharge(ctx, 0, null);

            charge.SetName(name);
            charge.SetC_TaxCategory_ID(m_C_TaxCategory_ID);
            if (!charge.Save())
            {
                // log.Log(Level.SEVERE, name + " not created");
                Msg = name + " not created";
                ID  = 0;
                return(0);
            }

            MAcctSchema m_acctSchema = null;

            //  Get Primary AcctSchama
            if (m_acctSchema == null)
            {
                m_acctSchema = new MAcctSchema(ctx, m_C_AcctSchema_ID, null);
            }
            if (m_acctSchema == null || m_acctSchema.GetC_AcctSchema_ID() == 0)
            {
                ID = 0;
                return(0);
            }
            MAcctSchemaElement primary_ase = m_acctSchema.GetAcctSchemaElement(X_C_AcctSchema_Element.ELEMENTTYPE_Account);

            //	Get All
            MAcctSchema[] ass = MAcctSchema.GetClientAcctSchema(ctx, charge.GetAD_Client_ID());
            foreach (MAcctSchema ac in ass)
            {
                //	Target Account
                MAccount defaultAcct = MAccount.GetDefault(ac, true);   //	optional null
                //	Natural Account
                int C_ElementValue_ID  = primaryC_ElementValue_ID;
                MAcctSchemaElement ase = ac.GetAcctSchemaElement(X_C_AcctSchema_Element.ELEMENTTYPE_Account);
                if (primary_ase.GetC_Element_ID() != ase.GetC_Element_ID())
                {
                    MAcctSchemaDefault defAccts = MAcctSchemaDefault.Get(ctx, ac.GetC_AcctSchema_ID());
                    int C_ValidCombination_ID   = defAccts.GetCh_Expense_Acct();
                    if (!expense)
                    {
                        C_ValidCombination_ID = defAccts.GetCh_Revenue_Acct();
                    }
                    MAccount chargeAcct = MAccount.Get(ctx, C_ValidCombination_ID);
                    C_ElementValue_ID = chargeAcct.GetAccount_ID();
                    //	Fallback
                    if (C_ElementValue_ID == 0)
                    {
                        C_ElementValue_ID = defaultAcct.GetAccount_ID();
                        if (C_ElementValue_ID == 0)
                        {
                            C_ElementValue_ID = ase.GetC_ElementValue_ID();
                        }
                        if (C_ElementValue_ID == 0)
                        {
                            // log.Log(Level.WARNING, "No Default ElementValue for " + ac);
                            Msg = "No Default ElementValue for " + ac;
                            continue;
                        }
                    }
                }

                MAccount acct = MAccount.Get(ctx,
                                             charge.GetAD_Client_ID(), charge.GetAD_Org_ID(),
                                             ac.GetC_AcctSchema_ID(),
                                             C_ElementValue_ID, defaultAcct.GetC_SubAcct_ID(),
                                             defaultAcct.GetM_Product_ID(), defaultAcct.GetC_BPartner_ID(), defaultAcct.GetAD_OrgTrx_ID(),
                                             defaultAcct.GetC_LocFrom_ID(), defaultAcct.GetC_LocTo_ID(), defaultAcct.GetC_SalesRegion_ID(),
                                             defaultAcct.GetC_Project_ID(), defaultAcct.GetC_Campaign_ID(), defaultAcct.GetC_Activity_ID(),
                                             defaultAcct.GetUser1_ID(), defaultAcct.GetUser2_ID(),
                                             defaultAcct.GetUserElement1_ID(), defaultAcct.GetUserElement2_ID());
                if (acct == null)
                {
                    //log.Log(Level.WARNING, "No Default Account for " + ac);
                    Msg = "No Default Account for " + ac;
                    continue;
                }

                //  Update Accounts
                StringBuilder sql = new StringBuilder("UPDATE C_Charge_Acct ");
                sql.Append("SET CH_Expense_Acct=").Append(acct.GetC_ValidCombination_ID());
                sql.Append(", CH_Revenue_Acct=").Append(acct.GetC_ValidCombination_ID());
                sql.Append(" WHERE C_Charge_ID=").Append(charge.GetC_Charge_ID());
                sql.Append(" AND C_AcctSchema_ID=").Append(ac.GetC_AcctSchema_ID());
                //
                int no = VAdvantage.DataBase.DB.ExecuteQuery(sql.ToString(), null, null);
                if (no != 1)
                {
                    //log.Log(Level.WARNING, "Update #" + no + "\n" + sql.ToString());
                    Msg = "Update #" + no + "\n" + sql.ToString();
                }
            }
            ID = charge.GetC_Charge_ID();
            return(charge.GetC_Charge_ID());
        }
コード例 #8
0
        }       //	prepare

        /// <summary>
        /// Process
        /// </summary>
        /// <returns>Info</returns>
        protected override String DoIt()
        {
            log.Info("SourceAcctSchema_ID=" + _SourceAcctSchema_ID
                     + ", TargetAcctSchema_ID=" + _TargetAcctSchema_ID);

            if (_SourceAcctSchema_ID == 0 || _TargetAcctSchema_ID == 0)
            {
                throw new Exception("ID=0");
            }
            if (_SourceAcctSchema_ID == _TargetAcctSchema_ID)
            {
                throw new Exception("Account Schema must be different");
            }

            MAcctSchema source = MAcctSchema.Get(GetCtx(), _SourceAcctSchema_ID, null);

            if (source.Get_ID() == 0)
            {
                throw new Exception("@NotFound@ Source @C_AcctSchema_ID@=" + _SourceAcctSchema_ID);
            }
            MAcctSchema target = new MAcctSchema(GetCtx(), _TargetAcctSchema_ID, Get_Trx());

            if (target.Get_ID() == 0)
            {
                throw new Exception("@NotFound@ Target @C_AcctSchema_ID@=" + _TargetAcctSchema_ID);
            }
            //

            //	MAcctSchemaElement[] sourceElements = source.getAcctSchemaElements();
            MAcctSchemaElement[] targetElements = target.GetAcctSchemaElements();
            if (targetElements.Length == 0)
            {
                throw new Exception("@NotFound@ Target C_AcctSchema_Element");
            }
            //	Accounting Element must be the same
            MAcctSchemaElement sourceAcctElement = source.GetAcctSchemaElement(MAcctSchemaElement.ELEMENTTYPE_Account);

            if (sourceAcctElement == null)
            {
                throw new Exception("NotFound Source AC C_AcctSchema_Element");
            }
            MAcctSchemaElement targetAcctElement = target.GetAcctSchemaElement(MAcctSchemaElement.ELEMENTTYPE_Account);

            if (targetAcctElement == null)
            {
                throw new Exception("NotFound Target AC C_AcctSchema_Element");
            }
            if (sourceAcctElement.GetC_Element_ID() != targetAcctElement.GetC_Element_ID())
            {
                throw new Exception("@C_Element_ID@ different");
            }
            if (MAcctSchemaGL.Get(GetCtx(), _TargetAcctSchema_ID) == null)
            {
                CopyGL(target);
            }
            if (MAcctSchemaDefault.Get(GetCtx(), _TargetAcctSchema_ID) == null)
            {
                CopyDefault(target);
            }
            return("@OK@");
        }       //	doIt
コード例 #9
0
        }       //	copyDefault

        /// <summary>
        /// Create Account
        /// </summary>
        /// <param name="targetAS">target AS</param>
        /// <param name="sourceAcct">source account</param>
        /// <returns>target account</returns>
        private MAccount CreateAccount(MAcctSchema targetAS, MAccount sourceAcct)
        {
            int AD_Client_ID    = targetAS.GetAD_Client_ID();
            int C_AcctSchema_ID = targetAS.GetC_AcctSchema_ID();
            //
            int AD_Org_ID        = 0;
            int Account_ID       = 0;
            int C_SubAcct_ID     = 0;
            int M_Product_ID     = 0;
            int C_BPartner_ID    = 0;
            int AD_OrgTrx_ID     = 0;
            int C_LocFrom_ID     = 0;
            int C_LocTo_ID       = 0;
            int C_SalesRegion_ID = 0;
            int C_Project_ID     = 0;
            int C_Campaign_ID    = 0;
            int C_Activity_ID    = 0;
            int User1_ID         = 0;
            int User2_ID         = 0;
            int UserElement1_ID  = 0;
            int UserElement2_ID  = 0;

            //
            //  Active Elements
            MAcctSchemaElement[] elements = targetAS.GetAcctSchemaElements();
            for (int i = 0; i < elements.Length; i++)
            {
                MAcctSchemaElement ase         = elements[i];
                String             elementType = ase.GetElementType();
                //
                if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Organization))
                {
                    AD_Org_ID = sourceAcct.GetAD_Org_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Account))
                {
                    Account_ID = sourceAcct.GetAccount_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_SubAccount))
                {
                    C_SubAcct_ID = sourceAcct.GetC_SubAcct_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_BPartner))
                {
                    C_BPartner_ID = sourceAcct.GetC_BPartner_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Product))
                {
                    M_Product_ID = sourceAcct.GetM_Product_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Activity))
                {
                    C_Activity_ID = sourceAcct.GetC_Activity_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_LocationFrom))
                {
                    C_LocFrom_ID = sourceAcct.GetC_LocFrom_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_LocationTo))
                {
                    C_LocTo_ID = sourceAcct.GetC_LocTo_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Campaign))
                {
                    C_Campaign_ID = sourceAcct.GetC_Campaign_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_OrgTrx))
                {
                    AD_OrgTrx_ID = sourceAcct.GetAD_OrgTrx_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_Project))
                {
                    C_Project_ID = sourceAcct.GetC_Project_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_SalesRegion))
                {
                    C_SalesRegion_ID = sourceAcct.GetC_SalesRegion_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_UserList1))
                {
                    User1_ID = sourceAcct.GetUser1_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_UserList2))
                {
                    User2_ID = sourceAcct.GetUser2_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_UserElement1))
                {
                    UserElement1_ID = sourceAcct.GetUserElement1_ID();
                }
                else if (elementType.Equals(MAcctSchemaElement.ELEMENTTYPE_UserElement2))
                {
                    UserElement2_ID = sourceAcct.GetUserElement2_ID();
                }
                //	No UserElement
            }
            //
            return(MAccount.Get(GetCtx(), AD_Client_ID, AD_Org_ID,
                                C_AcctSchema_ID, Account_ID, C_SubAcct_ID,
                                M_Product_ID, C_BPartner_ID, AD_OrgTrx_ID,
                                C_LocFrom_ID, C_LocTo_ID, C_SalesRegion_ID,
                                C_Project_ID, C_Campaign_ID, C_Activity_ID,
                                User1_ID, User2_ID, UserElement1_ID, UserElement2_ID));
        } //	createAccount
コード例 #10
0
ファイル: FactLine.cs プロジェクト: vuongthai91/ERP-CMR-DMS
        /// <summary>
        /// Set Account Info
        /// </summary>
        /// <param name="acctSchema">account schema</param>
        /// <param name="acct">account</param>
        public void SetAccount(MAcctSchema acctSchema, MAccount acct)
        {
            _acctSchema = acctSchema;
            SetC_AcctSchema_ID(acctSchema.GetC_AcctSchema_ID());
            //
            _acct = acct;
            if (GetAD_Client_ID() == 0)
            {
                SetAD_Client_ID(_acct.GetAD_Client_ID());
            }
            SetAccount_ID(_acct.GetAccount_ID());
            SetC_SubAcct_ID(_acct.GetC_SubAcct_ID());

            //	User Defined References
            MAcctSchemaElement ud1 = _acctSchema.GetAcctSchemaElement(
                X_C_AcctSchema_Element.ELEMENTTYPE_UserElement1);

            if (ud1 != null)
            {
                String ColumnName1 = ud1.GetDisplayColumnName();
                if (ColumnName1 != null)
                {
                    int ID1 = 0;
                    if (_docLine != null)
                    {
                        ID1 = _docLine.GetValue(ColumnName1);
                    }
                    if (ID1 == 0)
                    {
                        if (_doc == null)
                        {
                            throw new ArgumentException("Document not set yet");
                        }
                        ID1 = _doc.GetValue(ColumnName1);
                    }
                    if (ID1 != 0)
                    {
                        SetUserElement1_ID(ID1);
                    }
                }
            }
            MAcctSchemaElement ud2 = _acctSchema.GetAcctSchemaElement(
                X_C_AcctSchema_Element.ELEMENTTYPE_UserElement2);

            if (ud2 != null)
            {
                String ColumnName2 = ud2.GetDisplayColumnName();
                if (ColumnName2 != null)
                {
                    int ID2 = 0;
                    if (_docLine != null)
                    {
                        ID2 = _docLine.GetValue(ColumnName2);
                    }
                    if (ID2 == 0)
                    {
                        if (_doc == null)
                        {
                            throw new ArgumentException("Document not set yet");
                        }
                        ID2 = _doc.GetValue(ColumnName2);
                    }
                    if (ID2 != 0)
                    {
                        SetUserElement2_ID(ID2);
                    }
                }
            }
        }