global class OppMonthlyRatingBatch implements Database.Batchable<sObject> {
|
/**
|
* コンスタント、パラメータを受け取る
|
*/
|
global OppMonthlyRatingBatch() {
|
}
|
|
/**
|
* startには、queryを実行、商談検索
|
*/
|
global Database.QueryLocator start(Database.BatchableContext BC){
|
Date prevDate = Date.today().addMonths(-1);
|
Date prevYMD = Date.newInstance(prevDate.year(), prevDate.month(), 1);
|
// 前月クローズ/クローズしてない商談は対象
|
return Database.getQueryLocator([select Id, Rating__c, Rating01__c, Rating02__c, Rating03__c
|
, Rating04__c, Rating05__c, Rating06__c, Rating07__c, Rating08__c, Rating09__c
|
, Rating10__c, Rating11__c, Rating12__c
|
from Opportunity
|
where RecordType.DeveloperName = 'Opportunity'
|
and (Click_Close_Date__c = null or Click_Close_Date__c >= :prevYMD)]) ;
|
}
|
|
global void execute(Database.BatchableContext BC, List<SObject> sObjList) {
|
List<Opportunity> oppList = new List<Opportunity>();
|
Integer thisMonth = Date.today().month();
|
for (SObject oppObj : sObjList) {
|
Opportunity opp = (Opportunity) oppObj;
|
if (thisMonth == 1) {
|
if (opp.Rating12__c != opp.Rating__c || opp.Rating01__c != null) {
|
opp.Rating12__c = opp.Rating__c;
|
opp.Rating01__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 2) {
|
if (opp.Rating01__c != opp.Rating__c || opp.Rating02__c != null) {
|
opp.Rating01__c = opp.Rating__c;
|
opp.Rating02__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 3) {
|
if (opp.Rating02__c != opp.Rating__c || opp.Rating03__c != null) {
|
opp.Rating02__c = opp.Rating__c;
|
opp.Rating03__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 4) {
|
if (opp.Rating03__c != opp.Rating__c || opp.Rating04__c != null) {
|
opp.Rating03__c = opp.Rating__c;
|
opp.Rating04__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 5) {
|
if (opp.Rating04__c != opp.Rating__c || opp.Rating05__c != null) {
|
opp.Rating04__c = opp.Rating__c;
|
opp.Rating05__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 6) {
|
if (opp.Rating05__c != opp.Rating__c || opp.Rating06__c != null) {
|
opp.Rating05__c = opp.Rating__c;
|
opp.Rating06__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 7) {
|
if (opp.Rating06__c != opp.Rating__c || opp.Rating07__c != null) {
|
opp.Rating06__c = opp.Rating__c;
|
opp.Rating07__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 8) {
|
if (opp.Rating07__c != opp.Rating__c || opp.Rating08__c != null) {
|
opp.Rating07__c = opp.Rating__c;
|
opp.Rating08__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 9) {
|
if (opp.Rating08__c != opp.Rating__c || opp.Rating09__c != null) {
|
opp.Rating08__c = opp.Rating__c;
|
opp.Rating09__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 10) {
|
if (opp.Rating09__c != opp.Rating__c || opp.Rating10__c != null) {
|
opp.Rating09__c = opp.Rating__c;
|
opp.Rating10__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 11) {
|
if (opp.Rating10__c != opp.Rating__c || opp.Rating11__c != null) {
|
opp.Rating10__c = opp.Rating__c;
|
opp.Rating11__c = null;
|
oppList.add(opp);
|
}
|
} else if (thisMonth == 12) {
|
if (opp.Rating11__c != opp.Rating__c || opp.Rating12__c != null) {
|
opp.Rating11__c = opp.Rating__c;
|
opp.Rating12__c = null;
|
oppList.add(opp);
|
}
|
} else {}
|
}
|
if (oppList.size() > 0) update oppList;
|
}
|
|
global void finish(Database.BatchableContext BC) {
|
// 今回はやることないです
|
}
|
}
|