Managing duplicate records is always a pain in any CRM. At times, when Duplicate Accounts are created in Salesforce, Salesforce has given an inbuilt feature to merge duplicate accounts. You will be able to find a link "Merge Accounts" on the standard account tab under Tools section.
People who have used this feature must have observed that User need to come back to Accounts Tab, then click the Merge Accounts link and manually enter the account name. But, all this can be done in one click. Here is the trick.
Create a custom button in Accounts
Setup > Customize > Accounts > Buttons, Links, and Actions > New Button
Enter following code in the body and Save.
Once you have clicked the Account Merge button, It automatically puts the account name in the search box and displays the searched result for a Quick Action. :=)
Salesforce has introduced dashboards in Partner Communities. However, Partner users do not have the ability to refresh any dashboard they have access to with the exception of the top row of any dashboard located
on their Home page. The List of “Report
and Dashboard Limitations for Partner Community Users” can be found here.
For a company who
has a lot of Partner users, need the ability for these users to refresh a
dynamic dashboard. Many customers implemented a solution to create individual
dashboards for each partner, but dashboard doesn’t refresh automatically. A dashboard refresh is very critical as it is embarrassing to put a dashboard in
front of partner users with data that is up to a month old. This defeats the
purpose of them using dashboards and the Communities.
Bob Buzzard found a great solution to refresh a dashboard
in Partner Communities. Here is the link to his solution “Automatic
Dashboard Refresh”. Many thanks to Bob…
I have further worked on Bob’s clue and developed a simple solution
similar to what Salesforce has offered to its standard users. I have used
Simple XMLHttpRequest inside a Visualforce page to refresh a dashboard. This doesn’t require any controller, hence no need to write any test
class. J
Step 1: Create a new Visualforce page with following code.
Step 2: Adding this Visualforce page in a Dashboard
Go to Partner Dashboard. Click Edit. Add a new Visualforce component
and this new Visualforce page. Set desired height and type relevant message.
And you are Done…!
List view in Salesforce can help users accomplish activities in a faster way. You can do a Mass Edit / Update, Mass Transfer records from a list view. As of now, There is no out of the box functionality available to send an email to a list of contacts from Salesforce. (Mass mail is a completely different process. You need to create a separate list view and requires an email template)
Below mentioned code is a simple example in which Javascript is used to copy the email addresses of contacts selected from a list view and puts it into the "TO" box on a new email message.
This functionality can be handy when a user wants to send a simple mail to his contacts. You can optionally tag the activity to any object (Account, Opportunity, Case etc.) For implementation: Part I Go to Setup > Customize > Contacts > Buttons, Links & Actions > New Button or Link Choose Display Type as List Button & click Display Checkboxes (for Multi-Record Selection) Behavior > "Execute JavaScript" Content Source > "OnClick JavaScript" Paste this code & Click Save {!REQUIRESCRIPT('/soap/ajax/29.0/connection.js')} {!REQUIRESCRIPT('/soap/ajax/29.0/apex.js')} try{ var arrRecordId = {!GETRECORDIDS( $ObjectType.Contact)}; var ret = window.location.pathname+window.location.search; var pcEmail = arrRecordId[0]; if(arrRecordId.length > 0){ var strRecIdList = ''; for(var i=0; i < arrRecordId.length; i++){ strRecIdList += "'" + arrRecordId[i] + "',"; } strRecIdList = strRecIdList.substring(0, strRecIdList.length-1); var contacts = sforce.connection.query("SELECT Email FROM Contact WHERE Id IN(" + strRecIdList + ")"); if(contacts.done == 'true' && parseInt(contacts.size)>0){ var cEmail = ''; for(var j=0; j < contacts.records.length; j++){ if(contacts.records[j].Email != null && contacts.records[j].Email != ''){ cEmail += contacts.records[j].Email + "; "; } } cEmail = (cEmail.substring(0, cEmail.length-1)).toString(); URL = '/_ui/core/email/author/EmailAuthor?p2_lkid='+pcEmail+'&p24='+cEmail+'&retURL='+ret; window.location.href= URL; } } } catch(e){ alert('An Error has Occurred. \r\nError: ' + e); } Part 2 Go to Setup > Customize > Contacts > Search Layouts Click Edit next to Contacts List View Add the new custom button and Save. Now Click on Contacts Tab and then a list view to an send email.
Salesforce user interface is simple and intuitive. It is easy to create new records by clicking new button. But imagine if a sales executive has to create an account first, then enter a contact, opportunity, activity details. It will be a time consuming task. A single screen to enter this information will save some time, increases adoption and productivity.
Here is one example to enter Account, Contact, Opportunity and Activity details from one screen. This is just an example hence I have not written any test class. This page can be improved to display as a wizard.
Controller
public class multirecords {
public Account A {get; set;}
Public Contact C {get; set;}
Public Task T {get; set;}
Public Opportunity O {get; set;}
publicmultirecords()
{
A = new account();
C = new contact();
T = new task();
O = new opportunity();
}
public PageReference Save()
{
insert A;
C.Accountid = A.id;
insert C;
T.whatid = A.id;
T.whoid = C.id;
insert T;
O.Accountid = A.id;
insert O;
return new PageReference('/'+A.id);
}
public PageReference Cancel()
{
return new PageReference('/home/home.jsp');
}
}
Salesforce custom button with the javascript is a very exciting feature to implement. We received a requirement from our customer for converting Leads. User should convert Lead record only if the status is changed to "Qualified". Typically when a lead is converted, Salesforce automatically changes the lead status to Qualified. But there are some custom validation rules created for lead record which doesn't allow to complete the conversion process and display error message as validation rules on lead page are not fulfilled.
I created a custom "Convert" button with the help of Javascript and replaced with standard button on lead page layout. The javascript validates whether lead status is qualified or not and doesn't allow user to proceed if it is not qualified.
Code:
var status = "{!Lead.Status}";
if (status == "Qualified")
{
window.location = 'https://ap1.salesforce.com/lead/leadconvert.jsp?retURL=%2F{!Lead.Id}&id={!Lead.Id}';
}
else
{
alert('Please change the Lead Status to Qualified then click on convert');
}
Roll-up summary is a very useful function in Salesforce. We can calculate Sum, Max, Min and Average of numbers and currencies of child records in a Master-detail relationship. But there are few limitations.
Roll-up summaries can be calculated only in Master-Detail relationships. You cannot calculate roll-up summary in Look-Up Relationships.
We can have only 10 Roll-up summary fields.
There are few standard objects on which we need Roll-Up summary but it's not available. E.g. Roll-up Asset information in Account. Need to know how many Assets are installed for a particular account.
You can't use date functions in Roll-up summary calculations.
To overcome these problems we can write a trigger with SOQL select Aggregate functions.
Scenario: I have two objects here. Milestone and effort. In efforts I'm capturing number of hours spent for a particular task. I wish to have a sum of all these efforts related Milestone record.
Here is the sample code:
1: trigger Sum_Effort_Hours_in_Milestone on Effort__c (after delete, after insert, after update, after undelete) {
2: if (Trigger.isDelete)
3: {
4: for (effort__c E : Trigger.old)
5: {
6: Milestone__c M = [select name, Milestone_Hours_2__c from Milestone__c where id =:E.Milestone__c];
7: List groupedResults = [select sum(Hours__c)aver from Effort__c where Milestone__c =: M.id];
8: Decimal decimalRevenue = 0;
9: if(groupedResults.size() > 0)
10: {
11: String str = '' + groupedResults[0].get('aver') ;
12: decimalRevenue = Decimal.ValueOf(str) ;
13: System.debug('decimalRevenue ::::: ' + decimalRevenue) ;
14: }
15: M.Milestone_Hours_2__c = decimalRevenue;
16: update M;
17: }
18: }
19: else
20: {
21: for (effort__c E : Trigger.new)
22: {
23: Milestone__c M = [select name, Milestone_Hours_2__c from Milestone__c where id =:E.Milestone__c];
24: List groupedResults = [select sum(Hours__c)aver from Effort__c where Milestone__c =: M.id];
25: Decimal decimalRevenue = 0;
26: if(groupedResults.size() > 0)
27: {
28: String str = '' + groupedResults[0].get('aver') ;
29: decimalRevenue = Decimal.ValueOf(str) ;
30: System.debug('decimalRevenue ::::: ' + decimalRevenue) ;
31: }
32: M.Milestone_Hours_2__c = decimalRevenue;
33: update M;
34: }
35: }
36: }
Hope this will help you in writing some complex triggers. Cheers...!!
Salesforce.com doesn't give any pop up alert windows. An alert window will be useful to get attention of user. A combination of visualforce page and java scripts can be used to give such alerts. Eg. We want to alert Salesforce user to create an order when opportunity is "Closed Won".
Here are the steps.
Create a visualforce page on opportunity with following code.
Go to opportunity and edit opportunity page layout. Drag this new visualforce page on page layout. Edit the visualforce page properties and set Height as 0 pixel. (We don't need to show this page to users.) Save the page layout.
This code can be enhanced with multiple conditions. Alert of any existing field also can be given.
It's a Well made movie. Subodh Bhave was pleasant as Balgandharv and his performance is excellent. Other cast doesn't have a big role to play. Scenes where Balgandharv is performing after his daughter passes away, teaching to Gauhar Bai and his play performance when he was ill were really good.
Nitin desai's movie thus art direction is very good. I don't know the true story of Balgandharv, but somewhere it feels like stereotype drama. Will definitely remember Natrang & Harishchandrachi factory.
Surprisingly Vibhavari Deshpande is the same female lead acted in these three movies. It is upsetting to know that all great people suffer a lot in their lives and doesn't deserve the way their life ends. These are passionate people about their talent, work and don't bother about practicality of life. May be this is the reason they refuse to leave their work live stable life after 40.
Watch it atleast once to know Balgandharv and to feel golden era of Marathi Sangeet Natak.
Today is 5th November; Diwali Festival is being celebrated today. People celebrate Diwali by lighting lamps, bursting crackers, shops performing "Lakshmi Puja" in some part India. Diwali is known as festival of lights.
Nowadays people are talking about Diwali festival and environment pollution. Many people are saying not to burst crackers as it is creating air and noise pollution. But increase in number of personal vehicles is a major concern of pollution rather than bursting crackers. Nobody burst crackers every day, We burst crackers on special occasion and Diwali festival comes once is a year. Comparing both, pollution caused by bursting crackers is negligible.
We should worry more about vehicle pollution. The demand for personal vehicles is increasing day by day. Environmental activists should raise a voice against this. It doesn’t mean don’t use personal vehicles at all, but limit its usage. Prefer public transport or go by walking if possible. Shut down the vehicle engine on traffic signals. Car or bikepooling is also a good option.
Due to Diwali occasion, Belgaum streets wore a vibrant look on Thursday, a day ahead of the festival of lights. People were seen thronging shopping centres, malls and small street bazaars for their last minute Diwali shopping. Sadly, shops of bicycle sellers were empty as there are no buyers these days.
I agree pollution caused by crackers is also bad for environment. Govt should ban the production of noisy crackers, should encourage manufacturers to produce environmental friendly crackers. We need to take some firm steps to prevent any kind of pollution and protect environment.
Recently Google Chrome's Developer Release started providing web apps feature. Web app is generally a tab pinned to browser. It is just a browser frame(window) which has no address bar and extensions bar. Google is already providing Gmail, Calendar and Documents tab by default. They are stored in "chrome-bin\{chrome version folder}\resources" folder. Typically chrome is installed in roaming folder in users directory of windows.
We need to load these web apps manually from manage extensions settings. To load web apps click on developer mode (+) mark and then click the load unpacked extension button. A browser window will open where you have to locate the web apps folder. After locating the web app folder click OK and it's done. Now you can find the web app icon on new tab home page.
Here are few of web apps created by me for facebook, twitter and meebo. You can download these files from the link below. Open the zip file and copy web app folders to resources directory and load it into chrome. Follow the procedure I mentioned above.
Internet Explorer is installed with an extra security on Windows Server. It keeps giving pop-up if a user is accessing a site which is not added to Trusted Site List. It also disables many features and add-ons. the following image where to Enable or Disable Internet Explorer Enhanced Security Configuration in Windows Server 2003.
Indian Premier League is a big hit, not only in India but in all cricket playing nations. There is high attraction towards IPL because it has big money, Bollywood stars, 40 overs game, foreign players participation, cheer girls, music.. everything. It is also a good platform for young cricketers to show their talent.
But since the start of IPL, many players are getting injured and this could be a big concern for Indian selectors and even coach Gary Kirsten. Ashish Nehra is already injured. Dhoni, Gambhir, Pathan, Uthappa were injured last week. Not only Indian players but foreign players like smith, mascarenhas also. ICC T20 world cup is just few weeks away and for the sake of IPL we may miss our key players for a very important international event.
Year 2008 champions team India crashed out of T20 world cup 2009 because of key players were missing due to injuries. Having Sehwag, Zaheer Khan in the side would have certainly made a big difference.
Though there is more entertainment in IPL, BCCI and Modi should not neglect internation tournaments. IPL can be scheduled after such tournaments also. Otherwise BCCI should limit the number of matches played by players who are playing in national team.
If these things are not handled properly then it's difficult for Team India to win T20 world cup for the second time in West Indies.
India received independence on 15th August, 1947 and was separated from Pakistan. Since 1947 there has been a rivalry between two nations on the Kashmir issue. Pakistan has already acquired major part of Kashmir called as Pak Occupied Kashmir (POK). There were 3 major wars between India & Pakistan after independence. 1965, 1971 and 1999. Apart from this India has always taken soft stand on Kashmir issue & first initiated peace talks with Pakistan. But India received nothing from these talks apart from terrorist attacks. I found a good article in Sakal Marathi Daily (Dated: 07/02/2010) which summarizes how many times India has initiated peace talks and in return what we received from Pakistan.
If Pakistan is not interested in Peace Talk then why India is taking initiative every time. Recently Times of India has started a new peace talk "Aman ki Asha" with Pakistan. Will it going to succeed looking at the history of peace talks between Ind and Pak?
Zee Marathi's Sa Re Ga Ma Pa is a very successful reality show in the history of Marathi Television Industry. No doubt every music lover (Marathi/Non Marathi) is fan of this show. Yesterday (31st January 2010) there was a mega final event of Sa Re Ga Ma Pa's season 7 and after a very tough competition URMILA DHANAGAR was declared as winner whereas Rahul Saxena and Abhilasha Chellam finished as runners up.
After following the seasons of Sa Re Ga Ma Pa, I have noticed that few of the results are partial.
Sa Re Ga Ma Pa season 1: Abhijeet Kosambi won the mega final, but Mangesh Borgaokar was better singer
Sa Re Ga Ma Pa season 3: Vaishali Bhaisane-Made won the mega final but Saayali Panase was better singer.
Sa Re Ga Ma Pa season 5: Little champs winner was Kartiki Gayakwad but Aarya Abekar and Prathamesh Laghate were much better singers. Aarya showed a great variety of songs. I would rank Aarya then Prathamesh before Kartiki.
Sa Re Ga Ma Pa season 7: Urmila Dhangar won this season but Abhilasha Chellam was far better singer with lots of variety. Even guest judges voted Rahul as best singer and Abhilasha was highest amongst votes.
The number of votes received, marks given by judges are not disclosed in public. Following are few links showing similar reactions on Sa Re Ga Ma Pa...
The film portrays the struggle of a creative mind that dares to think different. The story is adapted & based on the novel by Dr. Anand Yadav named as "Natarang ". Natrang is set to release in India 1 January 2010.
Download Link for Natrang themepack for Windows 7: Link
A few days back on Monday 21st December 2009, Sant Meera School in Angol (Belgaum) received a call at 2.25pm about a bomb being kept in the school and immediately the school was made empty and the dog squad searched for any bombs or explosives. But nothing of that sort was recovered. My niece is studying in 1st standard in the same school.
Though the school was emptied immediately and students were sent back to their homes, the school authorities didn't inform it to the parents. My niece goes to school daily by auto rickshaw. Her school time ends at 4.00 pm. Since this incident happened at 2.25pm her regular auto driver was not present in school at the moment, hence she started walking home alone. While coming back, once she forgot the way to home and after roaming for some time she found a familiar landmark and fortunately came home safely..
Surprisingly, school authorities let only 1st standard students to go where as many other students were in school and they went home at regular time. This is an example of poor administration in Sant Meera School. We are fortunate that my niece came home on her own. If something bad would have happened, who is going to take responsibility of the incidence. At least school autorities should have informed the parents to come and pickup their children.
I owned Bajaj Discover 125 which I purchased in Year 2004. When we purchase a new vehicle, we have to get it insured. I insured my vehicle from Bajaj Allianz General Insurance Company by paying approximately Rs. 1000/- as first year premium.
The premium payment process worked well for next two years and every year I paid some reduced premium amount (Insurance premium amount should decrease every year because the value of the asset reduces every year because of depreciation). But in 2007, Bajaj Allianz person told me that we have to pay a premium of Rs. 1000/- because company has increased the prices. I blindly agreed and paid. In 2008, again the same issue, and I paid 1000/-.
This year I went to pay the premium and surprisingly they asked me to pay 2000/-. As I knew the premium amount should decrease every year but in this case it was reverse in this case. Above all Bajaj Allianz has discontinued all the notification (like premium due date, premium amount etc.) being sent to customers. This means customer has to check when the insurance period is going to end, and before the period ends he has to go to Bajaj Allianz office and pay whatever amount say.
Later I visited websites of ICICI Lombard, Reliance Insurance companies to calculate premium amount for a 5 year old vehicle. The calculated amount came around Rs. 800/-. I found that whatever being said by Bajaj Allianz people was completely wrong and without any document, letter proof from company or government, they are charging huge premium amounts to their customers.
After getting a bad experience from Bajaj Allianz I went to National Insurance Company and purchased a new policy from them. The premium amount I paid was only Rs. 682/-.
Thus when you purchase any policy, do verify the policy details by comparing similar policies of at least two companies. Private companies may charge extra without any reason, just what happened in my case.
I love to use Firefox as a portable browser. It helps me carry my settings, forms, passwords etc stored in a pen drive and use it on any computer.
Almost every 15 days - 1 month a new version of Firefox is released (3.5.0, 3.5.1 --- 3.5.5). The latest version is 3.5.5. Yesterday I downloaded Portable Firefox 3.6 beta 4. Whenever a new Firefox beta is released it doesn't support many add-on extensions which we have been using in old Firefox. Thus when we install beta it in our system, we see all the extensions are disabled saying that it's incompatible with new version and we left no choice than reverting back to stable version.
But this time there is an extension which will test the compatibility of all extensions with new beta release. Here we can check whether the extension is working in Firefox beta or not. In either case we can report its functionality to Firefox team.
In portable Firefox we just have to copy the 'Data' folder from older installation directory to new one and we can start using new beta with all preferences, themes and extensions of old Firefox.
Except a few, almost all extensions are working fine in my 3.6 beta 4. I found that CoolPreviews extension is not compatible with Firefox 3.6 Beta 4, so i reported it to Firefox and disabled the extension.