private bool IsVehicleIdResident(CDatM1 m1, ref bool isResident, long cpmArticleDef = GlobalDefs.DEF_UNDEFINED_VALUE)
        {
            trace.Write(TraceLevel.Info, ">>IsVehicleIdResident");
            bool fnResult = true;

            try
            {
                isResident = false;

                COPSPlate strPlate    = m1.GetInVehicleID();
                long      lGroup      = m1.GetInGroup();
                long      lArticleDef = GlobalDefs.DEF_UNDEFINED_VALUE;

                tariffCalculator.FillTree();

                bool isVehicleIdResident = database.IsVehicleIdResident(tariffCalculator.GetTree(), ref strPlate, lGroup, ref lArticleDef, ref isResident);
                if (!isVehicleIdResident)
                {
                    throw new InvalidOperationException("Error getting last operation group");
                }

                if (isResident && lArticleDef != GlobalDefs.DEF_UNDEFINED_VALUE)
                {
                    m1.SetInArticleDef((int)lArticleDef);
                }
                else if (isResident && lArticleDef == GlobalDefs.DEF_UNDEFINED_VALUE)
                {
                    isResident = isResident && lArticleDef == cpmArticleDef;
                }

                m1.SetOutIsResident(isResident);
            }
            catch (Exception error)
            {
                trace.Write(TraceLevel.Error, error.ToLogString());
                fnResult = false;
            }

            trace.Write(TraceLevel.Info, "<<IsVehicleIdResident");
            return(fnResult);
        }