You need to sign in to do that
Don't have an account?
Lisa Horne 1
Help with Error - Attempt to de-reference a null object
I have this controller that I trying to deploy and I keep getting this error. Can anyone help?
126 FindAccounts();
127 system.debug('PossibleAccounts Listed: ' + PossibleAccounts.size());
128 AttachAccountName = ThisLead.Company;
129 */
130 //Set value of Account Null variable
131 AccountNull=true;
132 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Lead must have an Account in order to convert. Please update your lead.'); //see page 124
133 apexPages.addMessage(myMsg);
134 }
135
136 if(AttachContactID != null)
137 {
138 //AttachContact = [Select c.id, c.name from Contact c where c.id = :AttachContactID];
139 Setvalues();
140 system.debug('Contact Queried: ' + AttachContact);
141 //FindContacts();
142 }
143 else
144 {
145 /***Removed no longer need to search for Contacts
146 //if(AttachAccountID != null){FindContacts();}
147 */
148 //Define the ContactNull variable
149 ContactNull = true;
150 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Lead must have a Contact to convert. Please update your lead'); //see page 124
151 apexPages.addMessage(myMsg);
152 }
153 }
154 else
155 {
156 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Could not find ID of Converting Lead. Please Try Again'); //see page 124
157 apexPages.addMessage(myMsg);
158 system.debug('Lead is empty');
159 }
160
161 if(AttachAccount != null && AttachContact != null)
162 {
163 if(AttachContact.AccountID != AttachAccount.id)
164 {
165 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Your lead cannot be converted at this time. The Account of the Contact does not match the Account on the lead. Please update your lead'); //see page 124
166 apexPages.addMessage(myMsg);
167 Acccount_ContactMatch = true;
168 }
169 }
170
171
172 system.debug('AttachAccountID: ' + AttachAccountID); system.debug('AttachAccount: ' + AttachAccount);
173 system.debug('PossibleAccounts: ' + PossibleAccounts.size()); system.debug('AttachContactID: ' + AttachContactID);
174 system.debug('End of Controller Constructor');
175 //END of Controller load method
176 }
177 /**
178 * @author
179 * @date
180 * @param
181 * @description
182 * @return
183 */
184 /****Values and Search Methods ****/
185 public PageReference SetValues()
186 { system.debug('SETTING VALUES');
187 system.debug('AttachAccountID: ' + AttachAccountID); system.debug('AttachContactID: ' + AttachContactID);
188 system.debug('AttachOpportunityID: '+ AttachOpportunityID);
189 system.debug('SearchOpportunity: '+ SearchOpportunity);
190 if(LeadId != null){
191 /*Set Account values */
192 if(AttachAccountID == null){AttachOpportunityID = null; AttachContactID = null;}
193 if(AttachAccountID != null && AttachAccountID != 'Create' && AttachAccountID != 'CreateNew' && AttachAccountID !='Search')
194 {
195 //Define the Attach Account based on AttachAccountID
196 AttachAccount = [Select a.id, a.name,a.Hospital_Bed_Size__c, a.Bed_Size_Group__c from Account a where a.id = :AttachAccountID]; system.debug('Setting Attach Account');
197 //Get list of Possible Opportunities that are Open.
198 PossibleOpportunities = [Select o.id, o.name from Opportunity o
199 where o.OwnerID = :RecordOwnerOpp.OwnerID and o.AccountID = :AttachAccountID and (NOT o.StageName like '%Closed%')];
200 DisplayContact = true;
201
202 FindContacts();
203 }
204 else if(AttachAccountID == 'Search' && RecordOwnerOpp.AccountID != null)
205 {
206 AttachAccount = [Select a.id, a.name,a.Hospital_Bed_Size__c, a.Bed_Size_Group__c from Account a where a.id = :RecordOwnerOpp.AccountID]; system.debug('Setting Attach Account');
207 DisplayContact = false;
208 }
209 else if(AttachAccountID == 'CreateNew')
210 {
211 RecordOwnerOpp.AccountID= null; AttachAccount.name = AttachAccountName; AttachOpportunityId = 'Create'; if(AttachContactID == null){AttachContactID='Create';}
212 }
213 else if(AttachAccountID == 'Create')
214 {
215 RecordOwnerOpp.AccountID= null; AttachAccount.name = ThisLead.Company; AttachOpportunityId = 'Create'; if(AttachContactID == null){AttachContactID='Create';}
216 }
217 /*Set Contact Values */
218 if(AttachContactID != null && AttachContactID != 'Create' && AttachContactID != 'CreateNew' && AttachContactID !='Search' )
219 {
220 AttachContact = [Select c.id, c.name,AccountId from Contact c where c.id = :AttachContactID]; system.debug('Setting Contact');
221 }
222 else if(AttachContactID == 'Search' && SearchContact.contact__c != null)
223 {
224 AttachContact = [Select c.id, c.name,AccountId from Contact c where c.id = :SearchContact.Contact__c]; system.debug('Setting Contact');
225 }
226 /*Set Opportunity Values*/
227 if(AttachOpportunityID != null && AttachOpportunityID != 'Search' && AttachOpportunityID != 'Create')
228 {
229 AttachOpportunity = [Select o.id, o.name from Opportunity o where o.id = :AttachOpportunityID];
230 OpportunityCreate = true;
231 ConvertStatus = 'Duplicate - Opportunity Exists';
232 }
233 else if(AttachOpportunityID == 'Search' && SearchOpportunity.Opportunity__c != null)
234 {
235 system.debug('SearchOpportunity valid: ' + SearchOpportunity);
236 AttachOpportunity = [Select o.id, o.name from Opportunity o where o.id = :SearchOpportunity.Opportunity__c];
237 OpportunityCreate = true;
238 ConvertStatus = 'Duplicate - Opportunity Exists';
239 }
240 else if(AttachOpportunityID == 'Create')
241 {
242 system.debug('Create Opportunity Name');
243 OpportunityCreate = false; ConvertStatus = 'Qualified (Yes > Opportunity)';
244 string Products = '';string Product = '';
245 /*
246 for(integer i=0; i<LeadProducts.size(); i++)
247 {
248 if(LeadProducts[i] == 'Accupedia'){Product = 'Accu';}
249 else if(LeadProducts[i] == 'ADT Interface'){Product = 'ADT';}
250 else if(LeadProducts[i] == 'Amplifi' ){Product = 'Amp';}
251 else if(LeadProducts[i] == 'DIOne'){Product = 'DIOne';}
252 else if(LeadProducts[i] == 'King Guide'){Product = 'King';}
253 else if(LeadProducts[i] == 'Quantifi'){Product = 'QTFI';}
254 else if(LeadProducts[i] == 'RiskQI'){Product = 'Risk';}
255 else if(LeadProducts[i] == 'ScheduleRx'){Product = 'SRx';}
256 else if(LeadProducts[i] == 'Sentri7'){Product = 'S7';}
257 else if(LeadProducts[i] == 'Simplifi 797'){Product = 'S797';}
258 else if(LeadProducts[i] == 'UnitStock'){Product = 'US';}
259 else if(LeadProducts[i] == 'Medboard'){Product = 'Med';}
260 else{system.debug('Product not Found!' + LeadProducts[i]); Product = LeadProducts[i];}
261
262 if(Products == ''){Products = Product;}else{Products= Products + ', ' + Product;}
263 }
264 */
265 //if(ThisLead.Products__c != null){Products = ThisLead.Products__c;}
266 RecordOwnerOpp.name = AttachAccount.name + ' - ' + Products;
267 }
268 }return null;
269 }
270
271 public void FindContacts() //Find Possible Contacts for selected Account
272 {
273 system.debug('AttachContactID input: ' + AttachContactID);
274 if(AttachAccountID != null && AttachAccountID != 'Create' && AttachAccountID != 'CreateNew' && AttachAccountID !='Search')
275 {
276 system.debug('FINDING CONTACTS...');
277 list<string>WordSearch = new list<string>();
278 WordSearch.Add(String.valueof(ThisLead.Firstname)); Wordsearch.add(String.valueof(ThisLead.LastName));
279 system.debug('Account: ' + AttachAccount.Name); System.debug('WordSearch list: ' + WordSearch);
280 string WordVariable = null;
281 string QueryString; list<string> QueryVariable = new list<string>();
282 QueryString = 'select c.id, c.name from Contact c where (c.name like ';
283 for(integer i=0; i<WordSearch.size(); i++)
284 {
285 WordVariable = '%' + WordSearch[i] + '%'; system.debug('WordVariable: ' +WordVariable);
286 QueryVariable.add(WordVariable);
287 if(QueryVariable.size() == 1){
288 QueryString = Querystring + '\''+QueryVariable[i]+'\'';}
289 else{QueryString = QueryString + ' or c.name like ' + '\''+ QueryVariable[i]+'\'';}
290 }
291 QueryString = QueryString + ') and c.AccountiD = :AttachAccountID';
292 system.debug('Contact QueryString: ' + QueryString);
293 PossibleContacts = database.query(QueryString);
294 }
295 //Added in case the name of the Lead doesn't match the name of the contact exactly
296 if(AttachContactID != null)
297 {
298 boolean IsPresent = false;
299 for(Contact c :PossibleContacts)
300 {
301 if(AttachContact != null && c.id == AttachContact.id){IsPresent = true;}
302 }
303 if(AttachContact != null && IsPresent == false){PossibleContacts.add(AttachContact);}
304 }
305 }
306 public void FindAccounts()
307 {
308 system.debug('FINDING ACCOUNTS...');
309 list<string>WordSearch = string.valueof(ThisLead.Company).split(' ');
310 system.debug('Company name: ' + ThisLead.Company); System.debug('WordSearch list: ' + WordSearch);
311 string WordVariable = null;
312 string QueryString; list<string> QueryVariable = new list<string>();
313 QueryString = 'select a.id, a.name from Account a where a.name like ';
314 for(integer i=0; i<WordSearch.size(); i++)
315 {
316 WordVariable = '%' + string.escapeSingleQuotes(WordSearch[i]) + '%'; system.debug('WordVariable: ' +WordVariable);
317 QueryVariable.add(WordVariable);
318 if(QueryVariable.size() == 1){
319 QueryString = Querystring + '\''+QueryVariable[i]+'\'';}
320 else{QueryString = QueryString + ' and a.name like ' + '\''+ QueryVariable[i]+'\'';}
321 }
322 system.debug('Query Variable: ' + QueryVariable);
323 system.debug('Query String: ' + QueryString);
324 PossibleAccounts = database.query(QueryString);
325 if(AttachAccount.id != null)
326 { boolean Match = false;
327 for(integer i=0; i< PossibleAccounts.size(); i++)
328 {
329 if(PossibleAccounts[i].id == AttachAccount.id){Match=true;}
330 }
331 if(Match==false){PossibleAccounts.Add(AttachAccount);}
332 }
333 }
334 /****END Values and Search Methods ****/
335
336 /*****LEAD CONVERSION *****/
337 public void ConvertLeads()
338 {
339 Database.LeadConvert lc = new database.LeadConvert();
340 lc.setLeadID(ThisLead.id); //Set ID of the Lead being converted
341 lc.setOverwriteLeadSource(false);
342 if(AttachAccount.id != null){lc.setAccountId(AttachAccount.ID);} //Set the ID of Existing Account
343 lc.setConvertedStatus(ConvertStatus); //Set Convert Status of Lead
344 lc.setOwnerId(RecordOwnerOpp.OwnerId); //Set the Owner of the Opportunity to be created
345 lc.setDoNotCreateOpportunity(OpportunityCreate); //Set if an Opportunity will not be created
346 lc.setSendNotificationEmail(NotifyOwner); //Sets if owner gets an e-mail
347 //Set ContactID for Exisiting Contact
348 if(AttachContact.ID != null)
349 {
350 lc.setContactID(AttachContact.id);system.debug('Contact Attached: '+ AttachContact.id);
351 }
352 //Set Name of the Opportunity to be Created if no Opportunity currently exists
353 if(AttachOpportunity.ID == null)
354 {
355 lc.setOpportunityName(RecordOwnerOpp.Name); system.debug('Set Opportunity Name: ' + RecordOwnerOpp.Name);
356 }
357
358 system.debug('LeadConvert before Processed: ' + lc);
359 /*Convert Lead and get Results of Conversion*/
360
361 lcr = null;
362 try
363 {
364 lcr = database.convertLead(lc); //Converts Lead and returns results as a variable
365 system.debug('LeadConvert Errors: ' + lcr.getErrors());
366 //system.assert(lcr.isSuccess(),'Lead Insert Failed: ' + lcr.getErrors());
367 } catch (exception e)
368 {ApexPages.addMessages(e);}
369 /*Send Opportunity and lead to Lead_update_class to move Lead_Activity Tasks */
370 if(AttachOpportunity.ID == null)
371 {
372 Lead_Update_class.Junction_to_Opportunity(ThisLead.id,lcr.getOpportunityId() );
373 }else
374 {
375 Lead_Update_class.Junction_to_Opportunity(ThisLead.id,AttachOpportunity.id);
376 }
377 }
378 private transient database.LeadConvertResult lcr = null;
380 public PageReference Cust_ConvertLead()
381 {
382 system.debug('CONVERT LEAD FIRED!');
383 system.debug('Record Owner: ' + RecordOwnerOpp.OwnerID);
384 system.debug('AttachAccount: ' + AttachAccount);
385 system.debug('AttachAccoundID:' + AttachAccountID);
386 system.debug('AttachContact: ' + AttachContact);
387 system.debug('AttachContactID: ' + AttachContactID);
388 system.debug('AttachOpportunity: ' + AttachOpportunity);
389 system.debug('AttachOpportunityID: ' + AttachOpportunityID) ;
390 system.debug('OpportunityName: ' + RecordOwnerOpp.Name);
391 system.debug('Do Not Create Opportunity: ' + OpportunityCreate);
392 system.debug('Convert Status: ' + ConvertStatus);
394 /*Error Messages Here*/
395 //Record Owner is not null
396 if(RecordOwnerOpp.OwnerID == null)
397 {
126 FindAccounts();
127 system.debug('PossibleAccounts Listed: ' + PossibleAccounts.size());
128 AttachAccountName = ThisLead.Company;
129 */
130 //Set value of Account Null variable
131 AccountNull=true;
132 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Lead must have an Account in order to convert. Please update your lead.'); //see page 124
133 apexPages.addMessage(myMsg);
134 }
135
136 if(AttachContactID != null)
137 {
138 //AttachContact = [Select c.id, c.name from Contact c where c.id = :AttachContactID];
139 Setvalues();
140 system.debug('Contact Queried: ' + AttachContact);
141 //FindContacts();
142 }
143 else
144 {
145 /***Removed no longer need to search for Contacts
146 //if(AttachAccountID != null){FindContacts();}
147 */
148 //Define the ContactNull variable
149 ContactNull = true;
150 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Lead must have a Contact to convert. Please update your lead'); //see page 124
151 apexPages.addMessage(myMsg);
152 }
153 }
154 else
155 {
156 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Could not find ID of Converting Lead. Please Try Again'); //see page 124
157 apexPages.addMessage(myMsg);
158 system.debug('Lead is empty');
159 }
160
161 if(AttachAccount != null && AttachContact != null)
162 {
163 if(AttachContact.AccountID != AttachAccount.id)
164 {
165 apexpages.message myMsg = new ApexPages.Message(ApexPages.Severity.error, 'Your lead cannot be converted at this time. The Account of the Contact does not match the Account on the lead. Please update your lead'); //see page 124
166 apexPages.addMessage(myMsg);
167 Acccount_ContactMatch = true;
168 }
169 }
170
171
172 system.debug('AttachAccountID: ' + AttachAccountID); system.debug('AttachAccount: ' + AttachAccount);
173 system.debug('PossibleAccounts: ' + PossibleAccounts.size()); system.debug('AttachContactID: ' + AttachContactID);
174 system.debug('End of Controller Constructor');
175 //END of Controller load method
176 }
177 /**
178 * @author
179 * @date
180 * @param
181 * @description
182 * @return
183 */
184 /****Values and Search Methods ****/
185 public PageReference SetValues()
186 { system.debug('SETTING VALUES');
187 system.debug('AttachAccountID: ' + AttachAccountID); system.debug('AttachContactID: ' + AttachContactID);
188 system.debug('AttachOpportunityID: '+ AttachOpportunityID);
189 system.debug('SearchOpportunity: '+ SearchOpportunity);
190 if(LeadId != null){
191 /*Set Account values */
192 if(AttachAccountID == null){AttachOpportunityID = null; AttachContactID = null;}
193 if(AttachAccountID != null && AttachAccountID != 'Create' && AttachAccountID != 'CreateNew' && AttachAccountID !='Search')
194 {
195 //Define the Attach Account based on AttachAccountID
196 AttachAccount = [Select a.id, a.name,a.Hospital_Bed_Size__c, a.Bed_Size_Group__c from Account a where a.id = :AttachAccountID]; system.debug('Setting Attach Account');
197 //Get list of Possible Opportunities that are Open.
198 PossibleOpportunities = [Select o.id, o.name from Opportunity o
199 where o.OwnerID = :RecordOwnerOpp.OwnerID and o.AccountID = :AttachAccountID and (NOT o.StageName like '%Closed%')];
200 DisplayContact = true;
201
202 FindContacts();
203 }
204 else if(AttachAccountID == 'Search' && RecordOwnerOpp.AccountID != null)
205 {
206 AttachAccount = [Select a.id, a.name,a.Hospital_Bed_Size__c, a.Bed_Size_Group__c from Account a where a.id = :RecordOwnerOpp.AccountID]; system.debug('Setting Attach Account');
207 DisplayContact = false;
208 }
209 else if(AttachAccountID == 'CreateNew')
210 {
211 RecordOwnerOpp.AccountID= null; AttachAccount.name = AttachAccountName; AttachOpportunityId = 'Create'; if(AttachContactID == null){AttachContactID='Create';}
212 }
213 else if(AttachAccountID == 'Create')
214 {
215 RecordOwnerOpp.AccountID= null; AttachAccount.name = ThisLead.Company; AttachOpportunityId = 'Create'; if(AttachContactID == null){AttachContactID='Create';}
216 }
217 /*Set Contact Values */
218 if(AttachContactID != null && AttachContactID != 'Create' && AttachContactID != 'CreateNew' && AttachContactID !='Search' )
219 {
220 AttachContact = [Select c.id, c.name,AccountId from Contact c where c.id = :AttachContactID]; system.debug('Setting Contact');
221 }
222 else if(AttachContactID == 'Search' && SearchContact.contact__c != null)
223 {
224 AttachContact = [Select c.id, c.name,AccountId from Contact c where c.id = :SearchContact.Contact__c]; system.debug('Setting Contact');
225 }
226 /*Set Opportunity Values*/
227 if(AttachOpportunityID != null && AttachOpportunityID != 'Search' && AttachOpportunityID != 'Create')
228 {
229 AttachOpportunity = [Select o.id, o.name from Opportunity o where o.id = :AttachOpportunityID];
230 OpportunityCreate = true;
231 ConvertStatus = 'Duplicate - Opportunity Exists';
232 }
233 else if(AttachOpportunityID == 'Search' && SearchOpportunity.Opportunity__c != null)
234 {
235 system.debug('SearchOpportunity valid: ' + SearchOpportunity);
236 AttachOpportunity = [Select o.id, o.name from Opportunity o where o.id = :SearchOpportunity.Opportunity__c];
237 OpportunityCreate = true;
238 ConvertStatus = 'Duplicate - Opportunity Exists';
239 }
240 else if(AttachOpportunityID == 'Create')
241 {
242 system.debug('Create Opportunity Name');
243 OpportunityCreate = false; ConvertStatus = 'Qualified (Yes > Opportunity)';
244 string Products = '';string Product = '';
245 /*
246 for(integer i=0; i<LeadProducts.size(); i++)
247 {
248 if(LeadProducts[i] == 'Accupedia'){Product = 'Accu';}
249 else if(LeadProducts[i] == 'ADT Interface'){Product = 'ADT';}
250 else if(LeadProducts[i] == 'Amplifi' ){Product = 'Amp';}
251 else if(LeadProducts[i] == 'DIOne'){Product = 'DIOne';}
252 else if(LeadProducts[i] == 'King Guide'){Product = 'King';}
253 else if(LeadProducts[i] == 'Quantifi'){Product = 'QTFI';}
254 else if(LeadProducts[i] == 'RiskQI'){Product = 'Risk';}
255 else if(LeadProducts[i] == 'ScheduleRx'){Product = 'SRx';}
256 else if(LeadProducts[i] == 'Sentri7'){Product = 'S7';}
257 else if(LeadProducts[i] == 'Simplifi 797'){Product = 'S797';}
258 else if(LeadProducts[i] == 'UnitStock'){Product = 'US';}
259 else if(LeadProducts[i] == 'Medboard'){Product = 'Med';}
260 else{system.debug('Product not Found!' + LeadProducts[i]); Product = LeadProducts[i];}
261
262 if(Products == ''){Products = Product;}else{Products= Products + ', ' + Product;}
263 }
264 */
265 //if(ThisLead.Products__c != null){Products = ThisLead.Products__c;}
266 RecordOwnerOpp.name = AttachAccount.name + ' - ' + Products;
267 }
268 }return null;
269 }
270
271 public void FindContacts() //Find Possible Contacts for selected Account
272 {
273 system.debug('AttachContactID input: ' + AttachContactID);
274 if(AttachAccountID != null && AttachAccountID != 'Create' && AttachAccountID != 'CreateNew' && AttachAccountID !='Search')
275 {
276 system.debug('FINDING CONTACTS...');
277 list<string>WordSearch = new list<string>();
278 WordSearch.Add(String.valueof(ThisLead.Firstname)); Wordsearch.add(String.valueof(ThisLead.LastName));
279 system.debug('Account: ' + AttachAccount.Name); System.debug('WordSearch list: ' + WordSearch);
280 string WordVariable = null;
281 string QueryString; list<string> QueryVariable = new list<string>();
282 QueryString = 'select c.id, c.name from Contact c where (c.name like ';
283 for(integer i=0; i<WordSearch.size(); i++)
284 {
285 WordVariable = '%' + WordSearch[i] + '%'; system.debug('WordVariable: ' +WordVariable);
286 QueryVariable.add(WordVariable);
287 if(QueryVariable.size() == 1){
288 QueryString = Querystring + '\''+QueryVariable[i]+'\'';}
289 else{QueryString = QueryString + ' or c.name like ' + '\''+ QueryVariable[i]+'\'';}
290 }
291 QueryString = QueryString + ') and c.AccountiD = :AttachAccountID';
292 system.debug('Contact QueryString: ' + QueryString);
293 PossibleContacts = database.query(QueryString);
294 }
295 //Added in case the name of the Lead doesn't match the name of the contact exactly
296 if(AttachContactID != null)
297 {
298 boolean IsPresent = false;
299 for(Contact c :PossibleContacts)
300 {
301 if(AttachContact != null && c.id == AttachContact.id){IsPresent = true;}
302 }
303 if(AttachContact != null && IsPresent == false){PossibleContacts.add(AttachContact);}
304 }
305 }
306 public void FindAccounts()
307 {
308 system.debug('FINDING ACCOUNTS...');
309 list<string>WordSearch = string.valueof(ThisLead.Company).split(' ');
310 system.debug('Company name: ' + ThisLead.Company); System.debug('WordSearch list: ' + WordSearch);
311 string WordVariable = null;
312 string QueryString; list<string> QueryVariable = new list<string>();
313 QueryString = 'select a.id, a.name from Account a where a.name like ';
314 for(integer i=0; i<WordSearch.size(); i++)
315 {
316 WordVariable = '%' + string.escapeSingleQuotes(WordSearch[i]) + '%'; system.debug('WordVariable: ' +WordVariable);
317 QueryVariable.add(WordVariable);
318 if(QueryVariable.size() == 1){
319 QueryString = Querystring + '\''+QueryVariable[i]+'\'';}
320 else{QueryString = QueryString + ' and a.name like ' + '\''+ QueryVariable[i]+'\'';}
321 }
322 system.debug('Query Variable: ' + QueryVariable);
323 system.debug('Query String: ' + QueryString);
324 PossibleAccounts = database.query(QueryString);
325 if(AttachAccount.id != null)
326 { boolean Match = false;
327 for(integer i=0; i< PossibleAccounts.size(); i++)
328 {
329 if(PossibleAccounts[i].id == AttachAccount.id){Match=true;}
330 }
331 if(Match==false){PossibleAccounts.Add(AttachAccount);}
332 }
333 }
334 /****END Values and Search Methods ****/
335
336 /*****LEAD CONVERSION *****/
337 public void ConvertLeads()
338 {
339 Database.LeadConvert lc = new database.LeadConvert();
340 lc.setLeadID(ThisLead.id); //Set ID of the Lead being converted
341 lc.setOverwriteLeadSource(false);
342 if(AttachAccount.id != null){lc.setAccountId(AttachAccount.ID);} //Set the ID of Existing Account
343 lc.setConvertedStatus(ConvertStatus); //Set Convert Status of Lead
344 lc.setOwnerId(RecordOwnerOpp.OwnerId); //Set the Owner of the Opportunity to be created
345 lc.setDoNotCreateOpportunity(OpportunityCreate); //Set if an Opportunity will not be created
346 lc.setSendNotificationEmail(NotifyOwner); //Sets if owner gets an e-mail
347 //Set ContactID for Exisiting Contact
348 if(AttachContact.ID != null)
349 {
350 lc.setContactID(AttachContact.id);system.debug('Contact Attached: '+ AttachContact.id);
351 }
352 //Set Name of the Opportunity to be Created if no Opportunity currently exists
353 if(AttachOpportunity.ID == null)
354 {
355 lc.setOpportunityName(RecordOwnerOpp.Name); system.debug('Set Opportunity Name: ' + RecordOwnerOpp.Name);
356 }
357
358 system.debug('LeadConvert before Processed: ' + lc);
359 /*Convert Lead and get Results of Conversion*/
360
361 lcr = null;
362 try
363 {
364 lcr = database.convertLead(lc); //Converts Lead and returns results as a variable
365 system.debug('LeadConvert Errors: ' + lcr.getErrors());
366 //system.assert(lcr.isSuccess(),'Lead Insert Failed: ' + lcr.getErrors());
367 } catch (exception e)
368 {ApexPages.addMessages(e);}
369 /*Send Opportunity and lead to Lead_update_class to move Lead_Activity Tasks */
370 if(AttachOpportunity.ID == null)
371 {
372 Lead_Update_class.Junction_to_Opportunity(ThisLead.id,lcr.getOpportunityId() );
373 }else
374 {
375 Lead_Update_class.Junction_to_Opportunity(ThisLead.id,AttachOpportunity.id);
376 }
377 }
378 private transient database.LeadConvertResult lcr = null;
380 public PageReference Cust_ConvertLead()
381 {
382 system.debug('CONVERT LEAD FIRED!');
383 system.debug('Record Owner: ' + RecordOwnerOpp.OwnerID);
384 system.debug('AttachAccount: ' + AttachAccount);
385 system.debug('AttachAccoundID:' + AttachAccountID);
386 system.debug('AttachContact: ' + AttachContact);
387 system.debug('AttachContactID: ' + AttachContactID);
388 system.debug('AttachOpportunity: ' + AttachOpportunity);
389 system.debug('AttachOpportunityID: ' + AttachOpportunityID) ;
390 system.debug('OpportunityName: ' + RecordOwnerOpp.Name);
391 system.debug('Do Not Create Opportunity: ' + OpportunityCreate);
392 system.debug('Convert Status: ' + ConvertStatus);
394 /*Error Messages Here*/
395 //Record Owner is not null
396 if(RecordOwnerOpp.OwnerID == null)
397 {
line 372:
Lead_Update_class.Junction_to_Opportunity(ThisLead.id,lcr.getOpportunityId() );
So we need to look at "Lead_Update_class" and check if there are any exceptions that are ignored, like using a null reference somewhere in the class.
Thanks,
Shashank
Here is the code for the Lead update Class:
1 public with sharing class Lead_Update_class
2 {
3 public static void Create_Lead_Activity(list<Lead> lLeads)
4 {
5 system.debug('Create Lead Activity Junction Fired!!!');
6 system.debug('Reviewing Leads: ' + lLeads.size());
7 list<Lead_Activity__c> lLead_Act = new list<Lead_Activity__c>();
8 for(Lead l : lLeads)
9 {
10 if(l.Account__c != null && l.Contact__c != null)
11 {
12 system.debug('Creating Junction Object: ' + l.id);
13 lLead_Act.add(new Lead_Activity__c (
14 Lead__c = l.id,
15 Account__c = l.Account__c,
16 Contact__c = l.Contact__c
17 )
18 );
19 }else{system.debug('Junction not Created missing information:' + l.id);}
20 }
21 //Insert Junctions
22 if(lLead_Act.size() > 0)
23 {
24 system.debug('Inserting Junction Objects: ' + lLead_Act.size());
25 try
26 {
27 insert lLead_act;
28 }
29 catch(system.DMLException e)
30 {
31 system.debug('ERROR ERROR!: ' + e.getmessage());
32 system.assert(false, e.getMessage());
33 }
34 }
35 //EOM
36 }
37 @future
38 public static void Junction_to_Juntion(set<string> Lead_ActIDs, set<Id> sLeadIDs,map<string,id> mLeadID_ActID )
39 {
40 Global_Apex_Calls_Class.fireTriggers = false;
41 system.debug('Starting to move Junction to Junction!');
42 system.debug('Lead_ActIDs: ' + Lead_ActIds); System.debug('LeadIDs: ' + sLeadIds); system.debug('Number in map: ' + mleadid_actid.size());
43 list<Lead_Activity__c> lLead_Acts = [select id, Lead__c, Account__c, Contact__c from Lead_Activity__c where id in :Lead_ActIDs];
44 //list<Lead> lLeads = [select id, Account__c, Contact__c, Lead_Activity__c from Lead where id in:sLeadIds];
45 system.debug('Number of Lead junctions: ' + lLead_Acts.size());
46 map<Id,Lead> mLeads = new map<id,lead>();
47 for(Lead l:[select id, Account__c, Contact__c, Lead_Activity__c from Lead where id in:sLeadIds])
48 {
49 mLeads.put(l.id, l);
50 }
51 system.debug('Number of Map from Lead to Junction: ' + mLeads.size());
52 list<Task> lUpdateTasks = new list<Task>();
53 string vWhoId = null; string vWhatId=null;
54 system.debug('Updating Tasks');
55 for(Task t : [select whoid, whatid, id from Task where whatid in :Lead_ActIds])
56 {
57 vWhoID = t.WhoId; vWhatID = t.Whatid;
58 system.debug('Exisitng Whatid: ' + t.WhatID);
59 system.debug('Exisitng WhoID: ' + t.whoid);
60 system.debug('Lead Activity being moved to: '+ mLeads.get(mLeadID_ActID.get(vWhatID)).Lead_Activity__c);
61 t.WhatId = mLeads.get(mLeadID_ActID.get(vWhatID)).Lead_Activity__c;
62 t.WhoId = mLeads.get(mLeadID_ActID.get(vWhatID)).Contact__c;
63 system.debug('New WhatId: ' + t.WhatId); system.debug('New WhoId: ' + t.WhoID);
64 if(lUpdateTasks.size() <1000)
65 {
66 lUpdateTasks.add(t); system.debug('Adding Task Updated');
67 }else
68 {
69 system.debug('more than 1000 leads!');
70 update lUpdateTasks; lUpdateTasks = new list<Task>(); lupdateTasks.add(t);
71 }
72 }
73 system.debug('After looping for tasks Total tasks remaining to update: ' + lupdatetasks.size());
74 if(lUpdateTasks.size() > 0){update lUpdateTasks;}
75 //Events
76 list<Event> lUpdateEvents = new list<Event>();
77 for(Event e : [select whoid, whatid, id from Event where whatid in :Lead_ActIds])
78 {
79 vWhoID = e.WhoId; vWhatID = e.Whatid;
80 e.WhatId = mLeads.get(mLeadID_ActID.get(vWhatID)).Lead_Activity__c;
81 e.WhoId = mLeads.get(mLeadID_ActID.get(vWhatID)).Contact__c;
82 if(lUpdateEvents.size() <1000)
83 {
84 lUpdateEvents.add(e);
85 }else{update lUpdateEvents; lUpdateEvents = new list<Event>(); lUpdateEvents.add(e);}
86 }
87 if(lUpdateEvents.size() >0){update lUpdateEvents;}
88
89 Boolean Exists = false;
90 for(Task t : [select whoid, whatid, id from Task where whatid in :Lead_ActIds])
91 {
92 Exists = true; system.debug('Task still existis! ' + 'Who: '+ t.whoid + ' What: '+ t.whatid + ' ID: ' + t.id);
93 }
94 for(Event e : [select whoid, whatid, id from Event where whatid in :Lead_ActIds])
95 {
96 Exists = true; system.debug('Event still existis! ' + 'Who: '+ e.whoid + ' What: '+ e.whatid + ' ID: ' + e.id);
97 }
98 if(Exists == false && lLead_Acts.size() >0)
99 {
100 system.debug('Deleting Lead Junctions: ' + lLead_Acts); delete lLead_Acts;
101 }else
102 {
103 system.debug('Activities on old junction: ' + lLead_Acts);
104 system.assert(false, 'Activities still exist on old Junction. Contact Administrator');
105 }
106 //EOM
107 }
108 public static void Lead_to_Junction(set<ID> sMove)
109 {
110 system.debug('FIRING CLASS LEAD TO JUNCTION!!');
111 //Junctions
112 map<ID, Lead_Activity__c> mLeadAct = new map<ID,Lead_Activity__c>();
113 for(Lead_Activity__c LA : [Select L.Id, l.Account__c, l.Lead__c, Contact__c from Lead_Activity__c l where l.lead__c in :sMove])
114 {
115 mLeadAct.put(la.Lead__c, LA);
116 }
117 //Tasks
118 list<Task> lTasks = new list<Task>();
119 string ActWhoID = null;
120 for(Task t: [select t.id, t.whoid, t.whatid from Task t where t.whoid in :sMove])
121 {
122 ActWhoID = t.WhoID;
123 if(mLeadAct.get(ActWhoID) != null)
124 {
125 t.WhatId = mLeadAct.get(ActWhoID).id;
126 t.WhoId = mLeadAct.get(ActWhoID).Contact__c;
127 system.debug('Task ContactID: ' + mLeadAct.get(ActWhoID).Contact__c);
128 system.assert(t.whoid == mLeadAct.get(ActWhoID).Contact__c, 'ERROR ERROR WILL ROBINSON!' );
129 if(ltasks.size()<1000)
130 {
131 lTasks.add(t);
132 }
133 else
134 {
135 try
136 {
137 update lTasks;
138 }
139 catch(system.DMLException e)
140 {
141 system.debug('ERROR ERROR!: ' + e.getmessage());
142 system.assert(false, e.getMessage());
143 }
144 ltasks = new list<Task>();
145 ltasks.add(t);
146 }
147 }
148 //End task loop
149 }
150 if(ltasks.size() > 0)
151 {
152 try
153 {
154 update lTasks;
155 }
156 catch(system.DMLException e)
157 {
158 system.debug('ERROR ERROR!: ' + e.getmessage());
159 system.assert(false, e.getMessage());
160 }
161 }
162 //Events
163 list<Event> lEvents = new list<Event>();
164 for(Event ev : [Select e.id, e.whoid, e.whatid from Event e where e.whoid in :sMove])
165 {
166 ActWhoID = ev.WhoID;
167 if(mLeadAct.get(ActWhoId) != null)
168 {
169 ev.WhatId = mLeadAct.get(ActWhoID).id;
170 ev.WhoId = mLeadAct.get(ActWhoID).Contact__c;
171 if(lEvents.size()<1000)
172 {
173 lEvents.add(ev);
174 }
175 else
176 {
177 try
178 {
179 update lEvents;
180 }
181 catch(system.DMLException e)
182 {
183 system.debug('ERROR ERROR!: ' + e.getmessage());
184 system.assert(false, e.getMessage());
185 }
186 lEvents = new list<Event>();
187 lEvents.add(ev);
188 }
189 }
190 //End Event loop
191 }
192 if(lEvents.size() > 0)
193 {
194 try
195 {
196 update lEvents;
197 }
198 catch(system.DMLException e)
199 {
200 system.debug('ERROR ERROR!: ' + e.getmessage());
201 system.assert(false, e.getMessage());
202 }
203 }
204 //EOM
205 }
206 /*Move Activities from Junction to Opportunity. Called from Cust_Lead_Convert_Controller upon conversion*/
207 public static void Junction_to_Opportunity(ID LeadID, ID OppID)
208 {
209 system.debug('Firing Junction_To_Opportunity!');
210 system.debug('Converted Lead: ' + LeadID); system.debug('Opportunity: ' + OppId);
211 list<Task> lTasks = new list<Task>();
212 list<Event> lEvents = new list<Event>();
213 set<Id> sLead_ActIDs = new set<Id>();
214 //Build set of Lead Activities just in case there are more than one!
215 list<Lead_Activity__c> Lead_Acts = [Select L.Id, l.Account__c, l.Lead__c, Contact__c from Lead_Activity__c l where l.lead__c = :LeadID];
216 for(Lead_Activity__c L : Lead_Acts)
217 {
218 sLead_ActIDs.add(l.id);
219 }
220 //Loop through Tasks
221 for(Task t: [select t.id, t.whoid, t.whatid from Task t where t.whatid in :sLead_ActIDs])
222 {
223 if(Lead_Acts.size() >0)
224 {
225 t.WhatId = OppId;
226
227 if(ltasks.size()<1000)
228 {
229 lTasks.add(t);
230 }
231 else
232 {
233 try
234 {
235 update lTasks;
236 }
237 catch(system.DMLException e)
238 {
239 system.debug('ERROR ERROR!: ' + e.getmessage());
240 system.assert(false, e.getMessage());
241 }
242 ltasks = new list<Task>();
243 ltasks.add(t);
244 }
245 }
246 //End Task Loop
247 }
248 if(ltasks.size() > 0)
249 {
250 try
251 {
252 update lTasks;
253 }
254 catch(system.DMLException e)
255 {
256 system.debug('ERROR ERROR!: ' + e.getmessage());
257 system.assert(false, e.getMessage());
258 }
259 }
260 //Loop through Events
261 for(Event ev : [Select e.id, e.whoid, e.whatid from Event e where e.whatid in :sLead_ActIDs])
262 {
263 if(Lead_Acts.size() >0)
264 {
265 ev.WhatId = OppId;
266 if(lEvents.size()<1000)
267 {
268 lEvents.add(ev);
269 }
270 else
271 {
272 try
273 {
274 update lEvents;
275 }
276 catch(system.DMLException e)
277 {
278 system.debug('ERROR ERROR!: ' + e.getmessage());
279 system.assert(false, e.getMessage());
280 }
281 lEvents = new list<Event>();
282 lEvents.add(ev);
283 }
284 }
285 //End event loop
286 }
287 if(lEvents.size() > 0)
288 {
289 try
290 {
291 update lEvents;
292 }
293 catch(system.DMLException e)
294 {
295 system.debug('ERROR ERROR!: ' + e.getmessage());
296 system.assert(false, e.getMessage());
297 }
298 }
299 //Delete if no more Tasks exist
300 Boolean SafeToDelete = true;
301 for(Task t: [select t.id, t.whoid, t.whatid from Task t where t.whatid in :sLead_ActIDs])
302 {
303 SafeToDelete =false;
304 }
305 for(Event ev : [Select e.id, e.whoid, e.whatid from Event e where e.whatid in :sLead_ActIDs])
306 {
307 SafeToDelete =false;
308 }
309 system.debug('SafetoDelete = ' + SafetoDelete);
310 try
311 {
312 delete Lead_Acts;
313 }
314 catch(system.DMLException e)
315 {
316 system.debug('ERROR ERROR!: ' + e.getmessage());
317 system.assert(false, e.getMessage());
318 }
319 //EOM
320 }
321 @future
322 public static void Lead_DoubleCheck(set <Id> sCheck)
323 {
324 list<Lead> lUpdate = [Select id, Account__c, Contact__c, Lead_Activity__c, Description from Lead where Id in :sCheck];
325 for(integer i=0; i<lUpdate.size(); i++)
326 {
327 lUpdate[i].Lead_Activity__c = null;
328 }
329 update lUpdate;
330 //EOM
331 }
332 //EOF
333 }