Home

Friday, 30 December 2022

sfdc-learn #6 Validation Rule to fire when appointment date selected as last Friday of every month.

 If we have requirement to user should not select last friday of every month as appointment date and if   selected then show appropriate message on record in salesforce. This we can achieve using custom   validation rule.  Following validation rule condition we can use:

  • Validation Rule Conditions:

        (WEEKDAY( Appointment_date__c ) = 6 ) && 

        ((DATE(YEAR(ADDMONTHS( Appointment_date__c , 1)) ,  
                      MONTH(ADDMONTHS( Appointment_date__c ,1)) ,
                     1) -  Appointment_date__c ) <= 7 )


  • Validation Rule:



  • Test Result:
 
























Thursday, 29 December 2022

sfdc-learn #5 : How to insert a Parent with multiple child's in one single DML in apex.

    // First create a ExterNalId__c as a custom field with External Id Options on Parent object.

    List<SObject> sObjectLst =  new List<SObject>();

    // Create the parent reference. Used only for foreign key reference and doesn't contain any other  fields.

    Account accRef = new Account(ExterNalId__c = 'externalIdValue'); 

    // Create a child record or many records

    For(Integer i = 0 ; i<3;i++){

        Contact con = new Contact();

        con.Firstname = 'ConFirst'+i;

        con.Lastname = 'ConLast'+i;

        con.Account = accRef;  // Assign this created parent reference to that parent relation field. 

        sObjectLst.add(con);  // Add these child records in list.

    }

    // Create parent record with initializing required fields and  externalId field.

    Account acc = new Account(Name='Acc Name',ExterNalId__c = 'externalIdValue');

    sObjectLst.add(acc); // Add parnet record in list.

    // Insert list

    Database.SaveResult[] results = Database.insert(sObjectLst);  // Check results. 

    for (Integer i = 0; i < results.size(); i++) { 

            if (results[i].isSuccess()) {

                System.debug('Successfully created ID: '+ results[i].getId());

            } else {

                   System.debug('Error: could not create sobject '+ 'for array element ' + i + '.');

                   System.debug('   The error reported was: '+ results[i].getErrors()[0].getMessage() + '\n');

            }

    }

Wednesday, 28 December 2022

sfdc-learn #4 : How to delete Open(Accepted) AgentWork from omni (Service Cloud).

We can not delete Open (active AgentWork) AgentWork record from omni routing directly. So to delete this active AgentWork record we need first change workItem (Case,Lead) status from omni active status to inactive status and remove workitem from omni and delete it.

Here we change case as workitem status from active status (InProgress) to inactive status (new) by updating case record.


List<Case> caseListToUpdate = new List<Case>();

Set<Id> caseIdSet =  new Set<Id>();
for(AgentWork agw : [Select Id,WorkItemId,Status from AgentWork where WorkItemId=' ']){
    if(agw.Status == 'Opened'){
        Case cse = new Case(Id = agw.WorkItemId);
        cse.status = 'New';
        caseListToUpdate.add(cse);
    }
    caseIdSet.add(agw.WorkItemId);
}

//Remove Case from omni and

if(!caseListToUpdate.isEmpty()){
    database.update(caseListToUpdate,false) ;
}


if(!caseIdSet.isEmpty()){
    // delete PendingServiceRouting record 
    database.delete(new List<PendingServiceRouting>([Select Id,WorkItemId from PendingServiceRouting where WorkItemId In:caseIdSet]),false);

    // delete AgentWork
    database.delete(new List<AgentWork>([Select Id,WorkItemId from AgentWork where WorkItemId In:caseIdSet]),false);
}

Tuesday, 27 December 2022

sfdc-learn #3 How to check which are users locked or freeze in salesforce org with soql.

 To check which are users locked or freeze in salesforce org with soql query.

Select id,Username,FirstName, LastName from user where Id In (select UserId from UserLogin  where IsPasswordLocked = true)


Select id,Username,FirstName, LastName from user where Id In (select UserId from UserLogin  where IsFrozen = true)

Monday, 26 December 2022

sfdc-learn #2: Difference between two dates in javascript


Difference between two dates in JavaScript in days.

 let date1= new Date('06/01/2022');
 let date2= new Date('06/29/2022');
let diffInDays = getDayDiffernce(date1,date2);
Cosole.log('diffInDays:',diffInDays );
 getDayDiffernce(date1,date2){
        let timeDiffrence = Math.abs(date2.getTime() - date1.getTime());
        let differDays = Math.ceil(timeDiffrence / (1000 * 3600 * 24));
        return differDays;
}
   


Sunday, 25 December 2022

sfdc-learn #1 : Check Object Field Length

 

Check Object Field has enough space to store data while insert or update.


Here we used Sobject as Case and field as Subject.

List<Case> caseList = new List<Case>();
String strToInsert = 'Network driver issue';
System.debug('strToInsertLength::'+strToInsert.length());
Integer fieldLength = Schema.SObjectType.Case.fields.Subject.getLength();
System.debug('fieldLength::'+fieldLength);


for(Case cse: [SELECT Id,Subject FROM Case Limit 1]){
if(fieldLength >= strToInsert.length()){
cse.Subject = strToInsert;
caseList.add(cse);
}
}
System.debug('caseList::'+caseList);

               Debug Log: