Category Archives: Force.com Development

Redkite e-Form enables Salesforce

Financial advisors ask us a common question: how can cloud technology give me more time to build relationships with existing and prospective clients?

We think simple automated solutions like the Salesforce CRM to Laser App Anywhere integration we recently built for TD Ameritrade Institutional are one big step in the right direction.

Laser App Anywhere is a cloud-based mobile form filling solution designed for financial advisors. It is a pure web solution that operates across modern browsers on tablets, Macs, PCs, and even Smart Phones.

Orion Connect, utilizing the Veo platform’s open access capabilities, integrates Salesforce and LaserApp Anywhere to create a sound foundation for a true straight through processing experience for advisors. For years, advisors have been yearning for the ability to automatically populate forms from one data source. This integration provides that capability out of the box.
- Andy Wang, Senior Manager, Product Management, TD Ameritrade

How it works

With a Laser App enabled CRM, institutions that custody assets with TD Ameritrade Institutional can now use their Salesforce CRM data to prefill TD Ameritrade Institutional forms in Laser App Anywhere in three easy steps:

  1. Select any client in the CRM and launch Laser App Anywhere.
    1
  2. Within Laser App Anywhere, select one or more prefilled TD Ameritrade Institutional forms.

    2a 2b
  3. Print, save, or even securely submit the group of forms for electronic signature.
    3
    4

Less paperwork means more face time with clients. More accurate, efficient solutions mean business can scale. And leading-edge technology means a better client experience.

The technical details

We built a Salesforce to Laser App mapping tool that allowed TD Ameritrade Institutional to pre-define field mappings from the TD Ameritrade Institutional Edition of Salesforce to Laser App. Institutions using the TD Ameritrade Institutional Edition of Salesforce can easily adjust these mappings to use any field within Salesforce, including custom fields.

Institutions can then launch Laser App Anywhere from the Salesforce CRM via a lightweight single sign-on (without having to enter separate credentials to log into Laser App Anywhere). The integration also supports Laser App Enterprise, the desktop version of Laser App.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone

Floating/Sticky Headers For Visualforce PageBlockTable

Hey everyone, it’s Dan/Kenji, Senior Developer for Redkite here with a nifty solution to an ever so annoying problem. That is of course that headers of a pageblocktable in Visualforce do not remain visible if you put the table in a scrollable area. I know there are a few approaches on how exactly to best pull this off, but they always seemed too complicated and not very reliable. So I decided to just bite the bullet and write a nice reusable jQuery plugin to take care of it for you. First off, to make sure we are talking about the same thing and what I’m proposing if what you want, check out the demo link below.

Demo of Sticky/Floating Headers

If you like what you see, you can download the plugin here.

Download jQuery Plugin

Upload it as a static resource, or just copy paste the contents into your visualforce page. Either way is fine. Also, in your visualforce page you’ll need to include the css class .floatingStyle and set it’s position to relative. Like this

<style>      
.floatingStyle 
{ 
    position:relative; 
} 
</style>

To use it, simply put your pageblocktable inside a div or apex:outputpanel (with layout set to block). Give that container a height. Invoke the plugin on the table either by class or id. So if my pageblock tables had the styleClass of ‘floatingHeaderTable’ I could invoke it this way.

    <script>
    $(document).ready(function() {
        $('.floatingHeaderTable').vfFloatingHeaders();
    });
    </script> 

and that’s it. You are good to go. Here is a full sample page.

Visualforce Page

<apex:page controller="floatingHeadersController">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
    <script src="{!URLFOR($Resource.jquery_vfFloatingHeaders)}"></script>

    <style>
        .tableContainer
        {
            height:290px; 
            width: 100%;
            overflow: auto;
        }       
        .floatingStyle 
        { 
            position:relative; 
        } 
    </style>

    <script>
    $(document).ready(function() {
        $('.floatingHeaderTable').vfFloatingHeaders();
    });
    </script>   

    <apex:pageBlock >
        <apex:outputPanel styleClass="tableContainer" layout="block">
            <apex:pageBlockTable value="{!contactList}" var="item" title="Contact List" styleclass="floatingHeaderTable" >
                <apex:column value="{!item.firstname}"/>
                <apex:column value="{!item.lastname}"/>
                <apex:column value="{!item.email}"/>
                <apex:column value="{!item.phone}"/>
            </apex:pageBlockTable>
        </apex:outputPanel>
    </apex:pageBlock>
</apex:page>

Apex Class

public class floatingHeadersController 
{
    public list<contact> contactList
    {
        get
        {
          if (contactList == null)
          {
              contactList = [select firstname, lastname, email, phone from contact];
          }  
          return contactList;
        }
        set;
    }
}

Also, I would like to give credit to a blog which helped me immensely with the technique for getting the headers to float properly.

http://rajputyh.blogspot.com/2011/12/floatingfixed-table-header-in-html-page.html

I just wrapped it up and modified it a bit to work with pageblocktables and packaged it into a plugin.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone

What’s New(s) In The Cloud? Dreamforce, Winter ’13, and the Social Enterprise behind Red Bull Stratos

What’s New(s) In The Cloud?

Here are some of Redkite’s favorite Salesforce.com and Cloud related tweets this month!

News in the Cloud takes on a new meaning this week with Felix Baumgartner’s record breaking leap.

Salesforce and Social Media: See how 5 major brands use Salesforce for Social Enterprise.

The Winter ’13 Release updates begin this month, and from enhancements in Salesforce Touch to new features like Shared Events, there’s a lot to checkout. Click through for access to demos about the recent release, or download the release notes.

We are gearing up for Cloudforce in New York City this week! To get prepared, relive the best of Dreamforce ’12 and get caught up on the materials from the Developer Zone, now available online.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone

Building Multi-Column Table Dashboard Components in Salesforce

Salesforce’s Reporting and Dashboards are extremely powerful but some things that seem like they should be easy can end up being pretty formidable challenges. One dashboard we see our clients struggling with is the elusive, but useful, multi-column Dashboard Component table.

Let’s review how to create a Dashboard Component with multiple columns, displaying your Salesperson’s Quotas, Revenue, and Percent to Quota for the Year.

Build your Report

The first step to building any Dashboard Component is to build a summary report using the object(s) and fields desired in your Dashboard Component.

Create Summary Formula Fields for your Report

Only fields that are Numeric field types can be displayed on the Multi-Column Table. For Each Column Header you want to display on the table, create a Custom Summary Formula Field displaying the Currency or Percentage as a Numeric value. Since numeric fields do not carry Dollar Signs ($) or Percentages (%), place the sign in the Field Label (see screenshot below).

In the example below, the calculation should output a percentage field, but in order to display it in the component, it must be a Numeric field. Note that the “(%)” sign is in the field label.

Create Chart on your Report

On the Report, Create a Bar Chart and plot one of the numeric formula fields on the X-Axis, and the Salesperson in the Y-Axis. Next, use the Plot Additional Values function in the Combination Charts section; select the other numeric formula fields created from the report as additional bars.

Save the Report.

Create a Dashboard Table Component

After the Report has been saved, create a New Table Dashboard Component referencing the Report. In the Formatting tab of the Component Editor you can choose the columns you want to display. The formula fields are available to be added to the table; add the column headers and Save the Dashboard.

Once you have saved the Dashboard Component, you will have a 4 column table that is easy on the eyes and brain.

Add this to your homepage and your Dashboard is complete.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone

Salesforce Field Sets – a limitation and a workaround

Field sets make so much sense, and I was really looking forward to being able to set up some very easy to maintain code. Unfortunately field sets do have one limitation that I recently ran into. You can’t access them from Apex Code.

To be fair, before Field Sets, you really had no options of displaying a dynamic set of fields on a Visualforce page. Field sets give you some great flexibility which wasn’t there before, so Field Sets should certinly be a part of all your future Visualforce dev design. I only wish it was a one stop shop for my field definitions for both my Visualforce pages and their supporting Apex code.

An example a typical scenario where Field Sets come in handy, is the following. Let’s say you’re creating a Visualforce page that displays some results from an Apex query. In order to change the fields that are shown on the page, or even the order of the fields, you had to get your developer to change both the Visualforce page and/or the Apex query that goes along with it.

So with Field Sets, the fields that are shown on the Visualforce page can now be dynamically configured by a Salesforce Administrator. But what about the Apex query code? From Apex, we can’t access the field set, so we can’t directly know what fields the Visualforce page is now expecting. Is there anyway that we can return the correct fields for the objects that will be displayed by the Field Set?

Yes, there is. The Apex side of the equation already has a load of options for storing configuration data. One approach is to store the field list data in a Custom Setting. The fields that you list should correspond to the field used in the Field Set. The only downside of this approach is the double maintainence that needs to occur. Now when you modify the field set, you also have to remember to change the Custom Setting data too.

So until you can access Field Sets from Apex code, this workaround should allow your Aministrators to add and remove fields from those custom Visualforce pages without having to get developers involved.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someone