public bool GetBranchMinMoney(long groupId, ref long money, bool isComputeEx1 = false) { trace.Write(TraceLevel.Debug, "CM1GroupsTree::GetBranchMinMoney"); bool fnResult = true; try { // Get group object of the group of the operation to evaluate CM1Group pGrp = GetGroupFromGrpId(groupId); if (pGrp == null) { throw new InvalidOperationException("Could not obtain group of current operation"); } long lGrpAccMoney = 0; long lGrpMinMoney = 0; money = -1; while (pGrp != null) { lGrpAccMoney = (isComputeEx1) ? pGrp.GetEfecAccMoney() : pGrp.GetAccMoney(); lGrpMinMoney = pGrp.GetMinMoney(); if (lGrpMinMoney == GlobalDefs.DEF_UNDEFINED_VALUE || lGrpMinMoney < lGrpAccMoney) { lGrpMinMoney = 0; } else { lGrpMinMoney -= lGrpAccMoney; } money = Math.Max(lGrpMinMoney, money); pGrp = GetGroupParent(pGrp.GetGrpId()); } trace.Write(TraceLevel.Info, $"Min. money for branch of group {groupId}: {money}"); } catch (Exception error) { trace.Write(TraceLevel.Error, error.ToLogString()); fnResult = false; } return(fnResult); }