Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, HRB сервис был виден лишь при выборе контрагента HR. А для других контрагентов не был виден?
В системе реализована следующая логика. Для каждого [Сервисного договора] указывается определенный [Пакет сервисов]. Также в карточке сервисного договора указывается [Контакт], [Контрагент] и [Объект обслуживания].
Если Вы хотите, чтобы определенный сервис был доступен только отдельному клиенту, создайте отдельный сервисный договор, который будет включать необходимый сервис.
Таким образом, когда в Заявке будет указан [Контакт], [Контрагент] и [Конфигурационная единица] для выбора буду доступны только те сервисы, которые входят в пакет сервисов в выбранном [Сервисном договоре].
Спасибо за объяснение. Если сделать как вы сказали то, контакт при выборе сервиса который не привязан к нему (и его контрагенту), выдает следующее предупреждение:
Предупреждение
Данный сервис не предоставляется по сервисному договору
Но проблема в том что, контакт может игнорировать данное предупреждение, и создат новое обращения. А это у нас не приемлема((
Можно ли сделать так чтобы, при появлении данного предупреждения, контакт не смог сохранит (создат) обращения?
Для того чтобы контакт не смог сохранит (создат) обращение нужно переопределить метод 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;