public void AddUrmToDeal(Basket basket, string integrationLoginName, bool isSensitiveDataChanged, URMApproval externalBasketUrmAproval)
        {
            var settingsManager = ServiceProvider.GetRequiredService<IEntitySettingsManager>();
            var log = ServiceProvider.GetRequiredService<ILogger>().ForContext("BasketNumber", basket.Number);

            var deal = basket.GetKaskoDeal();

            var intermediary = deal
                ?.DealIntermediaries
                ?.FirstOrDefault(x => x.Intermediary?.InteractionTypeCode == InteractionTypeEnum.Agent.ToString())
                ?.Intermediary ?? deal.GetMainIntermediary();

            if (intermediary == null)
            {
                return;
            }

            var kaskoSasCheckProcess = settingsManager.GetSettingForDefaultOrPartnerConfiguration(
                KaskoSasCheckProcessConstants.KaskoSasCheckProcessSettings,
                KaskoSasCheckProcessConstants.KaskoSasCheckProcessDefault,
                KaskoSasCheckProcessConstants.KaskoSasCheckProcessByIntermediary,
                intermediary,
                true,
                log);

            if (!kaskoSasCheckProcess || deal.IsAutoProlongation())
            {
                var needCheckUrmKASKO = settingsManager.GetSettingForDefaultOrPartnerConfiguration(
                    iRIS.KaskoLink2.Implementations.Code.Constants.EntitySettingCodes.NeedCheckUrmKASKOSetting,
                    iRIS.KaskoLink2.Implementations.Code.Constants.EntitySettingCodes.NeedCheckUrmKASKOSettingDefault,
                    iRIS.KaskoLink2.Implementations.Code.Constants.EntitySettingCodes.NeedCheckUrmKASKOSettingByIntegrationLogin,
                    new IntegrationLogin { IntegrationLoginName = integrationLoginName },
                    true,
                    log);

                if (UrmHelper.RequiredByIndicatorSegment(deal) && !UrmHelper.CanSkipUrm(deal) && needCheckUrmKASKO)
                {
                    UrmHelper.AddOrUpdateUrmApprovalToDeal(deal, UrmApprovalStatusCodes.Required, Guid.NewGuid().ToString());
                }
                else if (!kaskoSasCheckProcess)
                {
                    UrmHelper.SetUrmApprovalNotRequired(deal);
                }
            }
        }

В этом методе мы проставляем urm статус в случае если не ходим в САС за проверкой. Мне нужно скорректировать логику работы метода:
В случае если externalBasketUrmAproval.Status = accepted, acceptedWithLimits - то При изменении нечувствительных данных: urmStatus не меняется (остается accepted, acceptedWithLimits, за изменение нечувствительных данных отвечает параметр isSensitiveDataChanged), При изменении чувствительных данных и если получаем необходимость УРМ - создаём в БД новую заявку в статусе "reqiered". Если было изменениме чувствительных данных и мы попали на сегменты (UrmHelper.RequiredByIndicatorSegment(deal) && !UrmHelper.CanSkipUrm(deal) && needCheckUrmKASKO) то новая проверка УРМ не создаётся
В случае если externalBasketUrmAproval.Status = requiredExtraInfo - то При изменении нечувствительных данных: urmStatus не меняется (остаётся requiredExtraInfo), При изменении чувствительных данных, как и в случае с accepted - ориентируемся на сегменты. Если попали на сегменты, по текущей заявке меняем urmStatus на reqiered, Если не попали на сегменты оставляем urmStatus = requiredExtraInfo
В случае если externalBasketUrmAproval.Status = required, notReqiered, null - придерживаемся текущей логики.