Bonjour à tous,
Voila j'ai un petit problème (j'espère ), j'essaie de mettre à jour une donnée (de l'objet requete) lorsqu'une autre est renseigné. Pour cela je fais appelle à un trigger RequeteAfterUpdate. Je ne passe pas par un workflow car j'utilise le processus d'autorisation. En fait lorsque je ferme un jalon (appelé T2) et que je renseigne la date CompletionDate (dans l'objet CaseMilestone) je veux que ça mette à jour une donnée (j'insère cette même date dans un champ date de l'objet requête).
J'ai finis le code mais je rencontre un problème, le message d'erreur est le suivant:
Erreur :Le déclencheur Apex CaseAfterUpdate a provoqué une exception inattendue. Contactez l'administrateur : CaseAfterUpdate: System.LimitException: Too many SOQL queries: 101
Le code du trigger:
Voila code appelé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //---------------------------------------------------------------------------------------- // — mettre à jour la date de proposition commerciale lorsque Avancee_Jalon_TEC__c == '2' //---------------------------------------------------------------------------------------- if(PAD.canTrigger('AP15')){ System.debug('###################### -> AP15QSD'); List<Case> lstCaseDateUpdate = new List<Case>(); for(integer i=0;i<Trigger.new.size();i++){ //Trigger.new[i].Date_proposition_financement__c != null && if(Trigger.new[i].Avancee_Jalon_TEC__c == '2') lstCaseDateUpdate.add(Trigger.new[i]); } System.debug('###################### -> AP1544 ' + lstCaseDateUpdate); if(lstCaseDateUpdate.size() > 0) { AP15CaseMajDate.setDatePropositionCommerciale(lstCaseDateUpdate); } }
J'ai cherché mais pas moyen de trouver.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public without sharing class AP15CaseMajDate{ public static void setDatePropositionCommerciale (List<Case> lstCase){ System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale - BEGIN -'); set<Id> setIdCaseUpdate = new set<Id>(); for(Case cCase: lstCase) { setIdCaseUpdate.add(cCase.Id); } System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale setIdCaseUpdate - BEGIN -' + setIdCaseUpdate); //List récupérant la date de la fermeture du jalon T2 CompletionDate de la table CaseMilestone) List<CaseMilestone> lstCaseMilestone = [Select MilestoneTypeId, Id, CompletionDate, CaseId From CaseMilestone WHERE CaseId IN :setIdCaseUpdate AND MilestoneTypeId IN (:System.Label.Case_MilestoneTypeId_T2_ContactReseauPhysique, :System.Label.Case_MilestoneTypeId_T2_DossierReseauPhysique_DossierReseauPlateau)]; System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale setIdCaseUpdate - BEGIN qsd-' + lstCaseMilestone); Map<Id, DateTime> mapIdCaseDateT2 = new Map<Id, DateTime>(); for(CaseMilestone m: lstCaseMilestone) { if(m.CompletionDate != null) { mapIdCaseDateT2.put(m.CaseId, m.CompletionDate); System.debug('###################### -> mapIdCaseDateT2 m.CaseId' + m.CaseId); System.debug('###################### -> mapIdCaseDateT2 m.CompletionDate' + m.CompletionDate); } } List<Case> lstCaseRecup = [SELECT Id, Date_proposition_financement__c FROM Case WHERE Id IN :setIdCaseUpdate]; List<Case> lstUpdateCase = new List<Case>(); for(Case a: lstCaseRecup) { if(mapIdCaseDateT2.containskey(a.Id)) { //mettre la date CompletionDate dans la date de proposition commerciale //CompletionDate est de type dateTime et Date_proposition_financement__c est de type Date //utilisation de Date.newinstance pour pour avoir le bon format DateTime datePropCommerciale = mapIdCaseDateT2.get(a.Id); Date DtePropComm = Date.newinstance(datePropCommerciale.year(), datePropCommerciale.month(), datePropCommerciale.day()); a.Date_proposition_financement__c = DtePropComm; //a.Date_proposition_financement__c = null; System.debug('###################### -> DtePropComm' + DtePropComm); lstUpdateCase.add(a); System.debug('###################### -> lstUpdateCaseqsdd d' + lstUpdateCase); } } System.debug('###################### -> lstUpdateCasesdsdaz' + lstUpdateCase); if(lstUpdateCase.size() > 0) { update lstUpdateCase; } System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale - END'); } }
Pouvez-vous m'aider s'il vous plait?
Merci beaucoup.
Si ça peut aider:
Partager