嘿伙计们,我已经解决了一些问题,我认为对我来说真的很有帮助,所以我想分享他们会为你们的帮助,这是我的 第一系列Salesforce触发器。

所以让我们开始解决以下一些要求。

要求1:

让’看看一个2个人约翰和爱丽丝的场景would like to book their honeymoon trip with the company named ‘Travel Agency’这是基于Salesforce CRM。

他们计划进行以下位置访问:

  1. 纽约
  2. 新泽西州
  3. 乔治亚州
  4. 加利福尼亚州
  5. 德克萨斯州
  6. 弗吉尼亚州

从管理员角度来看,这种特定的方案需要登录CRM:

使用两个必填字段淮安掼蛋免费下载自定义对象计划。

  1. 旅行时间(整数)
  2. Travel Location (纽约,新泽西州,佐治亚州,加利福尼亚州,德克萨斯州,弗吉尼亚州)MultipickList。

(一世) 编写脚本以获取仅选择多匹克单纽约或弗吉尼亚的所有计划记录的总时间或与其他值。

(ii) 写一个触发器以停止使用位置淮安掼蛋免费下载任何计划记录‘纽约‘如果我们有“旅行时间”超过 100小时 任何特定位置‘纽约‘. Example:

如果'约翰和爱丽丝'想要在纽约花时间,并为所有计划提供总数的人'纽约' 是 90小时, 为了 '新泽西州' 是 70小时 和'乔治亚州' 是 100小时。遵循一些给定的步骤:

  • 一个新的计划正在淮安掼蛋免费下载'纽约“除此之外,John和Alice除此之外还有5 小时。然后触发不会停止,总时间将成为95小时。
  • 一个新的计划正在淮安掼蛋免费下载'新泽西州'小时45小时。触发器应该停止,总为105小时 小时.

解决方案1:

(一世) 脚本
public class GetHours{
 // To get The Required Data
public static void gethrs(){
List Plist=new List< Plan__c>();
 Plist=[select Travel_Hours__c from Plan__c where Travel__c='A' OR Travel__c='F' OR Travel__c includes('B,C,D,E;A') OR Travel__c includes('B,C,D,E;F')];
 //Getting ALL THE from Plan__c Object
 Decimal hrs=0;
for(Plan__c pc:Plist){
 hrs=hrs + pc.Travel_Hours__c;
 }
System.debug('TOTAL HOURS-->'+hrs);
 }
}
(ii)扳机
List pcList=Trigger.New;
List pcListnew= [select Travel_Hours__c from Plan__c where Travel__c ='A'];
 // or Travel__c includes('A')];
System.debug('get list---------'+pcListnew);
Decimal totalHr=0;
for(Plan__c pchr:pcListnew){
 totalHr= totalHr + pchr.Travel_Hours__c;
  }
for(Plan__c pc:pcList){
  if(totalHr + pc.Travel_Hours__c >100 && pc.Travel__c=='A')
     pc.addError('YOU CAN NOT ADD MORE WITH LOCATION ----> A');
 }
}

要求2:

一个组织的活动组委会 大河Handi Event. 他们组织了在社会,团体和不同公司的大海手节。

从管理员角度来看,这种特定的方案需要登录CRM:

“Create an Object “”事件“”(名称默认字段和“”Event Date”” Date time field).

另一个交叉对象““Event Participant“” with 3 fields

1.查找联系人

2.Lookup活动

3.与会者多匹票列表(“”与会者联系“”,””主持人联系“”,””组织者联系人“”)

(一世) 写一个脚本来淮安掼蛋免费下载10“”Event Participant”” 4 with “”Attendee Contact””, 4 with “”Presenter Contact””, 2 with “”Organizer Contact””.”

(ii) “请先解决脚本问题。

写一个触发器以确保没有任何事件与参加者一起注册的相同联系人两次。

解释 : 不允许用户命名的用户在相同事件下淮安掼蛋免费下载具有相同联系人查找值的两个事件参与者。”

解决方案2:

(一世) 脚本
public with sharing class CreateEventParticipent{
public static void eventCreate(){
List ConList=new List();
for(Integer i=1;i<=10;i++){
 Contact con=new Contact();
 con.LastName='TEST cont'+i+' F';
 ConList.add(con);
 }
if(ConList.size()>0)
 insert ConList;
/system.debug(con);
Event__c even=new Event__c();
even.Name='Salesforce meeting';
//even.Event_Date__c=6/02/2017 3:25 AM;
 insert even;
 System.debug(even);
 List PcList=new List();
  Integer i=0;
for(Contact con:ConList){
 Event_Participant__c evenpc = new Event_Participant__c();
if(i >0  &&  i <=4){
 evenpc.Name='INDIA CRICKET  '+i;
 evenpc.Participent__c='Attendee Contact';
 evenpc.Event__c=even.Id;
 evenpc.Contact__c=con.Id;
 }
else if(i>4 && i<=8){
  evenpc.Name='INDIA HOCKEY  '+i;
  evenpc.Participent__c='Presenter Contact';
  evenpc.Event__c=even.Id;
  evenpc.Contact__c=con.Id;
 }
else{
 evenpc.Name='INDIA MEN RACE '+i;
 evenpc.Participent__c='Organizer Contact';
 evenpc.Event__c=even.Id;
 evenpc.Contact__c=con.Id;
 }
PcList.add(evenpc);
System.debug('ADDDED------------------>'+evenpc);
 i++;
 }
if(PcList.size()>0){
  insert PcList;
System.debug('ADDDED------------------>'+PcList);
  }
 }
}
(ii)扳机
trigger PreventContactForMultipleEvents on Event_Participant__c (before insert, before update){ 
List EvPList=Trigger.New; 
for(Event_Participant__c epc:EvPList){ 
 for(Event_Participant__c cc:[select Id,Contact__c,Participent__c from Event_Participant__c where Contact__c!=NULL AND Participent__c !=NULL]){ 
  if(epc.Contact__c == cc.Contact__c && cc.Participent__c==epc.Participent__c){ 
   epc.addError('YOU CAN NOT ADD A SINGLE CONATCT WITH MORE THAN ONE EVENT !!!'); 
   }
  }
 } 
}

 要求3:

一个名叫的Salesforce公司 ABC. 并计划在全球范围内推出在不同地区(亚洲,EMA,NA,SA)的产品。他们还希望将产品销售给亚洲,EMA,NA和SA的客户。

从管理员角度来看,这种特定的方案需要登录CRM:

  • 在帐户对象中淮安掼蛋免费下载多个选项列表名称“Working in”

拾取价值观:

  1. 亚洲
  2. ema.
  3. NA.
  4. SA

(一世) 编写脚本以获得仅账户销售的产品总量 在工作  = 亚洲.

(ii) 编写触发器以停止淮安掼蛋免费下载或更新具有帐户的机会  “Working in = ASIA” 在相同的账户下,已经2岁赢得了机会。

解决方案3:

(一世) 脚本
public class GetProQtywithAcc{    
public static void GetToatlPtoQty(){        
 List AccList=[select id,Name from Account where Working_In__c='ASIA'];        
//system.debug('ACCCC---->'+AccList);        
if(AccList.size()>0){            
  List oppList =[select id,TotalOpportunityQuantity,AccountId from Opportunity where AccountId IN:AccList AND StageName='Closed Won'];            
//system.debug('opp--->'+oppList);            
for(Opportunity opp:oppList){                
  System.debug('ACCOUNT---->'+opp.AccountId+'Number Of Product Sol--->'+opp.TotalOpportunityQuantity);            
   }        
  }    
 } 
}
(ii) 扳机
public class PreventCreateOppOppCLoseWon_Trigger{
public static void PreventOppCreate(List OppList){
  //new List();
List AccList=[Select Name,Id from Account Where Working_In__c includes('ASIA')]; 
 //Getting all the account which is working in ASIA 
System.debug('ACCC-->'+AccList);
List OppCloseWonList=[Select Id, AccountId From Opportunity Where StageName='Closed Won' and AccountId IN:AccList];
  //getting id and accountid of all the opportunity where accountid is in AccList and stageName is Closed won
System.debug('opp-->'+OppCloseWonList);
for(Opportunity Opp:OppList){
 Integer add=0;</span>
for(Opportunity opp1:OppCloseWonList){
 if(opp1.AccountId==Opp.AccountId){
   add++;
  }
}
if(add>1){
  Opp.addError('CAN NOT ADD OR UPDATE NEW OPPORTUNITY !!');
  System.debug('AFTER MATCH------------------------>'+Opp.AccountId);
   }
  }
 }
}

享受编码!!