You need to sign in to do that
Don't have an account?
sfdclive
pls help me in writing batch class for below class.
global class AWACS_CreateMonthlyPromoterTarget implements Database.Batchable<sObject>{
Integer flag;
Integer flagPrevQty;
Double PrevActSlQty;
Double PrevSlTgtQty;
date d;
date dPrev;
String currMonth;
String prevMonth;
Promoter_Product_Target__c targetObj;
List <Promoter_Product_Target__c> lstTarget = new List<Promoter_Product_Target__c>();
List <Promoter_Product_Target__c> lstTargetofPSP = new List<Promoter_Product_Target__c>();
List <Promoter_Product_Target__c> lstNewTarget= new List <Promoter_Product_Target__c>() ;
Map<ID,List<Promoter_Product_Target__c>> mapPSPTarget = new Map<Id,List<Promoter_Product_Target__c>>();
Global String query='Select Id, Name,(select Id,Name,Month__c,Month_Actual_Sales_Quantity__c,Sales_Target_Quantity__c from Promoter_Product_Target__r) from Delar_Promoter_Shop_Products__c where RecordType.DeveloperName=\'Promoter_Shop_Products\'';
Global AWACS_CreateMonthlyPromoterTarget () {
d=get_Sales_Target_Month(AWACS_Cutoff_day());
system.debug('sales Target month##'+d);
dPrev=d.addMonths(-1);
system.debug('sales Target prcmonth##'+dPrev);
currMonth= DateTime.newInstance(d, Time.newInstance(0, 0, 0, 0)).format('MMMM-yyyy');
prevMonth= DateTime.newInstance(dPrev, Time.newInstance(0, 0, 0, 0)).format('MMMM-yyyy');
}
Global Database.QueryLocator start(Database.BatchableContext bc){
return Database.getQueryLocator(query);
}
Global void execute(Database.BatchableContext BC, List<sObject> scope){
List <Delar_Promoter_Shop_Products__c> lstPSP = (List <Delar_Promoter_Shop_Products__c>) scope;
system.debug('size of lstPSP##'+lstPSP.size()+'###PSP List value##'+lstPSP);
for(Delar_Promoter_Shop_Products__c onePSP : lstPSP) {
if(onePSP.Promoter_Product_Target__r != null){
lstTarget=onePSP.Promoter_Product_Target__r;
system.debug('PSP Obj##'+onePSP.Name+'##lstTarget##'+lstTarget);
mapPSPTarget.put(onePSP.ID,lstTarget);
//lstTarget.clear();
}
else{
targetObj= new Promoter_Product_Target__c();
targetObj.Promoter_Shop_Products__c= onePSP.ID ;
targetObj.Month_Actual_Sales_Quantity__c = 0;
targetObj.Sales_Target_Quantity__c = 0;
targetObj.Previous_Actual_Sales_Quantity__c = 0;
targetObj.Previous_Sales_Target_Quantity__c = 0;
targetObj.Month__c = currMonth;
lstNewTarget.add(targetObj);
}
}
for(ID PSPId : mapPSPTarget.keyset()) {
flag=0;
if(mapPSPTarget.get(PSPId) != null){
system.debug('Lst of Target##'+mapPSPTarget.get(PSPId));
lstTargetofPSP=mapPSPTarget.get(PSPId);
system.debug('List of Target###'+lstTargetofPSP) ;
for(Promoter_Product_Target__c oneTarget : lstTargetofPSP){
system.debug('Target Object Name##'+oneTarget.Name+'#Target object month summary#'+oneTarget.Month__c+'###Prev month##'+prevMonth+'##Curr month##'+currMonth);
if(oneTarget.Month__c == prevMonth){
flagPrevQty=0;
PrevActSlQty=0;
PrevSlTgtQty=0;
if(oneTarget.Month_Actual_Sales_Quantity__c != null) {
PrevActSlQty = oneTarget.Month_Actual_Sales_Quantity__c;
system.debug('Target Object Name##'+oneTarget.Name+'##Month Sale Qty###'+oneTarget.Month_Actual_Sales_Quantity__c+'##Prev Actual Sale Qty###'+PrevActSlQty);}
if(oneTarget.Sales_Target_Quantity__c != null) {
PrevSlTgtQty=oneTarget.Sales_Target_Quantity__c;
system.debug('Target Object Name##'+oneTarget.Name+'##Month Sale Qty###'+oneTarget.Sales_Target_Quantity__c+'##Prev Sale Target Qty###'+PrevSlTgtQty);}
flagPrevQty=1;
}
if (oneTarget.Month__c == currMonth){
flag=1;
system.debug('Target Object Name##'+oneTarget.Name+'#Target object month summary#'+oneTarget.Month__c);
}
}
system.debug('Value of flag##'+flag);
if(flag == 0){
targetObj= new Promoter_Product_Target__c();
targetObj.Promoter_Shop_Products__c= PSPId ;
targetObj.Month__c = currMonth;
if (flagPrevQty==1){
system.debug('#Target objectPrevious_Actual_Sales_Quantity__c#'+PrevActSlQty);
targetObj.Previous_Actual_Sales_Quantity__c=PrevActSlQty;
system.debug('#Target objectPrevious_Actual_Sales_Quantity__c#'+targetObj.Previous_Actual_Sales_Quantity__c);
system.debug('#Target objectPrevious_Actual_Sales_Quantity__c#'+PrevSlTgtQty);
targetObj.Previous_Sales_Target_Quantity__c=PrevSlTgtQty;
system.debug('#Target objectPrevious_Actual_Sales_Quantity__c#'+targetObj.Previous_Sales_Target_Quantity__c);
}
else{
targetObj.Previous_Sales_Target_Quantity__c = 0;
targetObj.Previous_Actual_Sales_Quantity__c= 0;
}
targetObj.Month_Actual_Sales_Quantity__c=0;
targetObj.Sales_Target_Quantity__c=0;
lstNewTarget.add(targetObj);
}
}
}
system.debug('#Size of Target list to be updated in DB#'+lstNewTarget.size());
if(lstNewTarget.size()>0){
insert lstNewTarget; }
}
Global void finish(Database.BatchableContext BC){
}
public integer AWACS_Cutoff_day()
{
Upload_Settings__c settings=Upload_Settings__c.getInstance('Cutoff_day');
if(settings.Cutoff_day__c!=null)
{
return integer.valueOf(settings.Cutoff_day__c);
}
else
{
//in cutoff day is 0 then we need to take cutoff date as month last day
date startofmonth=date.today().toStartOfMonth();
date endofmonth=startofmonth.addMonths(1).adddays(-1);
return endofmonth.day();
}
return 0;
}
public date get_Sales_Target_Month(integer cutoffday)
{
Date dt=date.today();
integer today=dt.day();
if(today>=cutoffday)
{
return dt.addMonths(1);
}
return dt;
}
}