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