public bool GetBranchEfecAccumMoney(long lGroup, ref long m_lRealAccMoney) { trace.Write(TraceLevel.Debug, "CM1GroupTree::GetBranchAccumMoney"); bool fnResult = true; try { CM1Group group = GetGroupFromGrpId(lGroup); if (group == null) { throw new InvalidOperationException("Could not obtain group of current operation"); } long lGrpAccMoney = 0; m_lRealAccMoney = 0; while (group != null) { lGrpAccMoney = group.GetEfecAccMoney(); m_lRealAccMoney = Math.Max(lGrpAccMoney, m_lRealAccMoney); group = GetGroupParent(group.GetGrpId()); } trace.Write(TraceLevel.Info, $"Money accumulate for branch of group {lGroup}: {m_lRealAccMoney}"); } catch (Exception error) { trace.Write(TraceLevel.Error, error.ToLogString()); fnResult = false; } return(fnResult); }
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); }