Triggers 用于防止用户向opportunity添加多个产品的触发器
因此,我编写了一个触发器,以防止用户在同一个opportunity中输入多个opportunity product,但问题是,当用户同时添加多个opportunity product时,我的触发器不会触发,salesforce将其视为一个产品。 我可以在触发器中添加什么来修复此问题 我的触发器:Triggers 用于防止用户向opportunity添加多个产品的触发器,triggers,salesforce,apex,Triggers,Salesforce,Apex,因此,我编写了一个触发器,以防止用户在同一个opportunity中输入多个opportunity product,但问题是,当用户同时添加多个opportunity product时,我的触发器不会触发,salesforce将其视为一个产品。 我可以在触发器中添加什么来修复此问题 我的触发器: trigger OpportunityLineItemBeforeInsert on OpportunityLineItem (before insert) { Set<Id>opp
trigger OpportunityLineItemBeforeInsert on OpportunityLineItem (before insert) {
Set<Id>opportunityIds = new Set<Id>();
// get all parent IDs
for(OpportunityLineItem i : trigger.new)
{
opportunityIds.add(i.OpportunityId);
}
// query for related Olis (Opportunity Line Items)
Map<Id, Opportunity> opps = new Map<Id, Opportunity>([SELECT ID,
(SELECT ID
FROM OpportunityLineItems)
FROM Opportunity
WHERE ID IN :opportunityIds]);
for(OpportunityLineItem i : trigger.new)
{
if(opps.get(i.OpportunityId).OpportunityLineItems.size()>0)
{
i.addError('Your Message');
}
}
}
提前谢谢。我可能会忽略任何与Oppty有关的内容 您只需要创建一个产品,因此在创建时,要么LI的数量为0,您可以创建一个,要么它不是0,您不能创建任何产品
我会在Oppty上创建一个汇总字段,计算产品数量。如果是伯爵0,则验证失败。如果计数=0,则在trigger.new和If=1,失败。您应该在产品上创建一个存储父商机id的字段,使该字段唯一,并通过工作流或process builder使用父商机id填充值,而不是编写代码来执行此操作。这样,如果添加了第二个产品,惟一约束将触发并阻止插入记录 另一个选项是创建opportunity汇总以统计opportunity产品的数量,然后添加一个验证规则,如果产品数量>1,则该规则将显示错误。这样做的好处是,您可以使用第一个选项设置错误消息,而不是一般的重复错误消息