global class NewQuoteEntrytheBatch implements Database.Batchable<sObject> {
|
public String query;
|
|
global NewQuoteEntrytheBatch() {
|
this.query = query;
|
}
|
|
global Database.QueryLocator start(Database.BatchableContext bc) {
|
|
String quoteLN = '%01';
|
query='select Id,Opportunity.Department_Class__c,CreatedDate,Category4__c from Quote where Bollow_Date__c like :quoteLN and CreatedDate=TODAY';
|
return Database.getQueryLocator(query);
|
}
|
|
global void execute(Database.BatchableContext BC, list<Quote> qu) {
|
Date createdDateStr;
|
//获取已经生成的询价单
|
List<Opportunity> opplist = New List<Opportunity>();
|
Opportunity o=new Opportunity();
|
List<Opportunity> os=new List<Opportunity>();
|
//遍历每一个报价单
|
for(Quote oneQuote:qu){
|
o=oneQuote.opportunity;
|
//获取报价时间
|
if (oneQuote.id != null && oneQuote.CreatedDate != null ) {
|
// createdDateStr = [select id,CreatedDate from Quote where id = :quoId][0].CreatedDate.date();
|
createdDateStr = oneQuote.CreatedDate.date();
|
} else {
|
createdDateStr = Date.today();
|
}
|
// 一年前的日期
|
Date createdDateYear = createdDateStr.addYears(-1);
|
//获取报价行信息
|
list<QuoteLineItem> qli=[select id,Product2Id from QuoteLineItem where QuoteId=:oneQuote.id];
|
List<String> c4=new List<String>();
|
for(QuoteLineItem quit:qli){
|
c4.add(quit.Product2.Category4__c);
|
}
|
//获取明细
|
List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select id, product__c, Bollow_Date__c, Rental_Apply__r.Hospital__c from Rental_Apply_Equipment_Set_Detail__c
|
where Rental_Apply__r.Strategic_dept__c = : o.Department_Class__c and Key_product__c != null and Bollow_Date__c >= :createdDateYear
|
and Category4__c In :c4 and Rental_Apply__r.demo_purpose2__c='试用(无询价)'
|
order by Bollow_Date__c];
|
|
Map<String, Date> ProOfDate = new Map<String, Date>();
|
for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) {
|
ProOfDate.put(raesd.product__c, raesd.Bollow_Date__c);
|
}
|
o.WhetherTrySpareParts_3m__c = false;
|
o.WhetherTrySpareParts_6m__c = false;
|
o.WhetherTrySpareParts_1y__c = false;
|
//获取一次询价中的每一个物品的询价
|
list<OpportunityLineItem> ols=[select Id from OpportunityLineItem where OpportunityId =:o.id];
|
for (OpportunityLineItem oppitem : ols) {
|
if (ProOfDate.containsKey(((String)oppitem.Id__c).substring(0, 15))) {
|
Date bollDate = ProOfDate.get(((String)oppitem.Id__c).substring(0, 15));
|
if (bollDate != null && bollDate.addMonths(3) > createdDateStr) {
|
o.WhetherTrySpareParts_3m__c = true;
|
}
|
if (bollDate != null && bollDate.addMonths(6) > createdDateStr && bollDate.addMonths(3) < createdDateStr) {
|
o.WhetherTrySpareParts_6m__c = true;
|
}
|
if (bollDate != null && bollDate.addYears(1) > createdDateStr && bollDate.addMonths(6) < createdDateStr) {
|
o.WhetherTrySpareParts_1y__c = true;
|
}
|
|
}
|
os.add(o);
|
}
|
if(os.size()>0){
|
update os;
|
}
|
}
|
|
}
|
|
global void finish(Database.BatchableContext BC) {
|
|
}
|
}
|