Setting default values for quick data entry

  • 8
  • Question
  • Updated 5 years ago
  • Answered
When in-line creating and entering a new completed activity on a Lead detail page (call, email, web conference), I would like it if I didn't have to select the picklist values for Owner ID, Status, Priority and Date every time. How can I set the picklist values to a default (my ID, completed, normal and today's date, respectively) whenever I create a new completed activity?
Photo of Matt Brown

Matt Brown, Employee

  • 798 Points 500 badge 2x thumb

Posted 5 years ago

  • 8
Photo of ktyler

ktyler

  • 9,244 Points 5k badge 2x thumb
Matt,
If you use a "clone" button, it should create a new record and copy all the values selected in the existing record into it.
This works great and really cuts down on the data entry.
Photo of Greg Huete

Greg Huete

  • 2,340 Points 2k badge 2x thumb
That's a good workaround, but it would be great to be able to set global actions which populate default text in the fields to help the user automate typing on the fly.
Photo of Matt Brown

Matt Brown, Employee

  • 798 Points 500 badge 2x thumb
We did it! I can now click on a global action for a new task of a certain type (completed call, email, etc.) and it autopopulates the values for everything but the subject or description field. This lets me quickly enter the data in between calls and meetings.

Thank you to Zach for writing a custom snippet - we created a global action for each of the different types of tasks (Call, Voicemail, Email, etc. - these are values on a custom field, Type__c), and used a custom snippet as the main resource for each action, along with another snippet for each task type. The main snippet:

var TaskModel = skuid.model.getModel('TaskHistory');

var self = arguments[0];
var $ = skuid.$;

// Create a new Task in our Task Model
var NewTask = TaskModel.createRow({
initiatorId : self.list._GUID,
additionalConditions : self.list.options.conditions
});

var defaults = {
'Priority':'Normal',
'Status':'Completed',
'OwnerId': skuid.utils.userInfo.userId,
'Owner.Name': skuid.utils.userInfo.userName,
'ActivityDate': skuid.time.getSFDate(new Date())
};

if (self.defaults) {
$.extend(defaults,self.defaults);
}

TaskModel.updateRow(NewTask,defaults);

// Create a new Item in our Table (wrapper around the new Task row)
var newItem = self.list.newItem(
NewTask,
{ editModeForNewItems : true }
);
self.list.render({
resetPagination : true
,refreshFields : false
});

// Focus on the Subject field
$.each(newItem.fields,function(){
if (this.id === 'Subject'){
var inputElement = this.element.find(':input').first();
inputElement && inputElement.focus();
}
});

Once this was taken care of, we were able to write the smaller snippet that would correspond to each global action:

var params = arguments[0];

// This is where you set the defaults you want
params.defaults = {
'Type__c':'Call'
};

skuid.snippet.getSnippet('NewCompletedTask')(params);

It's a small thing, but I hope it's helpful. Thanks Zach!
Photo of Greg Huete

Greg Huete

  • 2,340 Points 2k badge 2x thumb
Woo!
Photo of Matt Brown

Matt Brown, Employee

  • 798 Points 500 badge 2x thumb
Now that I've got these great custom global actions on the Lead Detail page that autopopulate field values, I'm wondering if I can take it one more level. Is it possible to have individual global action buttons instead of them all being in a dropdown picklist? So, there'd just be a PHC (phone call complete) button sitting up there that I can just click and it adds the record w/ autopopulated values.
Photo of Zach McElrath

Zach McElrath, Employee

  • 49,004 Points 20k badge 2x thumb
Currently all Table Global Actions show up in a single drop-down list, no way around that. However, you could implement these as separate Page Title Actions instead, then you could have them separated out. Not ideal.
Photo of Matt Brown

Matt Brown, Employee

  • 798 Points 500 badge 2x thumb
Gotcha, thanks.
Photo of Greg Huete

Greg Huete

  • 2,340 Points 2k badge 2x thumb
Matt,

This script is awesome.

Is there any way to modify it slightly to have the user enter the data in a popup rather than inline? I have many uses for the inline, but there are some situations where you would want the popup window to pre-format values in the same way.

Thanks for the code!
Photo of Matt Brown

Matt Brown, Employee

  • 798 Points 500 badge 2x thumb
That's a good question, and definitely one for Zach or another developer. I'll ask around.
Photo of Greg Huete

Greg Huete

  • 2,340 Points 2k badge 2x thumb
Matt,

Another question:

When I try to populate the owner field on a custom object, it just inserts the ID into the field. I assume this is because the Owner field on a custom object is polymorphic to the User and Group objects. Do you know any way around this?

Thanks again!
Greg
Photo of Greg Huete

Greg Huete

  • 2,340 Points 2k badge 2x thumb
Matt this seems to have fixed itself when I changed the type to picklist, and ran the ID through a filter which looks at a model with active users in it.