+ Start a Discussion
Charni WigginsCharni Wiggins 

Variable does not exist in global method

I have tried t put together a batch class to update parent Account records with credit scores.. I need to make 2 list variables public so I am able to access them in the finish global batch method, how would I do this? I get errors all lines in the finish method... 

global class BatchCreditReportDelta implements Database.Batchable<sObject> {

    public static void runBatch() {
        BatchCreditReportDelta batch = new BatchCreditReportDelta();
        Database.executeBatch(batch);
    }

    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator(
            [SELECT Id, Name, Wholesale_Last_Month_Negative__c, Wholesale_This_Month_Negative__c, Wholesale_Last_Month_Positive__c, Wholesale_This_Month_Positive__c, VoIP_Last_Month_Negative__c, VoIP_This_Month_Negative__c, VoIP_Last_Month_Positive__c, VoIP_This_Month_Positive__c, (SELECT Name, Credit__c FROM Voip_IDs__r), (SELECT Name, Credit__c FROM Wholesale__r) FROM Account WHERE Account_Branding__c != null ]);
    }

    global void execute(Database.BatchableContext bc, List <Account> scope) {
        // create 2 lists to split negative and positive scores
        List <Account> popNegScores = new List <Account>();
    	List <Account> popPosScores = new List <Account>();
        // List to get VoIP values - should this be map instead? 
        List <VoIP_ID__c> voips = new List<VoIP_ID__c>();
        // List to get Wholesale values - should this be map instead?
        List <Wholesale__c> whsale = new List<Wholesale__c>(); 
        for (Account acc: scope) {
            // populate voip values
            for (VoIP_ID__c v : acc.VoIP_IDs__r) {
                // if scores below zero, assign to neg list
				if (v.Credit__c < 0) {
                    popNegScores.add(new Account(
                    // populate scores on account record
                    id = v.id,
                    VoIP_Last_Month_Negative__c = v.credit__c));
                }
                // what about values = 0? 
                else {
					popPosScores.add(new Account(
                    // populate scores on account record
                    id = v.id,
                    VoIP_Last_Month_Positive__c = v.credit__c));
				}
            }
            for (Wholesale__c w : acc.Wholesale__r) {
                // for negative wholesale values, assign to account
                if (w.Credit__c < 0) {
                    popNegScores.add(new Account(
					id = w.id,
                    Wholesale_Last_Month_Negative__c = w.credit__c));
				}
                // for positive values, assign to account (what about values = 0?)
                else {
					popPosScores.add(new Account(
					id = w.id,
                    Wholesale_Last_Month_Positive__c = w.credit__c));
				}
			}
        }
    }
    global void finish(Database.BatchableContext bc) {
        // do updates in here
        update popNegScores;
        update popPosScores;
        // print out lists
        System.debug(popNegScores);
        System.debug(popPosScores);
    }
}
Thank you!
Charni WigginsCharni Wiggins
Update: removed the two lists on line 18 and 20