Фильтрация сервисов
Технические вопросы
5.x

Фильтрация сервисов по контрагентом

Здраствуйте,

Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, HRB сервис был виден лишь при выборе контрагента HR. А для других контрагентов не был виден?

Заранее большое спасибо.

С уважением,
Гюнель

Нравится

6 комментариев

Добрый день, Гюнель!

В системе реализована следующая логика. Для каждого [Сервисного договора] указывается определенный [Пакет сервисов]. Также в карточке сервисного договора указывается [Контакт], [Контрагент] и [Объект обслуживания].

Если Вы хотите, чтобы определенный сервис был доступен только отдельному клиенту, создайте отдельный сервисный договор, который будет включать необходимый сервис.

Таким образом, когда в Заявке будет указан [Контакт], [Контрагент] и [Конфигурационная единица] для выбора буду доступны только те сервисы, которые входят в пакет сервисов в выбранном [Сервисном договоре].

Добрый день, Андрей

Спасибо за объяснение. Если сделать как вы сказали то, контакт при выборе сервиса который не привязан к нему (и его контрагенту), выдает следующее предупреждение:

Предупреждение
Данный сервис не предоставляется по сервисному договору

Но проблема в том что, контакт может игнорировать данное предупреждение, и создат новое обращения. А это у нас не приемлема((
Можно ли сделать так чтобы, при появлении данного предупреждения, контакт не смог сохранит (создат) обращения?

Заранее большое спасибо.

С уважением,
Гюнель

Добрый день, Гюнель!

Для того чтобы контакт не смог сохранит (создат) обращение нужно переопределить метод AreConditionsCorrect обьекта BaseServiceRequestInBPMonlineEditPage

а именно заменить код метода на:

base.AreConditionsCorrect(Row);
var serviceId = (Guid)Page.ServiceEdit.Value;
var serviceAgreementId = (Guid)Page.ServiceAgreementEdit.Value;
var availableServices = GetAvailableServicesNew(serviceAgreementId);
 
var serviceNotInAgreement = true;
foreach (var recordData in availableServices) {
	if (recordData.Id == serviceId) {
		serviceNotInAgreement = false;
		break;
	}			
}
if (serviceNotInAgreement) {
			Page.BaseMessagePanel.AddMessage(Warning, ServiceNotInServiceAgreementMessage, MessageType.Warning);
		}
return !serviceNotInAgreement;

Сохранить и опубликовать.

Добрый день, Григорий

Заработала. Большое спасибо

С уважением,
Гюнель

Добрый день,

Как можно сделать тоже самое и для портал пользователей?

Заранее большое спасибо.

С уважением,
Гюнель

Получилась. Поменяла метод AreConditionsCorrect обьекта PortalServiceRequestEditPage.

Показать все комментарии