예제 #1
0
        /// <summary>
        /// Find the nearest ancestor DebtClass that has a value for a particular field.
        /// </summary>
        /// <param name="debtClassId">The DebtClassId of the debt class to start with.</param>
        /// <param name="field">The column to look at.</param>
        /// <returns>The row of the first debt class found to have a value for the indicated field (including the initial debt class).</returns>
        private static DebtClassRow FindParentWithField(Guid debtClassId, DataColumn field)
        {
            DebtClassRow parent    = null;
            DebtClassRow debtClass = DataModel.DebtClass.DebtClassKey.Find(debtClassId);
            Guid         typeId    = DataModel.Entity.EntityKey.Find(debtClassId).TypeId;

            while (debtClass != null && parent == null)
            {
                EntityRow       child   = DataModel.Entity.EntityKey.Find(debtClass.DebtClassId);
                EntityTreeRow[] parents = child.GetEntityTreeRowsByFK_Entity_EntityTree_ChildId();

                if (!debtClass.IsNull(field))
                {
                    parent = debtClass;
                }

                if (parents.Length != 0)
                {
                    debtClass = DataModel.DebtClass.DebtClassKey.Find(parents[0].ParentId);
                }
                else
                {
                    debtClass = null;
                }
            }

            return(parent);
        }