| New file |
| | |
| | | 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 |
| | | 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 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.Contact_Name__r.AccountId); |
| | | 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; |
| | | opp.SAP_Province__c = leadOnwer.Province_Text__c; |
| | | 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; |
| | | } |
| | | } |