• Anshuman Pratap Singh
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 4
    Questions
  • 9
    Replies
global class AccountTransferSchedule implements Schedulable {
	global transferProposalBatch trf;
	global ID batchID;
	global AccountTransferSchedule(TransferProposalBatch trf){
		this.trf = trf;
	}
	  
    global void execute(SchedulableContext sc) {
      //Sequence of batch execution: Proposal, Opportunity, AccountTeamMember, AccountConnection, AccountSAMMapping, Revenue, SalesBudget 	
	  batchID = Database.executeBatch(trf , 100);
	  system.abortJob(sc.getTriggerId());
    }
    
	global void finish(SchedulableContext BC)
	{
		// Get the ID of the AsyncApexJob representing this batch job from Database.BatchableContext.
		// Query the AsyncApexJob object to retrieve the current job's information.
		AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email 
						  FROM AsyncApexJob 
						  WHERE Id =:BC.getTriggerId()];
		
		//then use the active job id and abort it
		system.abortJob(a.id);
	}
}

 
global class TransferOpportunityBatch implements Database.Batchable<sObject> , Database.Stateful{
    public String query;
    public List<Admin_Tool_Status_Summary__c> adminToolSummary;
    public Map<String,String> mapOppNewOwner;
    public Map<String,Integer> mapOfBatchsizes;
    public Set<ID> admToolSummaryIDs;
    List<UserConnection__c> userConn = new List<UserConnection__c>();
    Map<String,String> mapOfTimAEIds = new Map<String,String>();

    global TransferOpportunityBatch(String query , List<Admin_Tool_Status_Summary__c> adminToolSmry ,Map<String,Integer> mapOfBcthsize) {
        this.query = query;
        this.adminToolSummary = adminToolSmry;
        this.mapOfBatchsizes = mapOfBcthsize;
        this.admToolSummaryIDs = new Set<ID>();
        for(Admin_Tool_Status_Summary__c adminStsDet : adminToolSmry ){
        	admToolSummaryIDs.add(adminStsDet.ID);
        }
        //this.query = query.replace(replace, admToolSummaryIDs);
    }

    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator(query);
        
        
    }

    global void execute(Database.BatchableContext BC, list<Admin_Tool_Status_Detail__c> scope) {
       try{
       		mapOppNewOwner = new Map<String, String>();
       		for(Admin_Tool_Status_Detail__c adm : scope)
       		{
       			mapOppNewOwner.put(adm.ID__c,adm.Admin_Tool_Status_Summary__r.To_User_ID__c);
       		}
           	New_AETransferToolController.updateOpportunities(mapOppNewOwner, scope);
           
            
        }
        catch(Exception ex){
        	Log4SF.logMessage('TransferOpportunityBatch', 'execute', ex.getMessage(),ex, UserInfo.getUserId(),BC.getJobID(),''); 
            System.debug('Error while updating Admin Status Details records::'+ex.getMessage());
        }
    }

    global void finish(Database.BatchableContext BC) {

        String query = 'Select id,Id__c , Status__c,Error_Message__c, Admin_Tool_Status_Summary__r.To_User_ID__c,AccountConnection__c, Admin_Tool_Status_Summary__r.From_User_ID__c from Admin_Tool_Status_Detail__c where Object_Type__c = \'Account Team\' and Status__c=\'Not Started\' and Admin_Tool_Status_Summary__c in: admToolSummaryIDs';
        TransferAccountTeamBatch updateOppBatch = new TransferAccountTeamBatch(query,adminToolSummary ,mapOfBatchsizes);
        Id batchJobId = Database.executeBatch(updateOppBatch ,mapOfBatchsizes.get('Account_Team_Batch_Size'));


    }
}

Below is the test class with 62% code coverage
@IsTest
public class TransferOpportunityBatchTest {
    public static testmethod void testopportunity()
    {
        
        Account acc = TestUtil.getAccountRec();
        acc.primary_commodity__c =   'Auto Aftermarket';
        insert acc;
        
        User userAE = TestUtil.prepareUser();
        Profile objProfile = [SELECT Id,Name FROM Profile WHERE Name = 'Master - Account Executive'];
        userAE.ProfileId = objProfile.Id;
        userAE.Username = 'testae@mands.com';
        userAE.Budget_type__c = 'Local';
        userAE.Budget_product_Lines__c = 'Linear/News/Sports;';
        userAE.rate_plan_status__c = 'Draft';
        userAE.Rate_Plan_Commit_Date__c =Date.newInstance(2019, 01, 10);
        userAE.Region__c='Pacific';
        // userAE.HR_Name__c='ans';
        insert userAE;
        
        Profile pro2 = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        
        
        User u2 = new User(Alias = 'standt', Email='standarduser@testorg.com', 
                           EmailEncodingKey='UTF-8', LastName='Testing 001', LanguageLocaleKey='en_US', 
                           LocaleSidKey='en_US', ProfileId = pro2.Id, 
                           TimeZoneSidKey='America/Los_Angeles', UserName='standarduser12424@testorg.com');
        
        Account_Transfer_Tool__c att = new Account_Transfer_Tool__c();
        att.Division__c = 'Central';
        att.Region__c = 'MidNorth';
        att.Status__c = 'Approved';
        att.Transfer_Effective_Date__c = Date.newInstance(2018, 01, 15);
        insert att;
        
        Account_Transfer_Mapping__c atm = new Account_Transfer_Mapping__c();
        atm.Account__c = acc.Id;
        atm.Account_Transfer_Simulation__c = att.Id;
        atm.From_User__c = u2.id;
        atm.To_User__c = userAE.id;
        atm.External_ID__c = userAE.id+';;;'+acc.Id+';;;'+'2018Jan'+';;;'+userAE.id;
        insert atm;
        
        /*        List<Admin_Tool_Status_Summary__c>adminToolSmry=new list<Admin_Tool_Status_Summary__c>();


Admin_Tool_Status_Summary__c obj = new Admin_Tool_Status_Summary__c();
obj.From_User_Id__c = UserInfo.getUserId();
obj.To_User_Id__c = UserInfo.getUserId();
obj.Proposal_End_Date__c = String.valueOf(Date.today());
obj.Job_Type__c = 'AE Transfer';
obj.Transfer_Details__c = atm.Id; 
insert obj;

adminToolSmry.add(obj);

Admin_Tool_Status_Detail__c objAT = new Admin_Tool_Status_Detail__c();
objAT.Admin_Tool_Status_Summary__c = obj.Id;
objAT.Object_Type__c='Account Team';
objAT.Status__c='Not Started';
objAT.Id__c='IDs';
objAT.Error_Message__c='error';
objAT.Status__c='Success';

insert objAT;

List<Admin_Tool_Status_Detail__c> adminToolDetailsAccConn = new List<Admin_Tool_Status_Detail__c>();
adminToolDetailsAccConn.add(objAT);*/
        
        Opportunity opp = TestDataHelper.createopportunity('Test Opportunity',System.today(),'Planning','Pipeline',acc.ID);
        // opp.ownerid=u2.id;
        insert opp;
        
        Proposal__c p = TestDataHelper.createProposal('Test Opportunity Proposal',opp.id, '00000', true);
        p.RecordTypeId = TestDataHelper.LinearRecTypeId;
        p.Start_Date__c = System.today();
        p.End_Date__c = System.today().addMonths(1);
        insert p;
        
        
        Map<String,Integer>mapOfBcthsize=new Map<String,Integer>();
        mapOfBcthsize.put('Account_Team_Batch_Size',200);
        mapOfBcthsize.put('Account_Connection_Batch_Size',200);
        mapOfBcthsize.put('Account_SAM_Mappings_Batch_Size',200);
        mapOfBcthsize.put('Revenue_Batch_Size',200);
        mapOfBcthsize.put('Budget_Batch_Size',200);
        mapOfBcthsize.put('NBUC_Batch_Size',200);
        
        String query = 'Select id,Id__c , Status__c,Error_Message__c, Admin_Tool_Status_Summary__r.To_User_ID__c,AccountConnection__c, Admin_Tool_Status_Summary__r.From_User_ID__c from Admin_Tool_Status_Detail__c where Object_Type__c = \'Account Team\' and Status__c=\'Not Started\' and Admin_Tool_Status_Summary__r.Id in: admToolSummaryIDs';        
        System.RunAs(userAE)
        {
            Test.startTest();
            List<Account> accList = new List<Account>();
            accList.add(acc);
            //accList = New_AETransferToolController.showAccounts(UserInfo.getUserId());
            List<User> usr = new List<User>();
            usr.add(u2);
            usr.add(userAE);
            
            
            IF(accList.size()>0 && usr.size()>0){
                List<New_AETransferToolController.OppProposalWrapper>  oppProposalWrapList = New_AETransferToolController.showOpportunities(new List<String>{accList[0].Id},String.valueOf(System.today().addYears(-10)),u2.id);
                for(New_AETransferToolController.OppProposalWrapper oppWrap : oppProposalWrapList){
                    oppWrap.chckBx = true;
                    System.debug('Record:::'+oppWrap);
                }
                
                String JSONString = JSON.serialize(oppProposalWrapList);
                String adminummaryId = New_AETransferToolController.AEtransfer(JSONString,usr[0].Id,u2.id, new List<String>{accList[0].Id} ,String.valueOf(System.today().addYears(-1)),att.Id);
                //Admin_Tool_Status_Summary__c adminSummaryRecord = New_AETransferToolController.returnAdminToolStatus(adminummaryId);
                
                /*List<Admin_Tool_Status_Summary__c> admnSumary = [Select id from Admin_Tool_Status_Summary__c order by createdDate desc];
if(admnSumary.size()>0){
System.assertEquals(adminummaryId,admnSumary[0].Id);
// System.assertEquals(adminSummaryRecord.Id,admnSumary[0].Id);
}*/
                
                
                List<Admin_Tool_Status_Summary__c>adminToolSmry=new list<Admin_Tool_Status_Summary__c>();
                
                
                Admin_Tool_Status_Summary__c obj = new Admin_Tool_Status_Summary__c();
                obj.From_User_Id__c = u2.id;
                obj.To_User_Id__c = userAE.id;
                obj.Proposal_End_Date__c = String.valueOf(Date.today());
                obj.Job_Type__c = 'AE Transfer';
                obj.Transfer_Details__c = atm.Id; 
                insert obj;
                
                adminToolSmry.add(obj);
                
                New_AETransferToolController.AEtransfer(JSONString,u2.id, usr[0].Id, new List<String>{accList[0].Id} ,String.valueOf(System.today().addYears(-1)),att.id);
                
                
                TransferOpportunityBatch ob=new TransferOpportunityBatch(query,adminToolSmry,mapOfBcthsize);
                Database.executeBatch(ob);
                Test.stopTest();
                
                
            }}
        
        
        
    }
    
}
public List<AggregateResult> inBudgetList {get;set;}


inBudgetList = [SELECT  
                            Budget_User__r.Name inAEName,
                            Budget_User__c inAeId,
                            Advertiser__r.Name account, 
                            Sum(Amount__c) inBudAmt,
                            Broadcast_Month_Date__c effectiveDate
                            FROM Sales_Budget__c
                            WHERE Old_Budget_User__c = :selectedUserId
                            GROUP BY Budget_User__r.Name, Budget_User__c, Advertiser__r.Name, Broadcast_Month_Date__c
                            ORDER BY Budget_User__r.Name
                           ];







for(AggregateResult inBudItem: inBudgetList){
                
                transferObj.transferUser = (String)inBudItem.get('inAEName');	    			    		
                transferObj.account = (String)inBudItem.get('account');
                transferObj.transferIn = (Decimal)inBudItem.get('inBudAmt');
                transferObj.transferEffectiveDate = ((Datetime)inBudItem.get('effectiveDate')).format('MMMMM -YYYY');
                
                transferLogs.add(transferObj);
                transferObj = new transferLogsWrapper();

This is a part of my code containig aggregate result,please help me in covering this in a test class
below is some part of my code containing aggregate result,please help me in solving this:
 
public List<AggregateResult> inBudgetList {get;set;}


inBudgetList = [SELECT  
                            Budget_User__r.Name inAEName,
                            Budget_User__c inAeId,
                            Advertiser__r.Name account, 
                            Sum(Amount__c) inBudAmt,
                            Broadcast_Month_Date__c effectiveDate
                            FROM Sales_Budget__c
                            WHERE Old_Budget_User__c = :selectedUserId
                            GROUP BY Budget_User__r.Name, Budget_User__c, Advertiser__r.Name, Broadcast_Month_Date__c
                            ORDER BY Budget_User__r.Name
                           ];







for(AggregateResult inBudItem: inBudgetList){
                
                transferObj.transferUser = (String)inBudItem.get('inAEName');	    			    		
                transferObj.account = (String)inBudItem.get('account');
                transferObj.transferIn = (Decimal)inBudItem.get('inBudAmt');
                transferObj.transferEffectiveDate = ((Datetime)inBudItem.get('effectiveDate')).format('MMMMM -YYYY');
                
                transferLogs.add(transferObj);
                transferObj = new transferLogsWrapper();
This is a part of my code containig aggregate result,please help me in covering this in a test class
 
global class AccountTransferSchedule implements Schedulable {
	global transferProposalBatch trf;
	global ID batchID;
	global AccountTransferSchedule(TransferProposalBatch trf){
		this.trf = trf;
	}
	  
    global void execute(SchedulableContext sc) {
      //Sequence of batch execution: Proposal, Opportunity, AccountTeamMember, AccountConnection, AccountSAMMapping, Revenue, SalesBudget 	
	  batchID = Database.executeBatch(trf , 100);
	  system.abortJob(sc.getTriggerId());
    }
    
	global void finish(SchedulableContext BC)
	{
		// Get the ID of the AsyncApexJob representing this batch job from Database.BatchableContext.
		// Query the AsyncApexJob object to retrieve the current job's information.
		AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email 
						  FROM AsyncApexJob 
						  WHERE Id =:BC.getTriggerId()];
		
		//then use the active job id and abort it
		system.abortJob(a.id);
	}
}

 
public List<AggregateResult> inBudgetList {get;set;}


inBudgetList = [SELECT  
                            Budget_User__r.Name inAEName,
                            Budget_User__c inAeId,
                            Advertiser__r.Name account, 
                            Sum(Amount__c) inBudAmt,
                            Broadcast_Month_Date__c effectiveDate
                            FROM Sales_Budget__c
                            WHERE Old_Budget_User__c = :selectedUserId
                            GROUP BY Budget_User__r.Name, Budget_User__c, Advertiser__r.Name, Broadcast_Month_Date__c
                            ORDER BY Budget_User__r.Name
                           ];







for(AggregateResult inBudItem: inBudgetList){
                
                transferObj.transferUser = (String)inBudItem.get('inAEName');	    			    		
                transferObj.account = (String)inBudItem.get('account');
                transferObj.transferIn = (Decimal)inBudItem.get('inBudAmt');
                transferObj.transferEffectiveDate = ((Datetime)inBudItem.get('effectiveDate')).format('MMMMM -YYYY');
                
                transferLogs.add(transferObj);
                transferObj = new transferLogsWrapper();

This is a part of my code containig aggregate result,please help me in covering this in a test class
below is some part of my code containing aggregate result,please help me in solving this:
 
public List<AggregateResult> inBudgetList {get;set;}


inBudgetList = [SELECT  
                            Budget_User__r.Name inAEName,
                            Budget_User__c inAeId,
                            Advertiser__r.Name account, 
                            Sum(Amount__c) inBudAmt,
                            Broadcast_Month_Date__c effectiveDate
                            FROM Sales_Budget__c
                            WHERE Old_Budget_User__c = :selectedUserId
                            GROUP BY Budget_User__r.Name, Budget_User__c, Advertiser__r.Name, Broadcast_Month_Date__c
                            ORDER BY Budget_User__r.Name
                           ];







for(AggregateResult inBudItem: inBudgetList){
                
                transferObj.transferUser = (String)inBudItem.get('inAEName');	    			    		
                transferObj.account = (String)inBudItem.get('account');
                transferObj.transferIn = (Decimal)inBudItem.get('inBudAmt');
                transferObj.transferEffectiveDate = ((Datetime)inBudItem.get('effectiveDate')).format('MMMMM -YYYY');
                
                transferLogs.add(transferObj);
                transferObj = new transferLogsWrapper();
This is a part of my code containig aggregate result,please help me in covering this in a test class