/// <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); }
} // 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); } //
/// <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()); } } }
} // 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
/// <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); }
} // 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
/// <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()); }
} // 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
} // 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
/// <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); } } } }