/**
|
* キャンペーンのトリガーです。
|
*/
|
trigger CampaignTriggerBefIns on Campaign (before insert, before update,after insert, after update) {
|
//可以多次执行trigger,触发多次 thh 2021-11-12 start
|
// 服务技师 2018/12/24 Start
|
CampaignTriggerBefInsHandler handler = new CampaignTriggerBefInsHandler();
|
handler.run();
|
//可以多次执行trigger,触发多次 thh 2021-11-12 end
|
// 服务技师 2018/12/24 end
|
//CHAN-BC69RE start 减少检索
|
// キャンペーン:内部トレーニングのレコードタイプを取得
|
ID campaignRC = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('Internal_training').getRecordTypeId();
|
|
// キャンペーンメンバー:内部向けのレコードタイプを取得FV
|
id campaignMemberRC =
|
Schema.SObjectType.CampaignMember.getRecordTypeInfosByDeveloperName().get('Internal_training_participants').getRecordTypeId();
|
// キャンペーンメンバー:外部向けのレコードタイプを取得
|
id campaignMemberOuterRC =
|
Schema.SObjectType.CampaignMember.getRecordTypeInfosByDeveloperName().get('Workshop').getRecordTypeId();
|
//CHAN-BC69RE end 减少检索
|
//SWAG-BSZ3VQ 【委托】学会导致取消申请单报错 精琢技术 wql 2020/08/31 start
|
//设置只进一次trigger
|
if(!StaticParameter.EscapeCampain){
|
|
List<Id> userIdList = new List<Id>();
|
if (Trigger.isBefore
|
// CHAN-BAN5BS 2019/03/27 start
|
//&& Trigger.isInsert
|
// CHAN-BAN5BS 2019/03/27 end
|
) {
|
for ( Campaign target : Trigger.New) {
|
userIdList.add(target.OwnerId);
|
}
|
}
|
Map<Id, User> userMap = new Map<Id, User>();
|
List<user> OwnerList = New List<user>();
|
// 服务技师 2018/12/24 Start
|
OwnerList = [SELECT Id, SalesManager__c, BuchangApprovalManagerSales__c,
|
JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c,
|
OCM_man_province__c, Province__c
|
FROM user WHERE id = :userIdList];
|
// 服务技师 2018/12/24 end
|
for (User u : OwnerList) {
|
userMap.put(u.Id, u);
|
}
|
// キャンペーンのレコードタイプに応じて、キャンペーンメンバーの
|
// レコードタイプを自動的に決定します。
|
list<ID> TargetOwnerId = new list<ID>();
|
|
if (Trigger.isBefore && Trigger.isInsert) {
|
|
for ( Campaign target : Trigger.New) {
|
target.LoadNum__c=''; //2020-10-23 zh 计划出借备品信息清空
|
if (String.isNotBlank(target.OwnerId)) {
|
TargetOwnerId.add(target.OwnerId);
|
}
|
if ( target.RecordTypeId == CampaignRC) {
|
// 内部トレーニングだった
|
target.CampaignMemberRecordTypeId = campaignMemberRC;
|
} else {
|
// 外部向けだった
|
target.CampaignMemberRecordTypeId = campaignMemberOuterRC;
|
}
|
// 经理、部长、总监审批
|
/**
|
* 服务技师 2018/12/24 Start
|
* 1、分别设置审批的经理、部长、总监是谁
|
* 2、设置服务技师的服务企划部窗口是谁
|
* 3、对应所在省为非直辖市的城市进行一一对应
|
*/
|
if (target.RecordTypeid != (ID) system.label.RecordType_CampaignService ) {
|
target.JingliApprovalManager__c = userMap.get(target.OwnerId).SalesManager__c;
|
target.BuchangApprovalManager__c = userMap.get(target.OwnerId).BuchangApprovalManagerSales__c;
|
target.ZongjianApprovalManager__c = userMap.get(target.OwnerId).ZongjianApprovalManager__c;
|
} else {
|
target.JingliApprovalManager__c = userMap.get(target.OwnerId).JingliApprovalManager__c == null ? target.OwnerId : userMap.get(target.OwnerId).JingliApprovalManager__c;
|
target.BuchangApprovalManager__c = userMap.get(target.OwnerId).BuchangApprovalManager__c == null ? target.OwnerId : userMap.get(target.OwnerId).BuchangApprovalManager__c;
|
target.ZongjianApprovalManager__c = userMap.get(target.OwnerId).ZongjianApprovalManager__c == null ? target.OwnerId : userMap.get(target.OwnerId).ZongjianApprovalManager__c;
|
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('1.华北')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_NC;
|
}
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('2.东北')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_NE;
|
}
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('3.西北')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_NW;
|
}
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('4.西南')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_SW;
|
}
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('5.华东')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_EC;
|
}
|
if (target.Salesdepartment__c != null && target.Salesdepartment__c.equals('6.华南')) {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_SC;
|
} else {
|
target.ServiceDesignDep__c = System.Label.ServiceDesignDep_NC;
|
}
|
target.Society_Type__c = '区域';
|
target.Open_scope__c = userMap.get(target.OwnerId).Province__c;
|
switch on userMap.get(target.OwnerId).Province__c {
|
when '深圳市' {
|
target.Open_scope__c = '广东省';
|
}
|
when '大连市' {
|
target.Open_scope__c = '辽宁省';
|
}
|
when '青岛市' {
|
target.Open_scope__c = '山东省';
|
}
|
when '海南省' {
|
target.Open_scope__c = '广东省';
|
}
|
when '西藏自治区' {
|
target.Open_scope__c = '四川省';
|
}
|
}
|
}
|
|
// 服务技师 2018/12/24 end
|
}
|
|
}
|
|
if (Trigger.isBefore && Trigger.isUpdate) {
|
List<String> CampaignId = new List<String>();
|
for ( Campaign campaign : Trigger.New) {
|
//判断状态变更时,才走更新的逻辑 SWAG-BSZ3VQ 【委托】学会导致取消申请单报错 精琢技术 wql start
|
//服务企划部窗口 只有新建的时候会设置 根据会议的8个审批流进行判断·
|
Campaign oldC = Trigger.oldMap.get(campaign.Id);
|
if(oldC.Status != Campaign.Status || Campaign.Status== '草案中'
|
||Campaign.Status== '计划提交' ||Campaign.Status=='报告提交' || Campaign.Status=='取消申请中'
|
||Campaign.Status=='时间修改申请中'||oldC.CostStatus__c != Campaign.CostStatus__c
|
||Campaign.CostStatus__c=='费用已提交'){
|
// CHAN-BAN5BS 2019/03/27 start
|
if (campaign.RecordTypeid != (ID) system.label.RecordType_CampaignService ) {
|
campaign.JingliApprovalManager__c = userMap.get(campaign.OwnerId).SalesManager__c;
|
campaign.BuchangApprovalManager__c = userMap.get(campaign.OwnerId).BuchangApprovalManagerSales__c;
|
campaign.ZongjianApprovalManager__c = userMap.get(campaign.OwnerId).ZongjianApprovalManager__c;
|
}else {
|
campaign.JingliApprovalManager__c = userMap.get(campaign.OwnerId).JingliApprovalManager__c == null ? campaign.OwnerId : userMap.get(campaign.OwnerId).JingliApprovalManager__c;
|
campaign.BuchangApprovalManager__c = userMap.get(campaign.OwnerId).BuchangApprovalManager__c == null ? campaign.OwnerId : userMap.get(campaign.OwnerId).BuchangApprovalManager__c;
|
campaign.ZongjianApprovalManager__c = userMap.get(campaign.OwnerId).ZongjianApprovalManager__c == null ? campaign.OwnerId : userMap.get(campaign.OwnerId).ZongjianApprovalManager__c;
|
}
|
// CHAN-BAN5BS 2019/03/27 end
|
|
//SWAG-B3U63C 2018/8/21 更新 OCM管理省的备品助理(提醒借用备品用) start
|
if (String.isNotBlank(campaign.OwnerId)) {
|
TargetOwnerId.add(campaign.OwnerId);
|
}
|
//SWAG-B3U63C 2018/8/21 更新 OCM管理省的备品助理(提醒借用备品用) end
|
|
Campaign old = Trigger.oldMap.get(campaign.Id);
|
if (campaign.Status != old.Status && campaign.Status == '取消申请中') {
|
CampaignId.add(campaign.Id);
|
}
|
}
|
//判断状态变更时,才走更新的逻辑 SWAG-BSZ3VQ 【委托】学会导致取消申请单报错 精琢技术 wql end
|
}
|
//wwp 减少SQL的使用 2021/08/26 start
|
if(CampaignId != null && CampaignId.size() > 0){
|
String userId = UserInfo.getUserId();
|
List<user> Useracc = New List<user>();
|
Useracc = [SELECT Id, ZongjianApprovalManager__c, BuchangApprovalManager__c FROM user WHERE id = :userId];
|
if(Useracc.size() > 0){
|
for(String cId : CampaignId){
|
Trigger.newMap.get(cId).ZongjianApprovalManager_CancleShen__c = Useracc[0].ZongjianApprovalManager__c;
|
Trigger.newMap.get(cId).BuchangApprovalManager_CancleShen__c = Useracc[0].BuchangApprovalManager__c;
|
}
|
}
|
}
|
//wwp 减少SQL的使用 2021/08/26 end
|
}
|
|
if (TargetOwnerId.size() > 0 ) {
|
//SWAG-B3U63C 2018/8/21 更新 OCM管理省的备品助理(提醒借用备品用) start
|
|
list<User> users = [select id, OCM_man_province_Rental__c
|
//OBPM 增加展示平台窗口LY 20211224 start
|
,OCM_man_province__c
|
//OBPM 增加展示平台窗口LY 20211224 end
|
from User where id in :TargetOwnerId];
|
//list<string> OCM_man_province_RentalName = new list<string>();
|
//OBPM 增加展示平台窗口LY 20211224 start
|
Map<ID, User> userProvinceMap = new Map<ID, User>();
|
//OBPM 增加展示平台窗口LY 20211224 end
|
if (users.size() > 0) {
|
for (User temUser : users ) {
|
//OCM_man_province_RentalName.add(temUser.OCM_man_province_Rental__c);
|
//OBPM 增加展示平台窗口LY 20211224 start
|
userProvinceMap.put(temUser.Id,temUser);
|
//OBPM 增加展示平台窗口LY 20211224 end
|
}
|
}
|
|
// Map<string, ID> OCM_Management_ProvinceMap = new Map<string, ID>();
|
//OBPM 增加展示平台窗口LY 20211224 start
|
Map<string, OCM_Management_Province__c> ocsmMap = new Map<string, OCM_Management_Province__c>();
|
List<OCM_Management_Province__c> temOCMList =[select ID, Name, Admin_assistant__c,
|
OnlinePlatformWindow1__c,
|
OnlinePlatformWindow2__c,
|
OnlinePlatformWindow3__c
|
from OCM_Management_Province__c];
|
//OBPM 增加展示平台窗口LY 20211224 end
|
// if (users.size() > 0) {
|
// for (OCM_Management_Province__c temOCMMP : [select ID, Name, Admin_assistant__c
|
// from OCM_Management_Province__c
|
// where Name in: OCM_man_province_RentalName]) {
|
// OCM_Management_ProvinceMap.put(temOCMMP.Name, temOCMMP.Admin_assistant__c);
|
// }
|
// }
|
if (temOCMList.size()>0) {
|
for (OCM_Management_Province__c ocmTemp :temOCMList) {
|
ocsmMap.put(ocmTemp.Name, ocmTemp);
|
}
|
}
|
// map<ID, ID> UserToAdmin_assistantMap = new map<ID, ID>();
|
// for (User temUser : users ) {
|
// UserToAdmin_assistantMap.put(temUser.id, OCM_Management_ProvinceMap.get(temUser.OCM_man_province_Rental__c));
|
|
// }
|
for ( Campaign target : Trigger.New) {
|
// ID Admin_assistantID = UserToAdmin_assistantMap.get(target.OwnerId);
|
// target.OCM_MP_Admin_assistant__c = Admin_assistantID;
|
target.OCM_MP_Admin_assistant__c = userProvinceMap.get(target.OwnerId) != null && ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province_Rental__c) != null ? ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province_Rental__c).Admin_assistant__c : null;
|
target.OnlinePlatformWindow1__c = userProvinceMap.get(target.OwnerId) != null && ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c) != null ? ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c).OnlinePlatformWindow1__c : null;
|
target.OnlinePlatformWindow2__c = userProvinceMap.get(target.OwnerId) != null && ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c) != null ? ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c).OnlinePlatformWindow2__c : null;
|
target.OnlinePlatformWindow3__c = userProvinceMap.get(target.OwnerId) != null && ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c) != null ? ocsmMap.get(userProvinceMap.get(target.OwnerId).OCM_man_province__c).OnlinePlatformWindow3__c : null;
|
}
|
|
//SWAG-B3U63C 2018/8/21 更新 OCM管理省的备品助理(提醒借用备品用) end
|
}
|
|
//设置跳过学会·培训trigger
|
StaticParameter.EscapeCampain =true;
|
//SWAG-BSZ3VQ 【委托】学会导致取消申请单报错 精琢技术 wql 2020/08/31 end
|
}
|
//SWAG-BSW9CP 【委托】紧急-南方分割申请单出现报错 精琢技术wql 2020/08/28 end
|
|
//LJPH-BSMB3M <委托>新疆领导无法审批当地OJT报告 精琢技术 wql 2020/08/19 start
|
if(!StaticParameter.shareToOSCMFlag){
|
if ((Trigger.isAfter && Trigger.isUpdate) ||(Trigger.isAfter && Trigger.isInsert) ) {
|
//共享
|
shareToOSCM();
|
StaticParameter.shareToOSCMFlag =true;
|
}
|
}
|
|
|
// 共享给经理 を取得、CampaignShareに設定(Read)
|
private void shareToOSCM() {
|
|
//存放(学会id,共享对象)
|
//Map<Id,CampaignShare> insertMap = new Map<Id,CampaignShare>();
|
Map<Id,List<CampaignShare>> insertMap = new Map<Id,List<CampaignShare>>();
|
//存放最后需要新增的共享数据
|
List<CampaignShare> lastInsertList = new List<CampaignShare>();
|
//存放已有的相同的共享原因的数据
|
List<Id> deleteTargetAOIdList = new List<Id>();
|
//存放用于的id
|
List<Id> userIdList = new List<Id>();
|
String rowCause = 'Manual';
|
//新增一个共享原因
|
// String rowCause = Schema.CampaignShare.RowCause.shareToUser__c;
|
System.debug('rowCause:'+rowCause);
|
String ownerCause = 'Owner';
|
//Apex共有の理由名shareToUser
|
for(Campaign nObj : Trigger.new) {
|
System.debug('经理:'+nObj.JingliApprovalManager__c);
|
//存放用于新增的共享数据
|
List<CampaignShare> insertList = new List<CampaignShare>();
|
if(nObj.JingliApprovalManager__c != null){
|
|
//SFDC-C54AWQ 【委托】 【phase5上线课题65】-紧急-审批备品申请时提示“保存记录时发生验证错误” wql 2021/07/20 start
|
//用户是否启用
|
CampaignShare aos = null;
|
CampaignShare aos1 = null;
|
if(nObj.JingliIsActive__c ==true){
|
//存放经理
|
aos = new CampaignShare(
|
RowCause = rowCause,
|
CampaignId = nObj.Id,
|
UserOrGroupId = nObj.JingliApprovalManager__c,
|
CampaignAccessLevel = 'Edit');
|
//存放要新增的共享数据
|
insertList.add(aos);
|
}
|
//用户是否启用
|
if(nObj.BuZhangIsActive__c==true){
|
//存放部长
|
aos1 = new CampaignShare(
|
RowCause = rowCause,
|
CampaignId = nObj.Id,
|
UserOrGroupId = nObj.BuchangApprovalManager__c,
|
CampaignAccessLevel = 'Edit');
|
//如果经理部长不相等 则需要共享部长 否则共享给一个人就行了
|
if(nObj.Is_JingliEqualBuzhang__c ==false){
|
insertList.add(aos1);
|
userIdList.add(nObj.BuchangApprovalManager__c);
|
}
|
}
|
//SFDC-C54AWQ 【委托】 【phase5上线课题65】-紧急-审批备品申请时提示“保存记录时发生验证错误” wql 2021/07/20 end
|
System.debug('key:'+nObj.Id);
|
//存放(学会id,共享对象);
|
//insertMap.put(nObj.Id,aos);
|
System.debug('insertList:'+insertList);
|
insertMap.put(nObj.Id,insertList);
|
|
//存放已有的相同的共享原因的数据
|
deleteTargetAOIdList.add(nObj.Id);
|
//存放用于的id
|
userIdList.add(nObj.JingliApprovalManager__c);
|
}
|
}
|
System.debug('insertMap:'+insertMap);
|
if(deleteTargetAOIdList.size()>0){
|
List<CampaignShare> deleteList = [SELECT Id FROM CampaignShare WHERE RowCause = :rowCause AND CampaignId IN :deleteTargetAOIdList];
|
// 先 Delete 后 Insert
|
if(deleteList.size() > 0){
|
delete deleteList;
|
}
|
}
|
|
|
//判断需要共享的人 是不是创建人 如果是则说明有一条这个人的owner数据 则不新增
|
if (insertMap!= null) {
|
List<CampaignShare> ownerList = [SELECT Id,CampaignId,UserOrGroupId
|
FROM CampaignShare
|
WHERE RowCause = :ownerCause
|
AND CampaignId IN :insertMap.keySet()
|
AND UserOrGroupId IN : userIdList
|
];
|
System.debug('ownerList:'+ownerList);
|
if(ownerList.size() > 0){
|
for( CampaignShare inq:ownerList){
|
String id = String.valueOf(inq.CampaignId);
|
System.debug('id:'+id);
|
if(insertMap.containsKey(id)){
|
insertMap.remove(inq.CampaignId);
|
}
|
}
|
}
|
|
}
|
|
//如果map为空的话,则说明不用新增,已经共享给所有人了
|
if(insertMap != null){
|
for(List<CampaignShare> qscrsList:insertMap.values()){
|
for(CampaignShare qscrs : qscrsList){
|
lastInsertList.add(qscrs);
|
}
|
}
|
}
|
System.debug('共享内容:' +lastInsertList);
|
if(lastInsertList.size() > 0){
|
insert lastInsertList;
|
}
|
|
}
|
//LJPH-BSMB3M <委托>新疆领导无法审批当地OJT报告 精琢技术 wql 2020/08/19 end
|
|
}
|