You need to sign in to do that
Don't have an account?
Lise-Marie DECLOUX
CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, TOKD_T13_Case_Before_Insert: execution of BeforeInsert caused by: System.NullPointerException: Attempt to de-reference a null object
hi
i try to upload a package but get an error message. My developpeur is not here so i need help from anybody who could help me
This is the apex class:
global class TOKD_MessagingDevis implements Messaging.InboundEmailHandler {
global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
Id idProcess=null;
Boolean codeProjetChange;
Case demandeLocale=null;
Date dateFinProgrammee = null;
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
String myPlainText= '';
/* Le mail envoyé par BaaN est renseigné sur htmlBody */
if(email.htmlBody!=null)
myPlainText = email.htmlBody;
else if(email.plainTextBody!=null)
myPlainText = email.plainTextBody;
List<String> infoMail = myPlainText.split(':');
String caseNumber='';
String nameFile=null;
String dateFinProg = null;
String codeProjetStr='';
TOKD_Projet__c projet = new TOKD_Projet__c();
if (infoMail!=null){
if(infoMail[0]!=null){
caseNumber=infoMail[0];
caseNumber=caseNumber.trim();
}
if(infoMail[1]!=null){
nameFile=infoMail[1];
nameFile=nameFile.trim();
}
if(infoMail[2]!=null){
if (!infoMail[2].equals('')) {
dateFinProg=infoMail[2].trim();
System.debug('-------dateFinProg : '+dateFinProg);
Integer day = Integer.valueOf(dateFinProg.substring(0,2));
Integer month = Integer.valueOf(dateFinProg.substring(3,5));
Integer year = Integer.valueOf(dateFinProg.substring(6,10));
dateFinProgrammee= date.newInstance(year, month, day);
}
}
// Superieur à 4 car on compte 3 éléments + le postscriptum de la poste en 4ème
if(infoMail[3]!=null){
System.debug('@@@@@ CODE PROJET : ' + infoMail[3]);
codeProjetStr=infoMail[3];
codeProjetStr=codeProjetStr.trim();
List<TOKD_Projet__c> listeprojet = [SELECT Id,Direction__c FROM TOKD_Projet__c WHERE Name = :codeProjetStr];
if (listeprojet.size() != 0 ) {
projet = listeprojet.get(0);
result.success = true;
} else {
System.debug('-------Code Projet [' + codeProjetStr + '] Inconnu en base');
result.success = false;
}
}
}
System.debug('-------caseNumber : '+caseNumber);
System.debug('-------nameFile : '+nameFile);
System.debug('-------dateFinProgrammee : '+dateFinProgrammee);
System.debug('-------codeProjet : '+codeProjetStr);
//récupération des informations sur la demande locale
List<Case> listDemandeLocale=[Select Id,Status,CaseNumber,TOKD_Realisation__c,TOKD_Approbation_automatique__c,
TOKD_Utilisateur_approbateur_demande__c,TOKD_DernierDevisId__c,
TOKD_SLA_TypeDemande__c, TOKD_Code_projet_baan__c, TOKD_Date_Fin_Programmee__c, TOKD_Date_realisation_souhaitee__c,Preacceptation_du_devis__c,TOKD_LIN__c,ContactId,TOKD_ATM__c,TOKD_Direction__c,TOKD_ATM__r.Territoire__r.Directeur_territorial__c
from Case where CaseNumber=:caseNumber];
System.debug('@@@@@12' + listDemandeLocale.get(0));
if (listDemandeLocale.size()!=0){
System.debug('Etape 0A');
demandeLocale=listDemandeLocale.get(0);
System.debug('Etape 0B : ' + result.success + ' ' + demandeLocale.CaseNumber);
}
System.debug('Etape 1');
if(demandeLocale!=null && result.success == true){
System.debug('Etape 2');
System.debug('####################email = '+email);
//pièce jointe
if (email.binaryAttachments !=
null && email.binaryAttachments.size() > 0){
System.debug('####################PJ = ');
for (integer i = 0 ; i < email.binaryAttachments.size() ; i++){
//si le nom dans le texte du mail est vide on prend le nom du fichier du mail
if (nameFile==null || nameFile==''){
nameFile=email.binaryAttachments[i].filename;
}
Attachment a = new Attachment(ParentId = demandeLocale.Id,
Name = '#'+nameFile,
Body = email.binaryAttachments[i].body);
insert a;
demandeLocale.TOKD_DernierDevisId__c=a.Id;
}
}
//pièce jointe ajoutée
result.success = true;
System.debug('-------demandeLocale.TOKD_Approbation_automatique__c:'+demandeLocale.TOKD_Approbation_automatique__c);
//avenant 2 suppression de la gestion de la demande automatique, toute les demandes pass par la validation du client
//mise à jour last commentaire
demandeLocale.TOKD_LastCaseCommentBody__c='Aucun commentaire';
demandeLocale.TOKD_Date_Fin_Programmee__c = dateFinProgrammee;
//Mantis 30871 : calcul de la date d'engagement
if (demandeLocale.Preacceptation_du_devis__c == true) {
// Mantis 49384: empêcher le passage à Accepté Client suite réception d'un devis sur une demande en cours
if (demandelocale.status !='En Cours') {
demandeLocale.status='Accepté Client';
}
demandeLocale.TOKD_DateValidation__c =system.now();
} else {
// Mantis 49384: empêcher le passage à Validé DSEM suite réception d'un devis sur une demande en cours
if (demandelocale.status !='En Cours')
{
demandeLocale.status='Validé DSEM';
}
// ## CGU - 2016/07/04 : Mise à jour de la date de validation à l'arrvée du devis pour les demandes en approbation automatique et devis manuel
if (demandeLocale.TOKD_Approbation_automatique__c != 'Manuel'){
demandeLocale.TOKD_DateValidation__c = system.now();
}
}
// ## CGU - 2016/12/26 : Calcul de la date d'engagement à réception du devis pour les demandes Territoire
if(demandeLocale.TOKD_Realisation__c=='Territoire'){
Case estime = TOKD_Case_Utils.calcule_DateEngagement(demandeLocale, demandeLocale.TOKD_DateValidation__c);
demandeLocale.TOKD_Date_engagement_estimee__c = estime.TOKD_Date_engagement__c;
demandeLocale.TOKD_Date_engagement__c = demandeLocale.TOKD_Date_engagement_estimee__c;
}
//Mantis 11144 : Changement du code Projet
if (demandeLocale.TOKD_Code_projet_baan__c != projet.Id) {
codeProjetChange = true;
// Sauvegarde de l'ancien Code Projet
demandeLocale.TOKD_Ancien_Code_Projet__c = demandeLocale.TOKD_Code_projet_baan__c;
//Affectation du nouveau Code Projet
demandeLocale.TOKD_Code_projet_baan__c = projet.Id;
// Mise à jour de la direction
demandeLocale.TOKD_Direction__c=projet.Direction__c;
}
update demandeLocale;
// MANTIS 32622- ELE - 30/01/2014 -
//Gestion des partages sur la demande locale si le code projet à changé
if (codeProjetChange == true) {
//Gestion des partages sur la demande locale
TOKD_Case_Utils.partagerDemandeLocale(demandeLocale, demandeLocale.TOKD_LIN__c == 'true');
}
if (demandeLocale.status=='Validé DSEM') {
//soumission de la demande locale pour validation devis en utilisant le processus d'approbation Demande_locale_Valide_Dsem
Approval.ProcessSubmitRequest validationDevis = new Approval.ProcessSubmitRequest();
validationDevis.setComments('Demande d\'approbation sur le devis');
validationDevis.setProcessDefinitionNameOrId('Demande_locale_Valide_Dsem');
validationDevis.setObjectId(demandeLocale.id);
try{
Approval.ProcessResult validationDevisResult = Approval.process(validationDevis);
}
catch(DmlException e){
}
}
}else{
//pièce jointe non ajoutée
result.success = false;
}
//pour ne pas envoyer de mail d'erreur
result.success = true;
return result;
}
static testMethod void testTOKD_MessagingDevis() {
// Create a new email, envelope object and Attachment
Messaging.InboundEmail email = new Messaging.InboundEmail();
Messaging.InboundEnvelope env = new Messaging.InboundEnvelope();
Messaging.InboundEmail.BinaryAttachment inAtt = new Messaging.InboundEmail.BinaryAttachment();
Case sollicitation =new Case();
sollicitation.Subject ='testsollicitation';
sollicitation.Status ='Créé';
insert sollicitation;
System.debug('###########sollicitation='+sollicitation);
Case demandeLocale= [select Id, CaseNumber from Case where Id=:sollicitation.Id LIMIT 1];
email.subject = sollicitation.Id;
email.plainTextBody=demandeLocale.CaseNumber+':NomFichier.pdf:28/04/2011:NIL000133:';
System.debug('###########email.plainTextBody='+email.plainTextBody);
env.fromAddress = 'user@acme.com';
// set the body of the attachment
inAtt.body = blob.valueOf('test2');
inAtt.fileName = 'my attachment name';
inAtt.mimeTypeSubType = 'plain/txt';
email.binaryAttachments = new Messaging.inboundEmail.BinaryAttachment[] {inAtt };
TOKD_MessagingDevis messagingDevis=new TOKD_MessagingDevis();
messagingDevis.handleInboundEmail(email, env);
}
}
i try to upload a package but get an error message. My developpeur is not here so i need help from anybody who could help me
This is the apex class:
global class TOKD_MessagingDevis implements Messaging.InboundEmailHandler {
global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
Id idProcess=null;
Boolean codeProjetChange;
Case demandeLocale=null;
Date dateFinProgrammee = null;
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
String myPlainText= '';
/* Le mail envoyé par BaaN est renseigné sur htmlBody */
if(email.htmlBody!=null)
myPlainText = email.htmlBody;
else if(email.plainTextBody!=null)
myPlainText = email.plainTextBody;
List<String> infoMail = myPlainText.split(':');
String caseNumber='';
String nameFile=null;
String dateFinProg = null;
String codeProjetStr='';
TOKD_Projet__c projet = new TOKD_Projet__c();
if (infoMail!=null){
if(infoMail[0]!=null){
caseNumber=infoMail[0];
caseNumber=caseNumber.trim();
}
if(infoMail[1]!=null){
nameFile=infoMail[1];
nameFile=nameFile.trim();
}
if(infoMail[2]!=null){
if (!infoMail[2].equals('')) {
dateFinProg=infoMail[2].trim();
System.debug('-------dateFinProg : '+dateFinProg);
Integer day = Integer.valueOf(dateFinProg.substring(0,2));
Integer month = Integer.valueOf(dateFinProg.substring(3,5));
Integer year = Integer.valueOf(dateFinProg.substring(6,10));
dateFinProgrammee= date.newInstance(year, month, day);
}
}
// Superieur à 4 car on compte 3 éléments + le postscriptum de la poste en 4ème
if(infoMail[3]!=null){
System.debug('@@@@@ CODE PROJET : ' + infoMail[3]);
codeProjetStr=infoMail[3];
codeProjetStr=codeProjetStr.trim();
List<TOKD_Projet__c> listeprojet = [SELECT Id,Direction__c FROM TOKD_Projet__c WHERE Name = :codeProjetStr];
if (listeprojet.size() != 0 ) {
projet = listeprojet.get(0);
result.success = true;
} else {
System.debug('-------Code Projet [' + codeProjetStr + '] Inconnu en base');
result.success = false;
}
}
}
System.debug('-------caseNumber : '+caseNumber);
System.debug('-------nameFile : '+nameFile);
System.debug('-------dateFinProgrammee : '+dateFinProgrammee);
System.debug('-------codeProjet : '+codeProjetStr);
//récupération des informations sur la demande locale
List<Case> listDemandeLocale=[Select Id,Status,CaseNumber,TOKD_Realisation__c,TOKD_Approbation_automatique__c,
TOKD_Utilisateur_approbateur_demande__c,TOKD_DernierDevisId__c,
TOKD_SLA_TypeDemande__c, TOKD_Code_projet_baan__c, TOKD_Date_Fin_Programmee__c, TOKD_Date_realisation_souhaitee__c,Preacceptation_du_devis__c,TOKD_LIN__c,ContactId,TOKD_ATM__c,TOKD_Direction__c,TOKD_ATM__r.Territoire__r.Directeur_territorial__c
from Case where CaseNumber=:caseNumber];
System.debug('@@@@@12' + listDemandeLocale.get(0));
if (listDemandeLocale.size()!=0){
System.debug('Etape 0A');
demandeLocale=listDemandeLocale.get(0);
System.debug('Etape 0B : ' + result.success + ' ' + demandeLocale.CaseNumber);
}
System.debug('Etape 1');
if(demandeLocale!=null && result.success == true){
System.debug('Etape 2');
System.debug('####################email = '+email);
//pièce jointe
if (email.binaryAttachments !=
null && email.binaryAttachments.size() > 0){
System.debug('####################PJ = ');
for (integer i = 0 ; i < email.binaryAttachments.size() ; i++){
//si le nom dans le texte du mail est vide on prend le nom du fichier du mail
if (nameFile==null || nameFile==''){
nameFile=email.binaryAttachments[i].filename;
}
Attachment a = new Attachment(ParentId = demandeLocale.Id,
Name = '#'+nameFile,
Body = email.binaryAttachments[i].body);
insert a;
demandeLocale.TOKD_DernierDevisId__c=a.Id;
}
}
//pièce jointe ajoutée
result.success = true;
System.debug('-------demandeLocale.TOKD_Approbation_automatique__c:'+demandeLocale.TOKD_Approbation_automatique__c);
//avenant 2 suppression de la gestion de la demande automatique, toute les demandes pass par la validation du client
//mise à jour last commentaire
demandeLocale.TOKD_LastCaseCommentBody__c='Aucun commentaire';
demandeLocale.TOKD_Date_Fin_Programmee__c = dateFinProgrammee;
//Mantis 30871 : calcul de la date d'engagement
if (demandeLocale.Preacceptation_du_devis__c == true) {
// Mantis 49384: empêcher le passage à Accepté Client suite réception d'un devis sur une demande en cours
if (demandelocale.status !='En Cours') {
demandeLocale.status='Accepté Client';
}
demandeLocale.TOKD_DateValidation__c =system.now();
} else {
// Mantis 49384: empêcher le passage à Validé DSEM suite réception d'un devis sur une demande en cours
if (demandelocale.status !='En Cours')
{
demandeLocale.status='Validé DSEM';
}
// ## CGU - 2016/07/04 : Mise à jour de la date de validation à l'arrvée du devis pour les demandes en approbation automatique et devis manuel
if (demandeLocale.TOKD_Approbation_automatique__c != 'Manuel'){
demandeLocale.TOKD_DateValidation__c = system.now();
}
}
// ## CGU - 2016/12/26 : Calcul de la date d'engagement à réception du devis pour les demandes Territoire
if(demandeLocale.TOKD_Realisation__c=='Territoire'){
Case estime = TOKD_Case_Utils.calcule_DateEngagement(demandeLocale, demandeLocale.TOKD_DateValidation__c);
demandeLocale.TOKD_Date_engagement_estimee__c = estime.TOKD_Date_engagement__c;
demandeLocale.TOKD_Date_engagement__c = demandeLocale.TOKD_Date_engagement_estimee__c;
}
//Mantis 11144 : Changement du code Projet
if (demandeLocale.TOKD_Code_projet_baan__c != projet.Id) {
codeProjetChange = true;
// Sauvegarde de l'ancien Code Projet
demandeLocale.TOKD_Ancien_Code_Projet__c = demandeLocale.TOKD_Code_projet_baan__c;
//Affectation du nouveau Code Projet
demandeLocale.TOKD_Code_projet_baan__c = projet.Id;
// Mise à jour de la direction
demandeLocale.TOKD_Direction__c=projet.Direction__c;
}
update demandeLocale;
// MANTIS 32622- ELE - 30/01/2014 -
//Gestion des partages sur la demande locale si le code projet à changé
if (codeProjetChange == true) {
//Gestion des partages sur la demande locale
TOKD_Case_Utils.partagerDemandeLocale(demandeLocale, demandeLocale.TOKD_LIN__c == 'true');
}
if (demandeLocale.status=='Validé DSEM') {
//soumission de la demande locale pour validation devis en utilisant le processus d'approbation Demande_locale_Valide_Dsem
Approval.ProcessSubmitRequest validationDevis = new Approval.ProcessSubmitRequest();
validationDevis.setComments('Demande d\'approbation sur le devis');
validationDevis.setProcessDefinitionNameOrId('Demande_locale_Valide_Dsem');
validationDevis.setObjectId(demandeLocale.id);
try{
Approval.ProcessResult validationDevisResult = Approval.process(validationDevis);
}
catch(DmlException e){
}
}
}else{
//pièce jointe non ajoutée
result.success = false;
}
//pour ne pas envoyer de mail d'erreur
result.success = true;
return result;
}
static testMethod void testTOKD_MessagingDevis() {
// Create a new email, envelope object and Attachment
Messaging.InboundEmail email = new Messaging.InboundEmail();
Messaging.InboundEnvelope env = new Messaging.InboundEnvelope();
Messaging.InboundEmail.BinaryAttachment inAtt = new Messaging.InboundEmail.BinaryAttachment();
Case sollicitation =new Case();
sollicitation.Subject ='testsollicitation';
sollicitation.Status ='Créé';
insert sollicitation;
System.debug('###########sollicitation='+sollicitation);
Case demandeLocale= [select Id, CaseNumber from Case where Id=:sollicitation.Id LIMIT 1];
email.subject = sollicitation.Id;
email.plainTextBody=demandeLocale.CaseNumber+':NomFichier.pdf:28/04/2011:NIL000133:';
System.debug('###########email.plainTextBody='+email.plainTextBody);
env.fromAddress = 'user@acme.com';
// set the body of the attachment
inAtt.body = blob.valueOf('test2');
inAtt.fileName = 'my attachment name';
inAtt.mimeTypeSubType = 'plain/txt';
email.binaryAttachments = new Messaging.inboundEmail.BinaryAttachment[] {inAtt };
TOKD_MessagingDevis messagingDevis=new TOKD_MessagingDevis();
messagingDevis.handleInboundEmail(email, env);
}
}
trigger TOKD_T13_Case_Before_Insert on Case (before insert) { system.debug('Start Trigger insert Case before : '+trigger.new); List<TOKD_Type_de_demande__c> listTypeDemande = [select Id, SLA_Unite__c, SLA__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); } for (Case caseTraitement : trigger.new) { integer delai = 0; double boucle = 1; if (caseTraitement != null){ system.debug('idTypeDemande : '+caseTraitement.TOKD_Type_de_demande__c); system.debug('UniteTypeDemande : '+mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c).SLA_Unite__c); try{ if (mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c).SLA_Unite__c == 'J'){ boucle = mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c).SLA__c+1; } else if (mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c).SLA_Unite__c == 'H'){ delai = Integer.valueOf(mapTypeDemande.get(caseTraitement.TOKD_Type_de_demande__c).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); } system.debug('date_debut_souhaitee : '+date_debut_souhaitee); system.debug('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); } }
and the error i have:
Class Name: TOKD_MessagingDevis
Method Name: testTOKD_MessagingDevis
Error Message: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, TOKD_T13_Case_Before_Insert: execution of BeforeInsert caused by: System.NullPointerException: Attempt to de-reference a null object Trigger.TOKD_T13_Case_Before_Insert: line 18, column 1: []
Stack Trace: Class.TOKD_MessagingDevis.testTOKD_MessagingDevis: line 207, column 1