global class Sfdc2SapDealersContractBatch implements Database.Batchable, Database.AllowsCallouts { //xinhonglu global Sfdc2SapDealersContractBatch() { } global Database.QueryLocator start(Database.BatchableContext BC) { return Database.getQueryLocator( [SELECT Id,RecordType_DeveloperName__c , RecordTypeId , Sap2sfdcDealers_ModifycationLogo__c, Is_Active_Formula__c, ContractSfdc2SapLog__c FROM Account where Is_Active_Formula__c = '有效' and ((Parent.Sap2sfdcDealers_ModifycationLogo__c = '1' and Parent.RecordType_DeveloperName__c = 'Agency') or Sap2sfdcDealers_ModifycationLogo__c = '1' )]); //[SELECT Id,RecordType_DeveloperName__c , RecordTypeId , Sap2sfdcDealers_ModifycationLogo__c, Is_Active_Formula__c,ContractSfdc2SapLog__c FROM Account where Is_Active_Formula__c = '有效' and ((Parent.Sap2sfdcDealers_ModifycationLogo__c = '1' and Parent.RecordType_DeveloperName__c = 'Agency') or (Sap2sfdcDealers_ModifycationLogo__c = '1' and RecordType_DeveloperName__c = 'Agency'))] //); } global void execute(Database.BatchableContext BC, List accList) { String[] needSendTypes = new String[] {'契約', '販売店'}; List updateAccountList = new List(); Map purposeOfAdviceMap = new Map(); List rects = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN :needSendTypes]; Map needSendRectMap = new Map(); for (RecordType rect : rects) { needSendRectMap.put(rect.Id, rect.Name); } BatchIF_Log__c iflog = new BatchIF_Log__c(); //iflog.Type__c = 'NFM001'; //iflog.ErrorLog__c = ''; //iflog.Log__c = 'callout start\n'; //iflog.Id = '20181211'; //insert iflog; //iflog = [Select Id, Name from BatchIF_Log__c where Id = :iflog.Id]; System.debug(Logginglevel.DEBUG, 'NFM001_' + iflog.Name + ' start'); //Savepoint sp = Database.setSavepoint(); try{ List accIds = new List(); for(Account acc:accList){ acc.Sap2sfdcDealers_ModifycationLogo__c = '0'; if (needSendRectMap.get(acc.RecordTypeId) == '契約'){ accIds.add(acc.Id); } purposeOfAdviceMap.put(acc.Id, acc.ContractSfdc2SapLog__c); //if (needSendRectMap.get(acc.RecordTypeId) == '販売店'){ // //acc.Sap2sfdcDealers_ModifycationLogo__c = '0'; // updateAccountList.add(acc); //} updateAccountList.add(acc); } //if(updateAccountList.size()>0){ // upsert updateAccountList; //} NFM001Controller.calloutNotFuture(null, accIds, purposeOfAdviceMap, needSendRectMap); if(updateAccountList.size()>0){ upsert updateAccountList; } iflog.Log__c = 'end\n'; }catch (Exception ex) { // エラーが発生した場合 //Database.rollback(sp); iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c; iflog.Log__c = 'end\n'; } } global void finish(Database.BatchableContext BC) { } }