• EvertonSzekeres
  • NEWBIE
  • 55 Points
  • Member since 2013

  • Chatter
    Feed
  • 0
    Best Answers
  • 2
    Likes Received
  • 0
    Likes Given
  • 34
    Questions
  • 40
    Replies
Hi,

I'm trying to deploy a trigger and a test class, but I got an error:
 
trigger CriarEventoOp_visita_agendada on Opportunity (after insert, after update) {

    
    
List<Event> EventRe = new List<Event>();
        for (Opportunity op : Trigger.new){
        if (op.StageName == 'Visita Agendada' || op.StageName == 'Visita reagendada'){
                EventRe.add (new Event(
                         EndDateTime = op.data_da_visita__c,
                         OwnerId = op.OwnerId,
                         Respons_lvel__c = op.Respons_lvel__c,
                         StartDateTime = op.data_da_visita__c,
                         Subject = 'Visita',
                         Whatid = op.id
                         ));
            }

            }
    insert EventRe;
}
 
@IsTest(SeeAllData=true)
public class CriarEventoOp_visita_agendada_test {
	static testmethod void MyUnitTest(){
        
    Opportunity op = new Opportunity();
        op.Name = 'teste';
        op.StageName = 'Visita Agendada';
        op.CloseDate = date.today();
        
    insert op;

        
        op.OwnerId = 'op.OwnerId';
        op.Respons_lvel__c = 'op.Respons_lvel__c';
    update op;
        
    Event ev = new Event();
        ev.DurationInMinutes = 1;
        
        ev.EndDateTime = op.data_da_visita__c;
        ev.OwnerId = op.OwnerId;
        ev.Respons_lvel__c = op.Respons_lvel__c;
        ev.StartDateTime = op.data_da_visita__c;
        ev.Subject = 'Visita';
        ev.Whatid = op.id;
    insert ev;

    }
}

Error:
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CriarEventoOp_visita_agendada: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Campos obrigatórios ausentes: [DurationInMinutes]: [DurationInMinutes] Trigger.CriarEventoOp_visita_agendada: line 19, column 1: [] 
Stack Trace: Class.CriarEventoOp_visita_agendada_test.MyUnitTest: line 10, column 1

"DurationInMinutes" it is not a Opportunity field.
But it is a field in Event.
Why I got this?
Hi !

I have this web service callout and I am getting an error:

Web service callout failed: Unexpected element. Parser was expecting element 'http://schemas.xmlsoap.org/soap/envelope/:Envelope' but found ':html'

29.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WORKFLOW,INFO
14:17:43.049 (49323664)|EXECUTION_STARTED
14:17:43.049 (49362144)|CODE_UNIT_STARTED|[EXTERNAL]|FutureHandler - state load
14:17:43.056 (56517697)|CODE_UNIT_FINISHED|FutureHandler - state load
14:17:43.059 (59424317)|EXECUTION_FINISHED
14:17:43.085 (85419917)|EXECUTION_STARTED
14:17:43.085 (85435893)|CODE_UNIT_STARTED|[EXTERNAL]|01pU0000000qNO4|SistemaFF.AtualizarFormando
14:17:43.094 (94095634)|METHOD_ENTRY|[1]|01pU0000000qNO4|SistemaFF.SistemaFF()
14:17:43.094 (94239793)|CONSTRUCTOR_ENTRY|[7]|01pU0000000qNO5|<init>()
14:17:43.094 (94329500)|SYSTEM_CONSTRUCTOR_ENTRY|[12]|<init>()
14:17:43.094 (94373142)|SYSTEM_CONSTRUCTOR_EXIT|[12]|<init>()
14:17:43.094 (94389931)|CONSTRUCTOR_EXIT|[7]|01pU0000000qNO5|<init>()
14:17:43.094 (94418088)|SYSTEM_METHOD_ENTRY|[7]|SistemaFF.__sfdc_svcClient(SistemaFFServiceClient.FormandosSoap)
14:17:43.094 (94435159)|SYSTEM_METHOD_EXIT|[7]|SistemaFF.__sfdc_svcClient(SistemaFFServiceClient.FormandosSoap)
14:17:43.094 (94441448)|METHOD_EXIT|[1]|SistemaFF
14:17:43.122 (122242560)|METHOD_ENTRY|[44]|01pU0000000qNO5|SistemaFFServiceClient.FormandosSoap.ProcessaFormando(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)
14:17:43.125 (125985671)|CONSTRUCTOR_ENTRY|[14]|01pU0000000qNO5|<init>()
14:17:43.126 (126044050)|SYSTEM_CONSTRUCTOR_ENTRY|[95]|<init>()
14:17:43.126 (126074313)|SYSTEM_CONSTRUCTOR_EXIT|[95]|<init>()
14:17:43.126 (126106609)|SYSTEM_CONSTRUCTOR_ENTRY|[96]|<init>()
14:17:43.126 (126116607)|SYSTEM_CONSTRUCTOR_EXIT|[96]|<init>()
14:17:43.126 (126129244)|SYSTEM_CONSTRUCTOR_ENTRY|[97]|<init>()
14:17:43.126 (126138255)|SYSTEM_CONSTRUCTOR_EXIT|[97]|<init>()
14:17:43.126 (126149850)|SYSTEM_CONSTRUCTOR_ENTRY|[98]|<init>()
14:17:43.126 (126158519)|SYSTEM_CONSTRUCTOR_EXIT|[98]|<init>()
14:17:43.126 (126171603)|SYSTEM_CONSTRUCTOR_ENTRY|[99]|<init>()
14:17:43.126 (126180204)|SYSTEM_CONSTRUCTOR_EXIT|[99]|<init>()
14:17:43.126 (126191221)|SYSTEM_CONSTRUCTOR_ENTRY|[100]|<init>()
14:17:43.126 (126200556)|SYSTEM_CONSTRUCTOR_EXIT|[100]|<init>()
14:17:43.126 (126211404)|SYSTEM_CONSTRUCTOR_ENTRY|[101]|<init>()
14:17:43.126 (126219887)|SYSTEM_CONSTRUCTOR_EXIT|[101]|<init>()
14:17:43.126 (126230673)|SYSTEM_CONSTRUCTOR_ENTRY|[102]|<init>()
14:17:43.126 (126239090)|SYSTEM_CONSTRUCTOR_EXIT|[102]|<init>()
14:17:43.126 (126250462)|SYSTEM_CONSTRUCTOR_ENTRY|[103]|<init>()
14:17:43.126 (126258893)|SYSTEM_CONSTRUCTOR_EXIT|[103]|<init>()
14:17:43.126 (126270259)|SYSTEM_CONSTRUCTOR_ENTRY|[104]|<init>()
14:17:43.126 (126278590)|SYSTEM_CONSTRUCTOR_EXIT|[104]|<init>()
14:17:43.126 (126289757)|SYSTEM_CONSTRUCTOR_ENTRY|[105]|<init>()
14:17:43.126 (126298102)|SYSTEM_CONSTRUCTOR_EXIT|[105]|<init>()
14:17:43.126 (126309116)|SYSTEM_CONSTRUCTOR_ENTRY|[106]|<init>()
14:17:43.126 (126317575)|SYSTEM_CONSTRUCTOR_EXIT|[106]|<init>()
14:17:43.126 (126328579)|SYSTEM_CONSTRUCTOR_ENTRY|[107]|<init>()
14:17:43.126 (126337075)|SYSTEM_CONSTRUCTOR_EXIT|[107]|<init>()
14:17:43.126 (126347690)|SYSTEM_CONSTRUCTOR_ENTRY|[108]|<init>()
14:17:43.126 (126357144)|SYSTEM_CONSTRUCTOR_EXIT|[108]|<init>()
14:17:43.126 (126368572)|SYSTEM_CONSTRUCTOR_ENTRY|[109]|<init>()
14:17:43.126 (126377130)|SYSTEM_CONSTRUCTOR_EXIT|[109]|<init>()
14:17:43.126 (126388411)|SYSTEM_CONSTRUCTOR_ENTRY|[110]|<init>()
14:17:43.126 (126396649)|SYSTEM_CONSTRUCTOR_EXIT|[110]|<init>()
14:17:43.126 (126408153)|SYSTEM_CONSTRUCTOR_ENTRY|[111]|<init>()
14:17:43.126 (126416692)|SYSTEM_CONSTRUCTOR_EXIT|[111]|<init>()
14:17:43.126 (126427993)|SYSTEM_CONSTRUCTOR_ENTRY|[112]|<init>()
14:17:43.126 (126436267)|SYSTEM_CONSTRUCTOR_EXIT|[112]|<init>()
14:17:43.126 (126447697)|SYSTEM_CONSTRUCTOR_ENTRY|[113]|<init>()
14:17:43.126 (126455994)|SYSTEM_CONSTRUCTOR_EXIT|[113]|<init>()
14:17:43.126 (126467617)|SYSTEM_CONSTRUCTOR_ENTRY|[114]|<init>()
14:17:43.126 (126475980)|SYSTEM_CONSTRUCTOR_EXIT|[114]|<init>()
14:17:43.126 (126487340)|SYSTEM_CONSTRUCTOR_ENTRY|[115]|<init>()
14:17:43.126 (126495767)|SYSTEM_CONSTRUCTOR_EXIT|[115]|<init>()
14:17:43.126 (126506565)|SYSTEM_CONSTRUCTOR_ENTRY|[116]|<init>()
14:17:43.126 (126515158)|SYSTEM_CONSTRUCTOR_EXIT|[116]|<init>()
14:17:43.126 (126526646)|SYSTEM_CONSTRUCTOR_ENTRY|[117]|<init>()
14:17:43.126 (126535136)|SYSTEM_CONSTRUCTOR_EXIT|[117]|<init>()
14:17:43.126 (126546518)|SYSTEM_CONSTRUCTOR_ENTRY|[118]|<init>()
14:17:43.126 (126554861)|SYSTEM_CONSTRUCTOR_EXIT|[118]|<init>()
14:17:43.126 (126565902)|SYSTEM_CONSTRUCTOR_ENTRY|[119]|<init>()
14:17:43.126 (126574501)|SYSTEM_CONSTRUCTOR_EXIT|[119]|<init>()
14:17:43.126 (126587017)|SYSTEM_CONSTRUCTOR_ENTRY|[120]|<init>()
14:17:43.126 (126595488)|SYSTEM_CONSTRUCTOR_EXIT|[120]|<init>()
14:17:43.126 (126606781)|SYSTEM_CONSTRUCTOR_ENTRY|[121]|<init>()
14:17:43.126 (126615373)|SYSTEM_CONSTRUCTOR_EXIT|[121]|<init>()
14:17:43.126 (126626964)|SYSTEM_CONSTRUCTOR_ENTRY|[122]|<init>()
14:17:43.126 (126635444)|SYSTEM_CONSTRUCTOR_EXIT|[122]|<init>()
14:17:43.126 (126646609)|SYSTEM_CONSTRUCTOR_ENTRY|[123]|<init>()
14:17:43.126 (126655094)|SYSTEM_CONSTRUCTOR_EXIT|[123]|<init>()
14:17:43.126 (126666422)|SYSTEM_CONSTRUCTOR_ENTRY|[124]|<init>()
14:17:43.126 (126675060)|SYSTEM_CONSTRUCTOR_EXIT|[124]|<init>()
14:17:43.126 (126686228)|SYSTEM_CONSTRUCTOR_ENTRY|[125]|<init>()
14:17:43.126 (126695493)|SYSTEM_CONSTRUCTOR_EXIT|[125]|<init>()
14:17:43.126 (126705562)|SYSTEM_CONSTRUCTOR_ENTRY|[126]|<init>()
14:17:43.126 (126714203)|SYSTEM_CONSTRUCTOR_EXIT|[126]|<init>()
14:17:43.126 (126746069)|CONSTRUCTOR_EXIT|[14]|01pU0000000qNO5|<init>()
14:17:43.128 (128189200)|SYSTEM_METHOD_ENTRY|[47]|MAP<String,SistemaFFServiceClient.ProcessaFormandoResponse_element>.put(Object, Object)
14:17:43.128 (128223338)|SYSTEM_METHOD_EXIT|[47]|MAP<String,SistemaFFServiceClient.ProcessaFormandoResponse_element>.put(Object, Object)
14:17:43.128 (128233763)|SYSTEM_CONSTRUCTOR_ENTRY|[48]|<init>()
14:17:43.128 (128244620)|SYSTEM_CONSTRUCTOR_EXIT|[48]|<init>()
14:17:43.128 (128370810)|SYSTEM_METHOD_ENTRY|[48]|WebServiceCallout.invoke(APEX_OBJECT, APEX_OBJECT, MAP, LIST)
14:17:43.133 (133441746)|CALLOUT_REQUEST|[48]|ProcessaFormando_element:[Autorizacao=XXX, Autorizacao_type_info=(Autorizacao, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Bairro_xc=XXXX X, Bairro_xc_type_info=(Bairro__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Celular_da_mae_xc=(XX) XXXX-XXXX, Celular_da_mae_xc_type_info=(Celular_da_mae__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Celular_do_pai_xc=null, Celular_do_pai_xc_type_info=(Celular_do_pai__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Cep_xc=XXXX-XXX, Cep_xc_type_info=(Cep__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Cidade_xc=XXX, Cidade_xc_type_info=(Cidade__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Complemento_xc=null, Complemento_xc_type_info=(Complemento__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Data_pedido_AR_xc=null, Data_pedido_AR_xc_type_info=(Data_pedido_AR__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Data_pedido_SA_xc=null, Data_pedido_SA_xc_type_info=(Data_pedido_SA__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Email_alternativo_xc=null, Email_alternativo_xc_type_info=(Email_alternativo__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Empresa_Separacao_xc=null, Empresa_Separacao_xc_type_info=(Empresa_Separacao__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Endereco_xc=XXX XX, Endereco_xc_type_info=(Endereco__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), FirstName=XXXXX, FirstName_type_info=(FirstName, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Fotos_Baile_xc=0, Fotos_Baile_xc_type_info=(Fotos_Baile__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Fotos_Colacao_xc=27, Fotos_Colacao_xc_type_info=(Fotos_Colacao__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Fotos_Outros_xc=48, Fotos_Outros_xc_type_info=(Fotos_Outros__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), ID_do_formando_xc=XXX_XXXX_XXXXXX, ID_do_formando_xc_type_info=(ID_do_formando__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), LastName=XXXXX XXXX, LastName_type_info=(LastName, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Nome_da_mae_xc=XXXXX XXX, Nome_da_mae_xc_type_info=(Nome_da_mae__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Nome_do_pai_xc=null, Nome_do_pai_xc_type_info=(Nome_do_pai__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Nro_xc=null, Nro_xc_type_info=(Nro__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Panoramicas_xc=0, Panoramicas_xc_type_info=(Panoramicas__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), PersonEmail=crsilva95@yahoo.com.br, PersonEmail_type_info=(PersonEmail, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), PersonHomePhone=(XX) XXXX-XXXX, PersonHomePhone_type_info=(PersonHomePhone, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), PersonMobilePhone=(XX) XXXX-XXXX, PersonMobilePhone_type_info=(PersonMobilePhone, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), PersonOtherPhone=null, PersonOtherPhone_type_info=(PersonOtherPhone, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Situa_o_Avulso_xc=XXXXX XXXX - XX XXXXX, Situa_o_Avulso_xc_type_info=(Situa_o_Avulso__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Telefone_da_mae_xc=null, Telefone_da_mae_xc_type_info=(Telefone_da_mae__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), Telefone_do_pai_xc=null, Telefone_do_pai_xc_type_info=(Telefone_do_pai__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), UF_xc=MG, UF_xc_type_info=(UF__c, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), apex_schema_type_info=(http://xx.xxxxxxx.com.br/, true, false), field_order_type_info=(Autorizacao, ID_do_formando_xc, FirstName, LastName, PersonMobilePhone, PersonEmail, PersonHomePhone, Bairro_xc, Celular_da_mae_xc, Celular_do_pai_xc, ...)]::SFDC_STACK_DEPTH=1 SOAPAction="http://xx.xxxxxxx.com.br/ProcessaFormando" User-Agent=SFDC-Callout/31.0 Accept=text/xml Content-Type=text/xml; charset=UTF-8 
14:17:43.157 (157957558)|EXCEPTION_THROWN|[48]|System.CalloutException: Web service callout failed: Unexpected element. Parser was expecting element 'http://schemas.xmlsoap.org/soap/envelope/:Envelope' but found ':html'
14:17:43.158 (158055274)|SYSTEM_METHOD_EXIT|[48]|WebServiceCallout.invoke(APEX_OBJECT, APEX_OBJECT, MAP, LIST)
14:17:43.158 (158110898)|FATAL_ERROR|System.CalloutException: Web service callout failed: Unexpected element. Parser was expecting element 'http://schemas.xmlsoap.org/soap/envelope/:Envelope' but found ':html'

Class.SistemaFFServiceClient.FormandosSoap.ProcessaFormando: line 48, column 1
Class.SistemaFF.AtualizarFormando: line 44, column 1
14:17:43.158 (158124309)|FATAL_ERROR|System.CalloutException: Web service callout failed: Unexpected element. Parser was expecting element 'http://schemas.xmlsoap.org/soap/envelope/:Envelope' but found ':html'

Class.SistemaFFServiceClient.FormandosSoap.ProcessaFormando: line 48, column 1
Class.SistemaFF.AtualizarFormando: line 44, column 1
14:17:43.381 (158139458)|CUMULATIVE_LIMIT_USAGE
14:17:43.381|LIMIT_USAGE_FOR_NS|(default)|
  Number of SOQL queries: 0 out of 200
  Number of query rows: 0 out of 50000
  Number of SOSL queries: 0 out of 20
  Number of DML statements: 0 out of 150
  Number of DML rows: 0 out of 10000
  Maximum CPU time: 0 out of 60000
  Maximum heap size: 0 out of 12000000
  Number of callouts: 1 out of 10
  Number of Email Invocations: 0 out of 10
  Number of future calls: 0 out of 10
  Number of Mobile Apex push calls: 0 out of 10

14:17:43.381|CUMULATIVE_LIMIT_USAGE_END

14:17:43.158 (158163968)|CODE_UNIT_FINISHED|SistemaFF.AtualizarFormando
14:17:43.161 (161667998)|EXECUTION_FINISHED

What I can't understand is that just in sometimes I got the error and in another times works fine.

What should I do?
Can you guys help me to write a test class?

My trigger:

trigger Atualizar_Fotosfaltantes_AR_case on Account (after update) {

   public List<Case> casesToUpdate = new List<Case>();
   public List<Task> tasksToUpdate = new List<Task>();
    
   public Set <id> ids = new Set <id> ();
    
    for (Account acc: trigger.new) {
        if (acc.antecipado__c == 'AR' || acc.antecipado__c == 'TES' || acc.Nome_do_produto_adquirido__c.contains('AR ')){
            ids.add(acc.id);
        }
    
    if(ids.size()>0){
    For(Case c : [SELECT Id, motivo__c, Formando_com_fotos__c, accountid FROM Case WHERE (motivo__c = 'Formandos AR' OR motivo__c = 'Fotos faltantes') AND accountId IN: ids]){
    For(Task t : [SELECT Id, subject, status FROM Task WHERE (subject = 'AR - Aguardando fotos faltantes' OR subject = 'AR - LuxColor - Aguardando fotos faltantes') AND status != 'Concluído' AND whatid =: c.id]){
    
            if((acc.Formando_com_novas_fotos__c == 'SIM' || acc.Formando_com_novas_fotos__c == 'NÃO') && c.motivo__c == 'Formandos AR'){        
                c.Formando_com_fotos__c = acc.Formando_com_novas_fotos__c;
                }
            if((acc.Formando_com_novas_fotos__c == 'SIM' || acc.Formando_com_novas_fotos__c == 'NÃO') && c.motivo__c == 'Formandos AR'){        
                t.status = 'Concluído';
                
            }
            if((acc.Formando_com_novas_fotos__c == 'FOTOS RECEBIDAS' || acc.Formando_com_novas_fotos__c == 'ENVIAR NOVAMENTE') && c.motivo__c == 'Fotos faltantes'){        
                c.Formando_com_fotos__c = acc.Formando_com_novas_fotos__c; 
            }
                casesToUpdate.add(c);
                tasksToUpdate.add(t); 
            }
    }
    }
    }
    	update casesToUpdate;
    update taskstoupdate;
}

I tried create the test class, but it stops to coverage in line 14 of my trigger so I stoped to continue in my test class. I got 52%:

@isTest(SeeAllData=true)
public class FotosFaltantes_AR_test{
  static testmethod void MyUnitTest001(){

      Account acc = new Account();
            acc.LastName = 'Account Avulso';
            acc.recordtypeid = '012U00000000vYx';
      		acc.Antecipado__c = 'AR';
   			acc.Formando_com_novas_fotos__c = null;
        insert acc;
      
       Test.startTest();
          
           acc.Formando_com_novas_fotos__c = 'SIM';
    update acc;
      
      Test.stopTest();

    Case c = new Case();
      	c.motivo__c = 'Formandos AR';
        c.Formando_com_fotos__c = null;
      	c.status = 'Novo';
      c.AccountId = acc.id;
      insert c;
      
    Task t = new Task();
      	t.Subject = 'AR - Aguardando fotos faltantes';
      	t.Status = 'Nenhum';
      t.WhatId = c.id;
      insert t;
     

      	List<Case> cases = [SELECT Formando_com_fotos__c FROM Case WHERE Id =:c.Id];
       System.assertEquals(acc.Formando_com_novas_fotos__c, cases[0].Formando_com_fotos__c);
  }
}

Thanks !
I have an issue with dataloader while trying to load some records that fires the following trigger that gives me an error System.LimitException: Too many SOQL queries: 101 because of this issue:
trigger AtualizarAR_timba_task on Case (after update) {

List<String> ids = new List <String> ();
    for (Case c: trigger.new) {
        if (Trigger.oldMap.get(c.id).Endere_o_pagamento__c != c.Endere_o_pagamento__c || Trigger.oldMap.get(c.id).Novas_altera_es__c != c.Novas_altera_es__c || Trigger.oldMap.get(c.id).Nome_completo_pagamento__c != c.Nome_completo_pagamento__c && (c.motivo__c == 'Formandos AR')){
            ids.add(c.id);
        }
        
        Map<String, List<Task>> taskMap = new Map<String, List<Task>>();
for (Task t: [SELECT Id, whatid, subject, status, Aprovado__c, description FROM Task WHERE subject = 'AR - Impressão aprovada?' AND status != 'Concluído' AND whatid =: ids]){

  List<Task> taskList= new List<Task>();
  
  if (taskMap.containsKey(t.whatid)){
    taskList = taskMap.get(t.whatid);
  }
        if(c.Novas_altera_es__c != null){       
            t.Aprovado__c = 'NÃO';
            t.status = 'Concluído';
        }
        if(c.Nome_completo_pagamento__c != null && c.Endere_o_pagamento__c == null){
            t.description = 'Nome da lombada = '+c.Nome_completo_pagamento__c+'';
            t.Aprovado__c = 'SIM';
            t.status = 'Concluído';
        }
        if(c.Nome_completo_pagamento__c != null && c.Endere_o_pagamento__c != null){

            t.description = 'Nome da lombada = '+c.Nome_completo_pagamento__c+'\n\nNovo endereço = '+c.Endere_o_pagamento__c+'';
            t.Aprovado__c = 'SIM';
            t.status = 'Concluído';
          
        }
         taskList.add(t);
         taskMap.put(t.whatId, taskList);
         update(taskList);
}            
}
}
I'll be glad if you can help me with rephrasing the SOQL query to be more efficient.

Thanks,

Hi,

I'm trying to send an email scheduling by a date field in my task:
global class Email_agendado_Impressao implements Schedulable {

    global void execute(SchedulableContext sc) {
    
        for (Task t: [select Id, E_mail__c, Data_do_pedido__c from Task where subject = 'Fotos faltantes - Envio de Backup']){

        if (t.Data_do_pedido__c == system.today()){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = new String[]{};   
            toAddresses.add(t.e_mail__c);
          mail.setToAddresses(toAddresses);
            
            mail.setSenderDisplayName('Test email');

          mail.setSubject('Test Schedule');
          mail.setPlainTextBody('Test email');
        }
        }
    }
}

I had scheduled, but I didn't receive the email.

Probably my code is wrong, it is my first time scheduling.

What should I do?

Thanks !
I'm trying to make my test class understand that all the tasks are closed.
The problem is it in "LIMIT 1" but if I remove "LIMIT 1" I get this:

System.QueryException: List has more than 1 row for assignment to SObject
Stack Trace: Class.Email_abertura_de_vaga_test.myUnitTest001: line 23, column 1

This is my class:

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {

User u = [select id, Name from User where Name='CP7 Marketing'];

Case ct = new Case();
    ct.Func_abertura_chamado__c = 'EVERTON GOMES';
    ct.motivo__c='Abertura de vaga';
    ct.subject='test';
    ct.Description='test test';
    ct.resposta__c=null;
    ct.Nome_atendimento__c=null;
    ct.N_veis__c=null;
    ct.Meios_de_divulga_o__c=null;
    ct.Candidatos_agendados__c=null;
    ct.Candidatos_avaliados__c=null;
    ct.Candidatos_pr_selecionados__c=null;
    ct.status = 'Novo';
insert ct;
     
      Task t = [select id, whatid from Task where isClosed=true LIMIT 1];

ct.status = 'Fechado';
ct.status_do_processo__c = null;
ct.id = t.whatid;     
ct.Func_abertura_chamado__c = 'THIAGO MARTINS';
ct.Nome_atendimento__c='Teste';
    ct.N_veis__c='Recepcionista';
    ct.Meios_de_divulga_o__c='TEste';
    ct.Candidatos_agendados__c=12;
    ct.Candidatos_avaliados__c=10;
    ct.Candidatos_pr_selecionados__c=2;
    ct.In_cio__c= Date.today();
    ct.resposta__c='teste';
update ct;
}


I'm trying to deploy this trigger:
trigger NaoFechaChamado on Case (after update) {
    
    Set <id> ids = new Set <id> ();
    for (Case c: trigger.new){
        if (c.status=='Fechado'){
            ids.add(c.id);
        }
    }  
for (Case c: trigger.new) {
      if(ids.size()>0){
          for(Task t : [SELECT Id, WhatId, owner.name, subject FROM Task WHERE isclosed=false AND (Not subject like '%Fech%') AND whatid IN: ids]){
            
            if(c.status_do_processo__c != 'Extinto'){
            c.addError('Você não pode fechar um chamado com tarefas abertas. "'+t.subject+'" está aberta. Verificar com '+t.owner.name+'');
      }
          }
}
    if(ids.size()>0){
          for(Task t : [SELECT Id, WhatId, owner.name, subject FROM Task WHERE isclosed=false AND (subject like '%Fech%') AND whatid IN: ids]){
            
            if(c.status_do_processo__c != 'Extinto'){
            t.status = 'Concluído';
            update t;
      }
          }
}
}
}

I don't want to close my cases with tasks opened.
It works fine, but when I will deploy I get this error message "Failure Message: "System.DmlException: Update failed. First exception on row 0 with id 500U0000009hsErIAI; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Você não pode fechar um chamado com tarefas abertas. "Abertura de vaga - Aprovar vaga" está aberta. Verificar com CP7 Diretoria: []", Failure Stack Trace: "Class.Email_abertur..."

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {
          
Case ca = new Case ();
    ca.Func_abertura_chamado__c = 'EVERTON GOMES';
    ca.motivo__c='Abertura de vaga';
    ca.subject='test';
    ca.Description='test test';
    ca.resposta__c=null;
    ca.Nome_atendimento__c='Asassa';
    ca.N_veis__c='Auxiliar';
    ca.Meios_de_divulga_o__c='Asdfgh';
    ca.Candidatos_agendados__c=15;
    ca.Candidatos_avaliados__c=9;
    ca.Candidatos_pr_selecionados__c=1;
insert ca;

ca.resposta__c='teste'; ca.Func_abertura_chamado__c = 'ALAN BRONER';
    ca.motivo__c='Abertura de vaga'; ca.Nome_atendimento__c='Teste';
    ca.N_veis__c='Recepcionista';
    ca.Meios_de_divulga_o__c='TEste';
    ca.Candidatos_agendados__c=12;
    ca.Candidatos_avaliados__c=10;
    ca.Candidatos_pr_selecionados__c=2;
    ca.In_cio__c= Date.today();
update ca;
 }           
}

I thought is because I have this another trigger:

trigger CriarTarefaCase_Abertura_de_vaga on Case (after insert) {

List<Task> tasks = new List<Task>();
    List<Case> cse = Trigger.new;
        
    for (Case c : cse){
            if (c.motivo__c == 'Abertura de vaga' && c.status != 'Fechado'){
          Task tsk = new Task
              (whatID = c.ID,
               Subject = 'Abertura de vaga - Aprovar vaga',
               ActivityDate = Date.today(),
               Ownerid = '005U0000000FDE9');
      tasks.add(tsk);
            }
}
insert tasks;
}

I found the problem, but I don't have any idea what I have to do to deploy my trigger "NaoFechaChamado".
Hi,

I can't deploy anything in my organization because I always get 74%.
I read in some topics that maybe I have a test class that have 0% coverage or some other issue.

I executed all my test class and the first test class I've encountered an issue  is bringing me 100% coverage in 2 of my triggers:

@istest(seealldata=true)
public class AtualizarProduto_adquirido_deleteSA_test{
    static testmethod void unittest(){
        
        Account acc=new Account();
        acc.FirstName = 'Tste';
        acc.LastName = 'Teste';
        acc.ID_do_formando__c = 'CP7_0000_000001';
        acc.Turma__c = 'a06U0000006GuHc';
        acc.Nome_do_produto_adquirido__c = 'SUPER ÁLBUM';
        acc.Data_da_venda_SA__c = Date.today();
        acc.Situacao__c = 'VENDA APROVADA';
        acc.pesquisa_de_mercado__c = '1 - Pesquisa Satisfação B2';
        acc.antecipado__c = null;
        insert acc;
      
        Asset a=new Asset();       
         a.name = 'SUPER ÁLBUM';
         a.Price = 1000;
         a.Parcelas__c = 10;
         a.data_do_contrato__c = date.today();
         a.accountId = acc.id;
         a.quantity = 0;
        insert a;
        
         a.Status = 'Cancelado';
        update a;
            
        acc.Nome_do_produto_adquirido__c = null;
        acc.Data_da_venda_SA__c = null;
        update acc;
        }
 }

When I execute I get this error:
Methods defined as TestMethod do not support Web service callouts, test skipped
Hi,

I am having difficulty when trying to create the test class for my trigger:

trigger Email_Pesquisa_Mercado_account on Account (after update) {

Map<Id,Account> accountMap = new Map<Id,Account>([Select Id, Name, (Select Id,Name,Price,Parcelas__c,Data_do_contrato__c,quantity,status from Assets where quantity>0 AND Data_do_contrato__c != null AND (NOT name like 'AR -%')) from Account Where recordtypeid='012U00000000vYx' AND Id in : Trigger.New]);

for(Account Ac : Trigger.New){
   String AssetName;
   Decimal ValorVenda;
   Decimal Parcelas;
   Date DataContrato;
   String SemEmail;
   String SemEmailprincipal;

   String Situacao;
   Situacao = ac.Situacao__c;
  if(Situacao.contains('APROVADA') && Trigger.oldMap.get(ac.id).pesquisa_de_mercado__c != ac.pesquisa_de_mercado__c && ac.pesquisa_de_mercado__c == '1 - Pesquisa Satisfação B2' && ac.antecipado__c != 'AR' && ac.antecipado__c != 'TES' && (ac.turma__c == '2013 2S - UNISA - MEDICINA - SAO PAULO' || ac.turma__c == '2013 2S - FAAP - ENG,ARQ,ECON,REL INT,S IN - SAO PAULO' || ac.turma__c == '2013 2S - UNICID - ODONTOLOGIA - SAO PAULO')){
   if(accountMap.get(Ac.Id).Assets.size() > 0){
    for(Asset obj : accountMap.get(Ac.Id).Assets){
        if(obj.name != null){
        if(AssetName==null){
        AssetName = obj.Name;
        }
     else{
     AssetName = AssetName + '<br> ' + ''+obj.Name+'';
    }
         ValorVenda = obj.Price;
         Parcelas = obj.Parcelas__c;    
         DataContrato = obj.Data_do_contrato__c.addDays(90);
         }
    }

            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[]{};              
                if(ac.PersonEmail == null){
                SemEmailprincipal = 'sememail@b2agencia.com.br';
                    }
                if(ac.PersonEmail != null){
                 SemEmailprincipal = ac.PersonEmail;
                }                       

                toAddresses.add(SemEmailprincipal);               
                if(ac.Email_alternativo__c == null ){
                SemEmail = 'sememail@b2agencia.com.br';
                    }
                 if(ac.Email_alternativo__c != null){
                 SemEmail = ac.Email_alternativo__c;
                 }               
                toAddresses.add(SemEmail);               
            mail.setToAddresses(toAddresses);

            mail.setreplyto('foto.filmagem@b2agencia.com.br');
            mail.setSenderDisplayName('B2 Agência');

            mail.setSubject('B2 Foto e Filmagem: Seu álbum de formatura');
            mail.setHtmlBody('Olá, '+ac.FirstName+' '+ac.LastName+'<p>Primeiramente gostaríamos de parabenizá-lo pela conquista da sua formatura, sabemos que é um grande marco para o início da sua vida profissional. Desejamos que você tenha muito sucesso em sua caminhada!<p>Para guardar todas essas recordações, você efetuou a compra dos produtos abaixo:<p>'+AssetName+'<p>O valor total da sua compra é de R$ '+ValorVenda+', parcelado em '+Parcelas+' vezes.<p>Os produtos extras serão entregues até o dia '+DataContrato.day()+'/'+DataContrato.month()+'/'+DataContrato.year()+', no '+ac.Cidade__c+' - RUA '+ac.Endereco__c+', '+ac.Nro__c+'<p>O envio dos mesmos é feito pelo correio, que faz 3 tentativas de entrega. Caso o correio não consiga efetuar a entrega nas 3 tentativas, o produto volta para o escritório e vamos aguardar o seu contato nos informando um novo endereço de entrega.<p><font color="#EE7600"><b>PREOCUPADO COM A SATISFAÇÃO DE NOSSOS CLIENTES, BUSCAMOS PROMOVER MELHORIAS CONTÍNUAS EM NOSSOS SERVIÇOS E PRODUTOS, PARA ISSO, A SUA OPINIÃO É MUITO IMPORTANTE!<p>TIRE 2 MINUTINHOS DO SEU DIA PARA RESPONDER À NOSSA PESQUISA DE SATISFAÇÃO</font></b> <a href=http://sistemaff.force.com/B2/TIMBASURVEYS__Survey?id=a0UU0000005UKnaMAG&pAccId='+ac.id+'&wf=yes><font color="#458B00"><b>CLICANDO AQUI</b></font></a>.</p><br>Obrigado!<br><a href=http://sistemaff.force.com/B2/TIMBASURVEYS__Survey?id=a0UU0000005UKnaMAG&pAccId='+ac.id+'&wf=yes><img src="https://na12.salesforce.com/servlet/servlet.ImageServer?id=015U0000002G2fd&oid=00DU0000000KBJn" alt="B2"/>');

            Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
        }
        }
        }
        }
Any help will be great !

Thanks !

Hi,

I am asking this in everywhere and no one can help me.

I have this trigger that will bring all assets in an email.

trigger Email_Pesquisa_Mercado_account on Account (after update) {

Map<Id,Account> accountMap = new Map<Id,Account>([Select Id, Name, (Select Id,Name from Assets where Quantity>0) from Account Where Id in : Trigger.New]);


for(Account Ac : Trigger.New){
  if(ac.separador__c == 'pesquisa'){
   String AssetName;
   if(accountMap.get(Ac.Id).Assets.size() > 0){
    for(Asset obj : accountMap.get(Ac.Id).Assets){
        if(obj.name != null){
     AssetName = AssetName + ', ' + '"'+obj.Name+'"';
        }
    }
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[]{};   
                toAddresses.add(ac.PersonEmail);
            mail.setToAddresses(toAddresses);
            
            mail.setreplyto('naoresponda@cp7.com.br');
            
            mail.setSubject('Pesquisa');
            mail.setHtmlBody('Olá, '+ac.FirstName+' '+ac.LastName+'<p>'+AssetName+'</p>');
                
            Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
        }
    }
}
}

I get all the assets, but I received the email like this:

Olá, Xxx Xxx
null, "AMPLIAÇÃO", "FOTO 20X30CM", "DVD", "AR - SUPER VIP"

Why I am receiving a null asset?
What should I do?

Thanks !

Hi,

I am trying send and email that will bring me all the assets from account.
Set <id> ids = new Set <id> ();
    for (Account acc: trigger.new) {
            ids.add(acc.id);
        }
        
    for (Asset ast: [SELECT Id, Name, Quantity FROM Asset WHERE Quantity>0 AND accountid IN: ids]){

    for(Account acc : trigger.new){
        if(acc.separador__c == 'pesquisa'){        
	        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
	        String[] toAddresses = new String[]{};   
	            toAddresses.add(acc.PersonEmail);
	            toAddresses.add(acc.Email_alternativo__c);
	        mail.setToAddresses(toAddresses);
            
            mail.setreplyto('naoresponda@cp7.com.br');
            
	        mail.setSubject('Pesquisa');
            mail.setHtmlBody('Olá, '+acc.FirstName+''+acc.LastName+'<p>'+ast.Name+'</p>');

In this trigger I only get the last asset created and not all the list.

Thanks !
Hi,

I converted my date field in string, so I can updated my other field in account.

    for (Account acc: [SELECT Id, Data_pedido_AR__c, Data_pedido_SA__c FROM Account WHERE id IN: ids]){

    for (Case c: trigger.new) {
   
    if(c.motivo__c == 'Formandos AR' && c.Data_pedido_AR__c != null && Trigger.oldMap.get(c.id).Data_pedido_AR__c != c.Data_pedido_AR__c){
    Datetime d = Date.Valueof(c.Data_pedido_AR__c);   
    String dateStr = d.format('dd/MM/yyyy');
    System.debug('::::::::::: ' + dateStr) ;

        acc.Data_pedido_AR__c = dateStr;
    }
update acc;


It works fine but in my account my field is one day less.
If I put c.Data_pedido_AR__c = 20/05/2014
I get acc.Data_pedido_AR__c = 19/05/2014

Why?
How can I create a duration field?

It will work like the field on the report.
But I want different types of dates.

I updated one custom date field in case when one of my tasks is completed.
And I want the duration between this custom date field and the closed date.

Thanks !
Hi !

I have this trigger

trigger DeletarProdutos_Qtd0 on Asset (after update) {

for(Asset ast:[SELECT quantity FROM Asset WHERE quantity = 0])

    delete ast;
}


I don't know if this trigger have something wrong, but in my sandbox worked.

I'm facing trouble with the test class.
I tried this:

@isTest (Seealldata=true)
private class DeletarProdutos_Qtd0_test {

    static testMethod void myUnitTest() {
       
        Account acc = new Account(firstname='Teste', lastname='Test');
        insert acc;
       
        Asset ass = new Asset();
        ass.name = 'SUPER ÁLBUM';
  ass.quantity = 0;
  ass.accountid = acc.id;
  insert ass;
       
  ass.quantity = 0;
  ass.accountid = acc.id;
  delete ass;
}
}


Thanks!
Hello !

I have a code to update my web service and it works fine.

Today I added another fields and I'm getting an error.
This is the fields I tried to add:
Situa_o_Avulso__c
Fotos_Colacao__c
Fotos_Baile__c
Fotos_Outros__c
Panoramicas__c

Failed to invoke future method 'private static void AtualizarFormando(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)' on class 'SistemaFF' for job id '707U000000aSJXW'

caused by: System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Formandos.ProcessaFormando(String Autorizacao, String ID_do_formando__c, String FirstName, String LastName, String PersonBirthdate, String PersonMobilePhone, String PersonEmail, String PersonHomePhone, String Bairro__c, String Celular_da_mae__c, String Celular_do_pai__c, String Cep__c, String Cidade__c, String Complemento__c, String Email_alternativo__c, String Endereco__c, String Nome_da_mae__c, String Nome_do_pai__c, String Nro__c, String Telefone_da_mae__c, String Telefone_do_pai__c, String PersonOtherPhone, String UF__c, String Situa_o_Avulso__c, String Fotos_Colacao__c, String Fotos_Baile__c, String Fotos_Outros__c, String Panoramicas__c)
   --- End of inner exception stack trace --- faultcode=soap:Server faultactor=

Class.SistemaFFServiceClient.FormandosSoap.ProcessaFormando: line 47, column 1
Class.SistemaFF.AtualizarFormando: line 41, column 1


Thanks!
Hi !

When I try to deploy my trigger. I'm getting this error:

Run Failures:
Email_abertura_de_vaga_test.myUnitTest001 System.DmlException: Update failed. First exception on row 0 with id 500U0000009g8I5IAI; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, Email_abertura_de_vaga_case: execution of AfterUpdate

caused by: System.NullPointerException: Attempt to de-reference a null object

My trigger:

trigger Email_abertura_de_vaga_case on Case (after update) {

  
for(Case c : trigger.new){
    if (c.Func_abertura_chamado__c == 'THIAGO MARTINS' && c.motivo__c == 'Abertura de vaga' && c.resposta__c != null){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = new String[]{};  
            toAddresses.add('thiago.martins@cp7.com.br');
          mail.setToAddresses(toAddresses);
         
            mail.setSenderDisplayName('Vaga finalizada');
           
            mail.setreplyto ('alessandra.gomes@cp7.com.br');        
           
          mail.setSubject(''+c.Nome_atendimento__c+'');
          mail.setHtmlBody('Olá, tudo bem '+c.Func_abertura_chamado__c+'?<p>Segue informações de seu novo funcinário:</p><p><b>Vaga:</b> '+c.N_veis__c+'</p><p><b>Solicitante da vaga:</b> '+c.Func_abertura_chamado__c+'</p><p><b>Data de abertura da vaga:</b> '+c.CreatedDate.day()+'/'+c.CreatedDate.month()+'/'+c.CreatedDate.year()+'</p><p><b>Meios de divulgação:</b> '+c.Meios_de_divulga_o__c+'</p><p><b>Número de candidatos agendados:</b> '+c.Candidatos_agendados__c+'</p><p><b>Número de candidatos avaliados:</b> '+c.Candidatos_avaliados__c+'</p><p><b>Número de candidatos pré-selecionados:</b> '+c.Candidatos_pr_selecionados__c+'</p><p><b>Data de fechamento:</b> '+c.ClosedDate.day()+'/'+c.ClosedDate.month()+'/'+c.ClosedDate.year()+'</p><p><b>Candidato contatado:</b> '+c.Nome_atendimento__c+'</p><p><b>Data de início:</b> '+c.In_cio__c.day()+'/'+c.In_cio__c.month()+'/'+c.In_cio__c.year()+'</p><p><b>Observações:</b> '+c.resposta__c+'</p>');
           
          Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
      }
...



My test class:

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {

Case ct = new Case();
    ct.Func_abertura_chamado__c = 'EVERTON GOMES';
    ct.motivo__c='Abertura de vaga';
    ct.subject='test';
    ct.Description='test test';
    ct.Nome_atendimento__c='Asassa';
    ct.N_veis__c='Auxiliar';
    ct.Meios_de_divulga_o__c='Asdfgh';
    ct.Candidatos_agendados__c=15;
    ct.Candidatos_avaliados__c=9;
    ct.Candidatos_pr_selecionados__c=1;
    ct.resposta__c=null;
insert ct;

ct.resposta__c='teste'; ct.Func_abertura_chamado__c = 'THIAGO MARTINS'; ct.motivo__c='Abertura de vaga';
ct.Nome_atendimento__c='Teste';
    ct.N_veis__c='Recepcionista';
    ct.Meios_de_divulga_o__c='TEste';
    ct.Candidatos_agendados__c=12;
    ct.Candidatos_avaliados__c=10;
    ct.Candidatos_pr_selecionados__c=2;
update ct;
     
}
Hi,

I have this trigger:

trigger Email_aberutra_de_vaga_case on Case (after update) {
 
for(Case c : trigger.new){
    if (c.motivo__c == 'Abertura de vaga' && c.Func_abertura_chamado__c == 'THIAGO MARTINS' && c.Status == 'Fechado'){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = new String[]{}; 
            toAddresses.add('thiago.martins@cp7.com.br');
          mail.setToAddresses(toAddresses);
        
            mail.setSenderDisplayName('Vaga finalizada');
          
            mail.setreplyto ('alessandra.gomes@cp7.com.br');       
          
          mail.setSubject(''+c.Nome_atendimento__c+'');
          mail.setHtmlBody('Olá, tudo bem '+c.Func_abertura_chamado__c+'?<p>Segue informações de seu novo funcinário:</p><p><b>Vaga:</b> '+c.N_veis__c+'</p><p><b>Solicitante da vaga:</b> '+c.Func_abertura_chamado__c+'</p><p><b>Data de abertura da vaga:</b> '+c.CreatedDate.day()+'/'+c.CreatedDate.month()+'/'+c.CreatedDate.year()+'</p><p><b>Meios de divulgação:</b> '+c.Meios_de_divulga_o__c+'</p><p><b>Número de candidatos agendados:</b> '+c.Candidatos_agendados__c+'</p><p><b>Número de candidatos avaliados:</b> '+c.Candidatos_avaliados__c+'</p><p><b>Número de candidatos pré-selecionados:</b> '+c.Candidatos_pr_selecionados__c+'</p><p><b>Data de fechamento:</b> '+c.ClosedDate.day()+'/'+c.ClosedDate.month()+'/'+c.ClosedDate.year()+'</p><p><b>Candidato contatado:</b> '+c.Nome_atendimento__c+'</p><p><b>Data de início:</b> '+c.In_cio__c.day()+'/'+c.In_cio__c.month()+'/'+c.In_cio__c.year()+'</p><p><b>Observações:</b> '+c.resposta__c+'</p>');
          
          Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
      }
      if (c.motivo__c == 'Abertura de vaga' && c.Func_abertura_chamado__c == 'LEONARDO MENDONÇA' && c.Status == 'Fechado'){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
      
        String[] toAddresses = new String[]{};
            toAddresses.add('leonardo.mendonca@cp7.com.br');
          mail.setToAddresses(toAddresses);
      
            mail.setSenderDisplayName('Vaga finalizada');
          
            mail.setreplyto ('alessandra.gomes@cp7.com.br');       
          
          mail.setSubject(''+c.Nome_atendimento__c+'');
          mail.setHtmlBody('Olá, tudo bem '+c.Func_abertura_chamado__c+'?<p>Segue informações de seu novo funcinário:</p><p><b>Vaga:</b> '+c.N_veis__c+'</p><p><b>Solicitante da vaga:</b> '+c.Func_abertura_chamado__c+'</p><p><b>Data de abertura da vaga:</b> '+c.CreatedDate.day()+'/'+c.CreatedDate.month()+'/'+c.CreatedDate.year()+'</p><p><b>Meios de divulgação:</b> '+c.Meios_de_divulga_o__c+'</p><p><b>Número de candidatos agendados:</b> '+c.Candidatos_agendados__c+'</p><p><b>Número de candidatos avaliados:</b> '+c.Candidatos_avaliados__c+'</p><p><b>Número de candidatos pré-selecionados:</b> '+c.Candidatos_pr_selecionados__c+'</p><p><b>Data de fechamento:</b> '+c.ClosedDate.day()+'/'+c.ClosedDate.month()+'/'+c.ClosedDate.year()+'</p><p><b>Candidato contatado:</b> '+c.Nome_atendimento__c+'</p><p><b>Data de início:</b> '+c.In_cio__c.day()+'/'+c.In_cio__c.month()+'/'+c.In_cio__c.year()+'</p><p><b>Observações:</b> '+c.resposta__c+'</p>');
          
          Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
      }
      if (c.motivo__c == 'Abertura de vaga' && c.Func_abertura_chamado__c == 'WANESSA PRADO' && c.Status == 'Fechado'){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
        String[] toAddresses = new String[]{}; 
            toAddresses.add('wanessa.prado@cp7.com.br');
          mail.setToAddresses(toAddresses);
      
            mail.setSenderDisplayName('Vaga finalizada');
          
            mail.setreplyto ('alessandra.gomes@cp7.com.br');       
          
          mail.setSubject(''+c.Nome_atendimento__c+'');
          mail.setHtmlBody('Olá, tudo bem '+c.Func_abertura_chamado__c+'?<p>Segue informações de seu novo funcinário:</p><p><b>Vaga:</b> '+c.N_veis__c+'</p><p><b>Solicitante da vaga:</b> '+c.Func_abertura_chamado__c+'</p><p><b>Data de abertura da vaga:</b> '+c.CreatedDate.day()+'/'+c.CreatedDate.month()+'/'+c.CreatedDate.year()+'</p><p><b>Meios de divulgação:</b> '+c.Meios_de_divulga_o__c+'</p><p><b>Número de candidatos agendados:</b> '+c.Candidatos_agendados__c+'</p><p><b>Número de candidatos avaliados:</b> '+c.Candidatos_avaliados__c+'</p><p><b>Número de candidatos pré-selecionados:</b> '+c.Candidatos_pr_selecionados__c+'</p><p><b>Data de fechamento:</b> '+c.ClosedDate.day()+'/'+c.ClosedDate.month()+'/'+c.ClosedDate.year()+'</p><p><b>Candidato contatado:</b> '+c.Nome_atendimento__c+'</p><p><b>Data de início:</b> '+c.In_cio__c.day()+'/'+c.In_cio__c.month()+'/'+c.In_cio__c.year()+'</p><p><b>Observações:</b> '+c.resposta__c+'</p>');
          
          Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
      }
....


And my test class in sandbox shows me 90%.
But when I will deploy in my production I get 71%.

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {

Case ct = new Case ();
    ct.Func_abertura_chamado__c = 'THIAGO MARTINS';
    ct.motivo__c='Abertura de vaga';
    ct.subject='test';
    ct.Description='test test';
    ct.status='Fechado';
insert ct;
}
    static testMethod void myUnitTest002() {
      
Case cl = new Case ();
    cl.Func_abertura_chamado__c = 'LEONARDO MENDONÇA';
    cl.motivo__c='Abertura de vaga';
    cl.subject='test';
    cl.Description='test test';
    cl.status='Fechado';
insert cl;

    }
        static testMethod void myUnitTest003() {
       
Case ca = new Case ();
    ca.Func_abertura_chamado__c = 'WANESSA PRADO';
    ca.motivo__c='Abertura de vaga';
    ca.subject='test';
    ca.Description='test test';
    ca.status='Fechado';
insert ca;

}
...
Hi,

There's a way to update a number custom field always increasing one more.

I want this field updated always when someone change any field in my case.
So I will put an IF in LastModifiedBy when is updated.

Thanks !
Hi there,

I'm trying to create a schedule e-mail to send in a determinate e-mail field in my task if this task is still opened after a few days.

I don't even know how to begin create this code.

Any help will be great.

Thanks !
I'm trying do deploy one trigger and one test class:

trigger DeleteTask_Solicitacao_Pagamento on Case (after update){
          
    Set <id> ids = new Set <id> ();
    for (Case c: trigger.new){
        if (c.motivo__c == 'Solicitação de Pagamento' && c.status <> 'Fechado'){
            ids.add(c.id);
        }
    }
            
  for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c >= 1 || c.Quantidade_de_PP_s_Estojo__c >= 1) && c.tipo_de_pagamento__c == 'DESPESAS' && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT Id, description, Solicita_o_de_Pagamento__c, ownerid FROM Task WHERE (subject = 'Solicitação de Pagamento - Lançar PP' OR subject = 'Solicitação de Pagamento - Baixar PP') AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000002KGRq';
          update t;
         }
      }
      }
      }
  for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c >= 1 || c.Quantidade_de_PP_s_Estojo__c >= 1) && c.tipo_de_pagamento__c == 'TURMAS' && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT Id, description, Solicita_o_de_Pagamento__c FROM Task WHERE (subject = 'Solicitação de Pagamento - Lançar PP' OR subject = 'Solicitação de Pagamento - Baixar PP') AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000001KrZy';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c < 1 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c < 1 || c.Quantidade_de_PP_s_Estojo__c == null) || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
      if(ids.size()>0){
      List <Task> t=[SELECT whatid, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Lançar PP' AND status != 'Concluído' AND whatid IN: ids];
      if (t.size()>0){
         
      delete t;
          }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Nota_fiscal__c == 'SIM' && c.tipo_de_pagamento__c == 'TURMAS') && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000001KrZy';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Nota_fiscal__c == 'SIM' && c.tipo_de_pagamento__c == 'DESPESAS') && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000002KGRq';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if (c.Nota_fiscal__c != 'SIM' || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT whatid, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
      delete t;
          }
      }
      }
      }
     
      for (Case c: trigger.new) {
      if ((c.forma_de_pagamento__c == 'MALOTE' || c.forma_de_pagamento__c == 'DEPÓSITO + MALOTE') && c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados'){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Malote' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
       if ((c.forma_de_pagamento__c != 'MALOTE' && c.forma_de_pagamento__c != 'DEPÓSITO + MALOTE') || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
       if(ids.size()>0){
       List <Task> t=[SELECT whatId, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Malote' AND status != 'Concluído' AND whatid IN: ids];
       if (t.size()>0){
         
          delete t;
      }
       }
       }
       }
      
    for (Case c: trigger.new) {
       if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'MALOTE' && (c.Quantas_PP_s_pagamento__c == 0 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c == 0 || c.Quantidade_de_PP_s_Estojo__c == null)){
       if(ids.size()>0){
          List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicitar_PP__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
         update t;
         }
         }
         }
         }
        
        for (Case c: trigger.new) {
      if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'DEPÓSITO + MALOTE' && (c.Quantas_PP_s_pagamento__c == 0 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c == 0 || c.Quantidade_de_PP_s_Estojo__c == null)){
      if(ids.size()>0){
             List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
             if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = false;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = true;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
         update t;
         }
         }
         }
         }       
        
            for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c != 'MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){
        if(ids.size()>0){
            List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
            if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = false;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
       update t;
        }
        }
        }
        }
       
    for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){
        if(ids.size()>0){
        List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
        if (t.size()>0){
         
            t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
      update t;
        }
        }
        }
}

    for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'DEPÓSITO + MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){   
        if(ids.size()>0){
        List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
        if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = true;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
       update t;
        }
        }
        }
        }
       
    for (Case c: trigger.new) {
       if (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados'){
       if(ids.size()>0){
       List <Task> t=[SELECT whatId, subject, status FROM Task WHERE (subject = 'Solicitação de Pagamento - Aprovar solicitação' OR subject = 'Solicitação de Pagamento - Não aprovada') AND status != 'Concluído' AND whatid IN: ids];
       if (t.size()>0){
         
          delete t;
      }
       }
       }
       }
      
}


I got this error message:
"Failure Message: "System.LimitException: Too many Email Invocations: 11", Failure Stack Trace: "Trigger.Email_SolicitacaoExt_Pag2: line 129, column 1"
Hi,

I converted my date field in string, so I can updated my other field in account.

    for (Account acc: [SELECT Id, Data_pedido_AR__c, Data_pedido_SA__c FROM Account WHERE id IN: ids]){

    for (Case c: trigger.new) {
   
    if(c.motivo__c == 'Formandos AR' && c.Data_pedido_AR__c != null && Trigger.oldMap.get(c.id).Data_pedido_AR__c != c.Data_pedido_AR__c){
    Datetime d = Date.Valueof(c.Data_pedido_AR__c);   
    String dateStr = d.format('dd/MM/yyyy');
    System.debug('::::::::::: ' + dateStr) ;

        acc.Data_pedido_AR__c = dateStr;
    }
update acc;


It works fine but in my account my field is one day less.
If I put c.Data_pedido_AR__c = 20/05/2014
I get acc.Data_pedido_AR__c = 19/05/2014

Why?
Hello !

I have a code to update my web service and it works fine.

Today I added another fields and I'm getting an error.
This is the fields I tried to add:
Situa_o_Avulso__c
Fotos_Colacao__c
Fotos_Baile__c
Fotos_Outros__c
Panoramicas__c

Failed to invoke future method 'private static void AtualizarFormando(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)' on class 'SistemaFF' for job id '707U000000aSJXW'

caused by: System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Formandos.ProcessaFormando(String Autorizacao, String ID_do_formando__c, String FirstName, String LastName, String PersonBirthdate, String PersonMobilePhone, String PersonEmail, String PersonHomePhone, String Bairro__c, String Celular_da_mae__c, String Celular_do_pai__c, String Cep__c, String Cidade__c, String Complemento__c, String Email_alternativo__c, String Endereco__c, String Nome_da_mae__c, String Nome_do_pai__c, String Nro__c, String Telefone_da_mae__c, String Telefone_do_pai__c, String PersonOtherPhone, String UF__c, String Situa_o_Avulso__c, String Fotos_Colacao__c, String Fotos_Baile__c, String Fotos_Outros__c, String Panoramicas__c)
   --- End of inner exception stack trace --- faultcode=soap:Server faultactor=

Class.SistemaFFServiceClient.FormandosSoap.ProcessaFormando: line 47, column 1
Class.SistemaFF.AtualizarFormando: line 41, column 1


Thanks!
Can you guys help me to write a test class?

My trigger:

trigger Atualizar_Fotosfaltantes_AR_case on Account (after update) {

   public List<Case> casesToUpdate = new List<Case>();
   public List<Task> tasksToUpdate = new List<Task>();
    
   public Set <id> ids = new Set <id> ();
    
    for (Account acc: trigger.new) {
        if (acc.antecipado__c == 'AR' || acc.antecipado__c == 'TES' || acc.Nome_do_produto_adquirido__c.contains('AR ')){
            ids.add(acc.id);
        }
    
    if(ids.size()>0){
    For(Case c : [SELECT Id, motivo__c, Formando_com_fotos__c, accountid FROM Case WHERE (motivo__c = 'Formandos AR' OR motivo__c = 'Fotos faltantes') AND accountId IN: ids]){
    For(Task t : [SELECT Id, subject, status FROM Task WHERE (subject = 'AR - Aguardando fotos faltantes' OR subject = 'AR - LuxColor - Aguardando fotos faltantes') AND status != 'Concluído' AND whatid =: c.id]){
    
            if((acc.Formando_com_novas_fotos__c == 'SIM' || acc.Formando_com_novas_fotos__c == 'NÃO') && c.motivo__c == 'Formandos AR'){        
                c.Formando_com_fotos__c = acc.Formando_com_novas_fotos__c;
                }
            if((acc.Formando_com_novas_fotos__c == 'SIM' || acc.Formando_com_novas_fotos__c == 'NÃO') && c.motivo__c == 'Formandos AR'){        
                t.status = 'Concluído';
                
            }
            if((acc.Formando_com_novas_fotos__c == 'FOTOS RECEBIDAS' || acc.Formando_com_novas_fotos__c == 'ENVIAR NOVAMENTE') && c.motivo__c == 'Fotos faltantes'){        
                c.Formando_com_fotos__c = acc.Formando_com_novas_fotos__c; 
            }
                casesToUpdate.add(c);
                tasksToUpdate.add(t); 
            }
    }
    }
    }
    	update casesToUpdate;
    update taskstoupdate;
}

I tried create the test class, but it stops to coverage in line 14 of my trigger so I stoped to continue in my test class. I got 52%:

@isTest(SeeAllData=true)
public class FotosFaltantes_AR_test{
  static testmethod void MyUnitTest001(){

      Account acc = new Account();
            acc.LastName = 'Account Avulso';
            acc.recordtypeid = '012U00000000vYx';
      		acc.Antecipado__c = 'AR';
   			acc.Formando_com_novas_fotos__c = null;
        insert acc;
      
       Test.startTest();
          
           acc.Formando_com_novas_fotos__c = 'SIM';
    update acc;
      
      Test.stopTest();

    Case c = new Case();
      	c.motivo__c = 'Formandos AR';
        c.Formando_com_fotos__c = null;
      	c.status = 'Novo';
      c.AccountId = acc.id;
      insert c;
      
    Task t = new Task();
      	t.Subject = 'AR - Aguardando fotos faltantes';
      	t.Status = 'Nenhum';
      t.WhatId = c.id;
      insert t;
     

      	List<Case> cases = [SELECT Formando_com_fotos__c FROM Case WHERE Id =:c.Id];
       System.assertEquals(acc.Formando_com_novas_fotos__c, cases[0].Formando_com_fotos__c);
  }
}

Thanks !
Hi,

I'm trying to send an email scheduling by a date field in my task:
global class Email_agendado_Impressao implements Schedulable {

    global void execute(SchedulableContext sc) {
    
        for (Task t: [select Id, E_mail__c, Data_do_pedido__c from Task where subject = 'Fotos faltantes - Envio de Backup']){

        if (t.Data_do_pedido__c == system.today()){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = new String[]{};   
            toAddresses.add(t.e_mail__c);
          mail.setToAddresses(toAddresses);
            
            mail.setSenderDisplayName('Test email');

          mail.setSubject('Test Schedule');
          mail.setPlainTextBody('Test email');
        }
        }
    }
}

I had scheduled, but I didn't receive the email.

Probably my code is wrong, it is my first time scheduling.

What should I do?

Thanks !
I'm trying to make my test class understand that all the tasks are closed.
The problem is it in "LIMIT 1" but if I remove "LIMIT 1" I get this:

System.QueryException: List has more than 1 row for assignment to SObject
Stack Trace: Class.Email_abertura_de_vaga_test.myUnitTest001: line 23, column 1

This is my class:

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {

User u = [select id, Name from User where Name='CP7 Marketing'];

Case ct = new Case();
    ct.Func_abertura_chamado__c = 'EVERTON GOMES';
    ct.motivo__c='Abertura de vaga';
    ct.subject='test';
    ct.Description='test test';
    ct.resposta__c=null;
    ct.Nome_atendimento__c=null;
    ct.N_veis__c=null;
    ct.Meios_de_divulga_o__c=null;
    ct.Candidatos_agendados__c=null;
    ct.Candidatos_avaliados__c=null;
    ct.Candidatos_pr_selecionados__c=null;
    ct.status = 'Novo';
insert ct;
     
      Task t = [select id, whatid from Task where isClosed=true LIMIT 1];

ct.status = 'Fechado';
ct.status_do_processo__c = null;
ct.id = t.whatid;     
ct.Func_abertura_chamado__c = 'THIAGO MARTINS';
ct.Nome_atendimento__c='Teste';
    ct.N_veis__c='Recepcionista';
    ct.Meios_de_divulga_o__c='TEste';
    ct.Candidatos_agendados__c=12;
    ct.Candidatos_avaliados__c=10;
    ct.Candidatos_pr_selecionados__c=2;
    ct.In_cio__c= Date.today();
    ct.resposta__c='teste';
update ct;
}


I'm trying to deploy this trigger:
trigger NaoFechaChamado on Case (after update) {
    
    Set <id> ids = new Set <id> ();
    for (Case c: trigger.new){
        if (c.status=='Fechado'){
            ids.add(c.id);
        }
    }  
for (Case c: trigger.new) {
      if(ids.size()>0){
          for(Task t : [SELECT Id, WhatId, owner.name, subject FROM Task WHERE isclosed=false AND (Not subject like '%Fech%') AND whatid IN: ids]){
            
            if(c.status_do_processo__c != 'Extinto'){
            c.addError('Você não pode fechar um chamado com tarefas abertas. "'+t.subject+'" está aberta. Verificar com '+t.owner.name+'');
      }
          }
}
    if(ids.size()>0){
          for(Task t : [SELECT Id, WhatId, owner.name, subject FROM Task WHERE isclosed=false AND (subject like '%Fech%') AND whatid IN: ids]){
            
            if(c.status_do_processo__c != 'Extinto'){
            t.status = 'Concluído';
            update t;
      }
          }
}
}
}

I don't want to close my cases with tasks opened.
It works fine, but when I will deploy I get this error message "Failure Message: "System.DmlException: Update failed. First exception on row 0 with id 500U0000009hsErIAI; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Você não pode fechar um chamado com tarefas abertas. "Abertura de vaga - Aprovar vaga" está aberta. Verificar com CP7 Diretoria: []", Failure Stack Trace: "Class.Email_abertur..."

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {
          
Case ca = new Case ();
    ca.Func_abertura_chamado__c = 'EVERTON GOMES';
    ca.motivo__c='Abertura de vaga';
    ca.subject='test';
    ca.Description='test test';
    ca.resposta__c=null;
    ca.Nome_atendimento__c='Asassa';
    ca.N_veis__c='Auxiliar';
    ca.Meios_de_divulga_o__c='Asdfgh';
    ca.Candidatos_agendados__c=15;
    ca.Candidatos_avaliados__c=9;
    ca.Candidatos_pr_selecionados__c=1;
insert ca;

ca.resposta__c='teste'; ca.Func_abertura_chamado__c = 'ALAN BRONER';
    ca.motivo__c='Abertura de vaga'; ca.Nome_atendimento__c='Teste';
    ca.N_veis__c='Recepcionista';
    ca.Meios_de_divulga_o__c='TEste';
    ca.Candidatos_agendados__c=12;
    ca.Candidatos_avaliados__c=10;
    ca.Candidatos_pr_selecionados__c=2;
    ca.In_cio__c= Date.today();
update ca;
 }           
}

I thought is because I have this another trigger:

trigger CriarTarefaCase_Abertura_de_vaga on Case (after insert) {

List<Task> tasks = new List<Task>();
    List<Case> cse = Trigger.new;
        
    for (Case c : cse){
            if (c.motivo__c == 'Abertura de vaga' && c.status != 'Fechado'){
          Task tsk = new Task
              (whatID = c.ID,
               Subject = 'Abertura de vaga - Aprovar vaga',
               ActivityDate = Date.today(),
               Ownerid = '005U0000000FDE9');
      tasks.add(tsk);
            }
}
insert tasks;
}

I found the problem, but I don't have any idea what I have to do to deploy my trigger "NaoFechaChamado".
Hi,

I can't deploy anything in my organization because I always get 74%.
I read in some topics that maybe I have a test class that have 0% coverage or some other issue.

I executed all my test class and the first test class I've encountered an issue  is bringing me 100% coverage in 2 of my triggers:

@istest(seealldata=true)
public class AtualizarProduto_adquirido_deleteSA_test{
    static testmethod void unittest(){
        
        Account acc=new Account();
        acc.FirstName = 'Tste';
        acc.LastName = 'Teste';
        acc.ID_do_formando__c = 'CP7_0000_000001';
        acc.Turma__c = 'a06U0000006GuHc';
        acc.Nome_do_produto_adquirido__c = 'SUPER ÁLBUM';
        acc.Data_da_venda_SA__c = Date.today();
        acc.Situacao__c = 'VENDA APROVADA';
        acc.pesquisa_de_mercado__c = '1 - Pesquisa Satisfação B2';
        acc.antecipado__c = null;
        insert acc;
      
        Asset a=new Asset();       
         a.name = 'SUPER ÁLBUM';
         a.Price = 1000;
         a.Parcelas__c = 10;
         a.data_do_contrato__c = date.today();
         a.accountId = acc.id;
         a.quantity = 0;
        insert a;
        
         a.Status = 'Cancelado';
        update a;
            
        acc.Nome_do_produto_adquirido__c = null;
        acc.Data_da_venda_SA__c = null;
        update acc;
        }
 }

When I execute I get this error:
Methods defined as TestMethod do not support Web service callouts, test skipped
Hi,

I am having difficulty when trying to create the test class for my trigger:

trigger Email_Pesquisa_Mercado_account on Account (after update) {

Map<Id,Account> accountMap = new Map<Id,Account>([Select Id, Name, (Select Id,Name,Price,Parcelas__c,Data_do_contrato__c,quantity,status from Assets where quantity>0 AND Data_do_contrato__c != null AND (NOT name like 'AR -%')) from Account Where recordtypeid='012U00000000vYx' AND Id in : Trigger.New]);

for(Account Ac : Trigger.New){
   String AssetName;
   Decimal ValorVenda;
   Decimal Parcelas;
   Date DataContrato;
   String SemEmail;
   String SemEmailprincipal;

   String Situacao;
   Situacao = ac.Situacao__c;
  if(Situacao.contains('APROVADA') && Trigger.oldMap.get(ac.id).pesquisa_de_mercado__c != ac.pesquisa_de_mercado__c && ac.pesquisa_de_mercado__c == '1 - Pesquisa Satisfação B2' && ac.antecipado__c != 'AR' && ac.antecipado__c != 'TES' && (ac.turma__c == '2013 2S - UNISA - MEDICINA - SAO PAULO' || ac.turma__c == '2013 2S - FAAP - ENG,ARQ,ECON,REL INT,S IN - SAO PAULO' || ac.turma__c == '2013 2S - UNICID - ODONTOLOGIA - SAO PAULO')){
   if(accountMap.get(Ac.Id).Assets.size() > 0){
    for(Asset obj : accountMap.get(Ac.Id).Assets){
        if(obj.name != null){
        if(AssetName==null){
        AssetName = obj.Name;
        }
     else{
     AssetName = AssetName + '<br> ' + ''+obj.Name+'';
    }
         ValorVenda = obj.Price;
         Parcelas = obj.Parcelas__c;    
         DataContrato = obj.Data_do_contrato__c.addDays(90);
         }
    }

            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[]{};              
                if(ac.PersonEmail == null){
                SemEmailprincipal = 'sememail@b2agencia.com.br';
                    }
                if(ac.PersonEmail != null){
                 SemEmailprincipal = ac.PersonEmail;
                }                       

                toAddresses.add(SemEmailprincipal);               
                if(ac.Email_alternativo__c == null ){
                SemEmail = 'sememail@b2agencia.com.br';
                    }
                 if(ac.Email_alternativo__c != null){
                 SemEmail = ac.Email_alternativo__c;
                 }               
                toAddresses.add(SemEmail);               
            mail.setToAddresses(toAddresses);

            mail.setreplyto('foto.filmagem@b2agencia.com.br');
            mail.setSenderDisplayName('B2 Agência');

            mail.setSubject('B2 Foto e Filmagem: Seu álbum de formatura');
            mail.setHtmlBody('Olá, '+ac.FirstName+' '+ac.LastName+'<p>Primeiramente gostaríamos de parabenizá-lo pela conquista da sua formatura, sabemos que é um grande marco para o início da sua vida profissional. Desejamos que você tenha muito sucesso em sua caminhada!<p>Para guardar todas essas recordações, você efetuou a compra dos produtos abaixo:<p>'+AssetName+'<p>O valor total da sua compra é de R$ '+ValorVenda+', parcelado em '+Parcelas+' vezes.<p>Os produtos extras serão entregues até o dia '+DataContrato.day()+'/'+DataContrato.month()+'/'+DataContrato.year()+', no '+ac.Cidade__c+' - RUA '+ac.Endereco__c+', '+ac.Nro__c+'<p>O envio dos mesmos é feito pelo correio, que faz 3 tentativas de entrega. Caso o correio não consiga efetuar a entrega nas 3 tentativas, o produto volta para o escritório e vamos aguardar o seu contato nos informando um novo endereço de entrega.<p><font color="#EE7600"><b>PREOCUPADO COM A SATISFAÇÃO DE NOSSOS CLIENTES, BUSCAMOS PROMOVER MELHORIAS CONTÍNUAS EM NOSSOS SERVIÇOS E PRODUTOS, PARA ISSO, A SUA OPINIÃO É MUITO IMPORTANTE!<p>TIRE 2 MINUTINHOS DO SEU DIA PARA RESPONDER À NOSSA PESQUISA DE SATISFAÇÃO</font></b> <a href=http://sistemaff.force.com/B2/TIMBASURVEYS__Survey?id=a0UU0000005UKnaMAG&pAccId='+ac.id+'&wf=yes><font color="#458B00"><b>CLICANDO AQUI</b></font></a>.</p><br>Obrigado!<br><a href=http://sistemaff.force.com/B2/TIMBASURVEYS__Survey?id=a0UU0000005UKnaMAG&pAccId='+ac.id+'&wf=yes><img src="https://na12.salesforce.com/servlet/servlet.ImageServer?id=015U0000002G2fd&oid=00DU0000000KBJn" alt="B2"/>');

            Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
        }
        }
        }
        }
Any help will be great !

Thanks !

Hi,

I am trying send and email that will bring me all the assets from account.
Set <id> ids = new Set <id> ();
    for (Account acc: trigger.new) {
            ids.add(acc.id);
        }
        
    for (Asset ast: [SELECT Id, Name, Quantity FROM Asset WHERE Quantity>0 AND accountid IN: ids]){

    for(Account acc : trigger.new){
        if(acc.separador__c == 'pesquisa'){        
	        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
	        String[] toAddresses = new String[]{};   
	            toAddresses.add(acc.PersonEmail);
	            toAddresses.add(acc.Email_alternativo__c);
	        mail.setToAddresses(toAddresses);
            
            mail.setreplyto('naoresponda@cp7.com.br');
            
	        mail.setSubject('Pesquisa');
            mail.setHtmlBody('Olá, '+acc.FirstName+''+acc.LastName+'<p>'+ast.Name+'</p>');

In this trigger I only get the last asset created and not all the list.

Thanks !
Hi,

I converted my date field in string, so I can updated my other field in account.

    for (Account acc: [SELECT Id, Data_pedido_AR__c, Data_pedido_SA__c FROM Account WHERE id IN: ids]){

    for (Case c: trigger.new) {
   
    if(c.motivo__c == 'Formandos AR' && c.Data_pedido_AR__c != null && Trigger.oldMap.get(c.id).Data_pedido_AR__c != c.Data_pedido_AR__c){
    Datetime d = Date.Valueof(c.Data_pedido_AR__c);   
    String dateStr = d.format('dd/MM/yyyy');
    System.debug('::::::::::: ' + dateStr) ;

        acc.Data_pedido_AR__c = dateStr;
    }
update acc;


It works fine but in my account my field is one day less.
If I put c.Data_pedido_AR__c = 20/05/2014
I get acc.Data_pedido_AR__c = 19/05/2014

Why?
How can I create a duration field?

It will work like the field on the report.
But I want different types of dates.

I updated one custom date field in case when one of my tasks is completed.
And I want the duration between this custom date field and the closed date.

Thanks !
Hi !

I have this trigger

trigger DeletarProdutos_Qtd0 on Asset (after update) {

for(Asset ast:[SELECT quantity FROM Asset WHERE quantity = 0])

    delete ast;
}


I don't know if this trigger have something wrong, but in my sandbox worked.

I'm facing trouble with the test class.
I tried this:

@isTest (Seealldata=true)
private class DeletarProdutos_Qtd0_test {

    static testMethod void myUnitTest() {
       
        Account acc = new Account(firstname='Teste', lastname='Test');
        insert acc;
       
        Asset ass = new Asset();
        ass.name = 'SUPER ÁLBUM';
  ass.quantity = 0;
  ass.accountid = acc.id;
  insert ass;
       
  ass.quantity = 0;
  ass.accountid = acc.id;
  delete ass;
}
}


Thanks!
Hi !

When I try to deploy my trigger. I'm getting this error:

Run Failures:
Email_abertura_de_vaga_test.myUnitTest001 System.DmlException: Update failed. First exception on row 0 with id 500U0000009g8I5IAI; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, Email_abertura_de_vaga_case: execution of AfterUpdate

caused by: System.NullPointerException: Attempt to de-reference a null object

My trigger:

trigger Email_abertura_de_vaga_case on Case (after update) {

  
for(Case c : trigger.new){
    if (c.Func_abertura_chamado__c == 'THIAGO MARTINS' && c.motivo__c == 'Abertura de vaga' && c.resposta__c != null){

        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
          String[] toAddresses = new String[]{};  
            toAddresses.add('thiago.martins@cp7.com.br');
          mail.setToAddresses(toAddresses);
         
            mail.setSenderDisplayName('Vaga finalizada');
           
            mail.setreplyto ('alessandra.gomes@cp7.com.br');        
           
          mail.setSubject(''+c.Nome_atendimento__c+'');
          mail.setHtmlBody('Olá, tudo bem '+c.Func_abertura_chamado__c+'?<p>Segue informações de seu novo funcinário:</p><p><b>Vaga:</b> '+c.N_veis__c+'</p><p><b>Solicitante da vaga:</b> '+c.Func_abertura_chamado__c+'</p><p><b>Data de abertura da vaga:</b> '+c.CreatedDate.day()+'/'+c.CreatedDate.month()+'/'+c.CreatedDate.year()+'</p><p><b>Meios de divulgação:</b> '+c.Meios_de_divulga_o__c+'</p><p><b>Número de candidatos agendados:</b> '+c.Candidatos_agendados__c+'</p><p><b>Número de candidatos avaliados:</b> '+c.Candidatos_avaliados__c+'</p><p><b>Número de candidatos pré-selecionados:</b> '+c.Candidatos_pr_selecionados__c+'</p><p><b>Data de fechamento:</b> '+c.ClosedDate.day()+'/'+c.ClosedDate.month()+'/'+c.ClosedDate.year()+'</p><p><b>Candidato contatado:</b> '+c.Nome_atendimento__c+'</p><p><b>Data de início:</b> '+c.In_cio__c.day()+'/'+c.In_cio__c.month()+'/'+c.In_cio__c.year()+'</p><p><b>Observações:</b> '+c.resposta__c+'</p>');
           
          Messaging.SendEmail(new Messaging.SingleEmailMessage[] {mail});
      }
...



My test class:

@isTest (seeAllData=true)
public class Email_abertura_de_vaga_test {

static testMethod void myUnitTest001() {

Case ct = new Case();
    ct.Func_abertura_chamado__c = 'EVERTON GOMES';
    ct.motivo__c='Abertura de vaga';
    ct.subject='test';
    ct.Description='test test';
    ct.Nome_atendimento__c='Asassa';
    ct.N_veis__c='Auxiliar';
    ct.Meios_de_divulga_o__c='Asdfgh';
    ct.Candidatos_agendados__c=15;
    ct.Candidatos_avaliados__c=9;
    ct.Candidatos_pr_selecionados__c=1;
    ct.resposta__c=null;
insert ct;

ct.resposta__c='teste'; ct.Func_abertura_chamado__c = 'THIAGO MARTINS'; ct.motivo__c='Abertura de vaga';
ct.Nome_atendimento__c='Teste';
    ct.N_veis__c='Recepcionista';
    ct.Meios_de_divulga_o__c='TEste';
    ct.Candidatos_agendados__c=12;
    ct.Candidatos_avaliados__c=10;
    ct.Candidatos_pr_selecionados__c=2;
update ct;
     
}
Hi there,

I'm trying to create a schedule e-mail to send in a determinate e-mail field in my task if this task is still opened after a few days.

I don't even know how to begin create this code.

Any help will be great.

Thanks !
I'm trying do deploy one trigger and one test class:

trigger DeleteTask_Solicitacao_Pagamento on Case (after update){
          
    Set <id> ids = new Set <id> ();
    for (Case c: trigger.new){
        if (c.motivo__c == 'Solicitação de Pagamento' && c.status <> 'Fechado'){
            ids.add(c.id);
        }
    }
            
  for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c >= 1 || c.Quantidade_de_PP_s_Estojo__c >= 1) && c.tipo_de_pagamento__c == 'DESPESAS' && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT Id, description, Solicita_o_de_Pagamento__c, ownerid FROM Task WHERE (subject = 'Solicitação de Pagamento - Lançar PP' OR subject = 'Solicitação de Pagamento - Baixar PP') AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000002KGRq';
          update t;
         }
      }
      }
      }
  for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c >= 1 || c.Quantidade_de_PP_s_Estojo__c >= 1) && c.tipo_de_pagamento__c == 'TURMAS' && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT Id, description, Solicita_o_de_Pagamento__c FROM Task WHERE (subject = 'Solicitação de Pagamento - Lançar PP' OR subject = 'Solicitação de Pagamento - Baixar PP') AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000001KrZy';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Quantas_PP_s_pagamento__c < 1 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c < 1 || c.Quantidade_de_PP_s_Estojo__c == null) || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
      if(ids.size()>0){
      List <Task> t=[SELECT whatid, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Lançar PP' AND status != 'Concluído' AND whatid IN: ids];
      if (t.size()>0){
         
      delete t;
          }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Nota_fiscal__c == 'SIM' && c.tipo_de_pagamento__c == 'TURMAS') && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000001KrZy';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if ((c.Nota_fiscal__c == 'SIM' && c.tipo_de_pagamento__c == 'DESPESAS') && (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
          t[0].ownerid = '005U0000002KGRq';
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
      if (c.Nota_fiscal__c != 'SIM' || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
      if(ids.size()>0){
          List <Task> t=[SELECT whatid, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Solicitar Nota Fiscal' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
      delete t;
          }
      }
      }
      }
     
      for (Case c: trigger.new) {
      if ((c.forma_de_pagamento__c == 'MALOTE' || c.forma_de_pagamento__c == 'DEPÓSITO + MALOTE') && c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados'){
      if(ids.size()>0){
          List <Task> t=[SELECT description, Solicita_o_de_Pagamento__c FROM Task WHERE subject = 'Solicitação de Pagamento - Malote' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
          t[0].description = c.tipo_de_pagamento__c;
          t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
         update t;
         }
      }
      }
      }
     
    for (Case c: trigger.new) {
       if ((c.forma_de_pagamento__c != 'MALOTE' && c.forma_de_pagamento__c != 'DEPÓSITO + MALOTE') || (c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados')){
       if(ids.size()>0){
       List <Task> t=[SELECT whatId, subject, status FROM Task WHERE subject = 'Solicitação de Pagamento - Malote' AND status != 'Concluído' AND whatid IN: ids];
       if (t.size()>0){
         
          delete t;
      }
       }
       }
       }
      
    for (Case c: trigger.new) {
       if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'MALOTE' && (c.Quantas_PP_s_pagamento__c == 0 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c == 0 || c.Quantidade_de_PP_s_Estojo__c == null)){
       if(ids.size()>0){
          List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
          if (t.size()>0){
         
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicitar_PP__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
         update t;
         }
         }
         }
         }
        
        for (Case c: trigger.new) {
      if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'DEPÓSITO + MALOTE' && (c.Quantas_PP_s_pagamento__c == 0 || c.Quantas_PP_s_pagamento__c == null) && (c.Quantidade_de_PP_s_Estojo__c == 0 || c.Quantidade_de_PP_s_Estojo__c == null)){
      if(ids.size()>0){
             List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
             if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = false;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = true;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
         update t;
         }
         }
         }
         }       
        
            for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c != 'MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){
        if(ids.size()>0){
            List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
            if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = false;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
       update t;
        }
        }
        }
        }
       
    for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){
        if(ids.size()>0){
        List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
        if (t.size()>0){
         
            t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = false;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
      update t;
        }
        }
        }
}

    for (Case c: trigger.new) {
        if ((c.Tipo_de_solicita_o__c == 'Despesas com equipe de vendas' || c.Tipo_de_solicita_o__c == 'Cache' || c.Tipo_de_solicita_o__c == 'Mostruarios' || c.Tipo_de_solicita_o__c == 'Laboratório por fora do sistema' || c.Tipo_de_solicita_o__c == 'Devolução de venda' || c.Tipo_de_solicita_o__c == 'Divisão de resultados') && c.Forma_de_pagamento__c == 'DEPÓSITO + MALOTE' && (c.Quantas_PP_s_pagamento__c > 0 || c.Quantidade_de_PP_s_Estojo__c > 0)){   
        if(ids.size()>0){
        List <Task> t=[SELECT Solicitar_Malote__c, Solicitar_Dep_sito__c, Solicitar_PP__c, Solicita_o_de_Pagamento__c, subject, Respons_vel_por_resolver_a_tarefa__c, ActivityDate, Ownerid FROM Task WHERE Subject = 'Solicitação de Pagamento - Aprovar solicitação' AND status != 'Concluído' AND whatid IN: ids];
        if (t.size()>0){
         
               t[0].description = c.tipo_de_pagamento__c;
               t[0].Solicitar_PP__c = true;
               t[0].Solicitar_Malote__c = true;
               t[0].Solicitar_Dep_sito__c = true;
               t[0].Solicita_o_de_Pagamento__c = c.Tipo_de_solicita_o__c;
               t[0].Subject = 'Solicitação de Pagamento - Aprovar solicitação';
               t[0].Respons_vel_por_resolver_a_tarefa__c = 'CARLOS BALMA';
               t[0].description = c.tipo_de_pagamento__c;
               t[0].ActivityDate = Date.today();
               t[0].Ownerid = '005U0000000FDE9';
       update t;
        }
        }
        }
        }
       
    for (Case c: trigger.new) {
       if (c.Tipo_de_solicita_o__c != 'Despesas com equipe de vendas' && c.Tipo_de_solicita_o__c != 'Cache' && c.Tipo_de_solicita_o__c != 'Mostruarios' && c.Tipo_de_solicita_o__c != 'Laboratório por fora do sistema' && c.Tipo_de_solicita_o__c != 'Devolução de venda' && c.Tipo_de_solicita_o__c != 'Divisão de resultados'){
       if(ids.size()>0){
       List <Task> t=[SELECT whatId, subject, status FROM Task WHERE (subject = 'Solicitação de Pagamento - Aprovar solicitação' OR subject = 'Solicitação de Pagamento - Não aprovada') AND status != 'Concluído' AND whatid IN: ids];
       if (t.size()>0){
         
          delete t;
      }
       }
       }
       }
      
}


I got this error message:
"Failure Message: "System.LimitException: Too many Email Invocations: 11", Failure Stack Trace: "Trigger.Email_SolicitacaoExt_Pag2: line 129, column 1"