Wednesday, 29 November 2017

Salesforce - Schedulable test class

Add below statements in your test class to verify the test results


@isTest
static void test(){
// Schedule the test job
//Class runs every day at 1 PM.
      String jobId = System.schedule('testBasicScheduledApex','0 0 13 * * ?',     
         new TestScheduledApexFromTestMethod());

      // Get the information from the CronTrigger API object
      CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, 
         NextFireTime
         FROM CronTrigger WHERE id = :jobId];

      // Verify the expressions are the same
      System.assertEquals('0 0 13 * * ?', 
         ct.CronExpression);

      // Verify the job has not run 
      System.assertEquals(0, ct.TimesTriggered);
}

 

Friday, 17 November 2017

salesforce - create record in related list with a detail page button

Create a detail page button associated to execute javascript function selected on Account object and place it in account layout.

place the below code on javascript code to create an opportunity record Account related list

{!REQUIRESCRIPT("/soap/ajax/22.0/connection.js")} 
{!REQUIRESCRIPT("/soap/ajax/22.0/apex.js" )} 
var connection = sforce.connection; 
var newopportunity= new sforce.SObject("Opportunity"); 
newopportunity.Name = "{!Account.Name}"; 
newopportunity.AccountId="{!Account.Id}"; 
newopportunity.StageName="Active"; 
newopportunity.CloseDate=new Date(); 
result = sforce.connection.create([newopportunity]); 
alert(result );



That's it, oncliking the button a record Id will be appeared, refresh the page and you will see a record in the opportunity related list.

vlocity - Launch omniscript from visualforce page

vf page:
=====

<apex:page standardStylesheets="false" showHeader="false" sidebar="false" docType="html-5.0" standardController="vlocity_ins__Household__c"
           extensions="Vlocity_RelationshipGroup" action="{!returnScriptPage}">
    <apex:pageMessages />
</apex:page>
           

controller
=======

public without sharing class Vlocity_RelationshipGroup {
   
    @TestVisible private final string recId{get;set;} 
    public String accessLevel;
   
    public Vlocity_RelationshipGroup(ApexPages.StandardController stdController) {
        //get current record Id       
        recId = stdController.getId();
    }
    public Set<id> retrieveAllAgentIds(String profileName){
        Set<Id> agentId = new Set<id>();
        List<CASE_GroupMembership__c> groupList = [SELECT SFDC_GroupID__c FROM CASE_GroupMembership__c WHERE CASE_Group_Member__c =: UserInfo.getUserId()];
        Set<String> groupMembSet = new Set<String>();
        for(CASE_GroupMembership__c csGrupMem : groupList){
            groupMembSet.add(csGrupMem.SFDC_GroupID__c);
        }
       
        if(!groupList.isEmpty()){ 
            List<CASE_GroupMembership__c> groupOwner = [SELECT SFDC_GroupID__c, CASE_Group_Member__c, CASE_IsGroupOwner__c FROM CASE_GroupMembership__c WHERE SFDC_GroupID__c IN :groupMembSet AND CASE_IsGroupOwner__c = true];
            for(CASE_GroupMembership__c csGrupRec : groupOwner){
                agentId.add(csGrupRec.CASE_Group_Member__c);
            }
        }
        system.debug('agentId'+agentId);
        return agentId;
    }
   
    public pagereference returnScriptPage() {
        PageReference pageRef;
        String profileName = [Select Id,Name from Profile where Id=:userinfo.getProfileId()].Name;
       
        if(profileName == 'Agent' || profileName == 'District Agent'){
            List<CASE_Household_Sharing__c> hhShare = [SELECT CASE_Access_Level__c,CASE_Record_ID__c,CASE_User_ID__c,Id FROM CASE_Household_Sharing__c WHERE CASE_Record_ID__c =: recId AND CASE_User_ID__c =: Userinfo.getUserId()];
            if(!hhShare.isEmpty()){
                accessLevel = hhShare[0].CASE_Access_Level__c;
            }
        }
        else if(profileName == 'Agent Staff' || profileName == 'District Agent Staff'){
            Set<id> agentIdSet = retrieveAllAgentIds(profileName);
            List<CASE_Household_Sharing__c> hhShare = [SELECT CASE_Access_Level__c,CASE_Record_ID__c,CASE_User_ID__c,Id FROM CASE_Household_Sharing__c WHERE CASE_Record_ID__c =: recId AND CASE_User_ID__c IN :agentIdSet];
            for(CASE_Household_Sharing__c hhShareRecord: hhShare){
                if(accessLevel == null || accessLevel == 'Read Only'){
                    accessLevel = hhShareRecord.CASE_Access_Level__c;
                }
            }           
        }
        if(accessLevel == 'Read/Write'){
            pageRef = new PageReference('/apex/vlocity_ins__OmniScriptUniversalPage?id='+recId+'&OmniScriptType=OmniScripts&OmniScriptSubType=Edit%20RelationshipGroup&OmniScriptLang=English&PrefillDataRaptorBundle=&scriptMode=vertical&layout=lightning&ContextId='+recId+'#/');
            pageRef.setRedirect(true);
            return pageRef;
        }
        else{
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Insufficient Privileges to Edit this Group'));
            return null;
        }
    }
    public pagereference returnScriptPage1() {
       
        PageReference pageRef = new PageReference('/apex/vlocity_ins__OmniScriptUniversalPage?id='+recId+'&OmniScriptType=OmniScripts&OmniScriptSubType=Create%20RelationshipGroup&OmniScriptLang=English&PrefillDataRaptorBundle=&scriptMode=vertical&layout=lightning&ContextId='+recId+'#/');
        pageRef.setRedirect(true);
       
        return pageRef;
    }
   
}