airton-junior

Triggers

Apr 4th, 2023 (edited)
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 KB | None | 0 0
  1. trigger InsereAccountNumberNaoRepetido on Account (before insert) {
  2.     for (Account a : Trigger.new) {
  3.         System.debug('Nome da conta: '+a.name);
  4.         System.debug('AccountNumber: '+a.accountnumber);
  5.         if(a.accountnumber != null){
  6.             if(a.accountnumber.length() != 8 || a.accountnumber == ''){
  7.                 a.accountnumber = AccountNumber.geraAccountNumber();
  8.             }else{
  9.                 while(AccountNumber.verificaExistencia(a.AccountNumber)){
  10.                     System.debug('Verifica existencia: '+AccountNumber.verificaExistencia(a.AccountNumber));
  11.                     a.AccountNumber = AccountNumber.geraAccountNumber();
  12.                 }
  13.             }
  14.         }
  15.         System.debug('Nome da conta: '+a.name);
  16.         System.debug('AccountNumber: '+a.accountnumber);
  17.         System.debug('Site: '+a.website);
  18.     }
  19.    
  20. }
  21.  
  22. public class AccountNumber {
  23.     public static String geraAccountNumber(){
  24.         Double d = Math.random()*(10^17);
  25.         String ran = String.valueOf(d);
  26.         String an = ran.right(8);
  27.         return an;
  28.     }
  29.    
  30.     public static Boolean verificaExistencia(String an){
  31.         List<Account> lista = [SELECT AccountNumber FROM Account WHERE AccountNumber = :an];
  32.         return lista.size()!=0?true:false;
  33.     }
  34. }
  35.  
  36.  
  37. trigger ClosedOpportunityTrigger on Opportunity (after insert, after update) {
  38.   List<Task> taskList = new List<Task>();
  39.  
  40.   for(Opportunity opp:Trigger.new){
  41.     if(Trigger.isInsert){
  42.       if(opp.StageName == 'Closed Won'){
  43.         taskList.add(new Task(Subject = 'Follow up test task', WhatId = opp.Id));
  44.       }
  45.     }
  46.     if(Trigger.isUpdate){
  47.       Opportunity o = Trigger.oldMap.get(opp.Id);
  48.       if(opp.StageName == 'Closed Won' && opp.StageName != o.StageName){
  49.         taskList.add(new Task(Subject = 'Follow up test task', WhatId = opp.Id));
  50.       }
  51.     }
  52.   }
  53.   if(taskList.size()>0){
  54.     ClasseDAO.insereListaTask(taskList);
  55.   }
  56. }
  57.  
  58. public with sharing class ClasseDAO {
  59.     public static void insereListaTask(List<Task> tasks){
  60.         try{
  61.             Database.SaveResult[] resultados = Database.insert(tasks, false);
  62.             for(Database.SaveResult dsr:resultados){
  63.                 if(dsr.isSuccess()){
  64.                     System.debug('Task inserida com sucesso: '+dsr.getId());
  65.                 }else{
  66.                     List<Database.Error> dbeList = dsr.getErrors();
  67.                     for(Database.Error dbe:dbeList){
  68.                         System.debug('Erro: ');
  69.                         System.debug(dbe.getStatusCode()+' - '+dbe.getMessage());
  70.                         System.debug('Campos do erro: ');
  71.                         System.debug(dbe.getFields());
  72.                     }
  73.                 }
  74.             }
  75.         }catch(Exception e){
  76.             System.debug(e.getMessage());
  77.         }
  78.     }
  79. }
  80.  
  81. //Anonymous
  82. try{
  83. List<Opportunity> ops = new List<Opportunity>{
  84. new Opportunity(Name='Oportunidade teste Prospecting', StageName='Prospecting', CloseDate= Date.valueOf('2023-05-15'), Description='Nova oportunidade'),
  85. new Opportunity(Name='Oportunidade teste ClosedLost', StageName='Closed Lost', CloseDate=Date.valueOf('2023-05-15'), Description='Nova oportunidade'),
  86. new Opportunity(Name='Oportunidade teste ClosedWon', StageName='Closed Won', CloseDate=Date.valueOf('2023-05-15'), Description='Nova oportunidade'),
  87. new Opportunity(Id='0068Y00001OBqmZQAT', StageName='Closed Won', CloseDate=Date.valueOf('2023-05-15'), Description='Nova oportunidade'),
  88. new Opportunity(Id='0068Y00001OBqmhQAD', StageName='Closed Won', CloseDate=Date.valueOf('2023-05-15'), Description='Nova oportunidade')};//Está em Closed Won - Edge
  89. upsert ops;
  90. }catch(Exception e){
  91.   System.debug(e.getMessage());
  92. }
Add Comment
Please, Sign In to add comment