You need to sign in to do that
Don't have an account?
Lise-Marie DECLOUX
Date to exclude holidays
Hi
We have a trigger which calculate a date without weekend. And now we hae a requirement to exclude also the holidays. I've entered holidays days in the setup but i'm a bit lost on how to integrate it on our trigger.
Could someone help me on it ?
Thanks
Here is the trigger:
trigger TOKD_T13_Case_Before_Insert on Case (before insert) {
System.debug('[TOKD_T13_Case_Before_Insert] Start Trigger insert Case before : ' + trigger.new );
List<TOKD_Type_de_demande__c> listTypeDemande = [select Id, SLA_Unite__c, SLA__c, TOKD_Validation_Metier__c from TOKD_Type_de_demande__c];
Map<Id, TOKD_Type_de_demande__c> mapTypeDemande = new Map<Id, TOKD_Type_de_demande__c>();
for (TOKD_Type_de_demande__c typeDemande : listTypeDemande){
mapTypeDemande.put(typeDemande.Id, typeDemande);
}
User currentUser = [SELECT Id, Name, Contact.TOKD_CONT_Valideur_N_1__c, Contact.TOKD_Valideur__c
FROM User WHERE Id = :UserInfo.getUserId() limit 1];
User currentValideurN1 = [SELECT Id, Name, Contact.TOKD_CONT_Valideur_N_1__c, Contact.TOKD_Valideur__c
FROM User WHERE contactId = :currentUser.Contact.TOKD_CONT_Valideur_N_1__c limit 1];
for (Case caseTraitement : trigger.new) {
integer delai = 0;
double boucle = 1;
boolean needValidationN1 = false;
if (caseTraitement != null){
system.debug('[TOKD_T13_Case_Before_Insert] idTypeDemande : '+caseTraitement.TOKD_Type_de_demande__c);
TOKD_Type_de_demande__c requestType = mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c);
if(requestType.TOKD_Validation_Metier__c && !currentUser.Contact.TOKD_Valideur__c){
needValidationN1 = true;
}
System.debug('[TOKD_T13_Case_Before_Insert] UniteTypeDemande : ' + requestType.SLA_Unite__c);
try{
if (requestType.SLA_Unite__c == 'J'){
boucle = requestType.SLA__c+1;
}
else if (requestType.SLA_Unite__c == 'H'){
delai = Integer.valueOf(requestType.SLA__c);
boucle = 1;
}
}
catch(Exception e){
boucle = 1;
delai = 0;
}
}
datetime date_realisation_souhaitee = System.now().date();
for (double i = 0; i < boucle; i++){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(24);
if(date_realisation_souhaitee.format('u') == '6' || date_realisation_souhaitee.format('u') == '7'){
boucle++;
}
}
datetime date_debut_souhaitee = System.now().date();
for (double i = 0; i < 1; i++){
date_debut_souhaitee = date_debut_souhaitee.addHours(24);
if(date_debut_souhaitee.format('u') == '6' || date_debut_souhaitee.format('u') == '7'){
i--;
}
}
date_realisation_souhaitee = date_realisation_souhaitee.addHours(delai);
if(date_realisation_souhaitee.format('u') == '7'){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(24);
}
else if (date_realisation_souhaitee.format('u') == '6'){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(48);
}
Id validateurN1Id = currentUser.Contact.TOKD_CONT_Valideur_N_1__c;
System.debug('[TOKD_T13_Case_Before_Insert] ValidationMetier : ' + needValidationN1);
System.debug('[TOKD_T13_Case_Before_Insert] validateur N+1 : ' + validateurN1Id);
System.debug('[TOKD_T13_Case_Before_Insert] date_debut_souhaitee : ' + date_debut_souhaitee);
System.debug('[TOKD_T13_Case_Before_Insert] date_realisation_souhaitee : ' + date_realisation_souhaitee);
caseTraitement.TOKD_Date_debut_souhaitee__c = date.valueOf(date_debut_souhaitee);
caseTraitement.TOKD_Date_realisation_souhaitee__c = date.valueOf(date_realisation_souhaitee);
caseTraitement.TOKD_REQ_Validation_Metier__c = needValidationN1;
if (needValidationN1){
caseTraitement.TOKD_REQ_Valideur_N1__c = validateurN1Id;
caseTraitement.TOKD_Ancien_valideur_N_1__c = validateurN1Id;
caseTraitement.TOKD_REQ_Valideur_N_1__c = currentValideurN1.id;
}
}
}
We have a trigger which calculate a date without weekend. And now we hae a requirement to exclude also the holidays. I've entered holidays days in the setup but i'm a bit lost on how to integrate it on our trigger.
Could someone help me on it ?
Thanks
Here is the trigger:
trigger TOKD_T13_Case_Before_Insert on Case (before insert) {
System.debug('[TOKD_T13_Case_Before_Insert] Start Trigger insert Case before : ' + trigger.new );
List<TOKD_Type_de_demande__c> listTypeDemande = [select Id, SLA_Unite__c, SLA__c, TOKD_Validation_Metier__c from TOKD_Type_de_demande__c];
Map<Id, TOKD_Type_de_demande__c> mapTypeDemande = new Map<Id, TOKD_Type_de_demande__c>();
for (TOKD_Type_de_demande__c typeDemande : listTypeDemande){
mapTypeDemande.put(typeDemande.Id, typeDemande);
}
User currentUser = [SELECT Id, Name, Contact.TOKD_CONT_Valideur_N_1__c, Contact.TOKD_Valideur__c
FROM User WHERE Id = :UserInfo.getUserId() limit 1];
User currentValideurN1 = [SELECT Id, Name, Contact.TOKD_CONT_Valideur_N_1__c, Contact.TOKD_Valideur__c
FROM User WHERE contactId = :currentUser.Contact.TOKD_CONT_Valideur_N_1__c limit 1];
for (Case caseTraitement : trigger.new) {
integer delai = 0;
double boucle = 1;
boolean needValidationN1 = false;
if (caseTraitement != null){
system.debug('[TOKD_T13_Case_Before_Insert] idTypeDemande : '+caseTraitement.TOKD_Type_de_demande__c);
TOKD_Type_de_demande__c requestType = mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c);
if(requestType.TOKD_Validation_Metier__c && !currentUser.Contact.TOKD_Valideur__c){
needValidationN1 = true;
}
System.debug('[TOKD_T13_Case_Before_Insert] UniteTypeDemande : ' + requestType.SLA_Unite__c);
try{
if (requestType.SLA_Unite__c == 'J'){
boucle = requestType.SLA__c+1;
}
else if (requestType.SLA_Unite__c == 'H'){
delai = Integer.valueOf(requestType.SLA__c);
boucle = 1;
}
}
catch(Exception e){
boucle = 1;
delai = 0;
}
}
datetime date_realisation_souhaitee = System.now().date();
for (double i = 0; i < boucle; i++){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(24);
if(date_realisation_souhaitee.format('u') == '6' || date_realisation_souhaitee.format('u') == '7'){
boucle++;
}
}
datetime date_debut_souhaitee = System.now().date();
for (double i = 0; i < 1; i++){
date_debut_souhaitee = date_debut_souhaitee.addHours(24);
if(date_debut_souhaitee.format('u') == '6' || date_debut_souhaitee.format('u') == '7'){
i--;
}
}
date_realisation_souhaitee = date_realisation_souhaitee.addHours(delai);
if(date_realisation_souhaitee.format('u') == '7'){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(24);
}
else if (date_realisation_souhaitee.format('u') == '6'){
date_realisation_souhaitee = date_realisation_souhaitee.addHours(48);
}
Id validateurN1Id = currentUser.Contact.TOKD_CONT_Valideur_N_1__c;
System.debug('[TOKD_T13_Case_Before_Insert] ValidationMetier : ' + needValidationN1);
System.debug('[TOKD_T13_Case_Before_Insert] validateur N+1 : ' + validateurN1Id);
System.debug('[TOKD_T13_Case_Before_Insert] date_debut_souhaitee : ' + date_debut_souhaitee);
System.debug('[TOKD_T13_Case_Before_Insert] date_realisation_souhaitee : ' + date_realisation_souhaitee);
caseTraitement.TOKD_Date_debut_souhaitee__c = date.valueOf(date_debut_souhaitee);
caseTraitement.TOKD_Date_realisation_souhaitee__c = date.valueOf(date_realisation_souhaitee);
caseTraitement.TOKD_REQ_Validation_Metier__c = needValidationN1;
if (needValidationN1){
caseTraitement.TOKD_REQ_Valideur_N1__c = validateurN1Id;
caseTraitement.TOKD_Ancien_valideur_N_1__c = validateurN1Id;
caseTraitement.TOKD_REQ_Valideur_N_1__c = currentValideurN1.id;
}
}
}
Lise-Marie DECLOUX
Nobody for helping ?