Skip to main content
global class Updating_MembershipSalesLines1 implements Schedulable {

    global void execute(SchedulableContext ctx) {

    

     Map<String,List<membership_sales_lines__c>> lineRelatedRecords = new Map<String,List<membership_sales_lines__c>>();       

     List<membership_sales_lines__c> memberShipRecords = [Select Id,Name,Payment_status__c,Ledger_entry_no__c from membership_sales_lines__c where Payment_status__c !='Paid'];

     for(membership_sales_lines__c sales : memberShipRecords) {

            String salesOrder = sales.Name;

            List<membership_sales_lines__c> accOppList = lineRelatedRecords.get(salesOrder);

            

            if(accOppList == null) {

                lineRelatedRecords.put(salesOrder,new List<membership_sales_lines__c>{sales});

            } else {

                lineRelatedRecords.get(salesOrder).add(sales);

            }

        }        

            List<membership_sales_lines__c> paidStatusRecords = new List<membership_sales_lines__c>();

            paidStatusRecords = [select Id,Name,Payment_status__c,Ledger_entry_no__c from membership_sales_lines__c where Payment_status__c = 'Paid'];

            

            for(membership_sales_lines__c  obj : paidStatusRecords)

            {

                if(lineRelatedRecords.containsKey(obj.Name))

              {

                       obj.Payment_status__c = lineRelatedRecords.get(obj.Name).Payment_status__c ;

              }

            }  

 
3 answers
  1. Mar 12, 2021, 12:04 AM
    Hello,

    Ok i see. i think i know why it is failing : 

    lineRelatedRecords.get(obj.Name) returns a List<membership_sales_lines__c>, which is a List of values. Implement logic to get any particular value from List if you are looking for.

    if you are just looking for first item use index [0] as below : 

    obj.Payment_status__c = lineRelatedRecords.get(obj.Name)[0].Payment_status__c 

    Thanks
0/9000