-
ChatterFeed
-
50Best Answers
-
0Likes Received
-
1Likes Given
-
9Questions
-
226Replies
Attempt to de-reference a null object - Need Help with Trigger
Hi,
I need help with a trigger. Someone please help me on what I am doing wrong. Thank you.
My scenario is - For a person Account - Address, City & Zip are filled.
When a Case is created for that Customer - Address, City & Zip should automatically be filled. So that Sales reps don't have to fill those 3 fields again.
Here is my CODE
trigger CasesTrigger on Case (after insert){
Set<Id> accIds = new Set<Id>();
List<Case> lstCases = new List<Case>();
for(Case objCase:trigger.new){
accIds.add(objCase.AccountId);
system.debug('ACCOUNTIDS'+accIds);
}
Map<ID, Account> MapAccIdtoAccount = new Map<ID, Account>([Select Id, Street__c, City__c, State__c, Zip__c from Account where Id IN:accIds]);
system.debug('ACCOUNTSMAP'+MapAccIdtoAccount);
for(Case objCase:Trigger.new){
Case oCase = new Case();
if(MapAccIdtoAccount.containsKey(objCase.AccountId))
{
oCase.Address_Line1__c = MapAccIdtoAccount.get(oCase.AccountId).Street__c ;
system.debug('ADDRESS---'+oCase.Address_Line1__c);
oCase.City__c = MapAccIdtoAccount.get(oCase.AccountId).City__c ;
oCase.State__c = MapAccIdtoAccount.get(oCase.AccountId).State__c ;
oCase.Zip__c = MapAccIdtoAccount.get(oCase.AccountId).Zip__c ;
lstCases.add(oCase);
system.debug('oCASE'+oCase);
}
}
if(lstCases.size()>0){
update lstCases;
}
}
- Dipti D
- September 23, 2015
- Like
- 0
- Continue reading or reply
Trailhead - Automating Processes with the Lightning Process Builder
You've been given a requirement to keep Contact addresses in sync with the Account they belong to. Use Process Builder to create a new process that updates all child Contact addresses when the address of the Account record is updated. This process:Can have any name.
Must be activated.
Must update Contact mailing address fields (Street, City, State, Post Code, Country) when the parent Account shipping address field values are updated.
NOTE: You may have to deactivate the validation rule created from a previous challenge in order to complete this challenge.
I worked and reworked this module and I cannot figure out what is wrong. I have deleted the previous validation I created in a previous module. Is there something wrong in my criteria or actions?
This is the error that I am getting when I check the challenge:
An update to an account record failed to update the mailing address fields of all child contact records. Make sure that the process is correct and that it is activated.
Here are my screenshots:
- rachel watson
- September 19, 2015
- Like
- 0
- Continue reading or reply
Only 39% code coverage for a batch insert class
I am trying to insert data into Product2 and PriceBookEntry from a staging Object Product_Stage__c
The class is as follows:
global class batchPInsert implements Database.Batchable<sObject>,Database.Stateful { global integer SizeP = 0; global Database.QueryLocator start(Database.BatchableContext BCPI) { string operation; operation='Insert'; String query = 'SELECT CCO_Standard_Cost__c,IsActive__c,Dealer_Price__c,Description__c,Discount_Code__c,IP_Classification__c,Item__c,Name,Product_Type__c,Salesforce_Id__c FROM Product_Stage__c'; query=query +' WHERE Operation_Type__c = \'' + String.escapeSingleQuotes(operation) + '\''; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BCPI, List<Product_Stage__c> scope) { List<Product2> lstP = new List <Product2>(); List<PriceBookEntry>lstPBE=new List <PriceBookEntry>(); Id StandardPriceBookID=[SELECT Id FROM Pricebook2 WHERE Name = 'Standard Price Book'].Id; for(Product_Stage__c PStg : scope) { Product2 P = new Product2(); PriceBookEntry PBE=new PriceBookEntry(); P.CCO_Standard_Cost__c=PStg.CCO_Standard_Cost__c; P.Dealer_Price__c=PStg.Dealer_Price__c; P.Description__c=PStg.Description__c; P.Discount_Code__c=PStg.Discount_Code__c; P.IP_Classification__c=PStg.IP_Classification__c; P.Item__c=PStg.Item__c; P.Name=PStg.Item__c; P.Product_Type__c=PStg.Product_Type__c; P.IsActive=PStg.IsActive__c; lstP.add(P); insert(lstP); PBE.Pricebook2Id=StandardPriceBookID; PBE.Product2Id=P.Id; PBE.UnitPrice=P.Dealer_Price__c; PBE.IsActive=True; lstP.clear(); lstPBE.add(PBE); } SizeP+=scope.size(); insert(lstPBE); delete(scope); } global void finish(Database.BatchableContext BCPI) { String email; //email='gagnihotri@pelco.com'; AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed,TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id =:BCPI.getJobId()]; //SizeP= [SELECT Count() from Product_Stage__c WHERE Operation_Type__c = 'Insert']; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(new String[] {'gagnihotri@pelco.com','nhombal@pelco.com','dfisher@schneider-electric.com','ron.adolph@schneider-electric.com'}); mail.setReplyTo('gagnihotri@pelco.com'); mail.setSenderDisplayName('Batch Processing'); mail.setSubject('Batch Process Completed for insert on Products'); if (a.Status == 'Completed') mail.setPlainTextBody('The batch Apex job processed ' + a.TotalJobItems +' batches of batch size '+ SizeP+ ' with '+a.NumberOfErrors + ' failures.'); //if (a.Status == 'Failed') //mail.setPlainTextBody('The batch Apex job processed ' + a.TotalJobItems +' batches of batch size '+ SizeP+ ' with '+a.NumberOfErrors + ' failures. Failure Message: '+a.ExtendedStatus); Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); } }
The Test class:
@istest private class TestBatchPInsert { static testMethod void batchPMethod1(){ Id SPBId=test.getStandardPricebookId(); Product2 P=new Product2(); P.CCO_Standard_Cost__c=109071.45; P.Dealer_Price__c=441373.0; P.Description__c='CM9770-992X128 High Density System'; P.Discount_Code__c='D'; P.IP_Classification__c='Analog'; P.IsActive=true; P.Item__c='CM9770-992X128'; P.Name='CM9770-992X128'; P.Product_Type__c='Matrix'; insert P; PriceBookEntry PBE=New PriceBookEntry(); PBE.Pricebook2Id=SPBId; PBE.Product2Id=P.Id; PBE.UnitPrice=100; //PBE.Name='CM9770-992X128'; //PBE.ProductCode='AU'; Insert PBE; Product_Stage__c PStg= new Product_Stage__c(); PStg.CCO_Standard_Cost__c=109071.45; PStg.Dealer_Price__c=441373.0; PStg.Description__c='CM9770-992X128 High Density System'; PStg.Discount_Code__c='D'; PStg.IP_Classification__c='Analog'; PStg.IsActive__c=true; PStg.Item__c='CM9770-992X128'; PStg.Name='CM9770-992X128'; PStg.Product_Type__c='Matrix'; PStg.Salesforce_Id__c=P.Id; insert PStg; system.debug('Product Stage Id='+PStg.Id); //Test Start Test.StartTest(); batchPInsert pr4= new batchPInsert (); database.executeBatch(pr4); //pr4.execute(null, new list<Product_Stage__c> {PStg}); //pr4.execute(null, new list<Product_Stage__c> {PStg}); Test.StopTest(); //Test Stop } }
The complete execute function has zero code coverage.
Any suggestions?
Gaurav
- Gaurav Agnihotri
- September 19, 2015
- Like
- 0
- Continue reading or reply
Formula on help on two formula fields (Case and Number)
1 - "Days To Pay" - Which is a case
CASE(Location_State__c,
"RI", "7",
"MA", "8",
"CT", "8",
"NH", "14",
"ME", "14",
"VT", "14",
"NJ", "8",
"NY", "8",
"")
2 - "Days Signed" which returns a number
IF(Date_Certified_Signed__c < TODAY(), TODAY() - Date_Certified_Signed__c , NULL)
The first formula (Picklist) returns a Text value, the second, returns a number value,
I am attempting to build a formula which will identify when the "Days Signed" number value exceeds the "Days to Pay" text value, each record.
I have had no luck and could use some help.
Thank You,
Chris
- Chris Conforti
- September 18, 2015
- Like
- 0
- Continue reading or reply
SOSL return lists, how do you know what came from what object
Code looks like this:
public class ContactAndLeadSearch {
public static List<List<SObject>> searchContactsAndLeads(String FindName)
{
list<list<sObject>> ReturnName = [find :FindName IN ALL FIELDS Returning lead(FirstName, LastName), contact(firstname, lastname)];
return ReturnName;
}
}
When looking at the return ReturnName, how can you determine from what object the First/Last Name was retrieved? Lead?Contact?
Other examples used the [0] and [1] in their examples when they were traversing multiple object but they only had one "find" in each object.
Just curious as I do understand the [x][y] notation in list<list> concepts.
- Dan Broussard
- September 17, 2015
- Like
- 0
- Continue reading or reply
SingleEmailMessage HTML Status
I have snippets from both the Lead and Contact triggers so you can see they are nearly identical. Any thoughts on why HTML Status works for my Contacts but not my Leads?
if (combine==true){ contactlog = mapcontactToUpdate.get(e.id); mapcontactToUpdate.put(contactlog.id, contactlog); Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); string etidasstring = a.ezwf__Email_Template_ID__c; emailt = e.Lastname; mail.setSenderDisplayName(UserInfo.getName()); mail.setReplyTo(UserInfo.getUserEmail()); mail.setTargetObjectId(e.id); mail.setTemplateId(etidasstring); mail.setSaveAsActivity(true); myEmails.add(mail); } if (myEmails.size() > 0) { Messaging.sendEmail(myEmails); }
if (combine==true){ Leadlog = mapLeadToUpdate.get(e.id); mapLeadToUpdate.put(Leadlog.id, Leadlog); Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); string etidasstring = a.ezwf__Email_Template_ID__c; emailt = e.Lastname; mail.setSenderDisplayName(UserInfo.getName()); mail.setReplyTo(UserInfo.getUserEmail()); mail.setTargetObjectId(e.id); mail.setTemplateId(etidasstring); mail.setSaveAsActivity(true); myEmails.add(mail); } if (myEmails.size() > 0) { Messaging.sendEmail(myEmails); }
- Keaton Klein
- September 17, 2015
- Like
- 0
- Continue reading or reply
Trying to display the current Users Opportunities in the page
public with sharing class OppExt {
public List<Opportunity> myOpportunities { get; private set; }
public OppExt(){
myOpportunities = [ SELECT Id, Name, Account.Name
from Opportunity
WHERE OwnerId = :UserInfo.getUserId()];
}
//Set<Opportunity> ids = new Set<Opportunity>();
public List<Opportunity> getOpp() {
System.debug(myOpportunities);
return myOpportunities;
}
}
Apex page
<header>
<div class="container">
<div class="intro-text">
<a href="#services" class="page-scroll btn btn-xl">Create New Opportunity</a>
<a href="#services" class="page-scroll btn btn-xl">Add to Existing Opportunity</a>
<a href="#services" class="btn-custom">Add to Existing Opportunity</a>
<div class = "span4">
<button class="btn custom large f" >Foxtrot</button>
</div>
</div>
<apex:outputText value="{!$User.Id}"/>
<apex:outputText value="{!$User.FirstName}"/>
<apex:outputText value="{!$User.LastName}"/>
<!-- <apex:outputfield value="{!currentuser.Id}"/> -->
<apex:repeat >
<apex:outputText value="{!myOpportunities.Name}"/>
</apex:repeat>
</div>
</header>
</apex:page>
- Behzad Bahadori 18
- September 17, 2015
- Like
- 0
- Continue reading or reply
How to overcome with 150 DML limit for apex
- Mahantesh Kenganal
- September 16, 2015
- Like
- 0
- Continue reading or reply
Validation Rule Formula help - Picklist & Formula Field
Field A has options A1, A2, A3 = picklist
Field B has options B1, B2, B3 = Formula
How would I create a validation rule that allows for the following conditions, if any are met:
If Field A = A1 and Field B = B1
If Field A = A2 and Field B = B1 or B2
if Field A = A3 and Field B = B1 or B2 or B3
The formula I am attempting to write is :
If (and( ispickval(Field A = A1, Contains(Field B = B1),,
If (and(ispickval(field A = A2, OR(Contains(Field B = B1, Contains(Field B = B2),,
If (and(ispickval(field A = A3, OR(Contains(field b = B1, Contains(Field B = B2, Contains(Field B = B3,,
)))
Is it appropriate to use a 'IF" statement or would an "OR" statement be more appropriate?
Any help would be grateful!
Thanks,
- Chris Paris
- September 15, 2015
- Like
- 0
- Continue reading or reply
Help with multiplier formula
I have the following formula feild. Based on the average rent it receives an applicable score.
IF(Average_Rent__c > 2999, 14.00,
IF(Average_Rent__c> 1099, 10.50,
IF(Average_Rent__c > 699,7.00,
IF(Average_Rent__c < 700, 1.75, NULL)))).
I need update it to include a multipler based on a picklist field "Region" and its values New York, Chicago, Los Angeles.
So if the picklist "Region", value is New York, multiple the Average rent by 3, Chicago by 1.5 and Los Angeles by 2.
- Rung41
- September 15, 2015
- Like
- 0
- Continue reading or reply
Custom Controller
[Error] Error: Mycontroller Compile Error: Illegal assignment from List<Account> to Account at line 6 column 3
Can anybody give a solution ?
CODE:
<apex:page controller="Mycontroller" tabStyle="Account">
<apex:form >
<apex:pageBlock title="Account Details">
<apex:pageBlockSection title="Account information">
<apex:inputField value="{!Account.Name}"/>
<apex:inputField value="{!account.Phone}"/>
<apex:inputField value="{!account.Industry}"/>
<apex:inputField value="{!account.Website}"/>
</apex:pageBlockSection>
<apex:pageBlockSection title="Account Details">
<apex:inputField value="{!Account.Fax}"/>
<apex:inputField value="{!Account.Shippingcity}"/>
<apex:inputField value="{!Account.AnnualRevenue}"/>
</apex:pageBlockSection>
<apex:pageBlockButtons>
<apex:commandButton action="{!Save}" value="Save"/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
CLASS:
public with sharing class Mycontroller
{
Public Account acc;
Public Mycontroller()
{
acc=[SELECT id,Name,Phone,Industry,Website,Fax,Shippingcity,AnnualRevenue from account Where id=:ApexPages.currentpage().getparameters().get('id')];
}
Public account getaccount()
{
return acc;
}
Public Pagereference Save()
{
update acc;
pagereference page=new Apexpages.StandardController(acc).view();
return Page;
}
}
- rao venky
- September 15, 2015
- Like
- 0
- Continue reading or reply
Update Account Type field when Opportunity is approved
I wrote a workflow to update account type when opportunity approval is approved ( approval in opportunity is tracled through a flag called status) but this is failing please suggest me I even wrote a trigger to update this is not firing when approval is approved when edited it is working
trigger Account_Type_Update on Opportunity (After Update) { Public List<Opportunity> Optys = New List<Opportunity>(); Public List<Account> Acct = new List<Account>(); Optys = [SELECT Id,AccountID,Account.ID,Account.RecordTypeID, RecordType.name,RecordTypeID,Is_Approved__c FROM Opportunity WHERE Id = :Trigger.newMap.keySet() ]; for ( Opportunity Opp : Optys ) { if ( (Opp.RecordTypeID == '012250000008i5uAAA' || Opp.RecordTypeID == '01225000000ChlOAAS' || Opp.RecordTypeID == '01225000000ChlEAAS' ) && Opp.Is_Approved__c == True) { Acct = [SELECT RecordTypeID,Type FROM Account WHERE ID = :Opp.AccountID ]; for ( Account Act : Acct ) { Act.Type = 'Client'; Update Act; } } } }
Please suggest me
Thanks
Sudhir
- sudhirn@merunetworks.com
- September 15, 2015
- Like
- 0
- Continue reading or reply
Can't set up debug log in sandbox
Clicking the lookup icon gets me nowhere -- it says there aren't any results, no matter what I enter. Help!
- Matthew Souther 9
- September 14, 2015
- Like
- 0
- Continue reading or reply
Increase code coverage of Schedulable test class ?
global class SalesOrderSchedule implements Schedulable { global static void checkrun() { String day = string.valueOf(system.now().day()); String month = string.valueOf(system.now().month()); String hour = string.valueOf(system.now().hour()); String minute = string.valueOf(system.now().minute()); String second = string.valueOf(system.now().second()); String year = string.valueOf(system.now().year()); String JobName = 'Scheduled Job of sales Order'; String strSchedule = second +' ' + minute+' '+ hour+' '+ day+' '+month+' ?'+' '+ year; system.schedule(JobName, strSchedule, new SalesOrderSchedule()); } global void execute(SchedulableContext sc) { Opportunity opp; for (Sales_Order__c salesorders : [select id, Name, LastModifiedDate, Quote__c, OrderNum__c from Sales_Order__c WHERE LastModifiedDate >= LAST_N_DAYS:1]) { String OppNewStage=null; if (salesorders.OrderNum__c=='QUOTE WON') { OppNewStage='Closed Won'; } else if (salesorders.OrderNum__c=='QUOTE LOST') { OppNewStage='Closed Lost'; } else { OppNewStage='Quoted'; } opp=[select id, Name, StageName from Opportunity where id=:salesorders.Quote__c]; opp.StageName=OppNewStage; update opp; } } }
here is my test class, my code coverage is 13%.
@isTest public class SalesOrderScheduleTest { static testMethod void myTestMethod() { test.starttest(); SalesOrderSchedule.checkrun(); String chron = '0 0 12 15 9 ? 2015' ; system.schedule('job', chron, new SalesOrderSchedule()); test.stopTest(); } }
Static checkrun method is not covering, how to increase the code coverage ?? Guys help
- Waqas Ali
- September 14, 2015
- Like
- 0
- Continue reading or reply
Add Attachment to Chatter Feed
trigger AttachFileToAccountFeed on Attachment (before insert) { ID accountId; list<FeedItem> listOfFeedFiles = new List<FeedItem>(); if(Trigger.isBefore){ for(Attachment attachment : trigger.new){ string checkIfCase = string.valueof(attachment.Description); { //Adding a Content post accountId = attachment.ParentId; FeedItem post = new FeedItem(); post.ParentId = accountId; //eg. Opportunity id, custom object id.. post.Body = 'Attachment added'; post.Type = 'ContentPost'; post.ContentData = attachment.body; post.ContentFileName = attachment.Name; post.Title = attachment.Name; listOfFeedFiles.add(post); } } } if(listOfFeedFiles!=null){ insert listOfFeedFiles; } }
- runnerbray
- September 10, 2015
- Like
- 0
- Continue reading or reply
How to get the user details from ID stored in string format?
I'm new to Salesforce and I want to know how can I get back the user details that I stored ID in string data type. Ex
public class vSFDCuseinfo{
public string auserid {get;set;}
public string aName{get;set;}
public vSFDCuseinfo (){
auserid= UserInfo.getUserId();
aName = auserID.username; // how to get the username (firstname, lastname etc) from ID stored in string format?
}
}
Thanks
Vish
- vish h
- September 10, 2015
- Like
- 0
- Continue reading or reply
Clone Custom Object Record & Redirect to VF Page
I have a button on the Opportunity object that clones a record from a related custom object. The clone works fine, but it opens the standard edit page for the custom object. Instead, I would like the clone to open a custom VF edit page. Is this possible to do? My current URL for the button is:
onClick="window.open('/{!Opportunity.Sumary__r.Id}/e?clone=1','_blank')"
- John Neilan 2
- September 09, 2015
- Like
- 0
- Continue reading or reply
Executing method within a Visualforce extension using Javascript on a Visualforce page
Because of this, I can't use Javascript remoting nor can I use the AJAX toolkit/sforce.apex.execute method because both require static keywords and the instance variables are not visible to static methods. I'm greatful for any advice.
FYI The JSON string is used to populate a Datatables (https://datatables.net/" target="_blank) table on the VF page.
- BroncoBoy
- September 09, 2015
- Like
- 0
- Continue reading or reply
Adding space in Dynamic SOQL
Can some one please to add the space before FROM in Dynamic SOQL.
string query ='SELECT ' + qFields +
'FROM contact'+
' WHERE user_num__c = \'' + String.escapeSingleQuotes(uNum) + '\''+
' LIMIT 1';
- KrForce
- September 08, 2015
- Like
- 0
- Continue reading or reply
Setting SOSL Name Fields
Is it possible to designate an arbitrary field as a Name Field on an object, and if so, how is this done?
- Garret Walliman
- September 08, 2015
- Like
- 0
- Continue reading or reply
SFResetDelegate Not Receiving Callbacks
Hi guys,
I am using the mobile sdk in an existing project ( not using the template ). To preface, this project is in xcode 4.3.3, targeting ios 5 and using storyboards.
I've created a class which conforms to SFOAuthCoordinatorDelegate that is handling and displaying the OAuth dance. This seems to all be working just fine and I can see that I'm being authenticated.
However, this is where two strange things are happening. First, in the oauthDidAuthenticate method I try to assign the coordinator to the SFRestAPI shared instance and I am getting an NSInvalidArgument exception that's referencing something to do with NSURL and queryParameters. I believe it has something to do with the instanceUrl property on the coordinator's credentials, so I'm setting the instanceUrl to nil and then assigning the coordinator to the shared instance of SFRestAPI.
Next, I have a method that gets notified when the authentication has been successfully completed. This method is in a class that conforms to SFRestDelegate. Here I reset the instanceUrl property of the shared instance back to what it should be. Then, I try to send a simple query for Contacts. I can see in the logs that the request is being created with the proper endpoint, method, path, and queryParams, but none of the SFRestDelegate methods are getting any info back. The flow just ends.
Has anyone else come across this and/or have any ideas?
Thanks as always,
Clint
- ClintLee
- September 06, 2012
- Like
- 0
- Continue reading or reply
Authenticated Website License and Vieewing Opportunities
I am having some trouble understanding the ability to Read Opportunities with the Authenticated Website License.
Overview:
We track the lifecycle and stages of our consumer customers with the Opportunity object. I want to create a secure portal where they can simply view the information related to their Opportunities. In order to do this they need to be authenticated.
What I've Done:
I have a site which requires login and we are using the Authenticated Website license. This profile does not have the option to grant Read access to Opportunities. I have created a User with the Authenticated Website license and profile. When logged in as this User I cannot display the Opportunities on a custom VF page.
However, I wanted to test the ability to create an Opportunity when logged in as this user, so I created a button on the VF page that would create an Opportunity when clicked. It worked and I was able to create an Opportunity when logged in as this User with the Authenticated Website License. The Public Access Setting for this Site does grant Read and Create access on Opportunities but I don't know if that has anything to do with it.
This leaves me confused and having some questions:
1. I've been told that only the Partner Portal license has access to Opportunities. If that's the case, why am I able to create Opportunities with the Authenticated Website license?
2. Do the Public Access Settings for the Site have any effect on access even when not using that particular license?
3. If I can create an Opportunity, why can I not view Opportunities when logged in with the Authenticated Website license?
Sharing settings for Opportunities are set to Public Read/Write.
Thanks in advance for any insight!
~ Clint
- ClintLee
- March 18, 2011
- Like
- 0
- Continue reading or reply
Is it Possible to Set HTTP Header Response From a Sites Page?
Hello All,
I have a question that I'm sure can be answered by the collective wisdom of the Salesforce community.
Background:
I'm working on an application that utilizes Twilio to send SMS messages. Sending outbound SMS messages is working fine. If someone replies to one of these SMS messages Twilio will post an HTTP Request to a specified URL and it expects an HTTP response. I set up a VF Sites page to act as a listener and execute the logic (i.e. attach the message to a custom object). However, my dilemma is how can I control the HTTP response that my Sites page sends back?
Thanks in advance for your help,
Clint
- ClintLee
- December 22, 2010
- Like
- 0
- Continue reading or reply
Email Services - Possible to determine if an Incoming Email is HTML or Plain Text?
Hello,
I have spent some time searching the forums and reviewing the docs on Email Services and cannot find an answer to this, so I'm hoping the smart folks here can help me out.
I have an email service set up that accepts incoming emails. Is there a way to check an incoming email to determine whether it is in HTML or PlainText format?
For example, something like this:
if (email is in HTML format) {
do this code using email.htmlBody;
} else {
do this code using email.plainTextBody;
}
Thanks in advance,
Clint
- ClintLee
- August 02, 2010
- Like
- 0
- Continue reading or reply
Email Services - Possible to determine if an Incoming Email is HTML or Plain Text?
Hello,
I have spent some time searching the forums and reviewing the docs on Email Services and cannot find an answer to this, so I'm hoping the smart folks here can help me out.
I have an email service set up that accepts incoming emails. Is there a way to check an incoming email to determine whether it is in HTML or PlainText format?
For example, something like this:
if (email is in HTML format) {
do this code using email.htmlBody;
} else {
do this code using email.plainTextBody;
}
Thanks in advance,
Clint
- ClintLee
- August 02, 2010
- Like
- 0
- Continue reading or reply
JQuery Form Validation - Checkbox Issues
Hi,
I have a VF page with a form included on it that I am validating with jquery. Thanks to some previous posts by @weznolte and @tehnrd I was able to create some pretty slick validation rules, but I am stumped on an issue with a checkbox that seems like it should be relatively straightforward.
What I need to accomplish is simply this - if the checkbox is checked then make a field required. If the checkbox is not checked, then this field is not required.
The variable "isdedicated" holds the ID of the checkbox.
The variable "recipFName" holds the ID of the field that needs to be conditionally required based on the checkbox.
The last rule in the first set of code is my (ump-teenth) attempt at making this work.
It seems that the value of my rule function always returns true, because when the form validates "recipFName" is always required regardless of whether the checkbox is checked or not.
Here is the code to invoke the validate() method and includes the rules.
<script type="text/javascript">
var j$ = jQuery.noConflict();
j$(document).ready(function() {
j$(jq(f)).validate();
j$(jq(dFName)).rules("add",{
required: true,
minlength: 2
});
j$(jq(dLName)).rules("add",{
required: true,
minlength: 2
});
j$(jq(dEmail)).rules("add",{
required: true,
email: true
});
j$(jq(dAddress)).rules("add",{
required: true,
minlength: 5
});
j$(jq(dCity)).rules("add",{
required: true,
minlength: 5
});
j$(jq(dState)).rules("add",{
required: true,
minlength: 2
});
j$(jq(dZip)).rules("add",{
required: true,
minlength: 5
});
j$(jq(dCountry)).rules("add",{
required: true,
minlength: 2
});
j$(jq(dAmount)).rules("add",{
required: true
});
j$(jq(rFName)).rules("add",{
required: function jq() { return
j$(jq(isDedicated)).is(':checked') == true;
}
});
jQuery.validator.messages.required = "Oops! This field is required!";
});
</script>
And this is the form code.
<apex:form id="donForm">
<script type="text/javascript">
var dFName = "{!$Component.donorFirstName}";
var dLName = "{!$Component.donorLastName}";
var dEmail = "{!$Component.donorEmailAddress}";
var dAddress = "{!$Component.donorAddressStreet}";
var dCity = "{!$Component.donorAddressCity}";
var dState = "{!$Component.donorAddressState}";
var dZip = "{!$Component.donorAddressZip}";
var dCountry = "{!$Component.donorAddressCountry}";
var isDedicated = "{!$Component.isDedicated}";
var rFName = "{!$Component.recipFName}";
var dAmount = "{!$Component.donAmount}";
</script>
<apex:outputLabel for="donorFirstName">First Name</apex:outputLabel>
<apex:inputText id="donorFirstName" value="{!donorFName}" />
<apex:outputLabel for="donorLastName">Last Name</apex:outputLabel>
<apex:inputText id="donorLastName" value="{!donorLName}" />
<apex:outputLabel for="acctName">Company Name (optional)</apex:outputLabel>
<apex:inputText id="biz" value="{!acctName}" />
<apex:outputLabel for="donorEmailAddress">Email</apex:outputLabel>
<apex:inputText id="donorEmailAddress" value="{!donorEmail}" />
<h3>Address Information</h3>
<apex:outputLabel for="donorAddressStreet">Street Address</apex:outputLabel>
<apex:inputText id="donorAddressStreet" value="{!donorAddress}" />
<apex:outputLabel for="donorAddressCity">City</apex:outputLabel>
<apex:inputText id="donorAddressCity" value="{!donorCity}" />
<apex:outputLabel for="donorAddressState">State</apex:outputLabel>
<apex:inputText id="donorAddressState" value="{!donorState}" />
<apex:outputLabel for="donorAddressZip">Zip</apex:outputLabel>
<apex:inputText id="donorAddressZip" value="{!donorZip}" />
<apex:outputLabel for="donorAddressCountry">Country</apex:outputLabel>
<apex:inputText id="donorAddressCountry" value="{!donorCountry}" />
<h3>Dedication Info</h3>
<apex:outputLabel for="isdedicated">Dedicate in the name of a friend </apex:outputLabel>
<apex:inputCheckbox id="isDedicated" value="{!isDedicated}"/>
<apex:outputLabel for="recipFName">First Name</apex:outputLabel>
<apex:inputCheckbox id="recipFName" value="{!recipFName}" />
<--Rest of form code here-->
</apex:form>
<script type="text/javascript">
function jq(myid) {
return '#' + myid.replace(/(:|\.)/g,'\\\\$1');
}
var f = '{!$Component.donForm}';
</script>
Any help would be much appreciated! Thanks.
Clint
- ClintLee
- April 19, 2010
- Like
- 0
- Continue reading or reply
Modify Public Solutions HTML Code
Hello All,
We recently launced a solutions page for our customers by generating the HTML code through the Public Solutions feature in Salesforce. The solutions display in an iframe on our page and everything is functioning correctly except for the fact that there are two unwanted columns that are visible to our customers, they are 'Number of Related Cases' and 'Last Modified Date'.
I searched for a way to remove these columns as we do not want our customers to be able to see them. I couldn't find any documentation around this so I submitted a case to Salesforce Support, whereby I was told that I needed to modify the HTML code but they could not tell me how and subsequently pointed me to the developer board.
Here is the HTML code that is generated -
<IFRAME title="Content" src="http://na4.salesforce.com/sol/public/search.jsp?orgId=00D300000006JjL" WIDTH="515" HEIGHT="360"></IFRAME>
Any ideas how I can modify the Public Solutions HTML to remove the two columns?
Thanks for your help.
Clint
- ClintLee
- January 08, 2010
- Like
- 0
- Continue reading or reply
Displaying Image attachments in VF Page
Hello All,
I am trying to determine the best route for displaying image attachments on a VF Page.
More specifically, I have an object called Site_Development__c which contains information about construction projects. I would like for a user to be able to attach image files to the record (as attachments) which will then be displayed via a VF Page.
Ideally I would like to create the VF page so that it could be inserted into the Site_Development__c page layout. However, this requires using the Site_Development__c standard controller so I would need to create a controller extension and I am having trouble doing that.
Another option that I thought might be easier would be to create a VF page that simply displays all of the image attachments and then create a button on the Site Development page layout that links to this page. However, I'm not certain if there is a simple way to display the images (like if I wanted to show the user's first name I could just do {!$User.firstname}).
Looking over some of the other posting I tried to patch together some code for an extension but I'm getting error messages saying invalid constructor.
Extension (sorry in advance if the code looks weird, I always have trouble posting code in here)
public class SiteDevExtension {
private final tfgff__Site_Development__c siteDev;
public SiteDevExtension(ApexPages.StandardController stdController) {
this.siteDev = (tfgff__Site_Development__c)stdController.getRecord();
}
public List<Attachment> pics {get;set;}
public SiteDevPicDisplay() {
pics = [Select a.ParentId, a.Name From Attachment a where ParentId=System.currentPageReference().getParameters().get('id')];
}
}
VF Page Snippet
<apex:repeat value="{!pics}" var="p">
{!URLFOR($Action.Attachment.Download, p.Id)}
</apex:repeat>
Any feedback or recommendations would be greatly appreciated.
Thanks!
- ClintLee
- October 28, 2009
- Like
- 0
- Continue reading or reply
Test Method for Custom Controller
Hi,
I am fairly new to Apex development and programming in general. My particular issue is that I am having trouble creating a test method for a custom controller. I have a VF page with a simple form for submitting cases, and a custom controller to handle it. I've deployed the VF page and controller to my developement org and everything works properly. Now I want to deploy it to production but need test coverage.
I have read through the Apex Developer's Guide and countless forum postings on developing test methods but I am still stumped.
Below is the VF page, Custom Controller class, and my current (inadequate) test method.
VF Page: simple case submit form
<apex:page controller="SubmitCaseController"> <h1>Submit New Case</h1> <apex:form > <apex:pageMessages /> <table> <tr> <th>Your Name:</th> <td><apex:inputText value="{!c.SuppliedName}"/></td> </tr> <tr> <th>Your Email:</th> <td><apex:inputText value="{!c.SuppliedEmail}"/></td> </tr> <tr> <th>Your Account Number:</th> <td><apex:inputText required="true" value="{!acctNum}"/></td> </tr> <tr> <th>Title:</th> <td><apex:inputText required="true" value="{!c.Subject}"/></td> </tr> <tr> <th>Your Problem:</th> <td><apex:inputTextArea required="true" rows="5" value="{!c.Description}"/></td> </tr> <tr> <td><apex:commandButton value="Submit Case" action="{!submitCase}"/></td> </tr> </table> </apex:form></apex:page>
Custom Controller: The general functionality is to use the acctnum field to match an existing account. Then, find the appropriate contact by matching the account and email address. Then insert the case.
public with sharing class SubmitCaseController { public Case c { get; set; } public String acctNum { get; set; } public SubmitCaseController() { c = new Case(); } public PageReference submitCase() { List<Account> accts = [SELECT Id FROM Account WHERE AccountNumber = :acctNum]; if (accts.size() != 1) { ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.FATAL, 'Invalid account number'); ApexPages.addMessage(msg); return null; } else { try { c.AccountId = accts.get(0).Id; // now look for an associated contact with the same email Contact cnt = [SELECT Id FROM Contact WHERE AccountId = :c.AccountId AND Email = :c.SuppliedEmail LIMIT 1]; if (cnt != null) c.ContactId = cnt.Id; // Specify DML options to ensure the assignment rules are executed Database.DMLOptions dmlOpts = new Database.DMLOptions(); dmlOpts.assignmentRuleHeader.useDefaultRule = true; c.setOptions(dmlOpts); // Insert the case INSERT c; return new PageReference('/thanks'); } catch (Exception e) { ApexPages.addMessages(e); return null; } } }}
My current test method:
@isTestprivate class SubmitCaseControllerTests { public static testMethod void testSubmitCaseController() {PageReference pageRef = Page.PortalCaseSubmit; Test.setCurrentPage(pageRef); Account testaccount = new Account(name = 'Acme', AccountNumber='123456'); insert testaccount; Contact testcontact = new Contact(firstname='joe', lastname='smith', email='joe@smith.com'); insert testcontact; Case c; c.SuppliedName='Joe Smith'; c.SuppliedEmail='joe@smith.com'; c.Subject = 'Test'; c.Description = 'This is a test.'; String acctnum = '123456'; SubmitCaseController controller = new SubmitCaseController(); controller.submitcase(); Case cases = [Select ID, subject, description from Case Where account.id = :testaccount.id]; System.assertequals(cases.description, c.description); } }
My logic is to instantiate an account and contact and insert them into the database. Then, mimic the process of someone completing the form and submitting it. I could test both positive and negative results this way. However, I am stumped as to how to populate the form fields and submit the form using Apex. Any help would be appreciated.
Thanks,
Clint
- ClintLee
- October 18, 2009
- Like
- 0
- Continue reading or reply
addError is not adding error message under the field
Here is a screenshot
Here is the test visualforce page with just one field to display for testing.
<apex:page standardcontroller="Apttus__APTS_Agreement__c" extensions="RequestorALL_VF_Controller" id="page">
<apex:sectionheader title="test"/>
<apex:form id="formId">
<apex:pagemessages/>
<apex:pageblock>
<apex:pageblockbuttons id="Buttons">
<apex:commandbutton value="Save Request" action="{!Save}" />
<apex:commandbutton value="Cancel" action="{!Cancel}"/>
</apex:pageblockbuttons>
<apex:pageblocksection id="MainInfoSection">
<apex:inputField value="{!Apttus__APTS_Agreement__c.Name}" required="false"/>
</apex:pageblocksection>
</apex:pageblock>
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party__r.International_Status__c}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party__r.BillingCountry}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party__r.Type}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party__r.HCP__c}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party_2__r.International_Status__c}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party_2__r.BillingCountry}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party_2__r.Type}" rendered="false" />
<apex:outputLabel value="{!Apttus__APTS_Agreement__c.Contracting_Party_2__r.HCP__c}" rendered="false" />
</apex:form>
</apex:page>
and the snippet of the controller code ...
private boolean showError(SObject sObj, string sName, string errMsg) {
boolean hasError = false;
if (sName == null || sName == '') {
if (errMsg == null) sObj.addError('the value is required');
else sObj.addError(errMsg);
hasError = true;
}
return hasError;
}
if (showError(obj, obj.Name, 'Agreement Name is required')) hasError = true;
Any help is appreciated.
- Ken Kam
- September 27, 2015
- Like
- 0
- Continue reading or reply
apex:selectList value is always returing null to controller
<apex:page standardController="Contact" extensions="TaskExtensionCtrl"> <apex:form > <apex:pageBlock title="New Log" mode="edit" id='pb'> <apex:pageBlockSection id="selectedRecordType" columns="1"> <apex:pageBlockSectionItem > <apex:outputLabel value="Choose Record Type" for="rt" /> <apex:panelGrid columns="2"> <apex:selectList value="{!selectedrecType}" multiselect="false" size="1" required="true"> <apex:selectOptions value="{!rectypes}"/> <apex:actionSupport event="onchange" action="{!showTranLog}" reRender="pb" status="status" immediate="true"/> </apex:selectList> </apex:panelGrid> </apex:pageBlockSectionItem> </apex:pageBlockSection> <apex:pageBlockButtons location="bottom"> <apex:commandButton value="Save" action="{!saveAndProceed}" /> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page>
Controller: public with sharing class TaskExtensionCtrl { public String partId; public Task task {get;set;} public boolean isShowTranLog {get;set;}{isShowTranLog=false;} public string selectedrecType{get;set;} public TaskExtensionCtrl(ApexPages.StandardController controller){ partId=ApexPages.currentpage().getParameters().get('id'); createTaskRecord(); } public void createTaskRecord() { system.debug(LoggingLevel.error,'in creat task'+selectedrecType); task = new Task(); } public PageReference showTranLog(){ this.isShowTranLog = true; system.debug(LoggingLevel.error,'task record type in showTranLog#'+ task.RecordTypeID+Task); return null; } public List<SelectOption> getrectypes() { List<SelectOption> options = new List<SelectOption>(); options.add(new SelectOption('','--Select Record Type --')); for(RecordType rt:[select id,name from RecordType where sobjecttype='task']){ options.add(new SelectOption(rt.id,rt.name)); } return options; } public String getselectedrecType() { return selectedrecType; } public void setselectedrecType(String selectedrecType) { this.selectedrecType= selectedrecType; }
- KrForce
- September 23, 2015
- Like
- 0
- Continue reading or reply
Visualforce Error Help for this Page Formula Expression is required on the action attributes.
"Visualforce Error Help for this Page Formula Expression is required on the action attributes."
I presume this is due to how it's calling the record, but don't know what to change.
<apex:commandbutton value="Return to Prev Dept" action="{!RPP_Tracker__c.Present_Dept_Number__c - 1}" />Probably a syntax error, what am I doing wrong?
- Matt Folger
- September 23, 2015
- Like
- 0
- Continue reading or reply
Attempt to de-reference a null object - Need Help with Trigger
Hi,
I need help with a trigger. Someone please help me on what I am doing wrong. Thank you.
My scenario is - For a person Account - Address, City & Zip are filled.
When a Case is created for that Customer - Address, City & Zip should automatically be filled. So that Sales reps don't have to fill those 3 fields again.
Here is my CODE
trigger CasesTrigger on Case (after insert){
Set<Id> accIds = new Set<Id>();
List<Case> lstCases = new List<Case>();
for(Case objCase:trigger.new){
accIds.add(objCase.AccountId);
system.debug('ACCOUNTIDS'+accIds);
}
Map<ID, Account> MapAccIdtoAccount = new Map<ID, Account>([Select Id, Street__c, City__c, State__c, Zip__c from Account where Id IN:accIds]);
system.debug('ACCOUNTSMAP'+MapAccIdtoAccount);
for(Case objCase:Trigger.new){
Case oCase = new Case();
if(MapAccIdtoAccount.containsKey(objCase.AccountId))
{
oCase.Address_Line1__c = MapAccIdtoAccount.get(oCase.AccountId).Street__c ;
system.debug('ADDRESS---'+oCase.Address_Line1__c);
oCase.City__c = MapAccIdtoAccount.get(oCase.AccountId).City__c ;
oCase.State__c = MapAccIdtoAccount.get(oCase.AccountId).State__c ;
oCase.Zip__c = MapAccIdtoAccount.get(oCase.AccountId).Zip__c ;
lstCases.add(oCase);
system.debug('oCASE'+oCase);
}
}
if(lstCases.size()>0){
update lstCases;
}
}
- Dipti D
- September 23, 2015
- Like
- 0
- Continue reading or reply
Best Practice: 1 trigger per object
I made 3 seperate triggers to update 3 different fields on the account level. How do I combine them into one trigger for best practices. Code is below. Thanks for the help.
trigger act_opp_subscrip on Account (before insert, before update) { List<Opportunity> oppList = new List<Opportunity>([SELECT Id, Name,AccountId FROM Opportunity WHERE AccountID in : trigger.new AND ((RecordType.Name = 'Subscription Renewal' AND Subscription_Status__c = 'Active') OR (RecordType.Name = 'Subscription Prospect' AND Web_Expire_Date__c != null))]); Map<Id,Opportunity> accIdwithOpp = new Map<Id,Opportunity>(); for(Opportunity opp : oppList){ if(!accIdwithOpp.containsKey(opp.AccountId)){ accIdwithOpp.put(opp.AccountId,opp); } } for(Account acc : trigger.new){ if(accIdwithOpp.containsKey(acc.id)){ acc.Active_Subscription_Opportunity__c = accIdwithOpp.get(acc.id).id; } else{ acc.Active_Subscription_Opportunity__c = null; } } }
trigger act_opp on Account (before insert, before update) { List<Opportunity> oppList = new List<Opportunity>([SELECT Id, Name,AccountId FROM Opportunity WHERE AccountID in : trigger.new AND ((RecordType.Name = 'Membership Renewal' AND Active_Membership__c = 'Active') OR (RecordType.Name = 'Membership Prospect' AND Web_Expire_Date__c != null))]); Map<Id,Opportunity> accIdwithOpp = new Map<Id,Opportunity>(); for(Opportunity opp : oppList){ if(!accIdwithOpp.containsKey(opp.AccountId)){ accIdwithOpp.put(opp.AccountId,opp); } } for(Account acc : trigger.new){ if(accIdwithOpp.containsKey(acc.id)){ acc.Active_Membership_Opportunity__c = accIdwithOpp.get(acc.id).id; } else{ acc.Active_Membership_Opportunity__c = null; } } }
trigger act_opp_comms on Account (before insert, before update) { List<Opportunity> oppList = new List<Opportunity>([SELECT Id, Name,AccountId FROM Opportunity WHERE AccountID in : trigger.new AND ((RecordType.Name = 'Communications Council Renewal' AND Comms_Status__c = 'Active') OR (RecordType.Name = 'Communications Council Prospect' AND Web_Expire_Date__c != null))]); Map<Id,Opportunity> accIdwithOpp = new Map<Id,Opportunity>(); for(Opportunity opp : oppList){ if(!accIdwithOpp.containsKey(opp.AccountId)){ accIdwithOpp.put(opp.AccountId,opp); } } for(Account acc : trigger.new){ if(accIdwithOpp.containsKey(acc.id)){ acc.Active_Comms_Opportunity__c = accIdwithOpp.get(acc.id).id; } else{ acc.Active_Comms_Opportunity__c = null; } } }
- Anthony Zirilli 10
- September 22, 2015
- Like
- 0
- Continue reading or reply
Getting List index out of bounds: 0
System.ListException: List index out of bounds: 0
Error is in expression '{!buy}' in component <apex:commandButton> in page confirmbuy: Class.StoreFront2.buy: line 49, column 1
Class.StoreFront2.buy: line 49, column 1
I'm trying to insert both a Purchase__c custom object record and a list of Merchandise__c line items at the same time. To do this I'm passing my "cart" values into a list and trying to add the merchanise items to the "counter" variable and insert them as "Merchandise__c" line items.
Apex
public virtual class StoreFront2 { public String message { get; set; } List<DisplayMerchandise> products; Map<Id, DisplayMerchandise> cart; public Boolean incart{get;set;} public Id rowz; public id rowDel{ get;set; } public Boolean flip{ get;set; } public Boolean flag{ get;set; } public Boolean flag2 { get; set; } public Purchase_Line_Items__c ct{ get;set; } public Contact ct2{get;set;} public StoreFront2(){ ct=new Purchase_Line_Items__c(); ct2=new Contact(); flag = false; flip = false; flag2 = true; } public PageReference buy(){ List<Merchandise__c> toMerch = new List<Merchandise__c>(); List<id> updateMerch = new List<id>(); PageReference send = new PageReference('/apex/StoreCart2'); if(ct != null && cart !=null ){ List<DisplayMerchandise> counter = new List<DisplayMerchandise>(); List<Merchandise_Line_Item__c> merchi = new List<Merchandise_Line_Item__c>(); Decimal total = 0; counter = cart.values(); system.debug(counter); for(Integer i = 0; i < counter.size(); i++){ Decimal totalPrice = counter.get(i).count; total +=totalPrice; ct.Item_Quantity__c=total; if(counter.size() > 0 || !counter.isEmpty()){ merchi.add(i,new Merchandise_Line_Item__c(Name =ct.Name,Purchases__c=ct.id,Merchandise_Item_Stable__c=counter.get(i).merchandise.id)); } } insert ct; insert merchi; } return send; } public void doShow(){ if(flip){ flag = true; flag2=false; } else{ flag = false; flag2 = true; } } public PageReference shop(){ handleTheBasket(); message = 'You bought: '; for (DisplayMerchandise p:products){ if(p.tempCount > 0){ message += p.merchandise.name + ' (' + p.tempCount + ') ' ; } } return null; } public void remove(){ rowz = (Id) ApexPages.currentPage().getParameters().get('rowDel'); if(cart.containsKey(rowz)){ cart.remove(rowz); if(cart.isEmpty()){ incart = false; } } } public pageReference back(){ PageReference doit = new PageReference('/apex/StoreCart'); doit.setRedirect(false); return doit; } public Pagereference checkout(){ if(cart.isEmpty()){ ApexPages.Message myError = new ApexPages.Message(ApexPages.Severity.ERROR, 'Shopping Cart is Empty'); ApexPages.addMessage(myError); return null; } else{ PageReference send = new PageReference('/apex/ConfirmBuy'); return send; } } public void handleTheBasket(){ for(DisplayMerchandise c : products){ if(c.tempCount > 0){ if(cart.containsKey(c.merchandise.Id)){ cart.get(c.merchandise.Id).count += c.tempCount; } else{ cart.put(c.merchandise.Id, c); cart.get(c.merchandise.Id).count = c.tempCount; incart = true; } } } } public Map<Id, DisplayMerchandise> getCart() { if(cart == null){ cart = new Map<Id, DisplayMerchandise>(); incart = false; } return cart; } public class DisplayMerchandise { public Merchandise__c merchandise{get; set;} public Decimal count{get; set;} public Decimal tempCount{get;set;} public DisplayMerchandise(Merchandise__c item){ this.merchandise = item; } } public List<DisplayMerchandise> getProducts() { if (products == null){ products = new List<DisplayMerchandise>(); for (Merchandise__c item : [SELECT id, name, description__c, price__c FROM Merchandise__c WHERE Total_Inventory__c > 0]) { products.add(new DisplayMerchandise(item)); } } return products; } }
Visualforce
<apex:page standardStylesheets="false" showHeader="false" sidebar="false" controller="StoreFront2"> <apex:stylesheet value="{!URLFOR($Resource.styles)}"/> <h1>Store Front</h1> <apex:form > <apex:dataTable value="{!products}" var="pitem" rowClasses="odd,even"> <apex:column headerValue="Product"> <apex:outputText value="{!pitem.merchandise.name}" /> </apex:column> <apex:column headervalue="Price"> <apex:outputText value="{!pitem.merchandise.Price__c}" /> </apex:column> <apex:column headerValue="#Items"> <apex:inputText value="{!pitem.tempCount}"/> </apex:column> </apex:dataTable> <br/> <apex:commandButton action="{!shop}" value="Add to Cart" reRender="msg,cartPanel,cmdPanelId"> </apex:commandButton> <apex:outputPanel id="msg"> {!message} </apex:outputPanel> <br/> <h1>Your Basket</h1> <apex:outputPanel id="cartPanel"> <apex:dataTable id="cart" value="{!cart}" var="carti" rowClasses="odd,even"> <apex:column headerValue="ID" rendered="false"> <apex:outputText value="{!cart[carti].merchandise.Id}" > </apex:outputText> </apex:column> <apex:column headerValue="Product"> <apex:outputText value="{!cart[carti].merchandise.name}"> </apex:outputText> </apex:column> <apex:column headervalue="Price"> <apex:outputText value="{!cart[carti].merchandise.price__c}" /> </apex:column> <apex:column headerValue="#Items"> <apex:outputText value="{!cart[carti].count}"/> </apex:column> <apex:column headerValue="Remove?"> <apex:commandButton action="{!Remove}" value="Remove" reRender="cart,cmdPanelId"> <apex:param name="rowDel" assignTo="{!rowDel}" value="{!carti}"/> </apex:commandButton> </apex:column> </apex:dataTable> <apex:outputPanel id="cmdPanelId"> <apex:commandButton value="Checkout" action="{!checkout}" rendered="{!incart}" /> </apex:outputPanel> </apex:outputPanel> </apex:form> </apex:page>
- Tyler Harris
- September 22, 2015
- Like
- 0
- Continue reading or reply
Trailhead - Automating Processes with the Lightning Process Builder
You've been given a requirement to keep Contact addresses in sync with the Account they belong to. Use Process Builder to create a new process that updates all child Contact addresses when the address of the Account record is updated. This process:Can have any name.
Must be activated.
Must update Contact mailing address fields (Street, City, State, Post Code, Country) when the parent Account shipping address field values are updated.
NOTE: You may have to deactivate the validation rule created from a previous challenge in order to complete this challenge.
I worked and reworked this module and I cannot figure out what is wrong. I have deleted the previous validation I created in a previous module. Is there something wrong in my criteria or actions?
This is the error that I am getting when I check the challenge:
An update to an account record failed to update the mailing address fields of all child contact records. Make sure that the process is correct and that it is activated.
Here are my screenshots:
- rachel watson
- September 19, 2015
- Like
- 0
- Continue reading or reply
Trying to complete a challange
The Apex class must have a public static method called 'generateStringArray'.
The 'generateStringArray' method must return an array (or list) of strings. Each string must have a value in the format 'Test n' where n is the index of the current string in the array. The number of returned strings is specified by the integer parameter to the 'generateStringArray' method.
And this is the code I have written :
public class StringArrayTest {
public static String[] generateStringArray(Integer arraynum){
String[] returndata = new String[arraynum];
String value = 'Test ';
returndata.clear();
for(Integer i=0;i<=arraynum;i++) {
returndata.add(value+i);
System.debug('The output' + returndata);
}
return returndata;
}
}
Error :
Challenge not yet complete... here's what's wrong:
Executing the 'generateStringArray' method failed. Either the method does not exist, is not static, or does not return the proper number of strings.
Not sure what is the mistake done by me in the code, can some one help me out?
Thanks,
Sai
- Sai Anudeep Meela
- September 19, 2015
- Like
- 0
- Continue reading or reply
How to use single inputTextField to Create a Calculator with Controller Class in Visual Force?
<apex:page controller="classname">
<apex:inputText value="somevalue" action="{!someaction}"/>
</apex:page>
With this single inputText and On clicking the button , the values in the text field should be passed to the controller class and generates output.
- The SFDC Matrix
- September 19, 2015
- Like
- 0
- Continue reading or reply
Only 39% code coverage for a batch insert class
I am trying to insert data into Product2 and PriceBookEntry from a staging Object Product_Stage__c
The class is as follows:
global class batchPInsert implements Database.Batchable<sObject>,Database.Stateful { global integer SizeP = 0; global Database.QueryLocator start(Database.BatchableContext BCPI) { string operation; operation='Insert'; String query = 'SELECT CCO_Standard_Cost__c,IsActive__c,Dealer_Price__c,Description__c,Discount_Code__c,IP_Classification__c,Item__c,Name,Product_Type__c,Salesforce_Id__c FROM Product_Stage__c'; query=query +' WHERE Operation_Type__c = \'' + String.escapeSingleQuotes(operation) + '\''; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BCPI, List<Product_Stage__c> scope) { List<Product2> lstP = new List <Product2>(); List<PriceBookEntry>lstPBE=new List <PriceBookEntry>(); Id StandardPriceBookID=[SELECT Id FROM Pricebook2 WHERE Name = 'Standard Price Book'].Id; for(Product_Stage__c PStg : scope) { Product2 P = new Product2(); PriceBookEntry PBE=new PriceBookEntry(); P.CCO_Standard_Cost__c=PStg.CCO_Standard_Cost__c; P.Dealer_Price__c=PStg.Dealer_Price__c; P.Description__c=PStg.Description__c; P.Discount_Code__c=PStg.Discount_Code__c; P.IP_Classification__c=PStg.IP_Classification__c; P.Item__c=PStg.Item__c; P.Name=PStg.Item__c; P.Product_Type__c=PStg.Product_Type__c; P.IsActive=PStg.IsActive__c; lstP.add(P); insert(lstP); PBE.Pricebook2Id=StandardPriceBookID; PBE.Product2Id=P.Id; PBE.UnitPrice=P.Dealer_Price__c; PBE.IsActive=True; lstP.clear(); lstPBE.add(PBE); } SizeP+=scope.size(); insert(lstPBE); delete(scope); } global void finish(Database.BatchableContext BCPI) { String email; //email='gagnihotri@pelco.com'; AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed,TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id =:BCPI.getJobId()]; //SizeP= [SELECT Count() from Product_Stage__c WHERE Operation_Type__c = 'Insert']; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(new String[] {'gagnihotri@pelco.com','nhombal@pelco.com','dfisher@schneider-electric.com','ron.adolph@schneider-electric.com'}); mail.setReplyTo('gagnihotri@pelco.com'); mail.setSenderDisplayName('Batch Processing'); mail.setSubject('Batch Process Completed for insert on Products'); if (a.Status == 'Completed') mail.setPlainTextBody('The batch Apex job processed ' + a.TotalJobItems +' batches of batch size '+ SizeP+ ' with '+a.NumberOfErrors + ' failures.'); //if (a.Status == 'Failed') //mail.setPlainTextBody('The batch Apex job processed ' + a.TotalJobItems +' batches of batch size '+ SizeP+ ' with '+a.NumberOfErrors + ' failures. Failure Message: '+a.ExtendedStatus); Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); } }
The Test class:
@istest private class TestBatchPInsert { static testMethod void batchPMethod1(){ Id SPBId=test.getStandardPricebookId(); Product2 P=new Product2(); P.CCO_Standard_Cost__c=109071.45; P.Dealer_Price__c=441373.0; P.Description__c='CM9770-992X128 High Density System'; P.Discount_Code__c='D'; P.IP_Classification__c='Analog'; P.IsActive=true; P.Item__c='CM9770-992X128'; P.Name='CM9770-992X128'; P.Product_Type__c='Matrix'; insert P; PriceBookEntry PBE=New PriceBookEntry(); PBE.Pricebook2Id=SPBId; PBE.Product2Id=P.Id; PBE.UnitPrice=100; //PBE.Name='CM9770-992X128'; //PBE.ProductCode='AU'; Insert PBE; Product_Stage__c PStg= new Product_Stage__c(); PStg.CCO_Standard_Cost__c=109071.45; PStg.Dealer_Price__c=441373.0; PStg.Description__c='CM9770-992X128 High Density System'; PStg.Discount_Code__c='D'; PStg.IP_Classification__c='Analog'; PStg.IsActive__c=true; PStg.Item__c='CM9770-992X128'; PStg.Name='CM9770-992X128'; PStg.Product_Type__c='Matrix'; PStg.Salesforce_Id__c=P.Id; insert PStg; system.debug('Product Stage Id='+PStg.Id); //Test Start Test.StartTest(); batchPInsert pr4= new batchPInsert (); database.executeBatch(pr4); //pr4.execute(null, new list<Product_Stage__c> {PStg}); //pr4.execute(null, new list<Product_Stage__c> {PStg}); Test.StopTest(); //Test Stop } }
The complete execute function has zero code coverage.
Any suggestions?
Gaurav
- Gaurav Agnihotri
- September 19, 2015
- Like
- 0
- Continue reading or reply
how to create simple app in salesforce and publish to appexchange
I will have 2 simple apex pages and 2apex classes. How to create and package and publish to app exchange(test free app)
- Amit Loh
- September 18, 2015
- Like
- 0
- Continue reading or reply
Formula on help on two formula fields (Case and Number)
1 - "Days To Pay" - Which is a case
CASE(Location_State__c,
"RI", "7",
"MA", "8",
"CT", "8",
"NH", "14",
"ME", "14",
"VT", "14",
"NJ", "8",
"NY", "8",
"")
2 - "Days Signed" which returns a number
IF(Date_Certified_Signed__c < TODAY(), TODAY() - Date_Certified_Signed__c , NULL)
The first formula (Picklist) returns a Text value, the second, returns a number value,
I am attempting to build a formula which will identify when the "Days Signed" number value exceeds the "Days to Pay" text value, each record.
I have had no luck and could use some help.
Thank You,
Chris
- Chris Conforti
- September 18, 2015
- Like
- 0
- Continue reading or reply
Creating a Template in SF to export Case Details to Excel
I'm trying to find a way to export Case details into an excel Templete (not all the cases collectively just for each case after the case is set up). Is there an easy way to do this? I want to be able to chose what Case Detail Fields are exported into the excel templete. It would be nice if there was a button to click on when your in the case details that just exports to the Excel Templete that I create. Any help would be much appreciated since I've tried to research this issue for a while now.
Thanks, and have a great day!
- Chris Nichols 24
- September 18, 2015
- Like
- 0
- Continue reading or reply
how to implement file upload
Hello,
How can i allow someone to upload resume in pdf or word format with maximum size and store it.
I wanted to have it included on page layout
thank you
- Ab
- September 18, 2015
- Like
- 0
- Continue reading or reply
save, cancel and save and new not working
save ,cancel and save and new buttons are not working on my visualforce page. Below is the code
And I want the assigned to defaults to the current user. Can anybody Help!!!
Controller//
public class LatestTask {public Task ta{get;set;} public LatestTask(ApexPages.StandardController controller) { } public Attachment file; public Attachment getfile(){ file = new Attachment(); return file; } public PageReference saveattachment(){ string recordid = System.currentPageReference().getParameters().get('id'); Attachment attach = new Attachment( parentid = recordid, name = file.name, body = file.body); insert attach; return null; } public void Cancel() { } public void SaveNewEvent() { } public void SaveNewTask() { } public ApexPages.PageReference save() { // I can do custom logic here before I save the record. ApexPages.StandardController controller = new ApexPages.StandardController (ta); try { controller.save(); } catch(Exception e) { return null; } return controller.view(); } }VF Page//
<apex:page tabStyle="Task" id="page1" standardController="task" extensions="LatestTask" standardStylesheets="false"> <apex:form > <apex:pageBlock title="CSR Call" mode="edit"> <apex:pageBlockButtons > <apex:commandButton action="{!save}" value="save" title="save"/> <apex:commandButton action="{!SaveNewTask}" value="Save & New Task" title="Save & New Task"/> <apex:commandButton action="{!SaveNewEvent}" value="Save & New Event" title="Save & New Event"/> <apex:commandButton action="{!Cancel}" value="Cancel" title="Cancel"/> </apex:pageBlockButtons> <apex:pageBlockSection Title="Information" columns="2"> <apex:inputField value="{!task.Subject}" id="subject" required="true"/> <apex:inputField value="{!ta.ownerid}" id="user"/> <apex:inputField value="{!task.ActivityDate}" onfocus="DatePicker.pickDate(false, 'DueDate', false);"/> <apex:inputField value="{!task.Status}"/> <apex:inputField value="{!task.Priority}" /> <apex:inputField value="{!task.Disposition__c}" /> <apex:inputField value="{!task.Description} " /> <apex:inputField value="{!task.Call_Type__c} " /> </apex:pageBlockSection> <apex:pageblockSection Title="Related To" columns="2" > <apex:inputField value="{!ta.WhatId}"/> <apex:inputField value="{!ta.WhoId}"/> </apex:pageblockSection> <apex:pageBlockSection Title="Recurrence"> <apex:pageBlockSection id="pbs3" > <apex:inputfield value="{!task.IsRecurrence}" onclick="CheckDiv()"/> </apex:pageBlockSection> </apex:pageBlockSection> <div id="Recurrencediv" style="display:none;"> <apex:pageBlockSection columns="1" id="pbs4" > <apex:pageBlockSectionItem id="pbsi1" > <table border="0px"> <tr> <td style="width:120px;"> </td> <td><b>Frequency</b></td> <td style="width:80px;"></td> </tr> </table> <div> <input type="radio" id="Dailydiv" checked="true" name="checkrctype" value="RecursEveryWeekday"/>Daily<br/> <input type="radio" name="checkrctype" value="Weekly"/>Weekly<br/> <input type="radio" name="checkrctype" value="RecursMonthly"/>Monthly<br/> <input type="radio" name="checkrctype" value="RecursYearly"/>Yearly </div> <div name="Daily" id="Daily"> <input type="radio" id="RecursEveryWeekday" name="recurrencetype" value="RecursEveryWeekday"/>Every weekday<br/> <input type="radio" id="RecursDaily" name="recurrencetype" value="RecursDaily"/>Every </div> </apex:pageBlockSectionItem> </apex:pageBlockSection> </div> <apex:pageBlockSection > <apex:inputField value="{!task.RecurrenceStartDateOnly} " /> </apex:pageBlockSection> <apex:pageBlockSection > <apex:inputField value="{!task.RecurrenceEndDateOnly} " /> </apex:pageBlockSection> <apex:pageBlockSection Title="New Attachment" > <apex:inputFile value="{!file.body}" fileName="{!file.name}"></apex:inputFile> <apex:commandButton value="save" action="{!saveattachment}"/> </apex:pageBlockSection> <apex:pageBlockSection Title="Reminder" Columns="2"> <apex:inputField value="{!task.IsReminderSet }" /> <apex:inputField value="{!ta.Reminder__c}" onfocus="DatePicker.pickDate(false, 'DueDate', false);" /> <div class="datePicker" id="datePicker"> <div class="dateBar"> <img src="/s.gif" alt="Previous Month" class="calLeft" onblur="this.className = 'calLeft';" onclick="DatePicker.datePicker.prevMonth();" onfocus="this.className = 'calLeftOn';" onmouseout="this.className = 'calLeft';" onmouseover="this.className = 'calLeftOn';" title="Previous Month"/> <select id="calMonthPicker" name="calMonthPicker" title="Month"> <option value="0">January</option> <option value="1">February</option> <option value="2">March</option> <option value="3">April</option> <option value="4">May</option> <option value="5">June</option> <option value="6">July</option> <option value="7">August</option> <option value="8">September</option> <option value="9">October</option> <option value="10">November</option> <option value="11">December</option> </select> <img src="/s.gif" alt="Next Month" class="calRight" onblur="this.className = 'calRight';" onclick="DatePicker.datePicker.nextMonth();" onfocus="this.className = 'calRightOn';" onmouseout="this.className = 'calRight';" onmouseover="this.className = 'calRightOn';" title="Next Month"/><select id="calYearPicker" name="calYearPicker" title="Year"> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> <option value="2020">2020</option> <option value="2021">2021</option> </select> </div> <div class="calBody"> <table class="calDays" border="0" cellpadding="0" cellspacing="0" id="datePickerCalendar"><tr><TH class="dayOfWeek" scope="col">Sun</TH><TH class="dayOfWeek" scope="col">Mon</TH><TH class="dayOfWeek" scope="col">Tue</TH><TH class="dayOfWeek" scope="col">Wed</TH><TH class="dayOfWeek" scope="col">Thu</TH><TH class="dayOfWeek" scope="col">Fri</TH><TH class="dayOfWeek" scope="col">Sat</TH></tr> <tr class="calRow" id="calRow1"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> <tr class="calRow" id="calRow2"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> <tr class="calRow" id="calRow3"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> <tr class="calRow" id="calRow4"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> <tr class="calRow" id="calRow5"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> <tr class="calRow" id="calRow6"><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td><td onblur="hiOff(this);" onclick="DatePicker.datePicker.selectDate(this);" onfocus="hiOn(this);" onmouseout="hiOff(this);" onmouseover="hiOn(this);"> </td></tr> </table> <div class="buttonBar"> <a href="javascript:%20void%280%29%3B" class="calToday" onclick="DatePicker.datePicker.selectDate('today');return false;">Today</a> </div> </div> </div> </apex:pageBlockSection> </apex:pageBlock> </apex:form> <script> function CheckDiv() { document.getElementById("Recurrencediv").style.display='block'; document.getElementById("Daily").style.display='block'; } </script> </apex:page>
- Minky Vaid
- September 17, 2015
- Like
- 0
- Continue reading or reply
Problems writing test case with parameters
I am trying to write test cases for a controller class I created. Several of the functions in the controller set variables using page reference pararameters. I think I am setting the parameters correctly, but when I try to retrieve data from other functions, the test fails.
Thank you for any help or advice you can provide.
Roger
CONTROLLER:
private List<Boolean> chkBoxValues = new List<Boolean>{false,false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,false,false,false,false};
public void setChkBoxValue()
{
integer boxNum = integer.valueOf(system.currentPageReference().getParameters().get('boxNum'));
boolean before = chkBoxValues[boxNum];
chkBoxValues[boxNum] = !chkBoxValues[boxNum];
System.debug('boxNum:' + boxNum + ' before:' + before);
System.debug(currentChkBoxValues);
}
public string currentChkBoxValues
{
get {
return string.join(chkBoxValues, ', ');
}
}
TEST CASE:
@istest static void TestSetChkBoxValue()
{
PageReference pg = Page.BoleteSearch;
pg.getParameters().put('boxNum','49');
Test.setCurrentPage(pg);
BoleteController ctrl = new BoleteController();
ctrl.setChkBoxValue();
String chk = ctrl.currentChkBoxValues;
system.assert(chk.contains('T'), chk);
}
- Roger Pavelle
- August 26, 2015
- Like
- 1
- Continue reading or reply