<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4560119253723710592</id><updated>2024-08-30T23:45:00.155+05:30</updated><category term="Salesforce"/><category term="visualforce"/><category term="Apex"/><category term="Data Loading"/><category term="Salesforce Administration"/><category term="sorting List"/><category term="24"/><category term="Account Contact Hierarchy View"/><category term="Account address as a single block"/><category term="Apex Class objects"/><category term="Api"/><category term="Business Day"/><category term="Child record as primary through config"/><category term="Converted Leads"/><category term="Deploy errors"/><category term="Deployment"/><category term="Dynamic soql"/><category term="Hierarchy"/><category term="Javascript ghost text SFDC"/><category term="Loading pricebook entry"/><category term="Null Pointer exception"/><category term="Opportunity Line item"/><category term="Opportunity Products"/><category term="Query Access level"/><category term="Query profile"/><category term="Queue"/><category term="Rendering PDF and adding as attachment"/><category term="Salesforce best practices"/><category term="Salesforce tools"/><category term="Sending Emails"/><category term="Sobject type of record"/><category term="Standardsetcontroller"/><category term="Test method"/><category term="Workflow"/><category term="alphabetical sorting"/><category term="custom"/><category term="escaltion rules"/><category term="insert"/><category term="product pricebook design"/><category term="query string builder"/><category term="reusable"/><category term="rollup summary"/><category term="select all. checkbox"/><category term="soql query string"/><category term="utility class"/><category term="visualforce ghost text"/><title type='text'>salesforce blogger</title><subtitle type='html'>Its a blog for salesforce which is cloud computing CRM tool.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://salesforceblogger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-2016717174624063842</id><published>2015-05-02T16:39:00.001+05:30</published><updated>2015-05-02T16:39:11.647+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Deploy errors"/><category scheme="http://www.blogger.com/atom/ns#" term="Deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>List of items that cannot be deployed in salesforce</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Recently when I was deploying configuration for an org which has not gone live, into UAT I made note of manual tasks as i need to reuse that for deploying from UAT to production. I thought i will add few more items on the list to the list i already had. These items had to be manually configured and cannot be deployed.&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&amp;nbsp;Renaming Standard fields labels&lt;/li&gt;
&lt;li&gt;Deletion of standard Picklist values&lt;/li&gt;
&lt;li&gt;Configuring Search Layouts for all standard objects&lt;/li&gt;
&lt;li&gt;Escalation rules and Assignment rules &lt;/li&gt;
&lt;li&gt;Quote Templates&lt;/li&gt;
&lt;/ul&gt;
Always as a golden rule Deploy anything with profiles as all the necessary permissions will be carried over. Please feel free to add anything in the comments&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2016717174624063842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2016717174624063842'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2015/05/list-of-items-that-cannot-be-deployed.html' title='List of items that cannot be deployed in salesforce'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-8324790868804114592</id><published>2014-05-09T05:28:00.002+05:30</published><updated>2014-05-09T05:28:40.087+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Business Day"/><title type='text'>Calculate Nth Business Day using Apex in Salesforce.com</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
It&#39;s been a year since I&#39;ve posted anything on my blog. I&#39;ve been busy with a lot of custom development on force.com. :)&lt;br /&gt;
&lt;br /&gt;
You might run into a situation where you have to calculate the Nth working days from a specified date.&lt;br /&gt;
You will find this post very useful to calculate Nth business day from a given date.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
My client has a Service Level Agreement (SLA) requirements in which they need to act on customer complaints within N business days depending upon the severity.&lt;br /&gt;
&lt;br /&gt;
So I came up with the following apex code to determine the Nth business day from a given date. (This APEX CODE Utilize the Holiday object.)&lt;br /&gt;
It&#39;s pretty straight forward, and it might come in handy for you.&lt;br /&gt;
&lt;br /&gt;
To setup holidays Go to : Administrative setup &amp;gt; Company Profile &amp;gt; Holidays&amp;gt; add few entries e.g. 26th May 2014 &amp;gt;Memorial Day&lt;br /&gt;
&lt;br /&gt;
Apex code is as below:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;//to&amp;nbsp;calculate&amp;nbsp;Nth&amp;nbsp;business&amp;nbsp;day&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;Date&amp;nbsp;calculateNthWorkingDay(Date&amp;nbsp;fromDate,&amp;nbsp;Integer&amp;nbsp;N){&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Query&amp;nbsp;hoildays&amp;nbsp;from&amp;nbsp;Org&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;Holiday&amp;gt;&amp;nbsp;holidays=[Select&amp;nbsp;StartTimeInMinutes,&amp;nbsp;Name,&amp;nbsp;ActivityDate&amp;nbsp;From&amp;nbsp;Holiday&amp;nbsp;];&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Date&amp;nbsp;NthDay&amp;nbsp;=&amp;nbsp;fromDate;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(Integer&amp;nbsp;k=0;k&amp;lt;N&amp;nbsp;;k++&amp;nbsp;){&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(checkifWorkDay(NthDay.addDays(1),holidays)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NthDay&amp;nbsp;=&amp;nbsp;NthDay.addDays(1);&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NthDay&amp;nbsp;=&amp;nbsp;NthDay.addDays(1);&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;K--;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;NthDay;//send&amp;nbsp;Nth&amp;nbsp;Business&amp;nbsp;day&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//To&amp;nbsp;check&amp;nbsp;if&amp;nbsp;sent&amp;nbsp;date&amp;nbsp;is&amp;nbsp;a&amp;nbsp;working&amp;nbsp;day&amp;nbsp;by&amp;nbsp;comparing&amp;nbsp;with&amp;nbsp;org&amp;nbsp;holidays&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;boolean&amp;nbsp;checkifWorkDay(Date&amp;nbsp;sentDate,List&amp;lt;Holiday&amp;gt;&amp;nbsp;holidays){&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Date&amp;nbsp;weekStart&amp;nbsp;&amp;nbsp;=&amp;nbsp;sentDate.toStartofWeek();&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(Holiday&amp;nbsp;hday:holidays){&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sentDate.daysBetween(hday.ActivityDate)&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(weekStart.daysBetween(sentDate)&amp;nbsp;==0&amp;nbsp;||&amp;nbsp;weekStart.daysBetween(sentDate)&amp;nbsp;==&amp;nbsp;6)&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;/span&gt;&lt;br style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot; /&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: Arial, Helvetica, sans-serif; font-size: 12px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Add these methods in your apex class. lets say name of the apex class &amp;gt; Your_APEX_Class_Name&lt;br /&gt;
&lt;br /&gt;
In order to get 10th business day from today call this method as follows:&lt;br /&gt;
&lt;br /&gt;
date nday = Your_APEX_Class_Name.calculateNthWorkingDay(system.today(),10 );&lt;br /&gt;
system.debug(&#39;nday is**&#39;+nday);&lt;br /&gt;
&lt;br /&gt;
Hope you will find this code useful.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
Rahul G&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8324790868804114592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8324790868804114592'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2014/05/calculate-nth-business-day-using-apex.html' title='Calculate Nth Business Day using Apex in Salesforce.com'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author><georss:featurename>Columbus, OH, USA</georss:featurename><georss:point>39.9611755 -82.99879420000002</georss:point><georss:box>39.571838500000005 -83.644241200000025 40.3505125 -82.353347200000016</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-3187971688814557976</id><published>2013-04-12T03:59:00.002+05:30</published><updated>2013-12-17T14:23:00.420+05:30</updated><title type='text'>Display a Popup when a User Login to Salesforce </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
Many times there is a need to broadcast a message to all the SFDC users whenever they log into the org, the message could be just a Reminder/Policy changes&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
or sometimes user needs to accept the terms &amp;amp; condn to use a particular application.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
So when the user logs into the org and the first thing he/she sees is a pop up screen. He can neglect the message and continue working on his tasks but This&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
message needs to be displayed every time user logs in till the USer Accepts the information.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12.800000190734863px;&quot;&gt;e.g. Lets say you have launched a new app in your sfdc org and you want to display the app&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; font-size: x-small;&quot;&gt;usage&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12.800000190734863px;&quot;&gt;&amp;nbsp;policy to all the users before they can start using the&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
app. i.e. you want the Users to accept the policies.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
In order to build this the following steps can be implemented in your SFDC org:&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12.800000190734863px;&quot;&gt;1)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif; font-size: x-small;&quot;&gt;Develop&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12.800000190734863px;&quot;&gt;&amp;nbsp;a VF page which will display a popup to the end user: Something like this&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.salesforcegeneral.com/salesforce-modal-dialog-box/&quot; style=&quot;color: #1155cc; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot; target=&quot;_blank&quot;&gt;http://www.salesforcegeneral.&lt;wbr&gt;&lt;/wbr&gt;com/salesforce-modal-dialog-&lt;wbr&gt;&lt;/wbr&gt;box/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
2) You will need a corresponding apex class too to support the VF page.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
3) In order to check whether the User has accepted the policy or not; lets add a checkbox field on the User records... lets say Policy Accepted&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
4) In our controller class we can use UserInfo method to get the current user details and check whether this flag is checked or not.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
If the flag is checked then we&#39;ll redirect the user to the std Home page if its unchecked we&#39;ll display the popup to the User. The pouup will have Accept&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
Button, if user clicks this button the Policy accepted flag on the User record will be set to true.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
Final &amp;amp; the most important Trick :)&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
5) Create a VF custom TAB and overwrite this TAB with the VF page we created above.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
6) Add this TAB as a default landing TAB in all of your Apps and you are done!!&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
Let me know if you need more explanation....I hope this post will be helpful to many salesforce developers.&lt;br /&gt;
&lt;br /&gt;
- Rahul&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;color: #222222; font-family: arial, sans-serif; font-size: 12.800000190734863px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3187971688814557976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3187971688814557976'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2013/04/display-popup-when-user-login-to.html' title='Display a Popup when a User Login to Salesforce '/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-1406689835429639643</id><published>2013-02-08T19:23:00.005+05:30</published><updated>2013-02-08T19:23:57.241+05:30</updated><title type='text'>batch &amp; scheduler class testing</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: Arial,sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;Template for batch &amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;scheduler&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;class test method:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: arial; font-size: x-small;&quot;&gt;@isTest&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
private class &lt;span style=&quot;color: red;&quot;&gt;Test_Nameofurclass &lt;/span&gt;{&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; static testmethod void test_Nameofurclass (){&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DateTime currTime = DateTime.now();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Integer min = currTime.minute();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Integer hour = currTime.hour();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String sch;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; if(min &amp;lt;= 58)&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sch = &#39;0 &#39;+ (min + 1) + &#39; &#39; + hour + &#39; * * ? &#39;+ currTime.year();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sch = &#39;0 0 &#39;+ (hour + 1) + &#39; * * ? &#39;+ currTime.year();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Test.startTest();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;nameofschedularclass &lt;/span&gt;obj = new &lt;span style=&quot;color: red;&quot;&gt;nameofschedularclass &amp;nbsp;&lt;/span&gt;(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; String jobId = system.schedule(&#39;test&#39;, sch, obj); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CronTrigger ct = [SELECT id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger where id = :jobId]; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.assertEquals(sch, ct.CronExpression); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt; insert test records satisfying your query.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; database.executeBatch(new nameofurbatchclass()); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Test.stopTest();&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: arial; font-size: small;&quot;&gt;
}&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1406689835429639643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1406689835429639643'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2013/02/batch-scheduler-class-testing.html' title='batch &amp; scheduler class testing'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-8033413616253283353</id><published>2013-01-22T06:30:00.000+05:30</published><updated>2016-01-13T15:17:42.624+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Dynamic soql"/><category scheme="http://www.blogger.com/atom/ns#" term="query string builder"/><category scheme="http://www.blogger.com/atom/ns#" term="reusable"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="soql query string"/><category scheme="http://www.blogger.com/atom/ns#" term="utility class"/><title type='text'>Build a dynamic SOQL query string</title><content type='html'>This post is one of my promises to myself this year to build reusable components. I will try to post a few here. But whenever i write a code, Good design pattern is to make it as reusable as possible.&lt;br /&gt;
&lt;br /&gt;
This Apex method basically returns the dynamic soql query string when you feed the list of field api names, object name , conditions and limit .&lt;br /&gt;
[Edit] This works only for soql and does not do aggregate functions or polymorphic soql or sosl&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #eeeeee; color: #3d85c6;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/* Return dynamic soql query string&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Inputs list of field api names&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Object name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;list of Condition strings eg &#39;name=\&#39;test\&#39;&#39; , &#39;noofemployees=0&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;limit string eg &#39;50000&#39;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/ ----------------------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;usage&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;list&amp;lt;string&amp;gt; fieldname = new list&amp;lt;string&amp;gt;();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;fieldname.add(&#39;id&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;fieldname.add(&#39;name&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;list&amp;lt;string&amp;gt; conditions = new list&amp;lt;string&amp;gt;();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;conditions.add(&#39;name=\&#39;test\&#39;&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;eg1:dynamicSoqlString(fieldname,&#39;account&#39;,null,null)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;eg2:dynamicSoqlString(fieldname,&#39;account&#39;,null,&#39;2&#39;) &amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;eg3:dynamicSoqlString(fieldname,&#39;account&#39;,conditions,&#39;2&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/ &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static string dynamicSoqlString(List&amp;lt;string&amp;gt; apiNames,string objectname, list&amp;lt;string&amp;gt; conditions, string limitcount){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(objectname == null || apinames.size()==0){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string soqlstring =&#39;select &#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(integer counter =0;counter&amp;lt;apinames.size();counter++){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(counter!=0){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=&#39;,&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=apinames[counter];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring += &#39; from &#39;+ objectname;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(conditions != null &amp;amp;&amp;amp; !conditions.isempty()){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=&#39; where &#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(integer counter =0;counter&amp;lt;conditions.size();counter++){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(counter!=0){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=&#39; and &#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=conditions[counter];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(limitcount != null &amp;amp;&amp;amp; limitcount !=&#39;&#39;){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soqlstring+=&#39; limit &#39;+limitcount;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return soqlstring;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8033413616253283353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8033413616253283353'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2013/01/build-dynamic-soql-query-string.html' title='Build a dynamic SOQL query string'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-3232517585445202283</id><published>2012-10-20T04:14:00.002+05:30</published><updated>2012-10-20T04:14:25.613+05:30</updated><title type='text'>Prevent inserting duplicate records without coding!!!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi Friends,&lt;br /&gt;
&lt;br /&gt;
Today implemented this simple technique to prevent inserting &amp;nbsp;duplicate records ( records with same name)&lt;br /&gt;
&lt;br /&gt;
In one of my customer&#39;s org... there was a trigger written on a&amp;nbsp;campaign&amp;nbsp;object to prevent inserting&amp;nbsp;campaign&amp;nbsp;with same name...some developer wrote it few months back...&amp;nbsp;though&amp;nbsp;its a simple trigger but there was a logical bug in it.... however when our system admin informed me about this issue....i thought of the following solution:-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1- Create a new text field called &quot;&lt;b&gt;custom_name__c&quot;&lt;/b&gt;&lt;br /&gt;
2- Check &quot;&lt;b&gt;Unique&lt;/b&gt;(do not allow dups)&quot; checkbox while you are creating this field&lt;br /&gt;
3- Create &lt;b&gt;a workflow rule&lt;/b&gt; that updates this field with the standard &lt;b style=&quot;color: blue; text-decoration: underline;&quot;&gt;name &lt;/b&gt;field&amp;nbsp;of the object every time record is inserted or updated.....&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
simple right?????&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;so there is no need of that trigger anymore!!!!!!!!!!!1 :)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3232517585445202283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3232517585445202283'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/10/prevent-inserting-duplicate-records.html' title='Prevent inserting duplicate records without coding!!!'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-3208908942795356979</id><published>2012-05-24T07:03:00.000+05:30</published><updated>2012-05-24T07:03:15.419+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce Administration"/><title type='text'>dashboard auto refresh</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;b style=&quot;background-color: #f3f3f3;&quot;&gt;Auto refreshing dashboard:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;This is the feature many sfdc admins have been asking for.... Currently it is not possible to refresh the dashboard automatically when the sfdc user logs in to salesforce.com.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;use the following steps to refresh the dashboard(&lt;i&gt; automatically...after 5 seconds&lt;/i&gt;) when the user logs in to the salesforce OR the user clicks the home tab:-&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;1) Create a new custom Home Page Component(&lt;i&gt; type:HTML&lt;/i&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;2) Add the following code:-(&lt;i&gt;click the show html button before pasting the code&lt;/i&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt; function refreshDashboardTimeout() {var dashboardButton = document.getElementById(&quot;db_ref_btn&quot;);dashboardButton.click()}window.setTimeout(&quot;refreshDashboardTimeout();&quot;, 5*1000); &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;3) save and Add this component to your Home Page Layout.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f3f3f3; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;quiet simple....right?? &lt;b&gt;:)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3208908942795356979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3208908942795356979'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/05/dashboard-auto-refresh.html' title='dashboard auto refresh'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-2497110888455459854</id><published>2012-04-12T12:11:00.002+05:30</published><updated>2012-04-12T12:11:53.527+05:30</updated><title type='text'>Object sharing using email approval</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNoSpacing&quot;&gt;
This solution gives record access to a Salesforce user
via email approval. Here we are providing access to the
Accounts but this can be generalized for any standard or custom object.&lt;/div&gt;
&lt;div class=&quot;MsoNoSpacing&quot;&gt;
&amp;nbsp;In order to grant
access to the Account, an approval workflow request would be sent to the record
owner and upon approval Apex code would be executed to add the requested user
in the Account Team/Share objects.&lt;/div&gt;
&lt;div class=&quot;MsoNoSpacing&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjhB92KwZDBZN_uSee9wQJbq69WUV-AEekpDjshGY0vjGqLvBHZ4RQuOrqvtAP_xendINAig2MF1CVGQE-qbkP8qG4QyJXo3zwrosauCw_UdN_MItt0G4phqngNLZpd4sKX00-QicTx6s/s1600/Access_via_Approval.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjhB92KwZDBZN_uSee9wQJbq69WUV-AEekpDjshGY0vjGqLvBHZ4RQuOrqvtAP_xendINAig2MF1CVGQE-qbkP8qG4QyJXo3zwrosauCw_UdN_MItt0G4phqngNLZpd4sKX00-QicTx6s/s320/Access_via_Approval.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNoSpacing&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNoSpacing&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;text-align: left; text-indent: -0.25in;&quot;&gt;
&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;1 &amp;nbsp; &amp;nbsp;1.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Provide a Request for Access button against each
Account record on the Visual force page.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;a.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Display a pop-up to the end user: &lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;A Request Email has been sent for Access&lt;/i&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;b.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Create a Custom Object “&lt;/span&gt;&lt;b style=&quot;text-indent: -0.25in;&quot;&gt;&lt;i&gt;Account Sharing Request&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;”
and add an Entry in this object:&lt;/span&gt;&lt;br /&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;&lt;span style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;AccountID&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #1f497d; text-indent: -0.25in;&quot;&gt;, &lt;i&gt;OwnerID,
RequestedBy&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;(UserID),&lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;&lt;span style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;IsApproved&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;(False) for the
request.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Create an Approval process for Account Sharing
Request in the controller class and send an approval request email to the
record owner.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Enable email approval response so that the user
can approve or reject the request by&amp;nbsp;replying to the email:&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;&lt;span style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;approve,&amp;nbsp;approved,&amp;nbsp;yes,&amp;nbsp;reject,&amp;nbsp;rejected,&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;
or&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;&lt;span style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;no&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Update &lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;&lt;span style=&quot;color: #1f497d; mso-themecolor: text2;&quot;&gt;IsApproved&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt; field to True
upon approval: &lt;/span&gt;&lt;i style=&quot;text-indent: -0.25in;&quot;&gt;This is the Final approval
action.&lt;/i&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;font-size: 7pt; text-indent: -0.25in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Update trigger on the &lt;/span&gt;&lt;b style=&quot;text-indent: -0.25in;&quot;&gt;&lt;i&gt;Account_Sharing_Request__c &lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;object&lt;/span&gt;&lt;b style=&quot;text-indent: -0.25in;&quot;&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;would
add the requested User to the Account Team and Account share Object.&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2497110888455459854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2497110888455459854'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/04/object-sharing-using-email-approval.html' title='Object sharing using email approval'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDjhB92KwZDBZN_uSee9wQJbq69WUV-AEekpDjshGY0vjGqLvBHZ4RQuOrqvtAP_xendINAig2MF1CVGQE-qbkP8qG4QyJXo3zwrosauCw_UdN_MItt0G4phqngNLZpd4sKX00-QicTx6s/s72-c/Access_via_Approval.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-3415007089185884659</id><published>2012-04-07T00:07:00.000+05:30</published><updated>2012-04-07T00:07:06.645+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Query Access level"/><category scheme="http://www.blogger.com/atom/ns#" term="Query profile"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>Query User access Level in Apex</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With API 24 salesforce has given access to &lt;b&gt;UserRecordAccess &lt;/b&gt;table. This gives us more power in querying whether user have access and upto what level so that we can build our VF and apex accordingly.&lt;/div&gt;&lt;a href=&quot;http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm&quot; target=&quot;_blank&quot;&gt;http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I was writing a VF page in which i needed to have a table of sobject records with Edit and del links for each line item. I was using{!URL for} function which would take care of the link automatically. It would even prevent users who do not have permission to edit or delete the record to take it to the page &#39;you do not have sufficient permission&#39;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I thought it would be nice to know if the loggedin user or profile permission can be queried based on which i could display or hide these links instead of user clicking the link and finding out. Thats when i searched i figured it could be handled with Api 24.0&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;pre codeblock&quot; id=&quot;d1408361e521&quot; style=&quot;-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #fafafa; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin-left: 20px; margin-top: 20px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;&quot;&gt;SELECT RecordId, HasReadAccess, HasTransferAccess, MaxAccessLevel
     FROM UserRecordAccess
     WHERE UserId = [single ID]
     AND RecordId = [single ID]      //or Record IN [list of IDs]&lt;/pre&gt;&lt;br /&gt;
so i needed to get info on hasEditAccess and hasDeleteAccess for loggedin user and based on which i displayed or hid the link. It worked like charm.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3415007089185884659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3415007089185884659'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html' title='Query User access Level in Apex'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-1732001784531252667</id><published>2012-03-28T23:54:00.000+05:30</published><updated>2012-11-10T01:46:49.809+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Apex Class objects"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="sorting List"/><title type='text'>Sort an Apex class Object List</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
[&lt;span style=&quot;color: red;&quot;&gt;Edit : Now there is an interface natively provided by salesforce to sort the class object lists]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I recently needed to sort an apex class object List which was retrieved through a webservice callout as it could not be sorted at the service end.&lt;br /&gt;
&lt;br /&gt;
This is the apex method which was used to build it&lt;br /&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee; color: #6fa8dc;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;public void testsort(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map&amp;lt;string,List&amp;lt;accClass&amp;gt;&amp;gt; stracc = new map&amp;lt;string,list&amp;lt;accClass&amp;gt;&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(accClass a:accClassobj ){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(stracc.containsKey(a.name))&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee; color: #6fa8dc; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stracc.get(a.name).add(a);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stracc.put(a.name,new accclass[]{a});&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accclassobj= new list&amp;lt;accclass&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list&amp;lt;string&amp;gt; nameList = new list&amp;lt;string&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameList.addAll(stracc.keyset());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameList.sort();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(string s:nameList){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accclassobj.addAll(stracc.get(s));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Steps involved in sorting&lt;br /&gt;
&lt;br /&gt;
1. build a map with object parameter as the key by which we gonna sort and List&amp;lt;object&amp;gt; as the value.&lt;br /&gt;
2. sort the keyset&lt;br /&gt;
3. arrange the values based on the sorted keyset, so that object gets sorted by that parameter&lt;br /&gt;
&lt;br /&gt;
It is a map of parameter and list of object but not parameter and just object to handle the records which will have same parameters. This sorting handles null values automatically. This sorting can never be dynamic and you will need to create more methods based on the object parameter by which sorting is needed. &lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1732001784531252667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1732001784531252667'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/03/sort-apex-class-object-list.html' title='Sort an Apex class Object List'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-175712940609180494</id><published>2012-03-23T22:24:00.004+05:30</published><updated>2012-03-23T23:21:03.262+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="alphabetical sorting"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="sorting List"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><title type='text'>Filter list alphabetically</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxfNlpR9LY5rGPFcMqUWBS6ocVhZ2vMxvCW0ZlnWaXqTfTRg-yv-S3yTwmO0MoL9lR1iYI4EXWaNztY2CP2Q0x3cFTfWi6vyV6C2_9Lfk90Bpq432Osoq0JRnYh1feCKv5il28rByD6Gs/s1600/sort+alphabetically.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxfNlpR9LY5rGPFcMqUWBS6ocVhZ2vMxvCW0ZlnWaXqTfTRg-yv-S3yTwmO0MoL9lR1iYI4EXWaNztY2CP2Q0x3cFTfWi6vyV6C2_9Lfk90Bpq432Osoq0JRnYh1feCKv5il28rByD6Gs/s1600/sort+alphabetically.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;There was a requirement where i needed to build a list which can be filtered based on the starting alphabet. And also the List needs to remember the selections made as we move through other pages. &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #eeeeee; color: #3d85c6;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;apex:page controller=&quot;Pagin_alpha&quot;&amp;gt;&lt;br /&gt;
&amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .loadingIcon {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-image: url(/img/loading.gif);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 16px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height: 16px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function checkAll(cb,cbid)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var inputElem = document.getElementsByTagName(&quot;input&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i=0; i&amp;lt;inputElem.length; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(inputElem[i].id.indexOf(cbid)!=-1){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputElem[i].checked = cb.checked;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;apex:form id=&quot;form&quot;&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div style=&quot;align:right;&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:repeat value=&quot;{!alphabet}&quot; var=&quot;a&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:commandLink value=&quot;{!a}&quot; action=&quot;{!refreshList2}&quot; rerender=&quot;form&quot; style=&quot;{!if($CurrentPage.parameters.alpha=a,&#39;font-weight:bold&#39;,&#39;&#39;)}&quot; status=&quot;stat&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:param name=&quot;alpha&quot; value=&quot;{!a}&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:commandLink&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;|&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/apex:repeat&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;apex:pageBlock id=&quot;block&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:pageBlockButtons &amp;gt;&lt;br /&gt;
&amp;lt;apex:commandButton rendered=&quot;{!standardsetcon.hasprevious}&quot; value=&quot;Previous&quot; action=&quot;{!standardsetcon.previous}&quot; rerender=&quot;block,block2&quot; status=&quot;stat&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;apex:commandButton rendered=&quot;{!standardsetcon.hasnext}&quot; value=&quot;Next&quot; action=&quot;{!standardsetcon.next}&quot; rerender=&quot;block,block2&quot; status=&quot;stat&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlockButtons&amp;gt;&lt;br /&gt;
&amp;lt;apex:actionStatus id=&quot;stat&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:facet name=&quot;start&quot;&amp;gt; &lt;br /&gt;
&amp;lt;apex:outputPanel layout=&quot;block&quot; styleClass=&quot;message infoM4&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:panelGrid columns=&quot;2&quot; styleClass=&quot;messageTable&quot; columnClasses=&quot;messageCell&quot; style=&quot;padding:0px;margin:0px;&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:panelGroup &amp;gt;&lt;br /&gt;
&amp;lt;img class=&quot;loadingIcon&quot; src=&quot;/s.gif&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:panelGroup&amp;gt;&lt;br /&gt;
&amp;lt;apex:panelGroup &amp;gt;&lt;br /&gt;
&amp;lt;div class=&quot;messageText&quot;&amp;gt;Please wait...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/apex:panelGroup&amp;gt;&lt;br /&gt;
&amp;lt;/apex:panelGrid&amp;gt;&lt;br /&gt;
&amp;lt;/apex:outputPanel&amp;gt;&lt;br /&gt;
&amp;lt;/apex:facet&amp;gt;&lt;br /&gt;
&amp;lt;apex:facet name=&quot;stop&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:pageBlockTable value=&quot;{!CurrentList}&quot; var=&quot;c&quot; id=&quot;table&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:column &amp;gt;&lt;br /&gt;
&amp;lt;apex:facet name=&quot;header&quot;&amp;gt;&amp;lt;apex:inputcheckbox onclick=&quot;checkAll(this,&#39;check&#39;)&quot; value=&quot;{!fals}&quot; /&amp;gt;&amp;lt;/apex:facet&amp;gt;&lt;br /&gt;
&amp;lt;apex:inputcheckbox value=&quot;{!c.checked}&quot; id=&quot;check&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/apex:inputcheckbox&amp;gt;&lt;br /&gt;
&amp;lt;/apex:column&amp;gt;&lt;br /&gt;
&amp;lt;apex:column value=&quot;{!c.ocontact.name}&quot; headerValue=&quot;Name&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlockTable&amp;gt;&lt;br /&gt;
&amp;lt;/apex:facet&amp;gt;&lt;br /&gt;
&amp;lt;/apex:actionStatus&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlock&amp;gt;&lt;br /&gt;
&amp;lt;apex:pageBlock title=&quot;Selected Contacts&quot; id=&quot;block2&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:commandButton value=&quot;Display Selected&quot; rerender=&quot;block2&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;apex:pageBlockTable value=&quot;{!DisplaySelectedList}&quot; var=&quot;c&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:column value=&quot;{!c.name}&quot; headerValue=&quot;Name&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;apex:column value=&quot;{!c.phone}&quot; headerValue=&quot;Phone&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlockTable&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlock&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/apex:form&amp;gt;&amp;nbsp; &lt;br /&gt;
&amp;lt;/apex:page&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
In the VF page i am displaying the List &#39;&lt;i&gt;CurrentLsit&lt;/i&gt;&#39; which would hold the contact list with checkbox which is paginated and &#39;&lt;i&gt;DisplaySelectedList&lt;/i&gt;&#39; which would remember the selected contact. Array &lt;i&gt;Alphabet &lt;/i&gt;is used in repeat to build the link of alphabets at the top of page&lt;br /&gt;
&lt;br /&gt;
Controller method&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #eeeeee; color: #3d85c6;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee; color: #3d85c6;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: #eeeeee; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;public with sharing class Pagin_alpha {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private List&amp;lt;contactSet&amp;gt; contactSetList{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string contactListQuery;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private set&amp;lt;contact&amp;gt; selectedContact;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;string&amp;gt; alphabet{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean fals{get;set;}&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Pagin_alpha(){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fals=false;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alphabet=new string[]{&#39;All&#39;,&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39; };&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactSetList = new List&amp;lt;contactSet&amp;gt;();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedContact = new set&amp;lt;contact&amp;gt;();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactListQuery= &#39;select id,name,phone from contact limit 1000&#39;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private void updateSelectedContact(){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(contactSet cs:contactSetList ){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(cs.checked)&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedcontact.add(cs.ocontact);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else{&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(selectedcontact.contains(cs.ocontact))&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedcontact.remove(cs.ocontact);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ApexPages.StandardSetController standardSetCon {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(standardSetCon == null) {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; standardSetCon = new ApexPages.StandardSetController(Database.getQueryLocator(contactListQuery));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // sets the number of records in each page set&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; standardSetCon .setPageSize(20);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return standardSetCon ;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;contactSet&amp;gt; getCurrentList() {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; updateSelectedContact(); &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactSetList = new List&amp;lt;contactSet&amp;gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (contact category : (List&amp;lt;contact&amp;gt;)standardSetCon.getRecords()){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(selectedContact.contains(category))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactSetList.add(new contactSet(category,&#39;true&#39;));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactSetList.add(new contactSet(category));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fals=false;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return contactSetList;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public PageReference refreshList2() {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; standardSetCon = null;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string s;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(apexpages.currentpage().getparameters().get(&#39;alpha&#39;) == &#39;All&#39;)&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s=&#39;%&#39;;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s= apexpages.currentpage().getparameters().get(&#39;alpha&#39;)+&#39;%&#39;;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactListQuery= &#39;select id,name,phone from contact where name like&#39; +&#39;\&#39;&#39;+s +&#39;\&#39;&#39;+ &#39;limit 5000&#39;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;contact&amp;gt; getDisplaySelectedList(){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; updateSelectedContact();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;contact&amp;gt; displaycon = new list&amp;lt;contact&amp;gt;();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; displaycon.addall(selectedcontact);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return displaycon;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class contactSet { &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Boolean checked{ get; set; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contact ocontact { get; set;} &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contactSet(){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ocontact = new contact();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checked = false;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contactSet(contact c){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ocontact = c;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checked = false;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contactSet(contact c,string s){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ocontact = c;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checked = true;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;i&gt;getCurrentList &lt;/i&gt;populates the currentList in the page. &lt;i&gt;refreshList2 &lt;/i&gt;will refresh the list when the link on top of the page to filter the contact is clicked.&lt;br /&gt;
&lt;br /&gt;
This concept can be extended to multiple fields in the List .&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/175712940609180494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/175712940609180494'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/03/sort-alphabetically.html' title='Filter list alphabetically'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxfNlpR9LY5rGPFcMqUWBS6ocVhZ2vMxvCW0ZlnWaXqTfTRg-yv-S3yTwmO0MoL9lR1iYI4EXWaNztY2CP2Q0x3cFTfWi6vyV6C2_9Lfk90Bpq432Osoq0JRnYh1feCKv5il28rByD6Gs/s72-c/sort+alphabetically.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-1697757593161653486</id><published>2012-03-10T12:43:00.001+05:30</published><updated>2012-03-10T12:44:36.821+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Account Contact Hierarchy View"/><category scheme="http://www.blogger.com/atom/ns#" term="Hierarchy"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><title type='text'>Hierarchy in VisualForce</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtSxjJcsZmcPKKzlAp2XXu_fCkfy6O6OtL6dSiY-UO-5VTbFuWZ2sYlDEn9SmdDfiutu-crb897n_cf7LJwYqGZZDmwWGel8wPV7-0rknHwdlDuEOoc43aS2meJqgFIr_aip3-_1w9XiE/s1600/accountContactHierarchy.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtSxjJcsZmcPKKzlAp2XXu_fCkfy6O6OtL6dSiY-UO-5VTbFuWZ2sYlDEn9SmdDfiutu-crb897n_cf7LJwYqGZZDmwWGel8wPV7-0rknHwdlDuEOoc43aS2meJqgFIr_aip3-_1w9XiE/s640/accountContactHierarchy.bmp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;This is an example of how to build a hierarchy Lists in VF page with select checkboxes. It will have a checkbox at parent level with which you can select all the child automatically. It has a neat link with which you can show or hide children under a parent row. It uses jquery libraries for achieving this. It has a list of accounts with each accounts displaying all its contacts in a hierarchy view.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Apex Class&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;public class accconhierarchy {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private list&amp;lt;account&amp;gt; acc;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;accountWrap&amp;gt; accountList { get; set; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public accconhierarchy (){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;contactWrap&amp;gt; cw;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accountList = new List&amp;lt;accountWrap&amp;gt;();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; acc = [select id,name,industry,billingcountry,createdbyid,(select id,name,email,phone from contacts) from account limit 20];&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(account a:acc){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cw = new list&amp;lt;contactWrap&amp;gt;();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For(contact co : a.contacts){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cw.add(new contactWrap(co));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accountList.add(new accountWrap(a,false,cw));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class accountWrap{&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public account oAccount{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isSelected{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;contactWrap&amp;gt; contactset{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public accountWrap(account a,boolean b, List&amp;lt;contactWrap&amp;gt; c){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oAccount=a;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isSelected=b;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactset =c;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class contactWrap{&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contact oContact{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean isSelected{get;set;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public contactWrap(contact a){&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oContact=a;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isSelected=false;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Visualforce Page&lt;/u&gt; &lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;lt;apex:page controller=&quot;accconhierarchy&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;lt;apex:form &amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageBlock &amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .showContacts {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background: transparent url(&#39;/img/alohaSkin/twisty_sprite.png&#39;) 0 0 no-repeat;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .hideContacts {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background: transparent url(&#39;/img/alohaSkin/twisty_sprite.png&#39;) 0 -11px no-repeat;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputPanel layout=&quot;none&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rendered=&quot;{!accountList.size!=0}&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table id=&quot;tableAccount&quot; class=&quot;list&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class=&quot;headerRow&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th class=&quot;actionColumn&quot;&amp;gt;Action&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Account Name&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Industry&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Billing Country&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Createdby&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/thead&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:repeat id=&quot;repeatAccount&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=&quot;{!accountList}&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var=&quot;item&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:variable var=&quot;acc&quot; value=&quot;{!item.oAccount}&quot; /&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr id=&quot;{!$Component.repeatAccount}:account&quot; class=&quot;dataRow&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;actionColumn&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:inputCheckbox id=&quot;selectAccountRow&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=&quot;{!item.IsSelected}&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onclick=&quot;javascript:toggleSelectAll(this, &#39;{!$Component.repeatAccount}&#39;);&quot;/&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputLink id=&quot;linkShowHide&quot; value=&quot;javascript:toggleContactRow(&#39;{!$Component.repeatAccount}&#39;)&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;img id=&quot;{!$Component.repeatAccount}:Img&quot; src=&quot;/s.gif&quot; class=&quot;showContacts&quot; border=&quot;0&quot; height=&quot;11px&quot; width=&quot;11px&quot; style=&quot;padding-right: 4px;&quot;/&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value=&quot;{!acc.Name}&quot; /&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputLink&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!acc.Industry}&quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!acc.billingcountry}&quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!acc.CreatedById}&quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr id=&quot;{!$Component.repeatAccount}:Contact&quot; class=&quot;dataRow&quot; style=&quot;display:none;&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td colspan=&quot;100&quot; style=&quot;padding:10px; padding-left: 45px;&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h3&amp;gt;Contacts&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputPanel layout=&quot;none&quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table id=&quot;tableAccountContacts&quot; class=&quot;list&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class=&quot;headerRow&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th class=&quot;actionColumn&quot;&amp;gt;Action&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Email&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Phone&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/thead&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:repeat id=&quot;repeatAccountContacts&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=&quot;{!item.contactSet}&quot;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var=&quot;subitem&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:variable value=&quot;{!subitem.oContact}&quot; var=&quot;con&quot; /&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class=&quot;dataRow&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;actionColumn&quot;&amp;gt;&amp;lt;apex:inputCheckbox id=&quot;selectContactRow&quot; styleclass=&quot;ContactCheckbox&quot; value=&quot;{!subitem.IsSelected}&quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!con.Name}&quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!con.email}&quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&quot;dataCell&quot;&amp;gt;&amp;lt;apex:outputField value=&quot;{!con.phone}&quot; /&amp;gt;&amp;lt;/td&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:repeat&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputPanel&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:repeat&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputPanel&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;lt;script src=&quot;//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jQuery.noConflict();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function toggleContactRow(rowId) {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var AccountImg = jQuery(document.getElementById(rowId + &quot;:Img&quot;));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ContactsRow = jQuery(document.getElementById(rowId + &quot;:Contact&quot;));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (AccountImg.hasClass(&quot;hideContacts&quot;)) {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AccountImg.attr(&quot;class&quot;, &quot;showContacts&quot;);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContactsRow.hide();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AccountImg.attr(&quot;class&quot;, &quot;hideContacts&quot;);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContactsRow.show();&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (e) { alert(e); }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function toggleSelectAll(elCheckbox, rowId) {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var SelectAll = jQuery(elCheckbox);&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ContactsRow = jQuery(document.getElementById(rowId + &quot;:Contact&quot;));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContactsRow.find(&quot;.ContactCheckbox&quot;).each(function() {&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jQuery(this).prop(&quot;checked&quot;, SelectAll.is(&quot;:checked&quot;));&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (e) { alert(e); }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt; &lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageBlock&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;lt;/apex:form&amp;gt;&lt;/span&gt;&lt;br style=&quot;color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #3d85c6;&quot;&gt;&amp;lt;/apex:page&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
JS function toggleContactRow is used to show or hide contacts and toggleSelectAll is for header level checkbox at the parent Level.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1697757593161653486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/1697757593161653486'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/03/hierarchy-in-visualforce.html' title='Hierarchy in VisualForce'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtSxjJcsZmcPKKzlAp2XXu_fCkfy6O6OtL6dSiY-UO-5VTbFuWZ2sYlDEn9SmdDfiutu-crb897n_cf7LJwYqGZZDmwWGel8wPV7-0rknHwdlDuEOoc43aS2meJqgFIr_aip3-_1w9XiE/s72-c/accountContactHierarchy.bmp" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-2973666340670747309</id><published>2012-02-22T01:12:00.001+05:30</published><updated>2012-06-30T15:11:13.099+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="24"/><category scheme="http://www.blogger.com/atom/ns#" term="Api"/><category scheme="http://www.blogger.com/atom/ns#" term="Null Pointer exception"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Test method"/><title type='text'>SFDC API 24.0 test failure issue</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Yesterday I was experiencing a weird issue.&lt;br /&gt;
&lt;br /&gt;
For a new requirement we did development in our DEV environment…We wrote new test methods and we thought the work is done :)...&amp;nbsp; &lt;br /&gt;
However, there were &lt;b style=&quot;orphans: 2; outline-width: 0px; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;background: none repeat scroll 0% 0% white; border: 1pt none windowtext; color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 6pt; padding: 0in;&quot;&gt;Null Pointer Exceptions&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;background: none repeat scroll 0% 0% white; border: 1pt none windowtext; color: #666666; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 6pt; padding: 0in;&quot;&gt; &lt;/span&gt;&lt;/b&gt;when we ran the test methods.&lt;br /&gt;
And it was pointing to the &lt;b&gt;custom settings&lt;/b&gt;….we doubled checked and confirmed that the custom setting had the default values. Also, it was accessible to anyone (&lt;i&gt;public&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
After some time I realized that the test method API version was 24.0.. I changed it to 23.0 and there were no errors&lt;span style=&quot;font-family: Wingdings;&quot;&gt; :)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Edit - SFDC has introduced test classes not to access data directly with API 24. Even though it is a good move , I would like to access certain info by default like custom settings, and Pricebook. But there is always an option to use @istest(seealldata=true) to access live data.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;http://boards.developerforce.com/t5/General-Development/Custom-setting-not-accessible-from-test-class/m-p/399669#M66636&quot;&gt;http://boards.developerforce.com/t5/General-Development/Custom-setting-not-accessible-from-test-class/m-p/399669#M66636&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2973666340670747309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/2973666340670747309'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/02/sfdc-api-240-test-failure-issue.html' title='SFDC API 24.0 test failure issue'/><author><name> Rahul ....aka Alonso </name><uri>http://www.blogger.com/profile/11347835744016097700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfU7A3UXdarnQM3LXhR3QothXeVesEuwnYzecMCo6vGNcGcloGEH9Rs5jQW8cT8vFS1CDvHljrAPa37N7IJcsmpoB95VBmh2RZO6FAUhnSEBqS3I7qgvqDbx6S3nLFumo/s220/338999_359308990754188_1888464580_o.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7622865417075210207</id><published>2012-02-04T22:49:00.001+05:30</published><updated>2012-02-05T00:35:32.107+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Account address as a single block"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><title type='text'>Account address to be displayed as single block</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Small code snippet to display Account address as a single block just like in standard page&lt;br /&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: white; color: #3d85c6; text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;apex:outputText label=&quot;Shipping Address&quot; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; escape=&quot;false&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=&quot;{!IF(NOT(ISNULL(Account.ShippingStreet)),&#39;{0}&amp;lt;br/&amp;gt;{1}, {2} {3}&amp;lt;br/&amp;gt;{4}&#39;, &#39;&amp;amp;nbsp;&#39;)}&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param value=&quot;{!Account.ShippingStreet}&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param value=&quot;{!Account.ShippingCity}&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param value=&quot;{!Account.ShippingState}&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param value=&quot;{!Account.ShippingPostalCode}&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param value=&quot;{!Account.ShippingCountry}&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputText&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7622865417075210207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7622865417075210207'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/02/account-address-to-be-displayed-as.html' title='Account address to be displayed as single block'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-851458862314858318</id><published>2012-01-25T13:13:00.001+05:30</published><updated>2012-01-25T13:15:51.496+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Sobject type of record"/><title type='text'>Identifying SobjectType Dyanamically</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;i&gt;getKeyPrefix&lt;/i&gt; of &lt;i&gt;Schema.getGlobalDescribe &lt;/i&gt;can be used to identify dynamically the SobjectType in Apex.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;String prefix = recordId.substring(0,3);&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;String objectType;&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;Map&amp;lt;String, Schema.SObjectType&amp;gt; gd = Schema.getGlobalDescribe();&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;for(Schema.SObjectType s : gd.values()){&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(prefix == s.getDescribe().getKeyPrefix()){&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;objectType = s.getDescribe().Name;&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot; /&gt;&lt;span style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
recordId consists the Id of the sobject Record for whose SobjectType needs to be identified. Above piece of code does it well.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/851458862314858318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/851458862314858318'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/01/identifying-sobjecttype-dyanamically.html' title='Identifying SobjectType Dyanamically'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7892457799187356257</id><published>2012-01-11T22:36:00.002+05:30</published><updated>2012-01-11T23:00:40.217+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="custom"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Standardsetcontroller"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><title type='text'>Build your Own Standard set controller</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Standard set controller can be used for many objects . Recently i found that it cannot be used with activity objects(Open activity and activity history). Also there are many other Restrictions placed on these objects. You cannot query on these objects directly. It has to be a nested SOQL within an object using a relationship name.&lt;br /&gt;
&lt;br /&gt;
So coming back to my requirement i needed to roll up related list for all the activities in the account hierarchy for the topmost parent. For other related list i achieved it through standardset controller. But for activity alone i created a class which would behave like a standard set controller.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #6fa8dc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;public class SetActivityClass {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public integer pagenumber{get;set;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public integer totalpages{get;set;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public integer pagesize{get;set;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public list&amp;lt;sobject&amp;gt; sobjectList{get;set;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;public SetActivityClass(list&amp;lt;sobject&amp;gt; sobjectList){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagenumber =1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagesize = 60;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.sobjectList=sobjectList;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; totalpages= Integer.valueof(math.ceil((double)sobjectList.size()/(double)pagesize ));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean gethasprevious(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (pagenumber != 1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean gethasnext(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (pagenumber != totalpages);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public pagereference Previous(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(gethasprevious())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagenumber--;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public pagereference next(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(gethasnext())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagenumber++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public list&amp;lt;sobject&amp;gt; getRecords(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list&amp;lt;sobject&amp;gt; Sactivity = new list&amp;lt;sobject&amp;gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(integer counter2=(pagenumber-1)*pagesize;counter2&amp;lt;(math.min(pagenumber*pagesize,sobjectList.size()));counter2++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sactivity.add(sobjectList.get(counter2));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Sactivity;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;oActivityHistory= new SetActivityClass(ActivityHistoryList);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oOpenActivity= new SetActivityClass(OpenActivityList);&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;public List&amp;lt;OpenActivity&amp;gt; getGoToListOpenActivities() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return oOpenActivity.getRecords();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;public List&amp;lt;ActivityHistory&amp;gt; getGoToListActivityHistories() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return oActivityHistory.getRecords();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Just like the standard set controller, this SetActivityClass has methods to return next set or previous set of records. These can be added to command links as they are pagereference method. Also Hasprevious and Hasnext can be called from the page to check if the previous or next set of records exist.Pagenumber denotes the current page number. Pagesize determines no of records to be displayed in the page. I would recommend a size of 40 -60 in a page for better readability by Users(I have hardcoded it as 60). Total pages is calculated based on this pagesize.&lt;br /&gt;
&lt;br /&gt;
Also note that getRecord function accepts and returns generic sobject. I used the same class for both activityhistory and openactivity.This Class can be slightly tweaked to handle list of objects of your custom class&amp;nbsp; as well.&lt;br /&gt;
&lt;br /&gt;
Here is how i would display it in the page&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #6fa8dc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: white; color: #6fa8dc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;apex:panelGrid columns=&quot;2&quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: white; color: #6fa8dc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;lt;apex:commandLink action=&quot;{!oOpenActivity.previous}&quot; rendered={!oOpenActivity.hasPrevious}&quot;&amp;gt; Previous &amp;lt;/apex:commandLink&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;apex:commandLink action=&quot;{!oOpenActivity.next}&quot; rendered=&quot;{!oOpenActivity.hasNext}&quot; &amp;gt;Next &amp;lt;/apex:commandLink&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;lt;/apex:panelGrid&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: white; color: #6fa8dc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: white; color: #6fa8dc; font-size: x-small;&quot;&gt;&amp;lt;apex:pageBlockTable id=&quot;tableMasterAccountOpenActivities&quot; var=&quot;openact&quot;&amp;nbsp; value=&quot;{!GoToListOpenActivities}&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #6fa8dc; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;lt;apex:column .....&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #6fa8dc; font-size: x-small;&quot;&gt;.......&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #6fa8dc; font-size: x-small;&quot;&gt;&amp;lt;/apex:pageblocktable&amp;gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
And whenever the next and previous is click make sure atleast the pageblock tabele is rerendered if not the whole page based on your logic. I&amp;nbsp; have shown the VF for openactivity. similarly u can use it for activity history. Also you can use the same logic in building your own custom class wrapper object standard set controller this way.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7892457799187356257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7892457799187356257'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/01/build-your-own-standard-set-controller.html' title='Build your Own Standard set controller'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-3968899167905927381</id><published>2012-01-07T22:11:00.002+05:30</published><updated>2012-01-07T22:49:20.722+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript ghost text SFDC"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce ghost text"/><title type='text'>Javascript for Ghost Text in Salesforce</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;There will be a need to add ghost text which will be like a help text or format in which the value needs to be there for a particular input field in visual force. I would suggest use visual force help text for it. But if ghost text is required use the following script.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDiYsQRtsulhSUo3z6QJKBjYrjVKtbZotIeM6nVdM7eBrl7a1UN9m66MgeXV11cpFVuXoEBDAdNWYlQLuwapU39UkH1nV5KylZ5VyzuJ9A1ZgLiM58Bx1qefGuss6DgCRJ0xiTmiJqsZU/s1600/ghostText.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDiYsQRtsulhSUo3z6QJKBjYrjVKtbZotIeM6nVdM7eBrl7a1UN9m66MgeXV11cpFVuXoEBDAdNWYlQLuwapU39UkH1nV5KylZ5VyzuJ9A1ZgLiM58Bx1qefGuss6DgCRJ0xiTmiJqsZU/s1600/ghostText.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Trick here use the script after all the component is loaded preferably before &amp;lt;/apex:page&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #f3f3f3; color: #3d85c6;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var txtContent&amp;nbsp; = document.getElementById(&quot;{!$Component.theform.thepb.thepbs.mp}&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var defaultText = &#39;+91 - *** *** ****&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContent.value = defaultText;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContent.style.color = &#39;#CCC&#39;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContent.onfocus = function() { &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.value == defaultText) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.value = &#39;&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.style.color = &#39;#000&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContent.onblur = function() {&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.value == &#39;&#39;) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.value = defaultText;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.style.color = &#39;#CCC&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Also Make sure to handle the save if the field is filled with ghost text(Default text here). &lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3968899167905927381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/3968899167905927381'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2012/01/javascript-for-ghost-text-in-salesforce.html' title='Javascript for Ghost Text in Salesforce'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDiYsQRtsulhSUo3z6QJKBjYrjVKtbZotIeM6nVdM7eBrl7a1UN9m66MgeXV11cpFVuXoEBDAdNWYlQLuwapU39UkH1nV5KylZ5VyzuJ9A1ZgLiM58Bx1qefGuss6DgCRJ0xiTmiJqsZU/s72-c/ghostText.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-4984092930336520700</id><published>2011-12-09T21:02:00.002+05:30</published><updated>2011-12-21T19:26:24.674+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce Administration"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce best practices"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce tools"/><title type='text'>Cool links for salesforce.com tools and best practices</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;I was going through the &lt;a href=&quot;http://blog.jeffdouglas.com/2010/10/21/force-com-programming-best-practices/&quot; target=&quot;_blank&quot;&gt;Best practices for force.com&lt;/a&gt; and &lt;a href=&quot;http://www.embracingthecloud.com/2010/07/08/ASimpleTriggerTemplateForSalesforce.aspx&quot; target=&quot;_blank&quot;&gt;Trigger template&lt;/a&gt;. It will be really helpful if we could follow it in our code.&lt;br /&gt;
&lt;br /&gt;
You can also find lots of &lt;a href=&quot;http://ezrakenigsberg.com/&quot; target=&quot;_blank&quot;&gt;interesting&amp;nbsp;tools&lt;/a&gt;&amp;nbsp;for salesforce.com here.&lt;br /&gt;
&lt;br /&gt;
Found this awesome IDE and data loader on the cloud !!! -&amp;nbsp;&lt;a href=&quot;https://workbench.developerforce.com/login.php&quot; target=&quot;_blank&quot;&gt;Workbench&lt;/a&gt;&amp;nbsp;. I would have loved to have metadata export on this. If anyone knows a tool not an app through which we can export metadata (not like an XML) more like a spreadsheet which can be used for documentation and data mapping please drop a comment here.&lt;br /&gt;
&lt;br /&gt;
Finally Vote for all the &lt;a href=&quot;https://sites.google.com/site/ezrakenigsberg/salesforce-ideas&quot; target=&quot;_blank&quot;&gt;ideas&lt;/a&gt;&amp;nbsp;in this link. These are all the features worth having in SFDC.&lt;br /&gt;
&lt;br /&gt;
There are many a times where we need to mimic a standard page through VF. Creating them to mimic it is a hard thing. But it can be done with a single click , whole code gets generated. You can check that out &lt;a href=&quot;http://forceguru.blogspot.com/2011/06/visualforce-code-generator.html#comment-form&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Pretty cool stuff aint it.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/4984092930336520700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/4984092930336520700'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/12/cool-links-for-salesforcecom-tools-and.html' title='Cool links for salesforce.com tools and best practices'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7654893430763333916</id><published>2011-10-18T15:17:00.006+05:30</published><updated>2012-02-12T00:31:24.825+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="select all. checkbox"/><category scheme="http://www.blogger.com/atom/ns#" term="visualforce"/><title type='text'>Javascript to select all checkboxes in visualforce page</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;I needed to develop a custom visualForce page which would hold a page block table which would contain a checkbox and details of a custom object based on which user can select and click on buttons to perform some operations.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVYyvqVHYWc3t-_-iHD_HpIHtNts2GfVnFUYNV2CT1UkcCoo1lBHYensy8FPIhIw4INVumbAPWRpl7kjEIRopYgHruBODPkYGmxgwnZMfQll7P85LNZq_XLmrRFyCZG62tuO2sva170E/s1600/VFpage.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;127&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVYyvqVHYWc3t-_-iHD_HpIHtNts2GfVnFUYNV2CT1UkcCoo1lBHYensy8FPIhIw4INVumbAPWRpl7kjEIRopYgHruBODPkYGmxgwnZMfQll7P85LNZq_XLmrRFyCZG62tuO2sva170E/s640/VFpage.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I wrapped the custom object record and check box in a wrapper class. I needed a simple functionality when the header checkbox is selected or deselected accordingly all the checkbox will get selected or deselected accordingly. So i looked into community and first result community gave is &lt;a href=&quot;http://boards.developerforce.com/t5/Visualforce-Development/Select-all-checkbox/td-p/332879&quot;&gt;this(controller way)&lt;/a&gt;. It involved calls to back end and as a result functionality is little slow.&lt;br /&gt;
&lt;br /&gt;
So I went for a Javascript solution which would provide a faster,elegant and much simpler way.Here is the VF code which was used in the page above.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;background-color: white; color: #45818e; font-size: x-small;&quot;&gt;&amp;lt;apex:pageBlockTable value=&quot;{!wrapreportsobj }&quot; var=&quot;w&quot; id=&quot;Selected_PBS&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:column &amp;gt;&amp;lt;apex:facet name=&quot;header&quot;&amp;gt;&lt;br /&gt;
&amp;lt;apex:inputCheckbox onclick=&quot;checkAll(this,&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #45818e; font-size: x-small;&quot;&gt;&#39;checkedone&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #45818e; font-size: x-small;&quot;&gt;&#39;)&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/apex:facet&amp;gt;&lt;br /&gt;
&amp;lt;apex:inputCheckbox value=&quot;{!w.selected}&quot; id=&quot;checkedone&quot;/&amp;gt;&amp;lt;/apex:column&amp;gt;&lt;br /&gt;
&amp;lt;apex:column &amp;gt;&amp;lt;apex:facet name=&quot;header&quot;&amp;gt;Id&amp;lt;/apex:facet&amp;gt;&amp;lt;apex:outputfield value=&quot;{!w.rep.id}&quot;/&amp;gt;&amp;lt;/apex:column&amp;gt;&lt;br /&gt;
&amp;lt;apex:column &amp;gt;&amp;lt;apex:facet name=&quot;header&quot;&amp;gt;Name&amp;lt;/apex:facet&amp;gt;&amp;lt;apex:outputfield value=&quot;{!w.rep.name}&quot;/&amp;gt;&amp;lt;/apex:column&amp;gt;&lt;br /&gt;
&amp;lt;/apex:pageBlockTable&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Note that I have set the id of the checkbox as checkedone and while clicking on header checkbox it calls a javascript function&amp;nbsp; checkAll. Giving an id will segregate all the checkboxes in the table. Here is the javascript which would handle the selecting and deselecting all of the checkboxes which has id checkedone in it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #45818e; font-size: x-small;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function checkAll(cb,cbid)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var inputElem = document.getElementsByTagName(&quot;input&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i=0; i&amp;lt;inputElem.length; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(inputElem[i].id.indexOf(cbid)!=-1){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputElem[i].checked = cb.checked;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7654893430763333916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7654893430763333916'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/10/javascript-to-select-all-checkboxes-in.html' title='Javascript to select all checkboxes in visualforce page'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVYyvqVHYWc3t-_-iHD_HpIHtNts2GfVnFUYNV2CT1UkcCoo1lBHYensy8FPIhIw4INVumbAPWRpl7kjEIRopYgHruBODPkYGmxgwnZMfQll7P85LNZq_XLmrRFyCZG62tuO2sva170E/s72-c/VFpage.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-5457673376670366848</id><published>2011-09-16T10:30:00.024+05:30</published><updated>2011-09-16T10:30:02.462+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Loading"/><category scheme="http://www.blogger.com/atom/ns#" term="Opportunity Line item"/><category scheme="http://www.blogger.com/atom/ns#" term="Opportunity Products"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>Migrating Opportunity line item</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;This post is a continuation of my earlier &lt;a href=&quot;http://salesforceblogger.blogspot.com/2011/08/loading-salesforce-products.html&quot;&gt;post&lt;/a&gt; on Product, Pricebook and Pricebook entry.Opportunity Product(line item) is a junction object between opportunity and pricebookentry table. &lt;br /&gt;
&lt;br /&gt;
List of fields in opportunity products&lt;br /&gt;
&lt;ul&gt;&lt;li style=&quot;color: #cccccc;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ID&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;OPPORTUNITYID&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;PRICEBOOKENTRYID&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CURRENCYISOCODE&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;QUANTITY&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #0b5394;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;TOTALPRICE&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #0b5394;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UNITPRICE&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;LISTPRICE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;SERVICEDATE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DESCRIPTION &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;Fields indicated in red are mandatory fields and fields which are in grey are read only. Unit price field specifies the price at which the product was sold. List price is the price of the product in the pricebook. use either one of the totalprice or unitprice field while loading.The other field will be automatically calculated based on quantity while loading. Refer to my previous post for inserting a new pricebook entry/ Exporting existing pricebookentry. Prepare a csv file with all these data.Also optional fields like service date and description can be filled for CSV. Use data loader to insert data. Click here for &lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0Aq_3wbdUh9e3dF9nZU1aLWM0TW5DWkZ3QlJvUUhiWXc&amp;amp;hl=en_US#gid=0&quot;&gt;Sample CSV&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Notes on loading&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;pricebook entry should be in the same pricebook that is assigned to  the opportunity.&amp;nbsp; The pricebook name can be found in pricebook2id field  in opportunity&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;If the opportunity does not have an associated pricebook2, the &lt;span&gt;API&lt;/span&gt; automatically sets the pricebook on the opportunity if the line item corresponds to a Pricebookentry in an active Pricebook2. Changing the pricebook association would delete existing opportunity line items.&lt;/li&gt;
&lt;li&gt;Creating an OpportunityLineItem increments the OpportunityAmount value by the TotalPrice of the OpportunityLineItem. Additionally, inserting an OpportunityLineItem increments the ExpectedRevenue on the opportunity by the TotalPrice times the opportunity Probability.&lt;/li&gt;
&lt;li&gt;The OpportunityAmount becomes a read-only field when the opportunity has line items.&lt;/li&gt;
&lt;li&gt;If multi-Currency is enable for your organization, Choose a price book that contains products with the same currency as the opportunity. pricebook entry currency code should match opportunity currency code.You cannot update the CurrencyIsoCode field on the opportunity if line items exist. &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/5457673376670366848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/5457673376670366848'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/09/migrating-opportunity-line-item.html' title='Migrating Opportunity line item'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7808663852781628043</id><published>2011-09-08T22:17:00.000+05:30</published><updated>2011-09-08T22:35:43.405+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="escaltion rules"/><category scheme="http://www.blogger.com/atom/ns#" term="Queue"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Workflow"/><title type='text'>Escalation Queues and workflows.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;I recently had a need to escalate a case which has status value new and in a queue for 2 hours, So that if nobody picks up the case it would be escalated to manager.&lt;br /&gt;
&lt;br /&gt;
It took me about a day to figure out how to write the entry criteria to check whether the case is in a queue or assigned to a owner. salesforce Ids has a certain pattern across all org for certain objects. so by that i figured out that &lt;i&gt;users&lt;/i&gt; always started with &lt;i&gt;005 &lt;/i&gt;and group and queue always started with &lt;i&gt;00G.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Also i had to use &#39;&lt;i&gt;Formula evaluates to true&#39;&amp;nbsp; &lt;/i&gt;instead of easy &#39;&lt;i&gt;Criterias are met&#39; &lt;/i&gt;as owner ids are not available in this. Here is the formula i used.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;AND(&amp;nbsp;  ISPICKVAL( Status ,&quot;New&quot;) ,   BEGINS(OwnerId, &quot;00G&quot;) ,not( IsClosed ) )&lt;i&gt;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now coming to other stuffs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Realized that Case Escalation cannot trigger a workflow. Case escalation would cause an &#39;&lt;i&gt;isEscalated&#39; &lt;/i&gt;flag to be checked. I assumed that it can be used to trigger a workflow. i used the same entry criteria in workflow as in the escalation rule and used time dependent action instead. Thankfully my use case needed field updates only for the first time the case is escalated.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Couple of more things changes to formulae field would not trigger the workflow and so also field update from a workflow. This link might be useful &lt;a href=&quot;https://na8.salesforce.com/help/doc/en/workflow_rules_considerations.htm&quot;&gt;Workflow considerations&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;If you could find if salesforce has documented somewhere which all will trigger a workflow, Let me know&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7808663852781628043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7808663852781628043'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/09/escalation-queues-and-workflows.html' title='Escalation Queues and workflows.'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-8196434359993191506</id><published>2011-08-23T15:47:00.001+05:30</published><updated>2011-09-15T22:11:13.268+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Converted Leads"/><category scheme="http://www.blogger.com/atom/ns#" term="Data Loading"/><category scheme="http://www.blogger.com/atom/ns#" term="insert"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>Loading Converted Leads</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When you are migrating data from one system to another there will be a need to load the leads as converted as they would have been already converted in the source system.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; First step is to raise the case with salesforce.com to open up the audit fields for your organisation. The fields &lt;i&gt;CONVERTEDACCOUNTID, CONVERTEDCONTACTID, CONVERTEDOPPORTUNITYID &lt;/i&gt;and &lt;i&gt;CONVERTEDDATE&lt;/i&gt; will not be visible while inserting or updating by default.&lt;br /&gt;
&lt;br /&gt;
Once the salesforce allows you to load these system fields you can start your process.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Steps for Loading&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Firstly, Load Account, Contact and Opportunity which needs to be associated with the converted lead.&lt;/li&gt;
&lt;li&gt;Next prepare a csv files with information of lead and get the &lt;i&gt;id&lt;/i&gt;s from previous step and load it into the appropriate converted fields of file as mentioned above.&lt;/li&gt;
&lt;li&gt;The field &lt;i&gt;Isconverted&lt;/i&gt; should be set to true &lt;/li&gt;
&lt;li&gt;Insert, Update or Upsert the leads as necessary.&lt;/li&gt;
&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;/ul&gt;&lt;b&gt;Things to consider while loading &lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Converted Account is mandatory . Converted contact and opportunity is not mandatory. converted contact and opportunity need not belong to converted account. &lt;/li&gt;
&lt;li&gt;You cannot see the information of converted leads. If you go to the lead detail page through its id you will see information on Converted date, Converted account, Contact and opportunity whichever was mapped. Only way to extract the information is through API&lt;/li&gt;
&lt;li&gt;Lead conversion mapping will not be respected.For eg Lead description is mapped to contact description and when u load the converted lead with description it will not be carried over to the converted contact.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Converted date&lt;/i&gt; if not mapped will give value &lt;i&gt;This lead was converted on {0}&lt;/i&gt; on lead detail page. If you need to enter converted date make sure you also enter created date . Otherwise it would error out as created date would be defaulted to now which will be at future date when compared to converted date.&lt;/li&gt;
&lt;li&gt;Lead triggers and validation rules will be fired.&lt;/li&gt;
&lt;li&gt;Converted Leads cannot be updated but can be deleted&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://spreadsheets.google.com/spreadsheet/ccc?key=0Aq_3wbdUh9e3dGgwSVg1bVNFSjhRdjNXQWtrYmNwb3c&amp;amp;hl=en_US&quot;&gt;click here&lt;/a&gt; to have a look at the sample csv file.&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;/ul&gt;If you have any questions please post it in comments section &lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8196434359993191506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/8196434359993191506'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/08/loading-converted-leads.html' title='Loading Converted Leads'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7445016107000583011</id><published>2011-08-18T21:05:00.001+05:30</published><updated>2012-01-07T21:51:45.090+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rendering PDF and adding as attachment"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><category scheme="http://www.blogger.com/atom/ns#" term="Sending Emails"/><title type='text'>Rendering VF page as pdf and sending pdf as an attachment from a list view</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Thought i would share something which i needed to work on. I thank &lt;a href=&quot;http://blog.jeffdouglas.com/&quot;&gt;Jeff Douglas&lt;/a&gt; for his awesome post which helped me in this assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Requirement&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; There is a custom visualforce page which is rendered as pdf. There is a button on contact detail page which when clicked would call this vf page. These things were present. In addition to viewing this pdf from contact detail there was also a necessity to email these PDFs that too in bulk from list views.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;list button was created with source as VF page.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br style=&quot;background-color: orange;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #45818e; font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;apex:page standardController=&quot;contact&quot; recordSetVar=&quot;Props&quot; extensions=&quot;emailcontact&quot; action=&quot;{!sendingemail}&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;background-color: white;&quot; /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;/apex:page&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Controller is where all the code is&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background-color: white; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;public&amp;nbsp; class emailcontact {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ApexPages.StandardSetController propcontroller{get;set;}&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public list&amp;lt;contact&amp;gt; props{get;set;}&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public emailcontract(ApexPages.StandardSetController controller) {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; propcontroller =(ApexPages.StandardSetController)controller;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public pagereference sendingemail(){&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; props = propcontroller.getSelected();&lt;span style=&quot;color: #e06666;&quot;&gt;// Contains the list of record which is selected from the list&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PageReference pdf = Page.VFpagetoberenderedaspdf;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(contact pr : props)&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pdf.getParameters().put(&#39;id&#39;,pr.Id);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attachment attach = new attachment();&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blob body;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; body = pdf.getContentAsPDF();&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (VisualforceException e) {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; body = Blob.valueOf(&#39;Missing Text&#39;);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #cc0000;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #e06666;&quot;&gt;// ********************* for attachment to the contactrecord ******************************&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach.Body = body;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach.Name = &#39;Contact&#39; +system.today+&#39;.pdf&#39;;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach.IsPrivate = false;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach.ParentId = pr.Id;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; att.add(attach);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(exception e)&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp; // ************************ for email creation************************************&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Messaging.EmailFileAttachment attach2 = new Messaging.EmailFileAttachment();&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach2.setContentType(&#39;application/pdf&#39;);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach2.setFileName(&#39;Contact.pdf&#39;);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach2.setInline(false);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attach2.Body = body;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] toAddresses = new String[] {pr.Email};&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail.setToAddresses(toAddresses);&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail.setSubject(&#39;Offer for&#39; + pr.name);&lt;span style=&quot;color: #e06666;&quot;&gt;// alternatively use templates as well&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail.setFileAttachments(new Messaging.EmailFileAttachment[] { attach2 });&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail.setHtmlBody(&#39;Please find attached a cash offer for your listing at &#39;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; em_sent.add(mail);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(att!= null)&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert att;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(em_sent != null)&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Messaging.sendEmail(em_sent);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagereference pr&amp;nbsp; = new pagereference(&#39;/a0e/o&#39;);&lt;span style=&quot;color: #e06666;&quot;&gt;//will redirect to contact tab&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return pr;&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: #45818e;&quot; /&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Also you can add a piece of code to send an email to yourself to indicate the success or failure of the action or display it in the page&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Limitations&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Major limitation i faced is no of the records the code can process (Governor limits on callouts). It was limited to 10 after which time out error happened. I tried using batch as well as future calls. Both returned me empty PDFs. Waiting for Salesforce to remove these limitations in future.&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7445016107000583011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7445016107000583011'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/08/rendering-vf-page-as-pdf-and-sending.html' title='Rendering VF page as pdf and sending pdf as an attachment from a list view'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-4255829063556166614</id><published>2011-08-18T18:12:00.000+05:30</published><updated>2011-08-18T19:35:45.146+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Child record as primary through config"/><category scheme="http://www.blogger.com/atom/ns#" term="rollup summary"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>Setting a child record to play a unique primary role to parent through config</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;There are many use cases where there is need to set one of the child record as primary and when another child record is updated as primary it should throw up an error saying that primary record already exists (similar to contact roles function). Many of&amp;nbsp; the developers would suggest an apex trigger solution But this can be achieved through configuration alone.&lt;br /&gt;
&lt;br /&gt;
Its a simple 2 step process.&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Create a Roll up summary field on the parent object. It would roll up the count of the child records which have the &lt;i&gt;primary&lt;/i&gt; checkbox set to true.&lt;/li&gt;
&lt;li&gt;Create a validation rule on this field if the number becomes more than 1 validation error will be thrown.&lt;/li&gt;
&lt;/ol&gt;U are good to go now. When the child record is updated to primary rollup would happen. But when there is a primary record rollup will try to become 2 triggering the validation error thus preventing it from saving the record. But if the relationship between child and parent is lookup or u want user to be pointed to the primary record in the error message listen to developers :)&amp;nbsp; &lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/4255829063556166614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/4255829063556166614'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/08/setting-child-record-to-play-unique.html' title='Setting a child record to play a unique primary role to parent through config'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-4560119253723710592.post-7998541702593549355</id><published>2011-08-18T11:35:00.003+05:30</published><updated>2011-09-16T01:52:52.571+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Loading"/><category scheme="http://www.blogger.com/atom/ns#" term="Loading pricebook entry"/><category scheme="http://www.blogger.com/atom/ns#" term="product pricebook design"/><category scheme="http://www.blogger.com/atom/ns#" term="Salesforce"/><title type='text'>Loading products , pricebooks and pricebook entry</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;There is always a need to load Products into salesforce. Its a 3 step process to load products and associate them with pricebook . There is a standard pricebook which salesforce provides by default which can be deactivated. There is also an option to create custom pricebook as many as you want in accordance with the business. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8504Xv7YB9fAt3CAAZs4pZ5sP4CcVyi5YbTM_6kH-1XqBTjab-mtzHkHxh-n_9E0WJXEpRJauImEq-Tw8WI8RosVyy6NWE6PvyThIBRQ3LzhAv7SLUwxGIqa0J7Qk_7_-dbr9LZfgv8k/s1600/relationship.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5642092937205529954&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8504Xv7YB9fAt3CAAZs4pZ5sP4CcVyi5YbTM_6kH-1XqBTjab-mtzHkHxh-n_9E0WJXEpRJauImEq-Tw8WI8RosVyy6NWE6PvyThIBRQ3LzhAv7SLUwxGIqa0J7Qk_7_-dbr9LZfgv8k/s400/relationship.JPG&quot; style=&quot;cursor: pointer; display: block; height: 321px; margin: 0px auto 10px; text-align: center; width: 501px;&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;&lt;span style=&quot;font-family: lucida grande;&quot;&gt;Fields in red are required and fields in blue are read only&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYwc-f0-J0Rx1X7paPTsmB7C5yU2Pb8goCCV0_OJE_zsO5_8TVGO_HK8yFX4rbMEME-AgzxYUh3gkt2fYHtmSj0r7mfYP4RxsXTGYWyHDqm1Uw0H4cCc3Z8BZUxPTRcPjh4yQvrg9-Fl0/s1600/relationship.JPG&quot;&gt; &lt;br /&gt;
&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Pricebookentry is the junction object between product2 and pricebook2 object( For strange reasons they have suffix 2 for standard object) . It has lookup for product2 and pricebook2 field through product2id and pricebook2id field. Name and productcode is copied over from product2 based on product2id field. &lt;br /&gt;
&lt;br /&gt;
Essentially for loading Products you need to load product2 table first. Create a CSV file.  &lt;span style=&quot;font-style: italic;&quot;&gt;Name  &lt;/span&gt;is the only required field. Optionally have columns for other fields indicated in the pic.set &lt;span style=&quot;font-style: italic;&quot;&gt;Isactive &lt;/span&gt;to true&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;. &lt;/span&gt;&lt;/span&gt;use dataloader to insert data. Get the id of the products from success file which got created. &lt;br /&gt;
&lt;br /&gt;
Pricebook2 will also have only &lt;span style=&quot;font-style: italic;&quot;&gt;Name &lt;/span&gt;as required field. &lt;span style=&quot;font-style: italic;&quot;&gt;Isstandard &lt;/span&gt;indicates whether its a standard or custom and its readonly. Also &lt;span style=&quot;font-style: italic;&quot;&gt;Isactive &lt;/span&gt;should be set to true if you are planning to use it. Get the &lt;span style=&quot;font-style: italic;&quot;&gt;Pricebook2id&lt;/span&gt; from success file. Alternatively export pricebook2 table to get id of pricebook already created. &lt;br /&gt;
&lt;br /&gt;
Final step is to create pricebookentry. Pricebook entry needs to be created for each Pricebook. &lt;br /&gt;
populate ids of product2 in &lt;span style=&quot;font-style: italic;&quot;&gt;product2id&lt;/span&gt; column and pricebook2 in &lt;span style=&quot;font-style: italic;&quot;&gt;pricebook2id &lt;/span&gt;column. &lt;span style=&quot;font-style: italic;&quot;&gt;Unitprice &lt;/span&gt;is a required field where the price for this pricebook is set. Pricebook entry for a custom pricebook cannot be made if that product is not there in the standard pricebook.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Unitprice &lt;/span&gt;can be made read only if &lt;span style=&quot;font-style: italic;&quot;&gt;usestandardprice &lt;/span&gt;field is set to true. This can be made only for custom pricebook and when the product is added to standard pricebook. So the &lt;span style=&quot;font-style: italic;&quot;&gt;unitprice &lt;/span&gt;set in standard pricebook will be carried over to the custom pricebook. Make &lt;span style=&quot;font-style: italic;&quot;&gt;Isactive &lt;/span&gt;true whenever u are planning to use it.  Use dataloader to insert the pricebookentry. you have to repeat the above 2 steps for each custom pricebook.If you have multiple currencies enabled there should be as many pricebook entry records for a single product in a pricebook for each currency.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7998541702593549355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4560119253723710592/posts/default/7998541702593549355'/><link rel='alternate' type='text/html' href='http://salesforceblogger.blogspot.com/2011/08/loading-salesforce-products.html' title='Loading products , pricebooks and pricebook entry'/><author><name>partha</name><uri>http://www.blogger.com/profile/17314975989920051097</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-pAP64gECxE0/VpYn0CnWGGI/AAAAAAAAFAA/m3izVASgwXI/s220/11063796_10153163113644323_4383614763182633099_n%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8504Xv7YB9fAt3CAAZs4pZ5sP4CcVyi5YbTM_6kH-1XqBTjab-mtzHkHxh-n_9E0WJXEpRJauImEq-Tw8WI8RosVyy6NWE6PvyThIBRQ3LzhAv7SLUwxGIqa0J7Qk_7_-dbr9LZfgv8k/s72-c/relationship.JPG" height="72" width="72"/></entry></feed>