• Yathansh Sharma
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 2
    Replies
We have a Related List called 'Pricing Offers' on Accounts. Typically a Pricing Offer record only exists at the Parent Account level. 

Is there a way to display the Pricing Offer record from the Parent Account to all associated Child Accounts in the heriarchy?
The batch apex is sending account details as attachment and sending email and the test class is only covering 37% .Please helo me to get 75% code coverage
Apex Class:
global class UserReport implements Database.Batchable<SObject>, Database.AllowsCallouts, Database.Stateful {
  global  blob MyBlob;
   public List<String> searchstring = new List<String> {'Sales Manager','Sales User'};
    private List<String> fieldNames = new List<String> {
        'Id', 'Name', 'Registry_ID_EBS__c','OwnerId', 'Owner.Email', 'Owner.IsActive'
    };
      
     global String csvContent = '';
                
    global Database.QueryLocator start(Database.BatchableContext context) {
        return Database.getQueryLocator([Select Id, Name, Registry_ID_EBS__c, OwnerId, Owner.Email, Owner.IsActive,Owner.profile.Name From Account where Owner.profile.Name IN ('Sales Manager', 'Sales User') ]);
    }
    
    global void execute(Database.BatchableContext context, List<Account> records) {
        Map<Id, User> owners = new Map<Id, User>();
        for (Account record : records) {
            owners.put(record.OwnerId, null);
        }
        owners.remove(null);
        owners.putAll([Select Id, Name, Email, IsActive From User Where Id IN :owners.keySet()]);
        
       
        for (String fieldName : fieldNames) {
            if (fieldName == 'OwnerId') {
                csvContent += '"Owner Name",';
            } else if (fieldName == 'Owner.Email') {
                csvContent += '"Owner Email",';
            } else if (fieldName == 'Owner.IsActive') {
                csvContent += '"Owner Active",';
            } else {
                csvContent += '"' + fieldName + '"' + ',';
            }
        }
        csvContent += '\n';
        for (Account record : records) {
            for (String fieldName : fieldNames) {
                if (fieldName == 'OwnerId') {
                    String ownerName = '';
                    if (record.OwnerId != null && owners.containsKey(record.OwnerId)) {
                        ownerName = String.valueOf(owners.get(record.OwnerId).Name).replace('"', '""');
                    }
                    csvContent += '"' + ownerName + '"' + ',';
                } else if (fieldName == 'Owner.Email') {
                    String ownerEmail = '';
                    if (record.OwnerId != null && owners.containsKey(record.OwnerId)) {
                        ownerEmail = String.valueOf(owners.get(record.OwnerId).Email).replace('"', '""');
                    }
                    csvContent += '"' + ownerEmail + '"' + ',';
                } else if (fieldName == 'Owner.IsActive') {
                    String ownerIsActive = '';
                    if (record.OwnerId != null && owners.containsKey(record.OwnerId)) {
                        ownerIsActive = String.valueOf(owners.get(record.OwnerId).IsActive).replace('"', '""');
                    }
                    csvContent += '"' + ownerIsActive + '"' + ',';
                } else {
                    Object fieldValueObj = record.get(fieldName);
                    if (fieldValueObj != null) {
                        String fieldValue = String.valueOf(fieldValueObj).replace('"', '""');
                        csvContent += '"' + fieldValue + '"' + ',';
                    } else {
                        csvContent += ',';
                    }
                }
            }
            csvContent += '\n';
           //system.debug('csvContent'+csvContent);
        }
        MyBlob = blob.valueOf(csvContent); 
          system.debug('MyBlob1'+MyBlob);

    }

   global void finish(Database.BatchableContext context) {
        system.debug('MyBlob2'+MyBlob);
    String emailAddress1 = 'selvin.paul@continuserve.com';
    Messaging.EmailFileAttachment csvAttachment = new Messaging.EmailFileAttachment();
    String myName = 'AccountList.csv';
    csvAttachment.setFileName(myName);
    csvAttachment.setBody(MyBlob);
       csvAttachment.setContentType('application/csv');
       system.debug('ss'+MyBlob);
    Messaging.SingleEmailMessage myEmail = new Messaging.SingleEmailMessage();
    String[] toAddresses = new String[]{emailAddress1};
    String subject = 'UserID and List CSV';
    myEmail.setSubject(subject);
    myEmail.setToAddresses(toAddresses);
    myEmail.setPlainTextBody('User Alias Report');
    myEmail.setHtmlBody('Hi All'+','+'</br><br/>'+ 'Please find attached the sales user detail report from Salesforce production CRM.' +'</br><br/'+'Thanks'+','+'</br>'+'Brinks Team');
   Messaging.EmailFileAttachment[] attachments = new Messaging.EmailFileAttachment[]{csvAttachment};
myEmail.setFileAttachments(attachments);

    Messaging.SendEmailResult[] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[]{myEmail});
}
}
Test Class:

@isTest
public class UserReportTest {
static String str = 'Name,Registry_ID_EBS__c,OwnerId,Owner.Email,Owner.IsActive \n';       

    public static String[] csvFileLines;
    public static Blob csvFileBody;

    static testmethod void testfileupload(){
        Test.startTest();       
        csvFileBody = Blob.valueOf(str);
        String csvAsString = csvFileBody.toString();
        csvFileLines = csvAsString.split('\n'); 

       UserReport result = new UserReport();
       
       // result .csvAttachment();
        Test.stopTest();
    } 

    static testmethod void testfileuploadNegative(){
        Test.startTest();       
        csvFileBody = Blob.valueOf(str);
        String csvAsString = csvFileBody.toString();
        csvFileLines = csvAsString.split('\n'); 

     UserReport result = new UserReport();
       Id batchJobId = Database.executeBatch(new UserReport(), 200);
        Test.stopTest();
    }
}
  • March 17, 2023
  • Like
  • 0