public bool GetMinValueToChargeInRefund(long groupId, ref long minMoney)
        {
            trace.Write(TraceLevel.Debug, "CM1GroupsTree::GetMinValueToChargeInRefund");
            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 lGrpMinValueToCharge = 0;
                long lMinValueToCharge    = 0;
                minMoney = -1;

                while (pGrp != null)
                {
                    lGrpMinValueToCharge = pGrp.GetMinValueToChargeInRefund();

                    if (lGrpMinValueToCharge == GlobalDefs.DEF_UNDEFINED_VALUE)
                    {
                        lMinValueToCharge = 0;
                    }
                    else
                    {
                        lMinValueToCharge = lGrpMinValueToCharge;
                    }

                    minMoney = Math.Max(lMinValueToCharge, minMoney);

                    pGrp = GetGroupParent(pGrp.GetGrpId());
                }
                trace.Write(TraceLevel.Info, $"Min. money to charge in refunds {groupId}: {minMoney}");
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            return(fnResult);
        }