trigger SolutionProjectRequirementsTrigger on SolutionProjectRequirements__c(before insert,before update,after insert) {
|
|
if((trigger.isBefore && trigger.isInsert)||(trigger.isBefore && trigger.isUpdate)){
|
Set<String> accId = new Set<String>();
|
Set<String> userId = new Set<String>();
|
|
for(SolutionProjectRequirements__c sol :Trigger.new){
|
|
// LZHU-BR94XT 20200707 赵赐 start
|
//修改内容: 医院名称为空,从科室获取对应医院名称
|
if (sol.Hospital__c == null) {
|
// 获取赋值
|
sol.Hospital__c = sol.GetIdFromDepartment__c;
|
}
|
// LZHU-BR94XT 20200707 赵赐 end
|
|
// LZHU-BR94XT 20200707 赵赐 start
|
//修改内容: 从科室获取对应医院名称
|
// sol.Hospital__c = sol.GetIdFromDepartment__c;
|
// LZHU-BR94XT 20200707 赵赐 end
|
|
if(sol.Hospital__c != null){
|
accId.add(sol.Hospital__c);
|
}
|
|
|
if(sol.Submitter__c != null){
|
userId.add(sol.Submitter__c);
|
// if(sol.CreatedById != null){
|
// userId.add(sol.CreatedById);
|
// }
|
|
}
|
// 为营业担当赋值为创建人
|
if(trigger.isBefore && trigger.isInsert){
|
// if(sol.HospitalOwner__c == null ){
|
sol.HospitalOwner__c = UserInfo.getUserId();
|
if(sol.Submit_Date_YouWant__c < Date.today().addDays(3)){
|
sol.Submit_Date_YouWant__c.addError('希望提交日期不得小于三天,如紧急需求请邮件联络Solution担当');
|
}
|
// }
|
}
|
|
}
|
|
|
List<Account> acclist = [select id,Province_formula__c,GI_Main__c,BF_owner__c,Salesdepartment_HP__c from Account where id = :accId];
|
List<User> usrList = [select id,name,SalesManager__c from User where id = :userId];
|
Map<String,User> usrMap = new Map<String,User>();
|
Map<String,Account> accProMap = new Map<String,Account>();
|
// Map<String,User> userMap = new Map<String,User>();
|
for(Account acc :acclist){
|
accProMap.put(acc.Id, acc);
|
}
|
for(User usr : usrList){
|
usrMap.put(usr.Id, usr);
|
}
|
// 获取大区的最新编号
|
List<GIRSolutionAreaNumber__c> girAreaList = [select Id,Name,GIRSolutionXN__c,GIRSolutionXB__c,GIRSolutionDB__c,GIRSolutionHN__c,GIRSolutionHB__c,GIRSolutionHD__c from GIRSolutionAreaNumber__c];
|
Map<String,GIRSolutionAreaNumber__c> girAreaMap = new Map<String,GIRSolutionAreaNumber__c>();
|
for(GIRSolutionAreaNumber__c girarea : girAreaList){
|
// 根据OCSM期来找对应编号。
|
girAreaMap.put(girarea.Name, girarea);
|
}
|
for(SolutionProjectRequirements__c sol :Trigger.new){
|
|
// 判断OCSM期
|
Datetime ocsmDate = Datetime.now();
|
String ocsmPeriod = '';
|
|
if(sol.CreatedDate != null){
|
ocsmDate = sol.CreatedDate;
|
}
|
// 根据创建日期判断ocsm期
|
if(ocsmDate.month() == 1 || ocsmDate.month() == 2 || ocsmDate.month() == 3){
|
ocsmPeriod = ocsmPeriod = ocsmDate.year()-1868+'P';
|
}else{
|
ocsmPeriod = ocsmDate.year()-1867+'P';
|
}
|
if(accProMap.containsKey(sol.Hospital__c)){
|
// 为省字段赋值
|
sol.Province__c = accProMap.get(sol.Hospital__c).Province_formula__c;
|
// 为营业经理赋值
|
if(sol.Submitter__c != null){
|
|
// 为营业经理赋值
|
if(usrMap.containsKey(sol.Submitter__c)){
|
if(usrMap.get(sol.Submitter__c).SalesManager__c != null){
|
sol.sale_Manager__c = usrMap.get(sol.Submitter__c).SalesManager__c;
|
}else{
|
sol.sale_Manager__c = sol.Submitter__c;
|
}
|
|
}
|
|
|
}
|
// 为大区编号赋值
|
String salesdepartmentHP = accProMap.get(sol.Hospital__c).Salesdepartment_HP__c;
|
if(sol.Area_Number__c == '' || sol.Area_Number__c == null){
|
if(salesdepartmentHP == '1.华北'){
|
Decimal areaHB = girAreaMap.get(ocsmPeriod).GIRSolutionHB__c;
|
if(areaHB >= 1 && areaHB < 10){
|
sol.Area_Number__c = '00'+areaHB;
|
}else if(areaHB >= 10 && areaHB < 100){
|
sol.Area_Number__c = '0'+areaHB;
|
}else{
|
sol.Area_Number__c = ''+areaHB;
|
}
|
areaHB++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionHB__c = areaHB;
|
}else if(salesdepartmentHP == '2.东北'){
|
Decimal areaDB = girAreaMap.get(ocsmPeriod).GIRSolutionDB__c;
|
if(areaDB >= 1 && areaDB < 10){
|
sol.Area_Number__c = '00'+areaDB;
|
}else if(areaDB >= 10 && areaDB < 100){
|
sol.Area_Number__c = '0'+areaDB;
|
}else{
|
sol.Area_Number__c = ''+areaDB;
|
}
|
areaDB++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionDB__c = areaDB;
|
}else if(salesdepartmentHP == '3.西北'){
|
Decimal areaXB = girAreaMap.get(ocsmPeriod).GIRSolutionXB__c;
|
if(areaXB >= 1 && areaXB < 10){
|
sol.Area_Number__c = '00'+areaXB;
|
}else if(areaXB >= 10 && areaXB < 100){
|
sol.Area_Number__c = '0'+areaXB;
|
}else{
|
sol.Area_Number__c = ''+areaXB;
|
}
|
areaXB++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionXB__c = areaXB;
|
}else if(salesdepartmentHP == '4.西南'){
|
Decimal areaXN = girAreaMap.get(ocsmPeriod).GIRSolutionXN__c;
|
if(areaXN >= 1 && areaXN < 10){
|
sol.Area_Number__c = '00'+areaXN;
|
}else if(areaXN >= 10 && areaXN < 100){
|
sol.Area_Number__c = '0'+areaXN;
|
}else{
|
sol.Area_Number__c = ''+areaXN;
|
}
|
areaXN++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionXN__c = areaXN;
|
}else if(salesdepartmentHP == '5.华东'){
|
Decimal areaHD = girAreaMap.get(ocsmPeriod).GIRSolutionHD__c;
|
if(areaHD >= 1 && areaHD < 10){
|
sol.Area_Number__c = '00'+areaHD;
|
}else if(areaHD >= 10 && areaHD < 100){
|
sol.Area_Number__c = '0'+areaHD;
|
}else{
|
sol.Area_Number__c = ''+areaHD;
|
}
|
areaHD++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionHD__c = areaHD;
|
}else if(salesdepartmentHP == '6.华南'){
|
Decimal areaHN = girAreaMap.get(ocsmPeriod).GIRSolutionHN__c;
|
if(areaHN >= 1 && areaHN < 10){
|
sol.Area_Number__c = '00'+areaHN;
|
}else if(areaHN >= 10 && areaHN < 100){
|
sol.Area_Number__c = '0'+areaHN;
|
}else{
|
sol.Area_Number__c = ''+areaHN;
|
}
|
areaHN++;
|
girAreaMap.get(ocsmPeriod).GIRSolutionHN__c = areaHN;
|
}else{
|
// sol.Area_Number__c = 'ERROR';
|
}
|
}
|
|
}
|
|
//为GIR窗口赋值
|
if(sol.GIR_ID__c != '' && sol.GIR_ID__c != null){
|
sol.GIR_Assistant__c = sol.GIR_ID__c;
|
}
|
// 名称赋值
|
if(sol.NoHand_Writing__c != '' && sol.NoHand_Writing__c != null ){
|
sol.Name = sol.NoHand_Writing__c;
|
System.debug('=====1'+sol.OCM_period__c + '-' + sol.ProvinceAbbreviation__c + '-' + sol.Area_Number__c);
|
}else{
|
//20201225 you WLIG-BV8CHF start
|
System.debug('=====2'+sol.OCM_period_New__c+ '-' + sol.ProvinceAbbreviation__c + '-' + sol.Area_Number__c);
|
sol.Name = sol.OCM_period_New__c + '-' + sol.ProvinceAbbreviation__c + '-' + sol.Area_Number__c;
|
//20201225 you WLIG-BV8CHF end
|
}
|
//20220615 you XLIU-CFDB4C start
|
// 营业项目窗口赋值
|
if(sol.Salesdepartment_HP__c == '1.华北'){
|
sol.Sales_Assistant__c =System.Label.Solution_HB;//'00510000001OOLj';
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("肖 娜");
|
}else if(sol.Salesdepartment_HP__c == '2.东北'){
|
sol.Sales_Assistant__c =System.Label.Solution_DB;//'00510000001OOSZ';
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("金 丽华");
|
}else if(sol.Salesdepartment_HP__c == '3.西北'){
|
sol.Sales_Assistant__c =System.Label.Solution_XB;//'00510000007kteE';
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("王 喆");
|
}else if(sol.Salesdepartment_HP__c == '4.西南'){
|
sol.Sales_Assistant__c =System.Label.Solution_XN;//'00510000001OORm';
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("李 娟");
|
}else if(sol.Salesdepartment_HP__c == '5.华东'){
|
sol.Sales_Assistant__c =System.Label.Solution_HD;//'00510000000gW9G';
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("杨 剑清");
|
}else if(sol.Salesdepartment_HP__c == '6.华南'){
|
sol.Sales_Assistant__c =System.Label.Solution_HN;//'00510000001OOJy'; 改成位静
|
// urlStr += '&CF00Np00000045HcO=' + encodeURI("王 志锋");
|
}else{
|
//
|
}
|
//20220615 you XLIU-CFDB4C end
|
}
|
// 更新大区最新编号
|
// girAreaList[0].GIRSolutionHB__c = areaHB;
|
// girAreaList[0].GIRSolutionDB__c = areaDB;
|
// girAreaList[0].GIRSolutionXB__c = areaXB;
|
// girAreaList[0].GIRSolutionXN__c = areaXN;
|
// girAreaList[0].GIRSolutionHD__c = areaHD;
|
// girAreaList[0].GIRSolutionHN__c = areaHN;
|
List<GIRSolutionAreaNumber__c> girUpAreaList = new List<GIRSolutionAreaNumber__c>();
|
girUpAreaList = girAreaMap.values();
|
update girUpAreaList;
|
|
}
|
if(trigger.isBefore && trigger.isInsert){
|
Set<String> accId = new Set<String>();
|
Set<String> userId = new Set<String>();
|
for(SolutionProjectRequirements__c sol :Trigger.new){
|
if(sol.Hospital__c != null){
|
accId.add(sol.Department_Class__c);
|
}
|
// if(sol.CreatedById != null){
|
// userId.add(sol.CreatedById);
|
// }
|
|
// 为营业担当赋值为创建人
|
// if(sol.HospitalOwner__c == null ){
|
// sol.HospitalOwner__c = sol.CreatedById;
|
// }
|
}
|
// 取科室的战略科室担当
|
List<Account> acclist = [select id,Department_Class__r.Department_Class_Label__c,Department_Class__r.OwnerId,Department_Class__r.Owner.SalesManager__c,Hospital__r.GI_Main__c,Hospital__r.BF_Product_Leader__c,Hospital__r.BF_owner__c,Hospital__r.GI_Product_Leader__c,Hospital__r.ET_owner__c,Hospital__r.ET_Product_Leader__c,Hospital__r.SP_Main__c,Hospital__r.GS_Product_Leader__c,Hospital__r.URO_owner_ID__c,Hospital__r.URO_Produc_Leader__c,Hospital__r.GYN_owner__c,Hospital__r.GYN_Product_Leader__c,Hospital__r.ENT_owner_ID__c,Hospital__r.ENT_Product_Leader__c from Account where id = :accId];
|
// List<User> userList = [select id,name,SalesManager__c from User where id = :userId];
|
Map<String,Account> accProMap = new Map<String,Account>();
|
Map<String,String> accDepartMap = new Map<String,String>();
|
// Map<String,User> userMap = new Map<String,User>();
|
for(Account acc :acclist){
|
accProMap.put(acc.Id, acc);
|
if(acc.Department_Class__r.Department_Class_Label__c == '消化科'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.GI_Product_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == '呼吸科'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.BF_Product_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == '普外科' || acc.Department_Class__r.Department_Class_Label__c == '其他'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.GS_Product_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == '泌尿科'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.URO_Produc_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == '妇科'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.GYN_Product_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == '耳鼻喉科'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.ENT_Product_Leader__c);
|
}else if(acc.Department_Class__r.Department_Class_Label__c == 'ET'){
|
accDepartMap.put(acc.Id, acc.Hospital__r.ET_Product_Leader__c);
|
}else{
|
|
}
|
}
|
// for(User usr : userList){
|
// userMap.put(usr.Id, usr);
|
// }
|
for(SolutionProjectRequirements__c sol :Trigger.new){
|
// 科室对应的产品担当
|
String departProLeader = '';
|
if(accDepartMap.containsKey(sol.Department_Class__c)){
|
departProLeader = accDepartMap.get(sol.Department_Class__c);
|
sol.Product_Leader__c = departProLeader;
|
}
|
|
// 判断是否有权新建solution项目需求
|
// System.debug('======'+sol.CreatedById+'======'+accProMap.get(sol.Department_Class__c).Department_Class__r.OwnerId+'======'+accProMap.get(sol.Department_Class__c).Department_Class__r.Owner.SalesManager__c);
|
if(accProMap.containsKey(sol.Department_Class__c)){
|
// 如果不等于战略科室担当并且不等于战略科室担当经理推广的,报错不能创建。System.UserInfo.getUserId()
|
if(System.UserInfo.getUserId() != accProMap.get(sol.Department_Class__c).Department_Class__r.OwnerId && System.UserInfo.getUserId() != accProMap.get(sol.Department_Class__c).Department_Class__r.Owner.SalesManager__c && !departProLeader.contains(System.UserInfo.getName().replace(' ', ''))){
|
sol.addError('只允其战略科室主担当、产品担当及省经理创建solution项目需求!');
|
}
|
|
}
|
}
|
}
|
|
|
}
|