Я создал триггер, который срабатывает при обновлении поля в кампании и запрещает пользователю оставлять поле «Комментарии» пустым при отклонении записи.
Вот мой код триггера:
trigger RequireRejectionComment on Campaign (before update)
{
Map<Id, Campaign > rejectedStatements
= new Map<Id, Campaign>{};
for(Campaign inv: trigger.new)
{
Campaign oldInv = System.Trigger.oldMap.get(inv.Id);
if ((oldInv.BR_ApprovalStatusRegulatory__c != 'Reprovado'
&& inv.BR_ApprovalStatusRegulatory__c == 'Reprovado')||
(oldInv.BR_ApprovalStatusLegal__c!= 'Reprovado' &&
inv.BR_ApprovalStatusLegal__c== 'Reprovado') )
{
rejectedStatements.put(inv.Id, inv);
}
}
if (!rejectedStatements.isEmpty())
{
List<Id> processInstanceIds = new List<Id>{};
for (Campaign invs : [SELECT (SELECT ID
FROM ProcessInstances
ORDER BY CreatedDate DESC
LIMIT 1)
FROM Campaign
WHERE ID IN :rejectedStatements.keySet()])
{
processInstanceIds.add(invs.ProcessInstances[0].Id);
}
// Now that we have the most recent process instances, we can check
// the most recent process steps for comments.
for (ProcessInstance pi : [SELECT TargetObjectId,
(SELECT Id, StepStatus, Comments
FROM Steps
ORDER BY CreatedDate DESC
LIMIT 1 )
FROM ProcessInstance
WHERE Id IN :processInstanceIds
ORDER BY CreatedDate DESC])
{
if ((pi.Steps[0].Comments == null ||
pi.Steps[0].Comments.trim().length() == 0))
{
Trigger.new[0].parentId.addError(' My error Message ');
//rejectedStatements.get(pi.TargetObjectId).addError(
// ' My error Message');
}
}
}
}
Этот триггер работает нормально, но отображает сообщение об ошибке на новой странице.
Мое требование: сообщение об ошибке должно появляться в записи или на той же странице при отклонении записи.
Подскажите, спасибо..