public with sharing class StartTradingController2 {
|
|
static final String RC_OPP = '引合';
|
|
/**
|
* 按钮初始化,通过LeadId获取判断需要使用的字段
|
*/
|
@AuraEnabled
|
public static Lead init(String Id){
|
try {
|
Lead leadobject = [select Id,
|
Hospital_Name__c,
|
Close_Forecasted_Date__c,
|
Opp_Name_Search__c,
|
begin_opp_name__c,
|
Status
|
from Lead
|
where Id = :Id];
|
return leadobject;
|
} catch (Exception ex) {
|
throw new ControllerUtil.myException(ex.getMessage());
|
}
|
}
|
|
/**
|
* 开始询价
|
*/
|
@AuraEnabled
|
public static String start(String Id){
|
try{
|
// リード情報を取得
|
Lead lead = [select id, SI_OppoLeadSec__c,owner_not_automatically_update__c, Hospital_Name__c, Contact_Name__c, Contact_Name__r.Name,
|
Opportunity_stage__c,Hospital_Name__r.RecordType.DeveloperName, Hospital_Name__r.Parent.RecordType.DeveloperName,
|
LastName, FirstName, LeadSource, Other_Society__c, Opp_Name__c, Purchase_Reason__c, Trade__c, Sales_Root__c, Campaign__c,
|
Close_Forecasted_Date__c, Competitor__c, Hospital_Budget__c, Promise_Class__c, Dicision_Maker__c, Purchase_Type__c,
|
Sales_Method__c, Fund_Basis__c, OwnerId, Wholesale_Price__c, Lead_No__c,Inquiry_Num__c,CreatedDate,CreatedById,
|
Tender_information__c, Agency_Opportunity__c, SI_PromoteInquiry__c
|
, Contact_Name__r.AccountId //2022-6-20 yjk 增加联系人的科室查询
|
,ET_Check__c //SWAG-CKDATG fy 【委托】【OBSAP-报价委托】报价委托项目改善1
|
,Hospital_Name__r.Parent.Parent.OCM_man_province_HP__c //20230329 lt DB202303246427 --青岛拆分 -- 根据询“省(客户)”赋值SAP上传省 add
|
from Lead where id =: Id];
|
Boolean SI_Flg = lead.SI_PromoteInquiry__c;
|
Boolean isAgencyOpp = false;
|
// 診療科選択リストの取得(条件:病院=リード情報の病院名称)
|
List<Account> departmentList = new List<Account>();
|
if (lead.Hospital_Name__r.RecordType.DeveloperName == 'HP') {
|
departmentList = [select id, name from Account where Hospital__c =: lead.Hospital_Name__c];
|
}
|
else if (lead.Hospital_Name__r.Parent.RecordType.DeveloperName == 'HP') {
|
departmentList = [select id, name from Account where ParentId =: lead.Hospital_Name__c];
|
}
|
/*
|
// xudan 20140730 販売店を選択する場合、下の契約一覧を出す
|
// TODO 契約状態を見る?
|
else if (this.lead.Hospital_Name__r.RecordType.DeveloperName == 'Agency') {
|
departmentList = [select id, name from Account where ParentId =: this.lead.Hospital_Name__c];
|
isAgencyOpp = true;
|
}
|
*/
|
// xudan 20140730 契約を選択する場合、そのまま出す、フラグ設定
|
else if (lead.Hospital_Name__r.Parent.RecordType.DeveloperName == 'Agency') {
|
departmentList = [select id, name from Account where Id =: lead.Hospital_Name__c];
|
isAgencyOpp = true;
|
}
|
else {
|
departmentList = [select id, name from Account where Id =: lead.Hospital_Name__c];
|
}
|
// 診療科選択リストの設定
|
List<SelectOption> depList = new List<SelectOption>();
|
// 2022-04-13 ssm 紧急应对 科室和客户人员必填 start
|
// this.depList.add(new SelectOption(NONE, NONE));
|
// 2022-04-13 ssm 紧急应对 科室和客户人员必填 end
|
Set<ID> depIdList = new Set<ID>();
|
for(Account d : departmentList){
|
depIdList.add(d.id);
|
depList.add(new SelectOption(String.valueOf(d.get('id')),String.valueOf(d.get('name'))));
|
}
|
// 2022-04-13 ssm 紧急应对 科室和客户人员必填 start
|
// this.sltDep = NONE;
|
// String sltDep = lead.Contact_Name__r.AccountId; // 2022-6-20 yjk 改为从联系人的科室赋值 原逻辑:this.lead.Hospital_Name__c;
|
String sltDep = lead.Hospital_Name__c; // 2022-6-20 yjk 改为从联系人的科室赋值 原逻辑:this.lead.Hospital_Name__c;
|
String sltCon = lead.Contact_Name__c;
|
// 2022-04-13 ssm 紧急应对 科室和客户人员必填 end
|
|
|
// 担当者リスト(初期設定)
|
Map<String,List<SelectOption>> conMap = new Map<String,List<SelectOption>>();
|
List<SelectOption> sltOptNasi = new List<SelectOption>();
|
// リード所有者の取得
|
User leadOnwer = [select Province_Text__c from User where Id = :lead.OwnerId];
|
|
// String oppID = null;
|
// if (String.isBlank(sltDep)) {
|
// return null;
|
// }
|
Account dept = null;
|
if(String.isNotBlank(lead.Contact_Name__c)){
|
dept = getDepartment(lead.Hospital_Name__c);
|
updateContact(lead.Contact_Name__c, dept);
|
}
|
return updateOpportunity(getDepartment(lead.Hospital_Name__c), lead, SI_Flg, isAgencyOpp, leadOnwer);
|
} catch(Exception ex) {
|
throw new ControllerUtil.myException(ex.getMessage());
|
}
|
}
|
|
/**
|
* 選択した診療科を取得
|
*/
|
public static Account getDepartment(String depId){
|
List<Account> deptList = [select Id, Hospital__c, Department_Class__c, Department_Class_Wd__c from Account where id =: depId];
|
// List<Account> deptList = [select Id, Hospital__c, Department_Class__c from Account where id =: this.sltDep];
|
Account dept = deptList[0];
|
return dept;
|
}
|
|
/** 取引先責任者の更新
|
* @param conID 取引先責任者ID
|
* @param dept 診療科
|
*/
|
public static void updateContact(ID conID, Account dept){
|
|
Contact cont = [select ID,Strategic_dept_Class__c from Contact where Id=:conID];
|
cont.Strategic_dept_Class__c = dept.Department_Class__c;
|
update cont;
|
}
|
|
/** 引合の更新
|
* @param dept 診療科
|
*/
|
public static String updateOpportunity(Account dept, Lead lead, Boolean SI_Flg, Boolean isAgencyOpp, User leadOnwer){
|
System.debug('dept:'+dept.Id + '|' + dept.Department_Class_Wd__c);
|
//SWAG-CEY8GZ 20220620 lt update
|
//Opportunity opp = [select ID, AccountId, Account.Department_Class_Wd__c, Opportunity_No__c, SAP_Province_CD__c, Opp_Number__c, Opp_Code__c from Opportunity where Id=:this.oppID];
|
Opportunity opp = new Opportunity();
|
opp.LeadSource = lead.LeadSource;
|
opp.AccountId = dept.Id;
|
|
//SWAG-CEY8GZ 20220620 lt update
|
system.debug('cccccccccccccccccccc:'+opp.SAP_Province_CD__c);
|
system.debug('cccccccccccccccccccc:'+opp.Opp_Number__c);
|
system.debug('cccccccccccccccccccc:'+opp.Opp_Code__c);
|
system.debug('cccccccccccccccccccc:'+opp.Opportunity_No__c);
|
String Opptype = SI_Flg==true?'SI询价':RC_OPP;
|
RecordType rect = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and Name =: Opptype limit 1];
|
opp.RecordTypeId = rect.id;
|
// opp.Opportunity_Category__c = opp.Account.Department_Class_Wd__c;
|
//SWAG-CKDATG fy 【委托】【OBSAP-报价委托】报价委托项目改善1 start
|
// opp.Opportunity_Category__c = dept.Department_Class_Wd__c;
|
opp.Opportunity_Category__c = lead.ET_Check__c ? 'ET' : dept.Department_Class_Wd__c;
|
opp.Opp_order_Type__c = lead.ET_Check__c ? 'ET' : null;
|
//SWAG-CKDATG fy 【委托】【OBSAP-报价委托】报价委托项目改善1 end
|
System.debug('this.lead.Hospital_Name__c:'+lead.Hospital_Name__c);
|
System.debug('this.lead.LeadSource:'+lead.LeadSource);
|
System.debug('this.lead.Other_Society__c:'+lead.Other_Society__c);
|
System.debug('this.lead.Purchase_Reason__c:'+lead.Purchase_Reason__c);
|
System.debug('this.lead.Trade__c:'+lead.Trade__c);
|
System.debug('this.lead.Sales_Root__c:'+lead.Sales_Root__c);
|
System.debug('this.lead.Close_Forecasted_Date__c:'+lead.Close_Forecasted_Date__c);
|
System.debug('this.lead.Competitor__c:'+lead.Competitor__c);
|
System.debug('this.lead.Hospital_Budget__c:'+lead.Hospital_Budget__c);
|
System.debug('this.lead.Promise_Class__c:'+lead.Promise_Class__c);
|
System.debug('this.lead.Dicision_Maker__c:'+lead.Dicision_Maker__c);
|
System.debug('this.lead.Purchase_Type__c:'+lead.Purchase_Type__c);
|
System.debug('this.lead.Sales_Method__c:'+lead.Sales_Method__c);
|
System.debug('this.lead.Fund_Basis__c:'+lead.Fund_Basis__c);
|
if(lead.Opp_Name__c != null && lead.Opp_Name__c != ''){
|
opp.Name = lead.Opp_Name__c;
|
}
|
else{
|
opp.Name = '*';
|
}
|
//20220412 SWAG-CBUB2W you start
|
opp.Inquiry_Num__c = lead.Inquiry_Num__c;
|
//20220412 SWAG-CBUB2W you end
|
opp.From_Lead_TF__c = true;
|
opp.Trade__c = (String.isBlank(lead.Trade__c)) ? '内貿' : lead.Trade__c;
|
opp.StageName = '引合';
|
opp.owner_not_automatically_update__c = lead.owner_not_automatically_update__c;
|
opp.Lead_Num__c = lead.Lead_No__c;
|
opp.Lead_CreateBy__c = lead.CreatedById;
|
opp.Lead_CreateDate__c = lead.CreatedDate;
|
opp.CurrencyIsoCode = 'CNY';
|
opp.Purchase_Type__c = 'SI(手術室案件)';
|
system.debug('dddddddddddddddddddddd:'+lead.owner_not_automatically_update__c);
|
Integer year = date.today().year();
|
Integer month = date.today().month();
|
Date nextMonthEndDay = date.newInstance(year, month, 1);
|
Date thisMonthEndDay = nextMonthEndDay.addMonths(1);
|
thisMonthEndDay = thisMonthEndDay.addDays(-1);
|
nextMonthEndDay = nextMonthEndDay.addMonths(2);
|
nextMonthEndDay = nextMonthEndDay.addDays(-1);
|
opp.Close_Forecasted_Date__c = lead.Close_Forecasted_Date__c;
|
opp.Close_Forecasted_Date__c = opp.Close_Forecasted_Date__c == null ? thisMonthEndDay : opp.Close_Forecasted_Date__c;
|
if (nextMonthEndDay > opp.Close_Forecasted_Date__c) {
|
opp.CloseDate = nextMonthEndDay;
|
} else {
|
opp.CloseDate = opp.Close_Forecasted_Date__c.addDays(30);
|
}
|
// xudan 20140730 販売店から引合をConvertする場合、Hospital__cをAccountIdを同じにする
|
if (isAgencyOpp) {
|
opp.Hospital__c = opp.AccountId;
|
} else {
|
opp.Hospital__c = dept.Hospital__c;
|
opp.Department_Class__c = dept.Department_Class__c;
|
}
|
//2021-07-08 mzy SWAG-C4H99E 询价中的来源更改 start
|
if('科室提案'.equals(lead.LeadSource) || 'OPD/SIS'.equals(lead.LeadSource)
|
|| '公共平台'.equals(lead.LeadSource) //测试环境 加的 对应的是 医拓网
|
|| '电话'.equals(lead.LeadSource) || '医拓网'.equals(lead.LeadSource) ){
|
opp.LeadSource = '直接拜访';
|
}else {
|
opp.LeadSource = lead.LeadSource;
|
}
|
//2021-07-08 mzy SWAG-C4H99E 询价中的来源更改 end
|
opp.Other_Society__c = lead.Other_Society__c;
|
opp.Purchase_Reason__c = lead.Purchase_Reason__c;
|
opp.Trade__c = (String.isBlank(lead.Trade__c)) ? '内貿' : lead.Trade__c;
|
// 增加默认值
|
opp.Sales_Root__c = String.isNotBlank(lead.Sales_Root__c) ? lead.Sales_Root__c : '販売店';
|
if (lead.Competitor__c != null && lead.Competitor__c != '') {
|
opp.Competitor__c = lead.Competitor__c;
|
}
|
if (lead.Opportunity_stage__c != null && lead.Opportunity_stage__c != '') {
|
opp.Opportunity_stage__c = lead.Opportunity_stage__c;
|
}
|
opp.Hospital_Budget__c = lead.Hospital_Budget__c;
|
// 增加默认值
|
opp.Promise_Class__c = String.isNotBlank(lead.Promise_Class__c) ? lead.Promise_Class__c : '内貿';
|
opp.Dicision_Maker__c = lead.Dicision_Maker__c;
|
//**********************************************************************************
|
opp.Purchase_Type__c = SI_Flg==true?'SI(手術室案件)':lead.Purchase_Type__c;
|
opp.Opportunity_sub_owner__c = lead.SI_OppoLeadSec__c;
|
//**********************************************************************************
|
opp.Sales_Method__c = lead.Sales_Method__c;
|
opp.Fund_Basis__c = lead.Fund_Basis__c;
|
//20230329 lt DB202303246427 --青岛拆分 -- 根据询“省(客户)”赋值SAP上传省 start
|
// opp.SAP_Province__c = this.leadOnwer.Province_Text__c;
|
System.debug('lt123---this.lead.Hospital_Name__r.Parent.Parent.OCM_man_province_HP__c:'+lead.Hospital_Name__r.Parent.Parent.OCM_man_province_HP__c);
|
Map<String,String> SAP_ProvinceMap = new Map<String,String>();
|
SAP_ProvinceMap.put('宁夏','宁夏自治区');
|
SAP_ProvinceMap.put('新疆','新疆自治区');
|
SAP_ProvinceMap.put('黑龙江','黑龙江省');
|
SAP_ProvinceMap.put('广西','广西自治区');
|
SAP_ProvinceMap.put('大连','大连市');
|
SAP_ProvinceMap.put('沈阳','辽宁省'); //暂时辽宁
|
SAP_ProvinceMap.put('广东','广东省');
|
SAP_ProvinceMap.put('深圳','深圳市');
|
SAP_ProvinceMap.put('青岛','青岛市');
|
SAP_ProvinceMap.put('山东','山东省');
|
SAP_ProvinceMap.put('四川/西藏','四川省');
|
SAP_ProvinceMap.put('安徽','安徽省');
|
SAP_ProvinceMap.put('北京','北京市');
|
SAP_ProvinceMap.put('福建','福建省');
|
SAP_ProvinceMap.put('甘肃','甘肃省');
|
SAP_ProvinceMap.put('贵州','贵州省');
|
SAP_ProvinceMap.put('河北','河北省');
|
SAP_ProvinceMap.put('河南','河南省');
|
SAP_ProvinceMap.put('湖北','湖北省');
|
SAP_ProvinceMap.put('湖南','湖南省');
|
SAP_ProvinceMap.put('吉林','吉林省');
|
SAP_ProvinceMap.put('江苏','江苏省');
|
SAP_ProvinceMap.put('江西','江西省');
|
SAP_ProvinceMap.put('青海','青海省');
|
SAP_ProvinceMap.put('山西','山西省');
|
SAP_ProvinceMap.put('陕西','陕西省');
|
SAP_ProvinceMap.put('上海','上海市');
|
SAP_ProvinceMap.put('天津','天津市');
|
SAP_ProvinceMap.put('云南','云南省');
|
SAP_ProvinceMap.put('浙江','浙江省');
|
SAP_ProvinceMap.put('重庆','重庆市');
|
SAP_ProvinceMap.put('海南','海南省');
|
//内蒙古一致
|
|
String SAP_Province = lead.Hospital_Name__r.Parent.Parent.OCM_man_province_HP__c;
|
if(SAP_ProvinceMap.containsKey(SAP_Province)){
|
SAP_Province = SAP_ProvinceMap.get(SAP_Province);
|
}
|
opp.SAP_Province__c = SAP_Province;
|
//20230329 lt DB202303246427 --青岛拆分 -- 根据询“省(客户)”赋值SAP上传省 end
|
opp.Owner_System__c = opp.OwnerId;
|
if(lead.OwnerId != null ){
|
opp.Ownerid = lead.OwnerId ;
|
}
|
opp.Wholesale_Price__c = lead.Wholesale_Price__c;
|
List<Lead> leadcList = [Select (Select CampaignId From CampaignMembers order by CreatedDate desc) From Lead l where l.id =: lead.Id];
|
for(Lead leadc : leadcList){
|
List<CampaignMember> cmList = leadc.CampaignMembers;
|
for (CampaignMember cm : cmList) {
|
opp.CampaignId = cm.CampaignId;
|
break;
|
}
|
}
|
System.debug('opp.Hospital_Name__c:'+opp.Hospital__c);
|
System.debug('dept12345:'+dept.Hospital__c);
|
System.debug('opp.LeadSource:'+opp.LeadSource);
|
System.debug('opp.Other_Society__c:'+opp.Other_Society__c);
|
System.debug('opp.Purchase_Reason__c:'+opp.Purchase_Reason__c);
|
System.debug('opp.Trade__c:'+opp.Trade__c);
|
System.debug('opp.Sales_Root__c:'+opp.Sales_Root__c);
|
System.debug('opp.Close_Forecasted_Date__c:'+opp.Close_Forecasted_Date__c);
|
System.debug('opp.Competitor__c:'+opp.Competitor__c);
|
System.debug('opp.Hospital_Budget__c:'+opp.Hospital_Budget__c);
|
System.debug('opp.Promise_Class__c:'+opp.Promise_Class__c);
|
System.debug('opp.Dicision_Maker__c:'+opp.Dicision_Maker__c);
|
System.debug('opp.Purchase_Type__c:'+opp.Purchase_Type__c);
|
System.debug('opp.Sales_Method__c:'+opp.Sales_Method__c);
|
System.debug('opp.Fund_Basis__c:'+opp.Fund_Basis__c);
|
System.debug('opp.SAP_Province__c:'+opp.SAP_Province__c);
|
|
// 2022-04-15 OBSAP新增修改 start
|
opp.CampaignId = lead.Campaign__c;
|
System.debug('opp.CampaignId:'+opp.CampaignId);
|
// 招标项目
|
if (String.isNotBlank(lead.Tender_information__c)) {
|
opp.Bidding_Project_Name_Bid__c = lead.Tender_information__c;
|
//SWAG-CEY8GZ 20220620 lt update
|
// 新建link
|
// Tender_Opportunity_Link__c link = new Tender_Opportunity_Link__c();
|
// link.Tender_information__c = this.lead.Tender_information__c;
|
// link.Opportunity__c = opp.Id;
|
// link.Tender_Opportunity_Uniq__c = String.valueOf(this.lead.Tender_information__c) + String.valueOf(opp.Id);
|
|
// insert link;
|
//SWAG-CEY8GZ 20220620 lt update
|
}
|
// 经销商询价
|
// 2022-05-20 调整经销商询价的更新顺序 ssm start
|
//SWAG-CEY8GZ 20220620 lt update
|
// Agency_Opportunity__c ao = null;
|
if (String.isNotBlank(lead.Agency_Opportunity__c)) {
|
opp.Agency_Opportunity__c = lead.Agency_Opportunity__c;
|
// 经销商询价绑定询价
|
// ao = [select Id, Change_To_Opportunity__c from Agency_Opportunity__c where Id = :this.lead.Agency_Opportunity__c];
|
// ao.Change_To_Opportunity__c = opp.Id;
|
}
|
|
// 2022-04-15 OBSAP新增修改 end
|
//update opp;
|
insert opp;
|
lead.Status = System.Label.StateChanges;
|
lead.begin_opp_name__c = opp.Id;
|
lead.begin_opp_date__c = Date.today();
|
update lead;
|
|
//SWAG-CEY8GZ 20220620 lt update
|
// 2022-05-20 调整经销商询价的更新顺序 ssm end
|
// //SWAG-CF589P【委托】【P:OBSAP】报价委托相关新需求评估 fy start
|
List<QuoteIrai__c> quoteir=[select id,Opportunity__c,Lead__c from QuoteIrai__c where Lead__c =:lead.Id];
|
List<QuoteIrai__c> quoteirupdate = new List<QuoteIrai__c>();
|
if(quoteir.size()>0){
|
for(QuoteIrai__c quo : quoteir){
|
if(quo.Opportunity__c==null||quo.Opportunity__c==''){
|
quo.Opportunity__c=opp.Id;
|
quoteirupdate.add(quo);
|
}
|
}
|
}
|
System.debug('leadId++'+lead.Id);
|
System.debug('quoteir++'+quoteir);
|
System.debug('quoteirupdate++'+quoteirupdate);
|
if(quoteirupdate.size()>0){
|
update quoteirupdate;
|
}
|
return opp.Id;
|
}
|
|
|
}
|