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

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

Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, 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.

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