//1.a 此单记录类型是备品中心且分单到备品中心 整单报错 不会进入此代码
|
//1.b 此单记录类型是备品中心且分单到备品中心 部分分单 之前逻辑
|
//1.c 此单记录类型是备品中心且分单到办事处 整单 之前手工修改的改逻辑
|
//1.d 此单记录类型是备品中心且分单到办事处 部分分单 之前逻辑
|
//2.a 此单记录类型是办事处且分单到备品中心 整单 提醒是否整单 新逻辑
|
//2.b 此单记录类型是办事处且分单到备品中心 部分分单 新逻辑
|
//2.c 此单记录类型是办事处且分单到办事处 整单 提醒是否整单 新逻辑
|
//2.d 此单记录类型是办事处且分单到办事处 部分分单 新逻辑
|
public without sharing class RentalApplySplitController {
|
|
/*--------- private ---------*/
|
private Id objId {get; set;} // 申请单ID
|
private String raesIds {get; set;} // 被选中的一览记录Id
|
|
/*--------- public(画面表示用) ---------*/
|
public Rental_Apply__c ra {get; private set;} // objId的源申请单
|
public List<Rental_Apply_Equipment_Set__c> raesList {get; set;} // 符合分单条件的被选中的一览记录
|
public String saveStatus {get; set;} // 分单结果: 'ok'--成功
|
public String errorMessage;
|
public Rental_Apply__c cloneRas {get; set;} // 分单后新建的申请单
|
public Boolean allSplitFlag {get; set;} // 整单分单 20210528 ljh add 1732
|
public Boolean NGFlag {get; set;} // 到货NG分单 20210528 ljh add 1732
|
public Boolean rootStatusFlag {get; set;} // 源申请root是否发货/取消(true 发货/取消) 20210528 ljh add 1732
|
public Boolean CrossRegionAssignFlag {get; set;} // 源申请root是否跨区域分配 20210618 ljh add 1732
|
public Boolean allSplitShow {get; set;} // 全选一览是显示弹框 20210527 ljh add 1732
|
public Integer SplitNum {get; set;} // 分单数字化 20210609 ljh add 1732
|
public Boolean RecordTypeIsAgency {get; set;} // 当前单是否是记录类型 20210527 ljh add 1732
|
public String rootRaId; // 全局化 20210609 ljh add 1732
|
private static final Map<String,Schema.RecordTypeInfo> DEVELOPERNAMEMAP = Schema.SObjectType.Rental_Apply__c.getRecordTypeInfosByDeveloperName();//记录类型
|
/**
|
* @description RentalApplySplitController Class的构造函数
|
* @param objId 申请单ID
|
* @param raesIds 被选中的一览记录Id
|
**/
|
public RentalApplySplitController() {
|
this.objId = ApexPages.currentPage().getParameters().get('objId');
|
this.raesIds = ApexPages.currentPage().getParameters().get('raesIds');
|
//20210527 ljh add 1732 start
|
allSplitFlag = false;
|
NGFlag = false;
|
rootStatusFlag = false;
|
allSplitShow = false;
|
RecordTypeIsAgency = false;
|
CrossRegionAssignFlag = false;
|
//20210527 ljh add 1732 end
|
}
|
|
/**
|
* @description RentalApplySplitController 初始化方法
|
**/
|
public void init() {
|
|
try{
|
if (String.isBlank(this.objId)) {
|
throw new ControllerUtil.myException('请设置备品借出申请的Id');
|
}
|
if (String.isBlank(this.raesIds)) {
|
throw new ControllerUtil.myException('请设置备品借出申请一览的Id');
|
}
|
// 1.判断是否存在页面传过来Id对应的申请单记录 & 状态和Id都符合的选中一览记录
|
List<Rental_Apply__c> raList = getRa();
|
if (raList.size() == 0) {
|
throw new ControllerUtil.myException('没有检索出备品借出申请');
|
}
|
this.ra = raList[0];
|
//20210607 ljh add start
|
if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()){
|
RecordTypeIsAgency = true;
|
}
|
//20210607 ljh add end
|
// 2.新建申请单,选中的一览记录转移到新的申请单
|
this.cloneRas = ra.clone();
|
this.cloneRas.ToAgency__c = null;
|
this.cloneRas.Split_Apply_Reason__c = null;
|
// 3.判断当前申请单&选中一览是否符合分单条件
|
checkRAES(true);
|
//20210608 ljh update 1732 start
|
//20201119 ljh OCSM_BP5-60 update start
|
// 分单页面分单理由初始为空
|
//this.cloneRas.Split_Apply_Reason__c = null;
|
// 5.当前记录类型是【备品申请(办事处)】一览选择的都是收货NG,分单理由只能是【到货NG分单】
|
// if(cloneRas.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()){
|
// this.cloneRas.Split_Apply_Reason__c = '到货NG分单';
|
// this.SplitApplyReasonFlag = true;
|
// }else{
|
// // 分单页面分单理由初始为空
|
// this.cloneRas.Split_Apply_Reason__c = null;
|
// }
|
//20201119 ljh OCSM_BP5-60 update end
|
//20210608 ljh update 1732 start
|
this.cloneRas.SalesdeptSelect__c = this.cloneRas.Salesdept__c;//20201117 ljh add 不同本部分配不同办事处
|
} catch (ControllerUtil.myException me) {
|
System.debug('myException caught when init: ' + me.getMessage());
|
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, me.getMessage()));
|
errorMessage = me.getStackTraceString();
|
return;
|
} catch (Exception e) {
|
System.debug('Exception caught when init: ' + e.getStackTraceString());
|
ApexPages.addMessages(e);
|
errorMessage = e.getStackTraceString();
|
return;
|
}
|
}
|
|
/**
|
* @description 保存分单理由
|
**/
|
public PageReference saveSplit() {
|
Savepoint sp = Database.setSavepoint();
|
try {
|
allSplitShow = false;
|
List<Rental_Apply__c> lockRaList = [
|
select Id, Name
|
from Rental_Apply__c
|
where Id = :ra.Id
|
for update];
|
|
if (lockRaList.size() <> 1) {
|
throw new ControllerUtil.myException('源数据('+ ra.Name +') 已经被其他用户操作,请重试');
|
}
|
//20210610 ljh 1732 add start
|
if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c) && !cloneRas.Split_Apply_Reason__c.equals('现地管理分单')
|
){
|
//备品中心->备品中心
|
List<Rental_Apply_Equipment_Set__c> tempList = [select RAES_Status__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c =:this.objId];
|
if(tempList.size() == 1){
|
throw new ControllerUtil.myException('这个申请单只有一条借出备品一览,不能分单');
|
}else if(tempList.size() == this.raesIds.split(',').size()){
|
throw new ControllerUtil.myException('不能全选借出备品一览分单');
|
}
|
}
|
//20210610 ljh 1732 add end
|
|
// 20210609 ljh update 1732 start
|
// 保存前再次判断当前申请单&选中一览是否符合分单条件
|
// String rootRaId = checkRAES(true);
|
rootRaId = checkRAES(true);
|
// 20210609 ljh update 1732 end
|
//20201207 ljh add start
|
if(cloneRas.Split_Apply_Reason__c != null && cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
if(cloneRas.ToAgency__c == null){
|
throw new ControllerUtil.myException('分单理由选择【现地管理分单】时,分配办事处选项必须选择!');
|
}
|
}else if(cloneRas.RecordTypeId != DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId() && cloneRas.Split_Apply_Reason__c !=null && !cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
if(cloneRas.ToAgency__c != null){
|
throw new ControllerUtil.myException('分单理由 非【现地管理分单】且记录类型非【备品申请(办事处)】时,分配办事处不应有值!');
|
}
|
}
|
//20201207 ljh add end
|
//20210528 ljh 1732 add start
|
if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c)){
|
// 办事处->XXX
|
if(cloneRas.Split_Apply_Reason__c.equals('分批发货分单') || cloneRas.ToAgency__c == null){
|
//办事处->备品中心
|
SplitNum = 1;
|
}else if(cloneRas.ToAgency__c != null){
|
//办事处->办事处
|
//是否是同一办事处
|
if(cloneRas.Split_Apply_Reason__c.equals('现地管理分单') && cloneRas.ToAgency__c == this.ra.ToAgency__c){
|
throw new ControllerUtil.myException('不能选择同一办事处');
|
}
|
SplitNum = 2;
|
}
|
if(NGFlag){
|
//1.满足 到货NG重新发货
|
if(!cloneRas.Split_Apply_Reason__c.equals('到货NG分单')){
|
throw new ControllerUtil.myException('此单有到货NG一览,分单理由只能是【到货NG分单】');
|
}
|
}
|
}else {
|
// if(NGFlag){
|
// //1.满足 到货NG重新发货
|
// if(!cloneRas.Split_Apply_Reason__c.equals('到货NG分单')){
|
// throw new ControllerUtil.myException('此单有到货NG一览,分单理由只能是【到货NG分单】');
|
// }
|
// }
|
SplitNum = 3;
|
}
|
if(allSplitFlag && !(cloneRas.Split_Apply_Reason__c.equals('到货NG分单') && cloneRas.ToAgency__c == this.ra.ToAgency__c)){
|
allSplitShow = true;
|
}else{
|
String statusMessage = addAndUpdate(rootRaId);
|
if (statusMessage != '1') {
|
throw new ControllerUtil.myException(statusMessage);
|
}
|
saveStatus = 'ok';
|
}
|
//20210528 ljh 1732 add end
|
// String statusMessage = addAndUpdate(rootRaId);
|
// if (statusMessage != '1') {
|
// throw new ControllerUtil.myException(statusMessage);
|
// }
|
// saveStatus = 'ok';
|
|
} catch (ControllerUtil.myException me) {
|
Database.rollback(sp);
|
System.debug('myException caught when save: ' + me.getMessage());
|
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, me.getMessage()));
|
saveStatus = 'ng';
|
errorMessage = me.getStackTraceString();
|
} catch (DmlException de) {
|
Database.rollback(sp);
|
System.debug('DmlException caught when save: ' + de.getMessage());
|
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, de.getMessage()));
|
saveStatus = 'ng';
|
errorMessage = de.getStackTraceString();
|
} catch (Exception e) {
|
Database.rollback(sp);
|
System.debug('Exception caught when save: ' + e.getStackTraceString());
|
ApexPages.addMessages(e);
|
saveStatus = 'ng';
|
errorMessage = e.getStackTraceString();
|
}
|
return null;
|
}
|
//20210609 ljh add 1732 start
|
/**
|
* 选择全部一览的时候保存分单理由等
|
**/
|
public void saveSplitAll() {
|
Savepoint sp = Database.setSavepoint();
|
try {
|
String statusMessage = addAndUpdate(rootRaId);
|
if (statusMessage != '1') {
|
throw new ControllerUtil.myException(statusMessage);
|
}
|
saveStatus = 'ok';
|
} catch (ControllerUtil.myException me) {
|
Database.rollback(sp);
|
System.debug('myException caught when save: ' + me.getMessage());
|
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, me.getMessage()));
|
saveStatus = 'ng';
|
errorMessage = me.getStackTraceString();
|
}
|
}
|
//20210609 ljh add 1732 end
|
/**
|
* 选中一览记录是否符合分单条件判断
|
* @param throwErrorFlg
|
* @return 最原始申请单Id
|
**/
|
private String checkRAES(Boolean throwErrorFlg) {
|
|
// 判断是否存在状态和Id和父申请单都符合的选中一览记录
|
String[] ids = raesIds.split(',');
|
|
// 分单条件之一览状态--'待分配', '排队中', '暂定分配', '已分配', '已出库指示', '已下架', '出库前已检测'
|
Set<String> statusRaesSet = new Set<String>{FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Dai_Fen_Pei.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Pai_Dui_Zhong.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Zan_Ding_Fen_Pei.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Yi_Fen_Pei.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Yi_Chu_Ku_Zhi_Shi.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Yi_Xia_Jia.ordinal()),
|
FixtureUtil.raesStatusMap.get(FixtureUtil.RaesStatus.Chu_Ku_Qian_Yi_Jian_Ce.ordinal())};
|
|
this.raesList = [
|
SELECT Id, Name,RAES_Status__c, Loaner_code_F__c, Rental_Apply__c, Old_Rental_Apply__c ,
|
Rental_Apply__r.DeliverySlip__c,Rental_Apply__r.RA_Status__c, //20210528 ljh add 1732
|
Old_Rental_Apply__r.DeliverySlip__c,Old_Rental_Apply__r.RA_Status__c, //20210528 ljh add 1732
|
Rental_Apply__r.Cross_Region_Assign__c ,Old_Rental_Apply__r.Cross_Region_Assign__c ,//20210528 ljh add 1732
|
Received_NG_ReAssign__c, Rental_Apply__r.RecordTypeId //20201119 ljh OCSM_BP5-60 add
|
FROM Rental_Apply_Equipment_Set__c
|
WHERE Id in :ids
|
AND Rental_Apply__c = :this.objId
|
AND RAES_Status__c in :statusRaesSet];
|
// 防止对一条一览进行多次分单,有可能分单后源申请单页面未刷新
|
for (Rental_Apply_Equipment_Set__c raes : this.raesList) {
|
if (throwErrorFlg && raes.Rental_Apply__c != this.objId) {
|
throw new ControllerUtil.myException('已选一览已被分到其他申请单');
|
}
|
//20201119 ljh OCSM_BP5-60 add start
|
// else{
|
// // 5.当前记录类型是【备品申请(办事处)】一览选择的都是收货NG,分单理由只能是【到货NG分单】
|
// if(raes.Rental_Apply__r.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId() && !raes.Received_NG_ReAssign__c){
|
// throw new ControllerUtil.myException('请选择符合条件的一览!');
|
// }
|
// }
|
//20201119 ljh OCSM_BP5-60 add end
|
//20210528 ljh add 1732 start
|
else{
|
// 5.当前记录类型是【备品申请(办事处)】一览选择的都是收货NG,分单理由只能是【到货NG分单】
|
// if(raes.Rental_Apply__r.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId() && raes.Received_NG_ReAssign__c){
|
if(raes.Received_NG_ReAssign__c){
|
NGFlag = true;
|
}
|
}
|
//20210528 ljh add 1732 end
|
}
|
|
//20201119 ljh OCSM_BP5-60 add start
|
// 5.当前记录类型是【备品申请(办事处)】一览选择的都是收货NG,分单理由只能是【到货NG分单】
|
// if(cloneRas.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()){
|
// this.cloneRas.Split_Apply_Reason__c = '到货NG分单';
|
// }
|
//20201119 ljh OCSM_BP5-60 add end
|
|
if (throwErrorFlg && raesList.size() != ids.size()) {
|
throw new ControllerUtil.myException('已选一览状态不符合分单条件');
|
}
|
//20210528 ljh update 1732 start
|
// rootRaId: 最原始申请单Id
|
String rootRaId = raesList[0].Old_Rental_Apply__c;
|
// if (String.isBlank(raesList[0].Old_Rental_Apply__c)) {
|
// rootRaId = raesList[0].Rental_Apply__c;
|
// }
|
String rootStatus ;
|
String rootDeliverySlip ;
|
String CrossRegionAssign;
|
if (String.isBlank(raesList[0].Old_Rental_Apply__c)) {
|
rootRaId = raesList[0].Rental_Apply__c;
|
rootStatus = raesList[0].Rental_Apply__r.RA_Status__c;
|
rootDeliverySlip = raesList[0].Rental_Apply__r.DeliverySlip__c;
|
CrossRegionAssign = raesList[0].Rental_Apply__r.Cross_Region_Assign__c;
|
} else{
|
//源单状态
|
rootStatus = raesList[0].Old_Rental_Apply__r.RA_Status__c;
|
rootDeliverySlip = raesList[0].Old_Rental_Apply__r.DeliverySlip__c;
|
CrossRegionAssign = raesList[0].Old_Rental_Apply__r.Cross_Region_Assign__c;
|
}
|
if(String.isNotBlank(rootDeliverySlip) || rootStatus == '取消'){
|
rootStatusFlag = true;
|
}
|
if(String.isNotBlank(CrossRegionAssign)){
|
CrossRegionAssignFlag = true; //跨区域分配
|
}
|
//20210528 ljh update 1732 end
|
//1.a 此单记录类型是备品中心且分单到备品中心 有此提醒
|
// RentalApplyEquipmentSetHandler handler = new RentalApplyEquipmentSetHandler();
|
Set<String> raIds = new Set<String>{this.objId};
|
Set<String> emptyRaObjs = RentalApplyEquipmentSetHandler.checkRentalApplyNotExistRAES(raesList, raIds); // raesList为页面选中一览
|
if (emptyRaObjs.size() != 0) {
|
//202100608 ljh update 1732 start
|
// throw new ControllerUtil.myException('这个申请单下必须要有一条借出备品一览,不能分单了');
|
if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c) && !cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
throw new ControllerUtil.myException('这个申请单下必须要有一条借出备品一览,不能分单了');
|
}
|
allSplitFlag = true;
|
//20210608 ljh update 1732 end
|
}
|
//20201207 ljh add start
|
List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [
|
SELECT Id, Name,FSD_Is_OneToOne_F__c,Is_Body__c,Asset__c
|
FROM Rental_Apply_Equipment_Set_Detail__c
|
WHERE Rental_Apply_Equipment_Set__c in :ids
|
AND Rental_Apply__c = :this.objId];
|
for(Rental_Apply_Equipment_Set_Detail__c raesd:raesdList){
|
//2.如果分单的一览有已经分配或者暂定分配的话(Asset__c有值不能分配)
|
if(
|
(
|
(cloneRas.Split_Apply_Reason__c != null && cloneRas.Split_Apply_Reason__c.equals('现地管理分单'))
|
|| this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()
|
)
|
&& String.isNotBlank(raesd.Asset__c)
|
){
|
throw new ControllerUtil.myException('一览有已经分配或者暂定分配的话,不能分单了');
|
}
|
}
|
//20201207 ljh add end
|
|
return rootRaId;
|
}
|
/**
|
* @description 新建申请单,更改选中一览与申请单的联系 20210408 ljh update 如果有先新建opd计划在新建申请单
|
* @param rootRaId 最原始申请单Id
|
* @return String 操作成功返回‘1’,失败返回message
|
*/
|
private String addAndUpdate(String rootRaId) {
|
// 1.获取rootRaList[0] -- 当前申请单对应的最原始的申请单
|
List<Rental_Apply__c> rootRaList = [
|
select Id, Name
|
from Rental_Apply__c
|
where Id = :rootRaId];
|
|
if (rootRaList.size() == 0) {
|
throw new ControllerUtil.myException('最原始申请单('+ ra.Name +') 已经不存在,请确认数据。');
|
}
|
String[] ids = raesIds.split(','); // 选中一览id
|
List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select Id, Rental_Apply_Equipment_Set__c
|
from Rental_Apply_Equipment_Set_Detail__c
|
where Rental_Apply_Equipment_Set__c in :ids];
|
if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c) && !cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
// 1.分批发货分单 2.到货NG分单
|
//办事处->备品中心 分批发货分单 OR 到货NG时 办事处->办事处/备品中心
|
if(cloneRas.Split_Apply_Reason__c.equals('分批发货分单')) {
|
if(
|
((ra.Old_Rental_Apply__c == null || rootStatusFlag)
|
||(CrossRegionAssignFlag && !rootStatusFlag))
|
&& allSplitFlag){
|
// 整单 (发货或者取消)或者本身就是整单到办事处的 更改 修改记录类型为 备品申请
|
// 整单 1.并且 root单 没有(发货或者取消) && 跨区域 并会源申请单 2.当前单取消
|
this.ra.SplitUser__c = null;
|
this.ra.RecordTypeId = DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId();
|
this.ra.ToAgency__c = null;
|
this.ra.Split_Apply_Reason__c = ra.Old_Rental_Apply__c == null?null:cloneRas.Split_Apply_Reason__c;
|
this.ra.Office_Assistant1__c = null;
|
this.ra.Office_Assistant2__c = null;
|
this.ra.SalesdeptSelect__c = null;
|
this.ra.Cross_Region_Assign__c = null;
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{this.ra});
|
return '1';
|
}else if(!rootStatusFlag && !CrossRegionAssignFlag){
|
// 整单 1.并且 root单 没有(发货或者取消) && 未跨区域 并会源申请单 2.当前单取消
|
// 部分 1.并且 root单 没有(发货或者取消) && 未跨区域 并会源申请单
|
// 1. 选中分单的一览与root申请单关联
|
for (Rental_Apply_Equipment_Set__c updRaesObj : this.raesList) {
|
updRaesObj.Old_Rental_Apply__c = null; // 最源申请单Link
|
updRaesObj.Rental_Apply__c = rootRaList[0].Id;
|
}
|
// 2. 配套明细分割到新申请单,明细的Name在RentalApplyEquipmentSetDetailHandler中更新
|
FixtureUtil.withoutUpdate(this.raesList);
|
if (raesdList.size() > 0) {
|
for (Rental_Apply_Equipment_Set_Detail__c raesdObj : raesdList) {
|
raesdObj.Rental_Apply__c = rootRaList[0].Id;
|
}
|
FixtureUtil.withoutUpdate(raesdList);
|
}
|
if(allSplitFlag){
|
//3.当前单取消
|
// 20210823 ljh SFDC-C448KZ start
|
// RentalApplyCancelController rac = new RentalApplyCancelController();
|
// rac.objId = objId;
|
// rac.ra = ra;
|
// rac.ra.Cancel_Reason__c = '主动取消';
|
// rac.ra.Loaner_cancel_reason__c = '申请单合并';
|
// rac.ra.Loaner_cancel_request__c = '申请单合并';
|
// rac.saveCancel();
|
this.ra.Cancel_Reason__c = '主动取消';
|
this.ra.Loaner_cancel_reason__c = '申请单合并';
|
this.ra.Loaner_cancel_request__c = '申请单合并';
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{this.ra});
|
// 20210823 ljh SFDC-C448KZ start
|
|
}
|
return '1';
|
}else if((rootStatusFlag ||(!rootStatusFlag && CrossRegionAssignFlag)) && !allSplitFlag){
|
// 部分 1.并且 root单 (发货或者取消) 新建申请书 办事处无值 修改记录类型为 备品申请 清空相关信息
|
// 部分 1.并且 root单 没有(发货或者取消) && 跨区域 新建申请 清空跨区域字段
|
cloneRas.RecordTypeId = DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId();
|
cloneRas.ToAgency__c = null;
|
cloneRas.SplitUser__c = null;
|
cloneRas.Office_Assistant1__c = null;
|
cloneRas.Office_Assistant2__c = null;
|
cloneRas.SalesdeptSelect__c = null;
|
cloneRas.Cross_Region_Assign__c = null;
|
}
|
} else if(cloneRas.Split_Apply_Reason__c.equals('到货NG分单')){
|
//到货NG分单 新建申请书 办事处有值 记录类型等不修改 分单原因及办事处按照页面上写的
|
//到货NG分单 新建申请书 办事处无值 修改记录类型为 备品申请 清空相关信息
|
if(allSplitFlag){
|
if(String.isBlank(cloneRas.ToAgency__c)){
|
this.ra.RecordTypeId = DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId();
|
this.ra.ToAgency__c = null;
|
this.ra.Office_Assistant1__c = null;
|
this.ra.Office_Assistant2__c = null;
|
this.ra.SplitUser__c = null;
|
this.ra.SalesdeptSelect__c = null;
|
this.ra.Cross_Region_Assign__c = null;
|
}else{
|
this.ra.ToAgency__c = cloneRas.ToAgency__c;
|
this.ra.SplitUser__c = UserInfo.getUserId();
|
}
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{this.ra});
|
return '1';
|
}else{
|
if(String.isBlank(cloneRas.ToAgency__c)){
|
cloneRas.RecordTypeId = DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId();
|
cloneRas.ToAgency__c = null;
|
cloneRas.SplitUser__c = null;
|
cloneRas.Office_Assistant1__c = null;
|
cloneRas.Office_Assistant2__c = null;
|
cloneRas.SalesdeptSelect__c = null;
|
cloneRas.Cross_Region_Assign__c = null;
|
}
|
}
|
}
|
}else if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c) && cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
//办事处->办事处 现地管理分单
|
//记录类型不变
|
if(allSplitFlag){
|
//不新建申请书 修改 分配办事处
|
this.ra.ToAgency__c = cloneRas.ToAgency__c;
|
this.ra.SplitUser__c = UserInfo.getUserId();
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{this.ra});
|
return '1';
|
}
|
//else 新建申请书
|
}else if(this.ra.RecordTypeId == DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId()
|
&& !String.isBlank(cloneRas.Split_Apply_Reason__c) && cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
//备品中心->办事处 现地管理分单
|
if(allSplitFlag){
|
//整单 不新建申请书 修改记录类型为 备品申请(办事处) 、分配办事处等
|
if (raesdList.size() > 0) {
|
for (Rental_Apply_Equipment_Set_Detail__c raesdObj : raesdList) {
|
//3.如果有排队中的清除排队信息
|
raesdObj.Queue_Conment__c = null;
|
raesdObj.Queue_Day__c = null;
|
raesdObj.Queue_Time__c = null;
|
raesdObj.Queue_User__c = null;
|
// raesdObj.Queue_Day_Text__c = null; //20210913 you SFDC-C6E3WQ
|
raesdObj.Queue_Number__c = null;
|
}
|
FixtureUtil.withoutUpdate(raesdList);
|
}
|
this.ra.SplitUser__c = UserInfo.getUserId();
|
this.ra.SalesdeptSelect__c = this.ra.Salesdept__c;
|
this.ra.ToAgency__c = cloneRas.ToAgency__c;
|
this.ra.Split_Apply_Reason__c = cloneRas.Split_Apply_Reason__c;
|
this.ra.RecordTypeId = DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId();
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{this.ra});
|
return '1';
|
}
|
// 代码547行左右【4.办事处分配分单出来的备品借出申请,数据类型需要修改】有写~
|
// else{
|
// //部分分单 新建申请书 修改记录类型为 备品申请(办事处) 、分配办事处等
|
// cloneRas.RecordTypeId = DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId();
|
// cloneRas.SplitUser__c = UserInfo.getUserId();
|
// }
|
}
|
//20210531 ljh add 1732 end
|
//20210408 ljh add start
|
OPDPlan__c cloneOPD = new OPDPlan__c();
|
if(cloneRas.OPDPlan__c != null){
|
List<OPDPlan__c> opdList = [SELECT Id,
|
OwnerId, //所有人
|
//Status__c, //状态
|
OPDPlan_ImplementDate__c, //OPD计划实施日期
|
OPDPlan_ImplementDate_temp__c, // OPD计划实施日期(Temp)
|
Activity_Type2__c, //拜访区分
|
Account_Laboratory__c, //科室
|
//OPDPlan_Report__c, //报告书 //2021-12-28 mzy OPD计划改善
|
Campaign__c, //学会
|
Related_Opportunity1_ID__c, //跟进询价ID1
|
Related_Opportunity2_ID__c, //跟进询价ID2
|
NoOpp_Reason__c,//无询价申请理由
|
OPDType__c, //OPD计划来源
|
SalesManager__c, //推广经理
|
SalesManager_Txt__c, //推广经理(文本)
|
PlanProdDetail__c, //计划出借备品信息
|
DelayCancel_Reason__c, //延期取消理由
|
RentalReson__c, //出借目的
|
noReportStatus__c, //无报告状态
|
ModelLendingProduct__c, //模型出借产品
|
ModelLending__c, //模型出借产品型号
|
CorrespondingRepairNo__c, //对应修理维修NO
|
AttachmentCertificate__c, //附件证明
|
Meeting_Cooperate__c, //会议合作本部1
|
Meeting_Cooperate2__c, //会议合作本部2
|
Meeting_Cooperate3__c, //会议合作本部3
|
Meeting_Cooperate4__c, //会议合作本部4
|
IF_Approved__c, // 是否申请决裁 20220218 ljh add
|
Approved_No__c, // 决裁编码 20220218 ljh add
|
Approved_Status__c,// 决裁状态 20220218 ljh add
|
AdditionalSupport__c //原OPD计划(追加配套用)
|
FROM OPDPlan__c WHERE Id = :cloneRas.OPDPlan__c];
|
if(opdList.size()>0){
|
cloneOPD = opdList[0].clone();
|
//cloneOPD.OriginalOpdPlanApplication__c = cloneRas.OPDPlan__c;
|
cloneOPD.OriginalOpdPlanRental__c = cloneRas.OPDPlan__c;
|
//cloneOPD.RentalSplit__c = true;
|
cloneOPD.Status__c = '计划中';
|
FixtureUtil.withoutInsert(new OPDPlan__c[]{cloneOPD});
|
cloneRas.OPDPlan__c = cloneOPD.Id;
|
cloneRas.ApprovedNo_Create__c = cloneOPD.Approved_No__c; // 20220218 ljh add 决裁
|
cloneRas.Approved_State_Create__c = cloneOPD.Approved_Status__c; // 20220218 ljh add 决裁
|
// List<Plan_Rental_Equipment__c> inPreList = new List<Plan_Rental_Equipment__c>();
|
// for(Plan_Rental_Equipment__c pre0 : [SELECT Id, Campaign__c,Event_ID__c,RecordTypeId,Name,Rental_Equipment__c,Rental_Quantity__c FROM Plan_Rental_Equipment__c WHERE OPD_Plan__c = :opdList[0].Id]){
|
// Plan_Rental_Equipment__c pre = new Plan_Rental_Equipment__c();
|
// pre = pre0.clone();
|
// pre.Id = null;
|
// pre.Event_ID__c = null;
|
// pre.Campaign__c = null;
|
// pre.OPD_Plan__c = cloneOPD.Id;
|
// inPreList.add(pre);
|
// }
|
// if (inPreList.size()>0) {
|
// insert inPreList;
|
// }
|
//附件拷贝
|
/*List<Attachment> newFiles = new List<Attachment>();
|
for(Attachment att : [SELECT Id, Body, Name, ParentId
|
FROM Attachment
|
WHERE ParentId = :opdList[0].Id]){
|
newFiles.add(new Attachment(Body = att.Body,Name = att.Name, ParentId = cloneOPD.Id));
|
}
|
if (newFiles.size()>0) {
|
insert newFiles;
|
}*/
|
}
|
}
|
//20210408 ljh add end
|
// 分单出来的个数
|
//20210609 ljh update 1732 start
|
// List<AggregateResult> oldRaList = [
|
// select Rental_Apply__c
|
// from Rental_Apply_Equipment_Set__c where Old_Rental_Apply__c = :rootRaList[0].Id
|
// group by Rental_Apply__c];
|
List<Rental_Apply__c> oldRaList = [select Id,Name from Rental_Apply__c where Root_Rental_Apply__c = :rootRaList[0].Id];
|
//20210609 ljh update 1732 start
|
Integer num = oldRaList.size() + 1;
|
// 新申请单命名方式:最原始申请单_1、_2、_3…
|
cloneRas.Name = rootRaList[0].Name + '_' + num;
|
cloneRas.Old_Rental_Apply__c = ra.Id; // 源申请单Link
|
cloneRas.Root_Rental_Apply__c = rootRaList[0].Id; // 最源申请单Id 20210609 ljh add 1732
|
cloneRas.OPDManagerText__c = ra.OPDManager__c; // 20210926 ljh add SFDC-C6A97F add
|
//20201117 ljh OCSM_BP5-60 add start
|
//4.办事处分配分单出来的备品借出申请,数据类型需要修改
|
if(cloneRas.Split_Apply_Reason__c != null && cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
cloneRas.RecordTypeId = DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId();
|
cloneRas.SplitUser__c = UserInfo.getUserId();
|
}
|
if(String.isNotBlank(cloneRas.RecordTypeId) && cloneRas.RecordTypeId == DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId()){
|
cloneRas.SplitUser__c = UserInfo.getUserId();
|
}
|
//20201117 ljh OCSM_BP5-60 add end
|
FixtureUtil.withoutInsert(new Rental_Apply__c[]{cloneRas});
|
// cloneRas.Response__c = '\n\n备品借出申请链接: ' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + cloneRas.Id +' \n\n' + cloneRas.Response__c;
|
cloneRas.Response__c = '<br/>备品借出申请链接: ' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + cloneRas.Id +' <br/><br/>' + cloneRas.Response__c;
|
FixtureUtil.withoutUpdate(new Rental_Apply__c[]{cloneRas});
|
|
// 2. 选中分单的一览与新旧申请单关联
|
for (Rental_Apply_Equipment_Set__c updRaesObj : this.raesList) {
|
updRaesObj.Old_Rental_Apply__c = rootRaList[0].Id; // 最源申请单Link
|
updRaesObj.Rental_Apply__c = cloneRas.Id;
|
}
|
|
// 3. 配套明细分割到新申请单,明细的Name在RentalApplyEquipmentSetDetailHandler中更新
|
// 20210611 ljh update 1732 start
|
//String[] ids = raesIds.split(','); // 选中一览id
|
// List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select Id, Rental_Apply_Equipment_Set__c
|
// from Rental_Apply_Equipment_Set_Detail__c
|
// where Rental_Apply_Equipment_Set__c in :ids];
|
// 20210611 ljh update 1732 end
|
FixtureUtil.withoutUpdate(this.raesList);
|
if (raesdList.size() != 0) {
|
for (Rental_Apply_Equipment_Set_Detail__c raesdObj : raesdList) {
|
raesdObj.Rental_Apply__c = cloneRas.Id;
|
//20201117 ljh OCSM_BP5-60 add start
|
//3.如果有排队中的清除排队信息
|
if(cloneRas.Split_Apply_Reason__c != null && cloneRas.Split_Apply_Reason__c.equals('现地管理分单')){
|
// 清空排队信息
|
raesdObj.Queue_Conment__c = null;
|
raesdObj.Queue_Day__c = null;
|
raesdObj.Queue_Time__c = null;
|
raesdObj.Queue_User__c = null;
|
// raesdObj.Queue_Day_Text__c = null;// 20210903 you SFDC-C6E3WQ
|
raesdObj.Queue_Number__c = null;
|
}
|
//20201117 ljh OCSM_BP5-60 add end
|
}
|
FixtureUtil.withoutUpdate(raesdList);
|
}
|
return '1';
|
}
|
/**
|
* @description 获取新建申请单时需要复制的字段
|
**/
|
private List<Rental_Apply__c> getRa() {
|
return [SELECT Id,
|
OwnerId,
|
Status__c,
|
Cancel_Reason__c,
|
Old_Rental_Apply__c,
|
Split_Apply_Reason__c,
|
// ------ 备品借出申请の詳細 ------
|
Name, // 申请No.
|
ToAgency__c, // 分配办事处 20201117 ljh add
|
SalesdeptSelect__c, // 申请者销售本部 20201117 ljh add
|
Salesdept__c, // 申请者销售本部
|
WorkPlace__c, // 申请者办事处
|
ApplyPerson_Phone__c, // 申请人电话
|
Loaner_centre_mail_address__c, // 备品中心的邮箱地址
|
Select_Status__c, // 分配状态
|
Queue_Status__c, // 排队状态
|
Rental_Assistant__c, // 备品助理
|
RA_Status__c, // 备品借出状态
|
// OLY_OCM-504 不拷贝追加备品审批状态
|
//Add_Approval_Status__c, // 追加备品审批状态
|
Person_In_Charge__c, // 备品出借担当
|
applyUser__c, // 操作者
|
Foul_Points__c, // 备品出借担当累计犯规点数
|
First_Satisfied__c, // 首满
|
loaner_Status__c, // 出库状态
|
Cross_Region_Assign__c, // 跨区域分配
|
// ------ 备品借用方 ------
|
Hospital__c, // 医院
|
Strategic_dept__c, // 战略科室
|
OCM_dept_category__c, // 战略科室分类
|
Account__c, // 科室
|
OCM_segmentation__c, // OCM分类
|
Loaner_medical_Staff__c, // 科室负责人
|
Phone_number__c, // 联系电话
|
// ------ 借用备品的目的 ------
|
Demo_purpose1__c, // 使用目的1
|
demo_purpose2__c, // 使用目的2
|
// OLY_OCM-669 Start
|
Hope_Lonaer_date_Num__c, // 希望借用天数
|
// OLY_OCM-669 End
|
Product_category__c, // 产品分类(GI/SP)
|
Campaign__c, // 学会
|
//OPD__c, // OPD报告书 2021-12-28 mzy OPD计划状态改善
|
QIS_number__c, // QIS
|
QIS_ID_Line__c, // QIS的ID值
|
QISRepair__c, // QIS修理
|
Demo_purpose_text__c, // 申请理由
|
Repair__c, // 修理
|
Follow_UP_Opp__c, // 跟进询价1
|
Follow_pcl_status2__c, // 跟进询价状态
|
Follow_pcl_status2_Text__c, // 跟进询价状态(申请时)
|
Follow_Inquiry_Level_Text__c, // 询价等级(申请时) // 20211008 ljh SWAG-C7LCH2
|
Follow_Inquiry_Stage_Text__c, // 询价阶段(申请时) // 20211008 ljh SWAG-C7LCH2
|
Statu_Achievements__c, // 注残
|
Shipping_Finished_Day_Func__c, // 最终发货日(已购待货)
|
CrinicalTrialName__c, // 临床研究项目名称
|
DB_loaner_request__c, // MA本部审核合同编号
|
// ------ 备品希望借出期限 ------
|
Request_shipping_day__c, // 希望到货日
|
Return_dadeline_final__c, // 最新预定归还日
|
Request_return_day__c, // 预定归还日
|
Lonaer_date_not_working_date__c, // 希望借用天数
|
// ------ 发送信息 ------
|
Shipment_address__c, // 办事处地址
|
Dealer__c, // 经销商
|
Loaner_received_staff__c, // 收件者姓名 (销售或FSE)
|
Shippment_adress_detail__c, // 发送办事处地址详细
|
direct_shippment_address__c, // 直送发送地址
|
direct_send__c, // 发送方
|
pickup_time__c, // 自提时间
|
Loaner_received_staff_phone__c, // 收件者电话(销售或FSE)
|
Post_Code__c, // 邮编
|
ApprovedNo_Delivery__c, // 决裁编号(发货时) 20220224 ljh add
|
Approved_State_Delivery__c, // 决裁状态(发货时)20220224 ljh add
|
Response__c, // 应答沟通
|
Request_demo_time__c, // 申请时间
|
Request_approval_time__c, // 批准时间(申请提交时间)
|
Request_answer_time__c, // 备品首次分配时间
|
Application_accept_time__c, // 应答沟通申请受理时间(回答时间)
|
OPDPlan__c, // OPD计划
|
RecordTypeId, // 记录类型 1732 ljh add 20210528
|
Root_Rental_Apply__c, // 源申请单(root) 1732 ljh add 20210609
|
First_level_actual_approver__c, //一级实际审批人 20210908 ljh SFDC-C6A97F add
|
Second_level_actual_approver__c, //二级实际审批人 20210908 ljh SFDC-C6A97F add
|
OPDManager__c, // 20210926 ljh add SFDC-C6A97F add
|
// OLY_OCM-583 Start 分单时增加拷贝字段GI本部区分
|
GI_Diff__c // GI本部区分
|
// OLY_OCM-583 End
|
FROM Rental_Apply__c
|
WHERE Id = :this.objId];
|
}
|
@TestVisible private void test() {
|
Integer i = 0;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
}
|
}
|