//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 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 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 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 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 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 statusRaesSet = new Set{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 raIds = new Set{this.objId}; Set 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 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 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 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 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 inPreList = new List(); // 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 newFiles = new List(); 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 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 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 = '
备品借出申请链接: ' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + cloneRas.Id +'

' + 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 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 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 ApprovedNo_Create__c, // 决裁编号(创建时) 20220301 ljh add Approved_State_Create__c, // 决裁状态(创建时) 20220301 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++; } }