global class RentalApplyWebService { // TODO please use public okStatus public final static Integer okStatus = 99; public final static String okStatus2 = '引当済'; //bp2 // /** // * check meisai // * @param rentalApplyId 备品借出申请ID // * @param rentalApplys 备品借出申请 // * @param rentalApplyEquipmentSets 备品申请借出历史(备品借出申请 和 备品Set 的Link表) // * @param equipmentSetIdList Equipment_Set__c.id // * @param idmap Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id // * @return 成功: 1、or 错误内容 // */ // private static String privateCheck(String rentalApplyId, // Map>> mRentalApplys, // Map>> mRentalApplyEquipmentSets, // Map>> mEquipmentSetIdList, // Map>> mIdmap // ) { // List rentalApplys = mRentalApplys.get('rentalApplys')[0]; // List rentalApplyEquipmentSets = mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0]; // List equipmentSetIdList = mEquipmentSetIdList.get('equipmentSetIdList')[0]; // Map idmap = mIdmap.get('idmap')[0]; // //返回结果,1:成功。 // String checkRS = '1'; // //备品借出申请 // rentalApplys = [select Rental_Apply_Equipment_Set_Cnt__c from Rental_Apply__c where Id = :rentalApplyId]; // if (rentalApplys.size() == 0) { // checkRS = '没有备品借出申请,请确认。'; // return checkRS; // } // Rental_Apply__c rentalApply = rentalApplys[0]; // if (rentalApply.Rental_Apply_Equipment_Set_Cnt__c <= 0) { // //返回结果,2:message-没有备品Set,请确认。 // checkRS = '没有借出备品set一览,请确认。'; // return checkRS; // } // //备品申请借出历史 // equipmentSetIdList = new List(); // rentalApplyEquipmentSets = [ // select Equipment_Set__c,Equipment_Set__r.Active_judgement__c // from Rental_Apply_Equipment_Set__c // where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false]; // for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) { // equipmentSetIdList.add(rentalApplyEquipmentSet.Equipment_Set__c); // } // // Equipment_Set_Detail__c,空更新 (TODO 今後batchになる!?) // List updDetailList = [ // select id // from Equipment_Set_Detail__c // where Equipment_Set__c in :equipmentSetIdList]; // update updDetailList; // //备品申请借出历史、再取得 // List raesList = new List(); // equipmentSetIdList = new List(); // rentalApplyEquipmentSets = [ // select Id,Name,Equipment_Set__c,ES_Stock_Status__c,Loaner_name_text__c,Loaner_code_text__c,SerialNumber_text__c, // Salesdepartment_text__c,Salesprovince_text__c,Equipment_Type_text__c,Equipment_Set_Borrowed__c,Product_Class_Bor__c, // Equipment_Set__r.Name,Equipment_Set__r.ES_Status__c,Equipment_Set__r.Active_judgement2__c, // Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c,Rental_Start_Date__c, // Equipment_Set__r.Already_Stock_Out__c, Equipment_Set__r.Loaner_name__c, // Equipment_Set__r.Loaner_code__c,Equipment_Set__r.Salesdepartment__c, // Equipment_Set__r.SalesProvince__c,Equipment_Set__r.Equipment_Type__c,Equipment_Set__r.SerialNumber__c, // Equipment_Set__r.Contents_number__c,Equipment_Set__r.Product_category__c // from Rental_Apply_Equipment_Set__c // where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false]; // idmap = new Map(); // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id // for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) { // if (rentalApplyEquipmentSet.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c != rentalApplyEquipmentSet.Id) { // raesList.add(rentalApplyEquipmentSet); // equipmentSetIdList.add(rentalApplyEquipmentSet.Equipment_Set__c); // } // } // for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : raesList) { // /* // if (rentalApplyEquipmentSet.Rental_Start_Date__c <= Date.today()) { // checkRS = '借出开始日必须大于今日。借出备品set一览:' + rentalApplyEquipmentSet.Name; // return checkRS; // } // */ // /* // if (rentalApplyEquipmentSet.Equipment_Set__r.Active_judgement2__c != okStatus) { // //返回结果,1:message-请确认备品Set状态。 // checkRS = '备品set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 的' + Schema.SObjectType.Equipment_Set__c.fields.Asset_Set_status2__c.label + '不是 99.等待预约 ,现在是 ' + rentalApplyEquipmentSet.Equipment_Set__r.Asset_Set_status2__c + ' 请确认'; // return checkRS; // } // */ // // ////bp2 if (rentalApplyEquipmentSet.Equipment_Set__r.Contents_number__c == 0) { ////bp2 checkRS = '备品set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 没有选择借出的明细,请确认'; ////bp2 return checkRS; ////bp2 } ////bp2 if (rentalApplyEquipmentSet.Equipment_Set__r.ES_Status__c != okStatus2) { ////bp2 checkRS = '备品set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 的' + Schema.SObjectType.Equipment_Set__c.fields.ES_Status__c.label + '不是 ' + okStatus2 + ',现在是 ' + rentalApplyEquipmentSet.Equipment_Set__r.ES_Status__c + ' 请确认'; ////bp2 return checkRS; ////bp2 } ////bp2 if (rentalApplyEquipmentSet.Equipment_Set__r.Already_Stock_Out__c == true) { ////bp2 checkRS = '备品set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 没有上架,请确认'; ////bp2 return checkRS; ////bp2 } ////bp2 if (rentalApplyEquipmentSet.ES_Stock_Status__c == '不能出库') { ////bp2 checkRS = '备品set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 在预约期间外不能出库,请确认'; ////bp2 return checkRS; ////bp2 } // idmap.put(rentalApplyEquipmentSet.Equipment_Set__c, rentalApplyEquipmentSet.Id); // } // mRentalApplys.get('rentalApplys')[0] = rentalApplys; // mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0] = raesList; // mEquipmentSetIdList.get('equipmentSetIdList')[0] = equipmentSetIdList; // mIdmap.get('idmap')[0] = idmap; // return checkRS; // } //bp2 // /** // *@param : String 备品借出申请ID // *@return : String (成功: 1、or 错误内容) // */ // WebService static String reserveCheck(String rentalApplyId) { // //备品借出申请 // List rentalApplys = new List(); // //备品申请借出历史 // List rentalApplyEquipmentSets = new List(); // List equipmentSetIdList = new List(); // Map idmap = new Map(); // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id // Map>> mRentalApplys = // new Map>>{'rentalApplys' => new List>{rentalApplys}}; // Map>> mRentalApplyEquipmentSets = // new Map>>{'rentalApplyEquipmentSets' => new List>{rentalApplyEquipmentSets}}; // Map>> mEquipmentSetIdList = // new Map>>{'equipmentSetIdList' => new List>{equipmentSetIdList}}; // Map>> mIdmap = // new Map>>{'idmap' => new List>{idmap}}; // String rt1 = RentalApplyWebService.approvalCheck(rentalApplyId); // if (rt1 != '1') { // return rt1; // } // //返回结果,1:成功。 //// return RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap); // String rt2 = RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap); // if (rt2 != '1') { // return rt2; // } // return '1'; // } //bp2 // /** // *@param : String 备品借出申请ID // *@return : String (成功: 1、or 错误内容) // */ // WebService static String reserve(String rentalApplyId) { // //备品借出申请 // List rentalApplys = new List(); // //备品申请借出历史 // List rentalApplyEquipmentSets = new List(); // List equipmentSetIdList = new List(); // Map idmap = new Map(); // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id // Map>> mRentalApplys = // new Map>>{'rentalApplys' => new List>{rentalApplys}}; // Map>> mRentalApplyEquipmentSets = // new Map>>{'rentalApplyEquipmentSets' => new List>{rentalApplyEquipmentSets}}; // Map>> mEquipmentSetIdList = // new Map>>{'equipmentSetIdList' => new List>{equipmentSetIdList}}; // Map>> mIdmap = // new Map>>{'idmap' => new List>{idmap}}; // //返回结果,1:成功。 // String checkRS = RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap); // if (checkRS != '1') return checkRS; // rentalApplys = mRentalApplys.get('rentalApplys')[0]; // rentalApplyEquipmentSets = mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0]; // equipmentSetIdList = mEquipmentSetIdList.get('equipmentSetIdList')[0]; // idmap = mIdmap.get('idmap')[0]; // Rental_Apply__c rentalApply = rentalApplys[0]; // //备品Set // List equipmentSetUpdateList = new List(); // //备品Set明细 // List equipmentSetDetailList = new List(); // List equipmentSetDetailList2 = new List(); // //备品申请借出明细历史 // List rentalApplyEquipmentSetDetailList = new List(); // for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) { // // 已做出库指示flag⇒前回の申請はまだ終わってない⇒出库しない // if (rentalApplyEquipmentSet.Equipment_Set__r.Already_Stock_Out__c == false) { // //更新备品Set // Equipment_Set__c equipmentSet = new Equipment_Set__c( // Id = rentalApplyEquipmentSet.Equipment_Set__c, // Last_Reserve_Rental_Apply_Equipment_Set__c = rentalApplyEquipmentSet.Id, // Pre_Reserve_Rental_Apply_Equipment_Set__c = rentalApplyEquipmentSet.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c, // StockDown__c = false, // StockDown_time__c = null, // Shipment_request_time__c = System.now(), //出库指示时间 // Shippment_loaner_time__c = null, //备品中心出库时间 // Forecast_arrival_day__c = null, //预计到货日 // //Loaner_received_day__c = null, //现场签收日 // Return_wh_chenk_staff__c = null, // Request_asset_extend_time__c = null, //延期申请时间 // asset_extend_approval_time__c = null, //延期申请批准时间 // //Asset_return_day__c = null, //物流提货日 // Received_loaner_time__c = null, //备品中心回收时间 // delivery_company__c = null, // Fedex_number__c = null, // Distributor_method__c = null, // Return_to_wh_staff__c = null, // Return_delivery_company__c = null, // Return_Fedex_number__c = null, // Return_Distributor_method__c = null, // Received_confirmation_staff__c = null, // Customer_install_explanation_sign__c = null, //是否回收CDS确认单 // Send_to_return_email__c = false, //发送回收结果反馈邮件 // Return_comment_anoucment__c = null, //发送回收结果反馈内容(NG理由和欠品情况) ////bp2 CDS_complete__c = false, // Arrival_in_wh__c = false, // Arrival_wh_time2__c = null, // Already_Stock_Out__c = true, // Repair_Sum_Update__c = 0 // ); // //更新备品Set // equipmentSetUpdateList.add(equipmentSet); // } // } // //借出设备机身号码 // Map assetSerialNumberMap = new Map(); // //备品Set明细 // Equipment_Set_Detail__c[] equipmentSetDetails = [select Equipment_Set__c,Asset__c,Asset__r.SerialNumber, // Check_lost_Item__c,Pre_disinfection__c,Water_leacage_check__c, // Inspection_result_after__c,Arrival_in_wh__c, // Lost_item_check_staff__c,CDS_staff__c,Inspection_staff_After__c, // Return_wh_chenk_staff__c,Pre_inspection_time__c,Lost_item_check_time__c, // After_Inspection_time__c,Arrival_wh_time__c, // Inspection_result__c,Inspection_staff__c,Last_Reserve_RAES_Detail__c, // Equipment_Set__r.Already_Stock_Out__c ////bp2 , CDS_complete__c, CDS_complete_time__c // from Equipment_Set_Detail__c // where Equipment_Set__c in :equipmentSetIdList and Select_rental__c = true]; // for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails) { // // 已做出库指示flag⇒前回の申請はまだ終わってない⇒出库しない // if (equipmentSetDetail.Equipment_Set__r.Already_Stock_Out__c == false) { // //插入备品申请借出明细历史 // Rental_Apply_Equipment_Set_Detail__c rentalApplyEquipmentSetDetail = new Rental_Apply_Equipment_Set_Detail__c(); // rentalApplyEquipmentSetDetail.Rental_Apply__c = rentalApply.Id;//备品借出申请 // rentalApplyEquipmentSetDetail.Rental_Apply_Equipment_Set__c = idmap.get(equipmentSetDetail.Equipment_Set__c);//备品Set借出历史 // rentalApplyEquipmentSetDetail.Equipment_Set__c = equipmentSetDetail.Equipment_Set__c;//备品Set // rentalApplyEquipmentSetDetail.Asset__c = equipmentSetDetail.Asset__c;//保有设备 // //插入备品申请借出明细历史 // rentalApplyEquipmentSetDetailList.add(rentalApplyEquipmentSetDetail); // //更新备品Set明细 // equipmentSetDetail.Check_lost_Item__c = null;//欠品确认结果 // equipmentSetDetail.Lost_item_giveup__c = false; // equipmentSetDetail.Pre_disinfection__c = null;//清洗前 // equipmentSetDetail.Water_leacage_check__c = null;//测漏检查结果 // equipmentSetDetail.Inspection_result_after__c = null;//回收后-检测结果 // equipmentSetDetail.Arrival_in_wh__c = false;//回库确认 // equipmentSetDetail.Lost_item_check_staff__c = null;//欠品确认者 // equipmentSetDetail.CDS_staff__c = null;//消毒人员 // equipmentSetDetail.Inspection_staff_After__c = null;//回收后-检测人员 // equipmentSetDetail.Return_wh_chenk_staff__c = null;//回库确认者 // equipmentSetDetail.Inspection_result__c = null;//发货前-检测结果 // equipmentSetDetail.Inspection_staff__c = null;//发货前-检测人员 // equipmentSetDetail.Pre_inspection_time__c = null;//备品Set用,发货前-检测合格时间 // equipmentSetDetail.Lost_item_check_time__c = null;//备品Set用,欠品确认时间 ////bp2 equipmentSetDetail.CDS_complete_time__c = null;//备品Set用,CDS完毕时间 // equipmentSetDetail.After_Inspection_time__c = null;//备品Set用,回收后-检测完毕时间 // equipmentSetDetail.Arrival_wh_time__c = null;//备品Set用,回库确认完毕时间 // equipmentSetDetail.Inspection_result_after_ng__c = null;//回收后-检测NG区分 // equipmentSetDetail.Inspection_result_ng__c = null;//发货前-检测NG区分 ////bp2 equipmentSetDetail.CDS_complete__c = false;//CDS完毕 // //更新备品Set明细 // equipmentSetDetailList.add(equipmentSetDetail); // //借出设备机身号码 // if (String.isNotBlank(equipmentSetDetail.Asset__r.SerialNumber)) { // if (assetSerialNumberMap.containsKey(equipmentSetDetail.Equipment_Set__c) == false) { // assetSerialNumberMap.put(equipmentSetDetail.Equipment_Set__c, ',' + equipmentSetDetail.Asset__r.SerialNumber + ','); // } else { // String tmp = assetSerialNumberMap.get(equipmentSetDetail.Equipment_Set__c); // tmp += equipmentSetDetail.Asset__r.SerialNumber + ','; // assetSerialNumberMap.put(equipmentSetDetail.Equipment_Set__c, tmp); // } // } // } // } // // TODO liang 1つsqlにまとめてください // Equipment_Set_Detail__c[] equipmentSetDetails2 = [select Id, Last_Reserve_RAES_Detail__c ////bp2 ,CDS_complete__c // from Equipment_Set_Detail__c // where Equipment_Set__c in :equipmentSetIdList and Select_rental__c = false]; // for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails2) { // equipmentSetDetail.Pre_Reserve_RAES_Detail__c = equipmentSetDetail.Last_Reserve_RAES_Detail__c; // equipmentSetDetail.Last_Reserve_RAES_Detail__c = null; ////bp2 equipmentSetDetail.CDS_complete__c = false;//CDS完毕 // equipmentSetDetailList2.add(equipmentSetDetail); // } // //更新借出设备机身号码 // List rentalApplyEquipmentSetUpdateList = new List(); // for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) { // if (assetSerialNumberMap.containsKey(rentalApplyEquipmentSet.Equipment_Set__c)) { // rentalApplyEquipmentSet.Rental_Asset_SerialNumber__c = assetSerialNumberMap.get(rentalApplyEquipmentSet.Equipment_Set__c); // // xiongyl-start // } // rentalApplyEquipmentSet.Loaner_name_text__c =rentalApplyEquipmentSet.Equipment_Set__r.Loaner_name__c; //备品名称 // rentalApplyEquipmentSet.Loaner_code_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Loaner_code__c; //備品型番 // rentalApplyEquipmentSet.Salesdepartment_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Salesdepartment__c; // 所在地区(本部) // rentalApplyEquipmentSet.Salesprovince_text__c = rentalApplyEquipmentSet.Equipment_Set__r.SalesProvince__c; //所在地区(省) // rentalApplyEquipmentSet.Equipment_Type_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Equipment_Type__c; //分类 // rentalApplyEquipmentSet.Equipment_Set_Borrowed__c = rentalApplyEquipmentSet.Equipment_Set__r.Name;//备品set // rentalApplyEquipmentSet.Product_Class_Bor__c = rentalApplyEquipmentSet.Equipment_Set__r.Product_category__c; // rentalApplyEquipmentSet.SerialNumber_text__c = rentalApplyEquipmentSet.Equipment_Set__r.SerialNumber__c; // rentalApplyEquipmentSetUpdateList.add(rentalApplyEquipmentSet); // // xiongyl-end // } // Savepoint sp = Database.setSavepoint(); // try { // if (equipmentSetUpdateList.size() > 0) { // update equipmentSetUpdateList; // } // if (rentalApplyEquipmentSetDetailList.size() > 0) { // insert rentalApplyEquipmentSetDetailList; // } // if (equipmentSetDetailList.size() > 0) { // for (Integer i=0; i 0) { // update equipmentSetDetailList2; // } // if (rentalApplyEquipmentSetUpdateList.size() > 0) { // update rentalApplyEquipmentSetUpdateList; // } // eSetRefreshStatus(equipmentSetIdList); // } catch (System.Exception e) { // Database.rollback(sp); // return e.getMessage(); // } // //返回结果 // return checkRS; // } // 备品借出时间check WebService static String approvalCheck(String rentalApplyId) { // check结果 String returnStr = ''; //1388 yc 20211021 跨区域分配不能出库 start String rasdid = ''; system.debug(rentalApplyId+'=='); if(String.isNotBlank(rentalApplyId) && rentalApplyId.indexOf(';') >= 0){//说明是从一览上触发的 rasdid = rentalApplyId.subString(rentalApplyId.indexOf(';') + 1); rentalApplyId = rentalApplyId.subString(0, rentalApplyId.indexOf(';')); } //1388 yc 20211021 跨区域分配不能出库 end //备品借出申请 Rental_Apply__c[] rentalApply = [select Id,repair__r.Repair_Final_Inspection_Date__c,Bollow_Date__c,repair__r.Return_Without_Repair_Date__c, CreatedDate,Rental_Apply_Equipment_Set_Cnt__c,Prepare_Day__c,Cross_Region_Assign__c, demo_purpose2__c,Follow_UP_Opp__r.Shipping_Finished_Day_Func__c,next_action__c,QIS_number__r.ReplaceDeliveryDate__c from Rental_Apply__c where Id = :rentalApplyId]; if (rentalApply.size() == 0) { returnStr = '没有备品借出申请,请确认。'; return returnStr; } Rental_Apply__c ra = rentalApply[0]; if (ra.Rental_Apply_Equipment_Set_Cnt__c <= 0) { returnStr = '没有借出备品set一览,请确认。'; return returnStr; } //1822 yc 20211111 start if(ra.demo_purpose2__c=='已购待货' && ra.Follow_UP_Opp__r.Shipping_Finished_Day_Func__c!= null){ returnStr = '已购待货目的,新品已有发货日,不可出库指示'; return returnStr; } if(ra.demo_purpose2__c=='索赔QIS' && ra.next_action__c=='无偿更换' && ra.QIS_number__r.ReplaceDeliveryDate__c!= null){ returnStr = '索赔QIS目的,QIS已有新品发货日,不可出库指示'; return returnStr; } //1822 yc 20211111 end //*************************Insert 20160826 SWAG-AD59Z6 趙徳芳 Start*************************// if(Ra.repair__r.Repair_Final_Inspection_Date__c != null) { return '修理最终检测日不为空,不能做出库指示'; } if(Ra.repair__c!=null&&Ra.repair__r.Return_Without_Repair_Date__c != null) { return '未修理归还日不为空,不能做出库指示'; } //*************************Insert 20160826 SWAG-AD59Z6 趙徳芳 End***************************// //1388 yc 20211021 跨区域分配不能出库 start if(String.isNotBlank(ra.Cross_Region_Assign__c)){ String soql = 'select Id, Name,Rental_Apply__c,Internal_asset_location_before__c'; soql +=' from Rental_Apply_Equipment_Set_Detail__c'; soql +=' where Rental_Apply__c = \'' + ra.Id +'\''; soql +=' and Internal_asset_location_before__c !=null and Internal_asset_location_before__c != \'' + ra.Cross_Region_Assign__c+ '\''; if(String.isNotBlank(rasdid)){ soql +=' and Rental_Apply_Equipment_Set__c = :rasdid'; } List raesd = Database.query(soql); if(raesd.size()>0){ returnStr = '分配的备品不是您所属备品中心的备品,不能做出库指示'; return returnStr; } } //1388 yc 20211021 跨区域分配不能出库 end // 20220211 ljh add 备品FY23课题01 start // AggregateResult[] resultsRas = [SELECT Rental_Start_Date__c,count(Id) cnt // FROM Rental_Apply_Equipment_Set__c // WHERE Rental_Apply__c = :rentalApplyId // AND Cancel_Select__c = false // group by Rental_Start_Date__c]; // If(resultsRas.size() > 1){ // returnStr = '所有一览备品预计出货日应一致,不一致不能做出库指示'; // return returnStr; // } // 20220211 ljh add 备品FY23课题01 end //bp2 // 备品借出历史取得 // List equipmentSetList = new List(); // Rental_Apply_Equipment_Set__c[] raes = [ // select Id, Name, Equipment_Set__c, Equipment_Set__r.Name, Rental_Start_Date__c, Rental_End_Date__c, Rental_Apply__c // from Rental_Apply_Equipment_Set__c // where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false]; // // 日历范围,最小的借出开始日到最大的借出终了日 // Date startDate = Date.today(); // Date endDate = Date.today(); // for (Rental_Apply_Equipment_Set__c r : raes) { // equipmentSetList.add(r.Equipment_Set__c); // if (r.Rental_Start_Date__c != null && r.Rental_Start_Date__c < startDate) { // startDate = r.Rental_Start_Date__c; // } // if (r.Rental_End_Date__c != null && r.Rental_End_Date__c > endDate) { // endDate = r.Rental_End_Date__c; // } // } // Integer prepareDay = ra.Prepare_Day__c == null ? Integer.valueOf(System.Label.EquipmentRentalPrepare) : ra.Prepare_Day__c.intValue(); // Date minDate = getWD_addday(startDate, -1 * prepareDay); // Date maxDate = getWD_addday(endDate, prepareDay); // // 其他备品借出申请历史 // Rental_Apply_Equipment_Set__c[] others = [ // select Id, Name, Rental_Start_Date__c, Rental_End_Date__c, Equipment_Set__c, Rental_Apply__r.Status__c ,Rental_Apply__r.Prepare_Day__c // from Rental_Apply_Equipment_Set__c // where Rental_Apply__c != :rentalApplyId // and Equipment_Set__c in :equipmentSetList // and Request_Status__c != '取消' // and Request_Status__c != '删除' // and Cancel_Select__c = false // and ((Rental_Start_Date__c >= :minDate and Rental_Start_Date__c <= :maxDate) // or (Rental_End_Date__c >= :minDate and Rental_End_Date__c <= :maxDate) // or (Rental_Start_Date__c <= :startDate and Rental_End_Date__c >= :endDate))]; // Map> othersMap = new Map>(); // for (Rental_Apply_Equipment_Set__c other : others) { // if (othersMap.containsKey(other.Equipment_Set__c)) { // othersMap.get(other.Equipment_Set__c).add(other); // } else { // List l = new List(); // l.add(other); // othersMap.put(other.Equipment_Set__c, l); // } // } // for (Rental_Apply_Equipment_Set__c r : raes) { // List other = othersMap.get(r.Equipment_Set__c); // Map> dateMap= new Map>(); // if (other != null) { // Date sdate = startDate; // Date edate = endDate; // for (Rental_Apply_Equipment_Set__c o : other) { // if (o.Rental_Start_Date__c != null && (sdate == null || o.Rental_Start_Date__c < sdate)) { // sdate = o.Rental_Start_Date__c; // } // if (o.Rental_End_Date__c != null && (edate == null || o.Rental_End_Date__c > edate)) { // edate = o.Rental_End_Date__c; // } // } // if (sdate != null && edate != null) { // RentalApplyWebService raws = new RentalApplyWebService(); // dateMap = raws.getDateMap(sdate, edate, prepareDay); // } // } // if (r.Rental_Start_Date__c == null && r.Rental_End_Date__c == null) { // // 清空该借出历史的出库和回收时间 // } else if (other == null || other.size() == 0) { // // 与其他借出历史没有冲突 // } else { // Date fromDate = r.Rental_Start_Date__c; // Date toDate = r.Rental_End_Date__c; // for (Rental_Apply_Equipment_Set__c o : other) { // if (o.Rental_Apply__r.Status__c != '草案中' && o.Rental_Apply__r.Status__c != '申请中' && o.Rental_Apply__r.Status__c != null) { // Date startD = o.Rental_Start_Date__c; // Date endD = o.Rental_End_Date__c; // Integer prepare = prepareDay; //>= o.Rental_Apply__r.Prepare_Day__c || o.Rental_Apply__r.Prepare_Day__c == null ? prepareDay : o.Rental_Apply__r.Prepare_Day__c.intValue(); // if ((dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) > startD && dateMap.containsKey(endD) && fromDate < Date.valueOf(dateMap.get(endD).get('Next'))) || // (dateMap.containsKey(toDate) && Date.valueOf(dateMap.get(toDate).get('Next')) > startD && dateMap.containsKey(endD) && toDate < Date.valueOf(dateMap.get(endD).get('Next'))) || // (dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) <= startD && dateMap.containsKey(endD) && toDate >= Date.valueOf(dateMap.get(endD).get('Next')))) { // returnStr = '备品' + r.Equipment_Set__r.Name + '的借出日与备品借出历史' + o.Name + '有冲突,请确认。'; // return returnStr; // } // } // } // } // } return '1'; } // 延期审批Check WebService static String extension_approval_processCheck(String rentalApplyId) { try { List raList = [SELECT Id,Name , Demo_purpose1__c , Demo_purpose2__c , Loaner_received_ng_num__c , ExtensionApprovalTime_Initial__c , ExtensionApplicationTime_Final__c , ExtensionApprovalTime_Final__c , NewRepair__c , NewRepair__r.Agreed_Date__c , NewRepair__r.Status__c , NewRepair__r.ReRepairObject_F__c , NewRepair__r.Repair_Shipped_Date__c , AgreementBorrowingExtensionDate__c , next_action__c , RC_Ordered_Date__c , Bollow_Date_Add_10_WD__c , Root_Rental_Apply__c , Assign_Person__c , Return_dadeline_final__c , RA_Status__c , ExtensionApplicationTime_Initial__c , RecordType.DeveloperName , RecordType.id , ExtensionStatus__c FROM Rental_Apply__c WHERE Id = :rentalApplyId]; if (raList.size() == 0) { return '没有备品借出申请,请确认。'; } //add wangweipeng 2021/11/26 start /*List raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(raList[0],'1'); return '1';*/ String ErrorMessageStr = unifyGetRentalApply(raList[0]); //add wangweipeng 2021/11/26 end return ErrorMessageStr; } catch(Exception e) { return e.getMessage(); } } //add wangweipeng 2021/11/26 start /** * @param rentalApplyId 备品id * @return 备品配套数据 * * 延期整体逻辑: * 1:试用目的2不为:有询价和无询价,做特殊处理 * 2:其他情况:逻辑不变 * 上面第一个条件满足: * 1:从原单点击延期申请按钮,没有分割单 * 2:从原单点击延期申请按钮,有分割单 * 3:从单点击延期申请按钮 * * 第一种情况:按照原来的逻辑走,不需要做特殊处理 * 第二种情况: * (1):记录类型为:备品中心,判断分配人是否为空,办事处分配人不可能为空 * (2):获取原单和原单下所有的分单,因为批量延期不光查看自己申请单情况,如果是主单进来的,还需要查看当前单子,和他下面的所有从单 * (2):走一个方法,这是一个延期通用的方法,用于判断此次延期的申请单是否有可以延期的一览,会在下面具体介绍 * (3):走上面通用的方法,没有获取到可以延期的一览,那么做提示,不能延期 * (4):跳转页面为:此次为批量延期自定义开发的页面 * 第三种情况: * (1):如果是从单延期,那么需要查看此单,此单的原单,此单原单下所有的从单是否满足延期条件 * (2):以上的单子必须满足:已出库的--已回收(不含)之间状态,且最新预定归还日≥ 今天。 * (3):走一个方法,这是一个延期通用的方法,用于判断此次延期的申请单是否有可以延期的一览,会在下面具体介绍 * (4):由于通用的方法会返回所有申请单可延期的一览,所以需要判断此单是否有可以延期的一览 * (5):由于通用的方法会跳过 ok并且回寄时间不为空的一览,所以此时判断这个条件,满足就不能延期 * (6):跳转页面为原来延期开发的自定义页面 * * 通用是否可以延期的方法:(试用(有询价)、试用(无询价)) * (1):此方法参数为list,如果超过1条数据,默认为走批量延期的条件 * (2):申请单:如果size大于1,跳过一些验证:未完成到货确认不验证和延期批准时间(最初)不能延期 * (3):一览:如果size大于1,ok并且回寄时间不为空的一览不验证 * */ public static String unifyGetRentalApply(Rental_Apply__c rentalApply){ Rental_Apply__c rac = rentalApply; //如果申请单的 使用目2为 有询价或无询价的,那么需要特殊处理一下 if(rac.Demo_purpose1__c == '产品试用' && (rac.demo_purpose2__c == '试用(无询价)' || rac.demo_purpose2__c == '试用(有询价)')){ if(rac.ExtensionStatus__c == '已批准'){ return '产品试用的申请不能提交第二次延期申请。'; }else{ return muchRentalApply(rac); } }else{ //办事处目前只能延期有询价或无询价 if(rac.RecordType.DeveloperName == 'AgencyRequest'){ return '办事处申请单,非试用(无询价)、 试用(有询价)不可延期。'; }else{ List raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(new List{rac}); return '1'; } } } /** * * @param rac [延期入口] * @return [description] * * 逻辑解释: * 原单(没有从单):走原来的逻辑 * 从单:判断此从单的原单、原单下所有的从单是否满足第一条,并且当前从单必须有一条满足第二条才能延期 * 原单(有从单):判断此申请单和原单下所有的从单是否满足第一条,并且这些申请单最少有一个申请单满足第二个条件,才能延期 */ public static String muchRentalApply(Rental_Apply__c rac){ //获取所有的申请单 List rentalApplyData = getAllRentalApply(rac); if(rentalApplyData != null && rentalApplyData.size() > 0){ //如果只查到一条数据,那么证明他是原单,并且没有分割单,那么就走原来延期的逻辑 if(rentalApplyData.size() == 1){ List raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(rentalApplyData); return '1'; }else{ //如果为多条,证明他有从单或当前要延期的单子是从单,那么就需要做特殊处理 List racList = new List(); //判断他是原单还是从单 System.debug('--345----------'+rac.Root_Rental_Apply__c); if(String.isNotBlank(rac.Root_Rental_Apply__c)){ //可延期的申请单应满足:已出库的--已回收(不含)之间状态,且最新预定归还日≥ 今天。 //当前日期 Date today = Date.today(); //预定归还日不能为空 if(rac.Return_dadeline_final__c != null){ //最新预定归还日≥ 今天。 if(rac.Return_dadeline_final__c >= today){ //可延期的申请单应满足:已出库的--已回收(不含)之间状态 if(rac.RA_Status__c == '申请者已收货' || rac.RA_Status__c == '医院已装机确认' || rac.RA_Status__c == '已出库') { //能走到这里,证明延期入口的申请单不是已经延过的,所有现在判断其他的申请单是否已经延期,如果延过,那么不需要验证 //if(rac.ExtensionApplicationTime_Initial__c == null){ racList = rentalApplyData; //} }else{ if(rac.RA_Status__c != '取消' && rac.RA_Status__c != '删除'){ return '申请单:'+rac.Name+'的状态为【'+rac.RA_Status__c+'】 不可以进行延期。'; } } }else{ return '申请单:'+rac.Name+'的最新预定归还日小于当前时间,不可以进行延期。'; } }else{ return '申请单:'+rac.Name+' 的预定归还日不能为空。'; } }else{ //备品中心 if(rac.RecordType.DeveloperName == 'StandardRequest'){ //a. 原单上分配人=空,点击原单上的【延期申请】按钮时,提示【原单未分配或已取消,请在分单上操作延期】 //注:原单未分配已取消或未分配时,原单分配人为空 if(String.isBlank(rac.Assign_Person__c)){ return '原单未分配或已取消,请在分单上操作延期。'; } } //如果是原单,直接判断是否满足第一和第二条,第三条不需要现在判断 racList = rentalApplyData; } if(racList != null && racList.size() > 0){ System.debug('-----------543---'+racList); //此方法主要验证第一和第二个条件 List raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(racList); if(raesList.size() == 0){ return '无任何申请单满足。'; }else{ //如果从单为延期入口,会判断他的原单和此原单下所有从单满足延期条件 //如果满足条件,那么判断当前从单是否满足延期条件,如果是其他申请单满足,那么不能延期, //如果此申请单有一个配套满足,那么可以延期,走单独延期逻辑(原来延期逻辑) if(String.isNotBlank(rac.Root_Rental_Apply__c)){ Integer indexI = 0; String racIds = rac.Id; racIds = racIds.substring(0,15); //循环判断此单是否有可以延期的配套吗? for(Rental_Apply_Equipment_Set__c raesc : raesList){ String raescId = raesc.Rental_Apply__c; raescId = raescId.substring(0,15); if(racIds.equals(raescId)){ indexI++; } } if(indexI > 0) { //如果从单为延期入口,他会走通用的批量延期验证,所以需要验证以下的条件,如果满足就不然延期 //判断是此申请单是否存在 ok并且回寄时间不为空的一览 List raescc = getAllRentalApplyEs(rac); if(raescc != null && raescc.size() > 0){ for(Rental_Apply_Equipment_Set__c rr : raescc){ if ((rr.Received_Confirm__c == 'OK' || rr.Received_Confirm__c == '默认签收-OK') && rr.Asset_return_time__c != null) { return '此单不满足延期条件。'; } } return '1'; } }else{ return '此单不满足延期条件。'; } }else{ return '2'; } } } } } return null; } /** * 根据传过来的备品id获取所有的从单和原单 * @param rea 延期的入口申请单 * @return 返回所有的原单和从单 * 参数有可能是原单id或从单id */ public static List getAllRentalApply(Rental_Apply__c rea){ List allRentalApply = [SELECT id, Name, RA_Status__c, Request_return_day__c, demo_purpose1__c,demo_purpose2__c, ExtensionApprovalTime_Final__c, RC_Ordered_Date__c, Bollow_Date_Add_10_WD__c, Loaner_received_ng_num__c, ExtensionApprovalTime_Initial__c, next_action__c, NewRepair__c, NewRepair__r.Agreed_Date__c, NewRepair__r.Status__c, NewRepair__r.ReRepairObject_F__c, NewRepair__r.Repair_Shipped_Date__c, AgreementBorrowingExtensionDate__c, Return_dadeline_final__c, ExtensionApplicationTime_Initial__c, Root_Rental_Apply__c, ExtensionStatus__c FROM Rental_Apply__c WHERE id = :rea.Id OR id = :rea.Root_Rental_Apply__c OR (Root_Rental_Apply__c = :rea.Id AND Root_Rental_Apply__c != NULL) OR (Root_Rental_Apply__c = :rea.Root_Rental_Apply__c AND Root_Rental_Apply__c != NULL) limit 1000]; return allRentalApply; } /** * [getAllRentalApplyEs 获取一览] * @param rea [description] * @return [description] * * 只有从单为延期入口的时候,才会去查询一览 */ public static List getAllRentalApplyEs(Rental_Apply__c rea){ List raes = [SELECT Id,name , Rental_Apply__c , Rental_Apply__r.Repair__r.Agreed_Date__c , Rental_Apply__r.Repair__r.Repair_Estimated_date_formula__c , Rental_Apply__r.NewRepair__c , Rental_Apply__r.NewRepair__r.Agreed_Date__c , Rental_Apply__r.NewRepair__r.Status__c , Rental_Apply__r.NewRepair__r.ReRepairObject_F__c , Rental_Apply__r.NewRepair__r.Repair_Shipped_Date__c , Rental_Apply__r.QISRepair__r.Repair_Shipped_Date__c , Rental_Apply__r.RC_return_to_office__c , Rental_Apply__r.AgreementBorrowingExtensionDate__c , Rental_Apply__r.ExtensionApprovalTime_Initial__c , Rental_Apply__r.ExtensionApplicationTime_Final__c , Rental_Apply__r.RcUnexpectExpiryDelay__c , Final_reply_day__c , Asset_return_time__c , Bollow_Date__c , demo_purpose2__c , demo_purpose1__c , Request_demo_time__c , Loaner_received_time__c , Received_Confirm__c , Loaner_received_day2__c , RcUnexpectExpiryDelay__c FROM Rental_Apply_Equipment_Set__c WHERE Rental_Apply__c = :rea.Id AND Cancel_Reason__c = null // 取消重新分配的话需要做为NG重新分配的情况所以不能用Cancel_Select__c ]; return raes; } //add wangweipeng 2021/11/26 start //bp2 // // 备品借出时间check // WebService static String approvalCheck2(String raesId) { // // check结果 // String returnStr = ''; // // 备品借出历史取得 // List equipmentSetList = new List(); // Rental_Apply_Equipment_Set__c[] raes = [ // select Id, Name, Equipment_Set__c, Equipment_Set__r.Name, Rental_Start_Date__c, Rental_End_Date__c, Rental_Apply__c, Rental_Apply__r.Prepare_Day__c // from Rental_Apply_Equipment_Set__c // where Id = :raesId and Cancel_Select__c = false]; // Rental_Apply_Equipment_Set__c r = raes[0]; // // 日历范围,最小的借出开始日到最大的借出终了日 // Date startDate = r.Rental_Start_Date__c; // Date endDate = r.Rental_End_Date__c; // Integer prepareDay = r.Rental_Apply__r.Prepare_Day__c == null ? Integer.valueOf(System.Label.EquipmentRentalPrepare) : r.Rental_Apply__r.Prepare_Day__c.intValue(); // Date minDate = getWD_addday(startDate, -1 * prepareDay); // Date maxDate = getWD_addday(endDate, prepareDay); // // 其他备品借出申请历史 // Rental_Apply_Equipment_Set__c[] others = [ // select Id, Name, Rental_Start_Date__c, Rental_End_Date__c, Equipment_Set__c, Rental_Apply__r.Status__c ,Rental_Apply__r.Prepare_Day__c // from Rental_Apply_Equipment_Set__c // where Id != :raesId // and Equipment_Set__c = :r.Equipment_Set__c // and Request_Status__c != '取消' // and Request_Status__c != '删除' // and Cancel_Select__c = false // and ((Rental_Start_Date__c >= :minDate and Rental_Start_Date__c <= :maxDate) // or (Rental_End_Date__c >= :minDate and Rental_End_Date__c <= :maxDate) // or (Rental_Start_Date__c <= :startDate and Rental_End_Date__c >= :endDate))]; // Map> othersMap = new Map>(); // for (Rental_Apply_Equipment_Set__c other : others) { // if (othersMap.containsKey(other.Equipment_Set__c)) { // othersMap.get(other.Equipment_Set__c).add(other); // } else { // List l = new List(); // l.add(other); // othersMap.put(other.Equipment_Set__c, l); // } // } // List other = othersMap.get(r.Equipment_Set__c); // Map> dateMap= new Map>(); // if (other != null) { // Date sdate = startDate; // Date edate = endDate; // for (Rental_Apply_Equipment_Set__c o : other) { // if (o.Rental_Start_Date__c != null && (sdate == null || o.Rental_Start_Date__c < sdate)) { // sdate = o.Rental_Start_Date__c; // } // if (o.Rental_End_Date__c != null && (edate == null || o.Rental_End_Date__c > edate)) { // edate = o.Rental_End_Date__c; // } // } // if (sdate != null && edate != null) { // RentalApplyWebService raws = new RentalApplyWebService(); // dateMap = raws.getDateMap(sdate, edate, prepareDay); // } // } // if (r.Rental_Start_Date__c == null && r.Rental_End_Date__c == null) { // // 清空该借出历史的出库和回收时间 // } else if (other == null || other.size() == 0) { // // 与其他借出历史没有冲突 // } else { // Date fromDate = r.Rental_Start_Date__c; // Date toDate = r.Rental_End_Date__c; // for (Rental_Apply_Equipment_Set__c o : other) { // if (o.Rental_Apply__r.Status__c != '草案中' && o.Rental_Apply__r.Status__c != '申请中' && o.Rental_Apply__r.Status__c != null) { // Date startD = o.Rental_Start_Date__c; // Date endD = o.Rental_End_Date__c; // Integer prepare = prepareDay; //>= o.Rental_Apply__r.Prepare_Day__c || o.Rental_Apply__r.Prepare_Day__c == null ? prepareDay : o.Rental_Apply__r.Prepare_Day__c.intValue(); // Date minD = startD.addDays(-1 * prepare); // Date maxD = endD.addDays(prepare); // if ((dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) > startD && dateMap.containsKey(endD) && fromDate < Date.valueOf(dateMap.get(endD).get('Next'))) || // (dateMap.containsKey(toDate) && Date.valueOf(dateMap.get(toDate).get('Next')) > startD && dateMap.containsKey(endD) && toDate < Date.valueOf(dateMap.get(endD).get('Next'))) || // (dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) <= startD && dateMap.containsKey(endD) && toDate >= Date.valueOf(dateMap.get(endD).get('Next')))) { // returnStr = '备品' + r.Equipment_Set__r.Name + '的借出日与备品借出历史' + o.Name + '有冲突,请确认。'; // return returnStr; // } // } // } // } // return '1'; // } //bp2 // WebService static String reserve2(String raesId) { // String checkRS = '1'; // Rental_Apply_Equipment_Set__c raes = [ // select Id,Name,Rental_Apply__c,Rental_Start_Date__c,ES_Stock_Status__c, // Equipment_Set__c, // Equipment_Set__r.Name, // Equipment_Set__r.Active_judgement2__c, // Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c, // Equipment_Set__r.Pre_Reserve_Rental_Apply_Equipment_Set__c // from Rental_Apply_Equipment_Set__c where Id = :raesId and Cancel_Select__c = false // ]; // if (raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c == raes.Id) { // checkRS = '该借出备品set一览已经做过出库指示:' + raes.Name; // return checkRS; // } // if (raes.ES_Stock_Status__c == '不能出库') { // checkRS = '备品set ' + raes.Equipment_Set__r.Name + ' 在预约期间外不能出库,请确认'; // return checkRS; // } // checkRS = RentalApplyWebService.approvalCheck2(raesId); // if (checkRS != '1') { // return checkRS; // } // /* // if (raes.Rental_Start_Date__c <= Date.today()) { // checkRS = '借出开始日必须大于今日。借出备品set一览:' + raes.Name; // return checkRS; // } // if (raes.Equipment_Set__r.Active_judgement2__c != okStatus) { // checkRS = '备品set ' + raes.Equipment_Set__r.Name + ' 的' + Schema.SObjectType.Equipment_Set__c.fields.Asset_Set_status2__c.label + '不是 99.等待预约 ,现在是 ' + raes.Equipment_Set__r.Asset_Set_status2__c + ' 请确认'; // return checkRS; // } // */ // //备品Set明细 // List equipmentSetDetailList = new List(); // List equipmentSetDetailList2 = new List(); // //备品申请借出明细历史 // List rentalApplyEquipmentSetDetailList = new List(); // //更新备品Set // Equipment_Set__c equipmentSet = new Equipment_Set__c( // Id = raes.Equipment_Set__c, // Last_Reserve_Rental_Apply_Equipment_Set__c = raes.Id, // Pre_Reserve_Rental_Apply_Equipment_Set__c = raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c == null ? raes.Equipment_Set__r.Pre_Reserve_Rental_Apply_Equipment_Set__c : raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c, // StockDown__c = false, // StockDown_time__c = null, // Shipment_request_time__c = System.now(), //出库指示时间 // Shippment_loaner_time__c = null, //备品中心出库时间 // Forecast_arrival_day__c = null, //预计到货日 // //Loaner_received_day__c = null, //现场签收日 // Request_asset_extend_time__c = null, //延期申请时间 // asset_extend_approval_time__c = null, //延期申请批准时间 // //Asset_return_day__c = null, //物流提货日 // Received_loaner_time__c = null, //备品中心回收时间 // delivery_company__c = null, // Fedex_number__c = null, // Distributor_method__c = null, // Return_to_wh_staff__c = null, // Return_delivery_company__c = null, // Return_Fedex_number__c = null, // Return_Distributor_method__c = null, // Received_confirmation_staff__c = null, // Customer_install_explanation_sign__c = null, //是否回收CDS确认单 // Send_to_return_email__c = false, //发送回收结果反馈邮件 // Return_comment_anoucment__c = null, //发送回收结果反馈内容(NG理由和欠品情况) ////bp2 CDS_complete__c = false, // Arrival_in_wh__c = false, // Arrival_wh_time2__c = null, // Repair_Sum_Update__c = 0 // ); // //借出设备机身号码 // String assetSerialNumber = ''; // Boolean assetFirst = false; // //备品Set明细 // Equipment_Set_Detail__c[] equipmentSetDetails = [select Equipment_Set__c,Asset__c,Asset__r.SerialNumber, // Check_lost_Item__c,Pre_disinfection__c,Water_leacage_check__c, // Inspection_result_after__c,Arrival_in_wh__c, // Lost_item_check_staff__c,CDS_staff__c,Inspection_staff_After__c, // Return_wh_chenk_staff__c,Pre_inspection_time__c,Lost_item_check_time__c, // After_Inspection_time__c,Arrival_wh_time__c, // Inspection_result__c,Inspection_staff__c,Last_Reserve_RAES_Detail__c ////bp2 CDS_complete_time__c, // from Equipment_Set_Detail__c // where Equipment_Set__c = :equipmentSet.Id and Select_rental__c = true]; // for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails) { // //插入备品申请借出明细历史 // Rental_Apply_Equipment_Set_Detail__c rentalApplyEquipmentSetDetail = new Rental_Apply_Equipment_Set_Detail__c(); // rentalApplyEquipmentSetDetail.Rental_Apply__c = raes.Rental_Apply__c;//备品借出申请 // rentalApplyEquipmentSetDetail.Rental_Apply_Equipment_Set__c = raes.Id;//备品Set借出历史 // rentalApplyEquipmentSetDetail.Equipment_Set__c = equipmentSetDetail.Equipment_Set__c;//备品Set // rentalApplyEquipmentSetDetail.Asset__c = equipmentSetDetail.Asset__c;//保有设备 // //插入备品申请借出明细历史 // rentalApplyEquipmentSetDetailList.add(rentalApplyEquipmentSetDetail); // //更新备品Set明细 // equipmentSetDetail.Check_lost_Item__c = null;//欠品确认结果 // equipmentSetDetail.Pre_disinfection__c = null;//清洗前 // equipmentSetDetail.Water_leacage_check__c = null;//测漏检查结果 // equipmentSetDetail.Inspection_result_after__c = null;//回收后-检测结果 // equipmentSetDetail.Arrival_in_wh__c = false;//回库确认 // equipmentSetDetail.Lost_item_check_staff__c = null;//欠品确认者 // equipmentSetDetail.CDS_staff__c = null;//消毒人员 // equipmentSetDetail.Inspection_staff_After__c = null;//回收后-检测人员 // equipmentSetDetail.Return_wh_chenk_staff__c = null;//回库确认者 // equipmentSetDetail.Inspection_result__c = null;//发货前-检测结果 // equipmentSetDetail.Inspection_staff__c = null;//发货前-检测人员 // equipmentSetDetail.Pre_inspection_time__c = null;//备品Set用,发货前-检测合格时间 // equipmentSetDetail.Lost_item_check_time__c = null;//备品Set用,欠品确认时间 ////bp2 equipmentSetDetail.CDS_complete_time__c = null;//备品Set用,CDS完毕时间 // equipmentSetDetail.After_Inspection_time__c = null;//备品Set用,回收后-检测完毕时间 // equipmentSetDetail.Arrival_wh_time__c = null;//备品Set用,回库确认完毕时间 // //更新备品Set明细 // equipmentSetDetailList.add(equipmentSetDetail); // //借出设备机身号码 // if (String.isNotBlank(equipmentSetDetail.Asset__r.SerialNumber)) { // if (assetFirst == false) { // assetSerialNumber += ',' + equipmentSetDetail.Asset__r.SerialNumber + ','; // assetFirst = true; // } else { // assetSerialNumber += equipmentSetDetail.Asset__r.SerialNumber + ','; // } // } // } // Equipment_Set_Detail__c[] equipmentSetDetails2 = [select Id, Last_Reserve_RAES_Detail__c // from Equipment_Set_Detail__c // where Equipment_Set__c = :equipmentSet.Id and Select_rental__c = false]; // for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails2) { // equipmentSetDetail.Pre_Reserve_RAES_Detail__c = equipmentSetDetail.Last_Reserve_RAES_Detail__c; // equipmentSetDetail.Last_Reserve_RAES_Detail__c = null; // equipmentSetDetailList2.add(equipmentSetDetail); // } // //更新借出设备机身号码 // raes.Rental_Asset_SerialNumber__c = assetSerialNumber; // Savepoint sp = Database.setSavepoint(); // try { // if (equipmentSet != null) { // update equipmentSet; // } // if (rentalApplyEquipmentSetDetailList.size() > 0) { // insert rentalApplyEquipmentSetDetailList; // } // if (equipmentSetDetailList.size() > 0) { // for (Integer i=0; i 0) { // update equipmentSetDetailList2; // } // if (String.isNotBlank(assetSerialNumber)) { // update raes; // } // eSetRefreshStatus(equipmentSet.Id); // } catch (System.Exception e) { // Database.rollback(sp); // return e.getMessage(); // } // //返回结果 // return checkRS; // } // 借出备品配套一览状态即时更新 WebService static String eSetRefreshStatus(String raeSetId) { return eSetRefreshStatus(new List {raeSetId}); } public static String eSetRefreshStatus(List raeSetIds) { List updateList1 = new List(); if (!raeSetIds.isEmpty()) { for (Rental_Apply_Equipment_Set__c raes: [ select Id,Repair_Status1__c,Repair_Status_Text__c,Final_reply_day__c,Final_reply_day_text__c, Received_Confirm_NG_Not_Return__c,Received_Confirm_NG_Not_Return_Text__c, Received_Confirm_Status_Text__c, Received_Confirm_Status_F__c , NG_Final_reply_day_Text__c , NG_Final_reply_day_F__c , Yizhouweixiu_Final_reply_day_Text__c , Yizhouweixiu_Final_reply_day_F__c , Extend_Final_reply_day_Text__c , Extend_Final_reply_day_F__c , QIS_Final_reply_day_Text__c , QIS_Final_reply_day_F__c , Repair_cancel_Final_reply_day_Text__c , Repair_cancel_Final_reply_day_F__c , Return_to_office_Final_reply_day_Text__c , Return_to_office_Final_reply_day_F__c , Repair_delete_Final_reply_day_Text__c , Repair_delete_Final_reply_day_F__c , Yigoudaihuo_Final_reply_day_Text__c , Yigoudaihuo_Final_reply_day_F__c , Guzhangpaicha_Final_reply_day_Text__c , Guzhangpaicha_Final_reply_day_F__c , Repair_Agreed_Quotation_Text__c , Repair_Agreed_Quotation_F__c , Return_to_office_Final_reply_day_U_RC__c , Return_to_office_Final_reply_day_U_RC_F__c , Extend_Date__c , Extend_Date_F__c , Received_NG_ReAssign_Text__c , Received_NG_ReAssign__c from Rental_Apply_Equipment_Set__c where Id IN :raeSetIds ]) { Rental_Apply_Equipment_Set__c upd = UpdateRentalApplyEquipmentSetBatch.setRAES(raes); if (upd != null) { updateList1.add(upd); } } } //bp2 // List esdList = [ // select Id,Asset_condition__c,Asset_condition_Text__c, // Serial_Lot__c,Serial_Lot_text__c, // Asset__r.Loaner_accsessary__c, Loaner_accsessary_text__c, // Active_judgement__c,Active_judgement_select__c,Active_judgement_text__c, // Last_Reserve_RAES_Detail_RAES_F__c,Last_Reserve_RAES_Detail_RAES_Id__c, // Equipment_Set_Last_Reserve_RAES_F__c,Equipment_Set_Last_Reserve_RAES_Id__c // from Equipment_Set_Detail__c // where Equipment_Set__c IN :eSetIds]; // List updateList2 = UpdateRentalApplyEquipmentSetBatch.setESD(esdList); Savepoint sp = Database.setSavepoint(); try { if (!updateList1.isEmpty()) update updateList1; //bp2 if (updateList2.size() > 0) update updateList2; return '1'; } catch (System.Exception e) { Database.rollback(sp); return e.getMessage(); } return '1'; } //bp2 //数出一共有多少个备品Set,出库指示,全部发货会用到 // Webservice static Integer CntEquipmentSet(String Raid){ // List Raesc = [Select Equipment_Set__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c=:Raid and Cancel_Select__c = false]; // return Raesc.size(); // } // 分配验证 Webservice static String AssignBtn(String Rid){ List statusList = System.Label.StatusProcessState.split(','); List raList = [select demo_purpose2__c,next_action__c,QIS_number__r.ReplaceDeliveryDate__c,Follow_UP_Opp__r.Shipping_Finished_Day_Func__c,repair__r.Repair_Final_Inspection_Date__c,repair__r.Return_Without_Repair_Date__c,Campaign__c,Campaign__r.Status,Repair__r.Repair_Shipped_Date__c,Campaign__r.IF_Approved__c,Campaign__r.Meeting_Approved_No__c,Campaign__r.Approved_Status__c from Rental_Apply__c where id = :Rid]; // 20210803 ljh SFDC-C5HDC7 add 查询添加 Campaign__c,Campaign__r.Status,Repair__r.Repair_Shipped_Date__c if(raList.size()>0){ Rental_Apply__c Ra = raList[0]; // 20210803 ljh SFDC-C5HDC7 update 判断增加 Ra.repair__c != null && start // if(Ra.repair__r.Repair_Final_Inspection_Date__c!=null){ // return '修理最终检测日不为空,不能分配'; // }else if(Ra.repair__r.Return_Without_Repair_Date__c !=null){ // return '未修理归还日不为空,不能分配'; if(Ra.Campaign__c != null && Ra.Campaign__r.Status == '取消'){ return '学会取消,不可分配'; }else if(Ra.repair__c != null && (Ra.repair__r.Repair_Final_Inspection_Date__c!=null || Ra.Repair__r.Repair_Shipped_Date__c != null)){ return '修理有最终检测日或修理品返送日,不可分配'; }else if(Ra.repair__c != null && Ra.repair__r.Return_Without_Repair_Date__c !=null){ return '未修理归还日不为空,不能分配'; // 20210803 ljh SFDC-C5HDC7 add end }//1822 yc 20211021 start else if(Ra.demo_purpose2__c=='已购待货' && Ra.Follow_UP_Opp__r.Shipping_Finished_Day_Func__c!= null){ return '已购待货目的,新品已有发货日,不可分配'; }else if(Ra.demo_purpose2__c=='索赔QIS' && Ra.next_action__c=='无偿更换' && Ra.QIS_number__r.ReplaceDeliveryDate__c!= null){ return '索赔QIS目的,QIS已有新品发货日,不可分配'; }//1822 yc 20211108 end else if(Ra.Campaign__r.IF_Approved__c && Ra.Campaign__r.Meeting_Approved_No__c == null){ return '已申请决裁但决裁编码为空'; }//20220301 sx obpm修改 else if(Ra.Campaign__r.IF_Approved__c && Ra.Campaign__r.Meeting_Approved_No__c != null && statusList.contains(Ra.Campaign__r.Approved_Status__c)){ return '已申请决裁但决裁状态不符合条件'; }//20220315 sx obpm备品决裁状态相关修改 else{ return 'Fin'; } }else{ return '该借出申请不存在'; } } //bp2 // // 补充附属品 // WebService static String fillOtherDetail(String eSetId) { // // 不打勾的不要补充,所以看 Active_judgement_select__c // List sesd = [select Id from Equipment_Set_Detail__c where Equipment_Set__c = :eSetId and Asset__r.Loaner_accsessary__c = false and Active_judgement_select__c != :okStatus]; // if (sesd.size() > 0) { // // 要等主机回来了才能补 // return '请确认备品中主机状态'; // } // List oesd = [select Id, Last_Reserve_RAES_Detail__c from Equipment_Set_Detail__c where Equipment_Set__c = :eSetId and Asset__r.Loaner_accsessary__c = true and Equipment_Set__r.ES_Status__c not in ('引当可','引当済') and Select_rental__c = true]; // // 因为有参照备品set的字段,所以为了达到状态变成99的目的,在这里做了入库的操作,而不是全清空。 // for (Equipment_Set_Detail__c esd : oesd) { // if (esd.Last_Reserve_RAES_Detail__c != null) { // esd.Pre_Reserve_RAES_Detail__c = esd.Last_Reserve_RAES_Detail__c; // esd.Last_Reserve_RAES_Detail__c = null; // } // esd.Inspection_result_ng__c = null; // esd.Pre_inspection_time__c = null; // esd.Inspection_staff__c = null; // esd.Inspection_result__c = 'OK'; // esd.Check_lost_Item__c = 'OK'; // esd.Lost_item_check_time__c = null; // esd.Lost_item_check_staff__c = null; // esd.Lost_item_giveup__c = false; // esd.Inspection_result_after_ng__c = null; // esd.After_Inspection_time__c = null; // esd.Inspection_staff_After__c = null; // esd.Inspection_result_after__c = 'OK'; // esd.Arrival_in_wh__c = true; // esd.Arrival_wh_time__c = null; // esd.Return_wh_chenk_staff__c = null; // esd.Pre_disinfection__c = null; // esd.Water_leacage_check__c = null; ////bp2 esd.CDS_staff__c = null; ////bp2 esd.CDS_complete_time__c = null; // } // Savepoint sp = Database.setSavepoint(); // try { // update oesd; // return '1'; // } catch (System.Exception e) { // Database.rollback(sp); // return e.getMessage(); // } // return '1'; // } Webservice static String postponeCheck(String endDate, Integer d) { Date before5day = getWD_addday(date.parse(endDate), d); if (Date.today() > before5day) { return System.Label.EquipmentRentalPostponeOverDeadline; } return 'OK'; } // TODO please use public public static Date getWD_now(Date d) { List workday = [ select Id, Date__c, IsWorkDay__c from OlympusCalendar__c where Date__c >= :d and IsWorkDay__c = 1 order by Date__c limit 1]; Date selectDate = workday[0].Date__c; return selectDate; } // TODO please use public public static Date getWD_addday(Date d, Integer i) { if (d == Date.valueOf('4000-12-31')) { return d; } if (i >= 0) { List workday = [ select Id, Date__c, IsWorkDay__c from OlympusCalendar__c where Date__c >= :d and IsWorkDay__c = 1 order by Date__c limit :(i+1)]; Date selectDate = workday[i].Date__c; return selectDate; } else { i = Math.abs(i); List workday = [ select Id, Date__c, IsWorkDay__c from OlympusCalendar__c where Date__c <= :d and IsWorkDay__c = 1 order by Date__c desc limit :(i+1)]; Date selectDate = workday[i].Date__c; return selectDate; } } // pd:0代表当天,1代表第二天 public Map> getDateMap(Date sd, Date ed, Integer pd) { Map> returnMap = new Map>(); List workdayList = [ select Id, Date__c, IsWorkDay__c from OlympusCalendar__c where Date__c >= :sd and Date__c <= :ed.addDays(15 + pd) // +15 的目的是、为了取得ed の 下一个工作日 order by Date__c]; for (Integer i = 0; i < workdayList.size(); i++) { OlympusCalendar__c wd = workdayList[i]; if (wd.Date__c > ed) break; Integer nextWordDays = 0; Map valueMap = new Map(); valueMap.put('WorkDay', String.valueOf(wd.IsWorkDay__c)); Integer maxJ = 15 + i + pd; if (maxJ > workdayList.size()) maxJ = workdayList.size(); for (Integer j = i; j < maxJ; j++) { OlympusCalendar__c oc = workdayList[j]; if (oc.IsWorkDay__c == 1) { nextWordDays++; if (nextWordDays == pd + 1) { valueMap.put('Next', String.valueOf(oc.Date__c)); break; } } } returnMap.put(wd.Date__c, valueMap); } return returnMap; } //bp2 //// TODO katsu select in for, why?、getBetweenWD をなくす方向、Countだけなら、getOlympusWorkDayCount のメソッドがあります。 // //工作日 // WebService static String getBetweenWD(String sd, String ed) { // String betweenWD = '0'; // if (sd != '' && ed != '') { // Date sdate = Date.valueof(sd.replace('/','-')); // Date edate = Date.valueof(ed.replace('/','-')); // List workdayList = [ // select Id, Date__c, IsWorkDay__c // from OlympusCalendar__c // where Date__c >= :sdate // and Date__c <= :edate // and IsWorkDay__c = 1 // order by Date__c]; // betweenWD = String.valueOf(workdayList.size()); // } // return betweenWD; // } //bp2 OLY_OCM-113 ////自然日 //Webservice static String getBetweenNaturalDay(String sd, String ed){ // String betweenND = '0'; // if(sd != '' && ed != ''){ // Date sdate = Date.valueof(sd.replace('/','-')); // Date edate = Date.valueof(ed.replace('/','-')); // Integer days = sdate.daysBetween(edate); // betweenND = String.valueOf(days); // } // return betweenND; //} //WebService static String sendAll(String raid) { // return '1'; //} ////bp2 OLY_OCM-81 //*************************Create 20160825 SWAG-AD59Z6 趙徳芳 Start*************************// // //全部发货 // WebService static String DeliverAll(String raid){ // List raList = [select id,repair__r.Repair_Final_Inspection_Date__c,Bollow_Date__c,repair__r.Return_Without_Repair_Date__c, delivery_company__c, Return_to_wh_staff__c, Distributor_method__c, Tracking_Number__c, // Shippment_loaner_time__c,Status__c,All_Delivery_Flag_c__c // from Rental_Apply__c // where id = :raid]; // Rental_Apply__c Ra = new Rental_Apply__c(); // System.debug(raList); // if(raList.size()>0){ // Ra = raList[0]; // if(Ra.delivery_company__c == null|| // Ra.Return_to_wh_staff__c == null || // Ra.Distributor_method__c == null || // Ra.Tracking_Number__c == null){ // return '请补全发货物流信息'; // }else if(Ra.Status__c !='出库指示完了'){ // return '请先做出库指示后,再进行出库'; // } // //else if(Ra.repair__c.Repair_Final_Inspection_Date__c DeliveryGoodDetail = new List(); // DeliveryGoodDetail = [select id,name,Equipment_Set__c from Rental_Apply_Equipment_Set__c where Shippment_loaner_time__c =null and Rental_Apply__c =:raid and Cancel_Select__c = false]; // if(DeliveryGoodDetail.size()>0){ // List ExistSet = new List(); // ExistSet = [select id,name,Equipment_Set__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c =:raid and Cancel_Select__c = false]; // List sqlLine = new List(); // for(Rental_Apply_Equipment_Set__c RAESC : DeliveryGoodDetail){ // sqlLine.add(RAESC.Equipment_Set__c); // } // List ResultSet = new List(); // ResultSet = [select id,Pre_inspection_time__c,Shippment_loaner_time__c from Equipment_Set__c where id in:sqlLine]; // System.debug(ResultSet); // Integer Ncnt =0; // for(Equipment_Set__c ESC : ResultSet){ // if(ESC.Shippment_loaner_time__c!=null){ // Ncnt=Ncnt+1; // } // } // Savepoint sp = Database.setSavepoint(); // List UpsertEsc = new List(); // if(Ncnt==0){ // for(Equipment_Set__c ESC : ResultSet){ // Equipment_Set__c EscEle = new Equipment_Set__c(); // EscEle.id=ESC.id; // EscEle.delivery_company__c = Ra.delivery_company__c; // EscEle.Return_to_wh_staff__c = Ra.Return_to_wh_staff__c; // EscEle.Distributor_method__c = Ra.Distributor_method__c; // EscEle.Fedex_number__c = Ra.Tracking_Number__c; // EscEle.StockDown__c = true; // UpsertEsc.add(EscEle); // } // if(UpsertEsc.size()>0){ // Ra.All_Delivery_Flag_c__c = true; // try{ // update Ra; // update UpsertEsc; // return 'Fin'; // }catch (System.Exception e){ // Database.rollback(sp); // return e.getMessage(); // } // }else{ // return '所选备品Set,已全部出库,无法再次出库'; // } // }else{ // return '备品已出库'; // } // }else{ // return '本借出申请无需要出库的备品'; // } // } // }else{ // return '无效的备品借出申请'; // } // } ////bp2 OLY_OCM-81 ////*************************Create 20160825 SWAG-AD59Z6 趙徳芳 End***************************// // WebService static String receiveAll(String raid) { // List raList = [select id, Return_Track_Company__c, Return_Distrubutor_Method__c, Return_Trake_Staff__c, Return_Track_Number__c, // Shippment_loaner_time__c // from Rental_Apply__c // where id = :raid]; // if (raList.size() == 0) { // return '无效的备品借出申请'; // } // Rental_Apply__c ra = raList[0]; // if (ra.Return_Track_Company__c == null || // ra.Return_Distrubutor_Method__c == null || // ra.Return_Trake_Staff__c == null || // ra.Return_Track_Number__c == '' || ra.Return_Track_Number__c == null) { // return '请补全回库物流信息'; // } // if (ra.Shippment_loaner_time__c == null) { // return '备品还没出库'; // } // List raesList = [select id, Equipment_Set__c from Rental_Apply_Equipment_Set__c where Shippment_loaner_time__c != null and Rental_Apply__c = :raid and Cancel_Select__c = false]; // if (raesList.size() == 0) { // return '备品还没出库'; // } // Map RaesEsIdMap = new Map(); // List esidList = new List(); // for (Rental_Apply_Equipment_Set__c raes : raesList) { // esidList.add(raes.Equipment_Set__c); // RaesEsIdMap.put(raes.Equipment_Set__c, raes.Id); // } // List esList = [select id,Return_Fedex_number__c,Last_Reserve_Rental_Apply_Equipment_Set__c from Equipment_Set__c where id in :esidList]; // List updList = new List(); // for (Equipment_Set__c es : esList) { // if ((es.Return_Fedex_number__c == null || es.Return_Fedex_number__c == '') && es.Last_Reserve_Rental_Apply_Equipment_Set__c == RaesEsIdMap.get(es.Id)) { // Equipment_Set__c tmp = new Equipment_Set__c( // id = es.id, // Return_delivery_company__c = ra.Return_Track_Company__c, // Received_confirmation_staff__c = ra.Return_Trake_Staff__c, // Return_Distributor_method__c = ra.Return_Distrubutor_Method__c, // Return_Fedex_number__c = ra.Return_Track_Number__c // ); // updList.add(tmp); // } // } // if (updList.size() == 0) { // return '备品已经全部回库'; // } else { // try { // update updList; // } catch (Exception ex) { // return ex.getMessage(); // } // } // return '1'; // } WebService static String RentalApplyCancel(String raid, Boolean autoCancel) { List raList = [select id, Shipment_request_Cnt__c, Status__c, RA_Status__c, Shippment_loaner_cnt__c, Loaner_cancel_request__c, Arrival_wh_cnt__c, Cancel_Reason__c from Rental_Apply__c where id = :raid]; List raesList = [select id, StockDown_time__c //bp2 , Equipment_Set__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :raid and Cancel_Select__c = false]; List updList = new List(); // List delList = new List(); Set esIdSet = new Set(); if (raList.size() <= 0) { return '备品申请书不存在。'; } Rental_Apply__c ra = raList[0]; if (ra.Status__c == '取消') { return '备品申请书已经取消。'; } if (ra.Status__c == '删除') { return '备品申请书已经删除。'; } if (ra.RA_Status__c == FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku.ordinal()) || ra.Arrival_wh_cnt__c > 0) { return '备品已经出库,不能取消。'; } User loginUser = [Select Id, Name, ProfileId From User where Id = :Userinfo.getUserId()]; if(loginUser.ProfileId != System.Label.ProfileId_SystemAdmin && loginUser.ProfileId != System.Label.ProfileId_EquipmentCenter && !System.Label.ProfileId_EquCenCheckAndDepot.contains(loginUser.ProfileId) && !System.Label.ProfileId_EquCenAdmin.contains(loginUser.ProfileId) && loginUser.ProfileId != System.Label.ProfileId_IThelp && ra.Shipment_request_Cnt__c > 0 ){ return '不能取消申请,请联系备品中心窗口取消。'; } if (autoCancel == false && String.isBlank(ra.Cancel_Reason__c)) { return '必须输入取消理由。'; } ra.Status__c = '取消'; if (autoCancel) { ra.Cancel_Reason__c = '被动取消'; } // Map assetMap = new Map(); // for (Rental_Apply_Equipment_Set__c raes : raesList) { // // if (raes.StockDown_time__c != null) { // raes.Cancel_Select__c = true; // raes.Cancel_Reason__c = ra.Loaner_cancel_request__c; // if (autoCancel) { // raes.Cancel_Reason__c = '被动取消'; // } // updList.add(raes); //bp2 esIdSet.add(raes.Equipment_Set__c); // } else { // delList.add(raes); //bp2 esIdSet.add(raes.Equipment_Set__c); // } // Asset ass = new Asset(Id = raes.Asset__c, Last_Reserve_RAES_Detail__c = null); // assetMap.put(raes.Asset__c, ass); // } Savepoint sp = Database.setSavepoint(); try { Set assetIdSet = new Set(); for (Rental_Apply_Equipment_Set_Detail__c raesd : [SELECT Id, Asset__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = :raid FOR UPDATE] ) { if (String.isNotBlank(raesd.Asset__c)) { assetIdSet.add(raesd.Asset__c); } } if (assetIdSet.size() > 0) { List assetList = [SELECT Id FROM Asset WHERE Id = :assetIdSet FOR UPDATE]; } update ra; //if (updList.size() > 0) update updList; // if (!assetMap.isEmpty()) update assetMap.values(); //bp2 ControllerUtil.setEquipmentSetProvisionFlg(esIdSet); } catch (Exception ex) { return ex.getMessage(); Database.rollback(sp); } return '1'; } // 一覧単位 WebService static String setRaesShipment_request(String raesid) { return setShipment_requests(null, raesid); } // 申請書単位 WebService static String setShipment_request(String raid) { return setShipment_requests(raid, null); } //出库指示按钮js一次最多更新200条,所以改在WebService做出库指示 WebService static String setShipment_requests(String raid, String raesid) { Savepoint sp = Database.setSavepoint(); try { //一览情况下检索一览对应的申请书Id,soql子查询不能和主查询是同一个表,单独检索一次 if (String.isBlank(raid)) { List raList = [select Id, Rental_Apply__c from Rental_Apply_Equipment_Set__c where id = :raesid]; if (raList.size() > 0) { raid = raList[0].Rental_Apply__c; } else { //应该不会到这里 return '没有可以出库指示的一览'; } } String soql = 'SELECT Id' + ' FROM Rental_Apply_Equipment_Set__c ' + ' WHERE Shippment_loaner_time2__c <> null ' + ' AND Rental_Apply__c = :raid ' + ' ORDER BY Id' ; List shippedRaesList = Database.query(soql); String raesStrShipped = ''; for (Rental_Apply_Equipment_Set__c raes : shippedRaesList) { raesStrShipped += raes.Id; } //Srring soql = "SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = '{!Rental_Apply__c.Id}' AND Cancel_Select__c = false AND Rental_Num__c > 0 AND Rental_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 AND Rental_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 AND Shipment_request__c = false"; soql = 'SELECT Id, Rental_Apply__c, Rental_Apply_Equipment_Set__c' + ' FROM Rental_Apply_Equipment_Set_Detail__c ' + ' WHERE ' + (String.isNotBlank(raesid) ? 'Rental_Apply_Equipment_Set__c = :raesid ' : 'Rental_Apply__c = :raid ') + ' AND Cancel_Select__c = false ' + ' AND Rental_Num__c > 0 ' + ' AND Rental_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 ' + ' AND Rental_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 ' + ' AND Shipment_request__c = false' + ' ORDER BY Rental_Apply_Equipment_Set__c, Id'; List raesds = Database.query(soql); Map> rental_Asset_SerialNumberMap = new Map>(); if (raesds.size() < 1) { return '没有可以出库指示的一览'; } else { Set raesSet = new Set(); String raesStrRequest = ''; for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) { if (false == raesSet.contains(raesd.Rental_Apply_Equipment_Set__c)) { raesSet.add(raesd.Rental_Apply_Equipment_Set__c); raesStrRequest += raesd.Rental_Apply_Equipment_Set__c; } raesd.Shipment_request_time2__c = Datetime.now(); raesd.Shipment_request__c = true; } // 出库后, 再次做出库指示的一览, 一定要个出过库的一览一样 if (false == String.isBlank(raesStrShipped) && raesStrRequest != raesStrShipped) { return '不能做出库指示,需要分单后再操作'; } } Rental_Apply__c ra = new Rental_Apply__c(Id = raesds[0].Rental_Apply__c, Status__c = '已出库指示'); update ra; Database.SaveResult[] results = Database.update(raesds); Database.SaveResult dmlResult = results[0]; if (dmlResult.isSuccess()) { //明细更新成功后才更新一览的Rental_Asset_SerialNumber__c soql = 'SELECT Id, SerialNumber_text__c, Rental_Apply_Equipment_Set__c ' +'FROM Rental_Apply_Equipment_Set_Detail__c ' +'WHERE Rental_Apply__c = \'' + raesds[0].Rental_Apply__c + '\'' +'AND Shipment_request_time2__c != null ' +'AND Shipment_request__c = true ' +'AND SerialNumber_text__c != null ' +'ORDER BY Rental_Apply_Equipment_Set__c '; List raesdSerialNumbers = Database.query(soql); for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdSerialNumbers) { if (!rental_Asset_SerialNumberMap.containsKey(raesd.Rental_Apply_Equipment_Set__c)) { // Asset__r.SerialNumber + ',' rental_Asset_SerialNumberMap.put(raesd.Rental_Apply_Equipment_Set__c, new List()); } rental_Asset_SerialNumberMap.get(raesd.Rental_Apply_Equipment_Set__c).add(raesd.SerialNumber_text__c); } List raess = new List(); for (Id key : rental_Asset_SerialNumberMap.keySet()) { raess.add(new Rental_Apply_Equipment_Set__c(Id = key, Rental_Asset_SerialNumber__c = ',' + String.join(rental_Asset_SerialNumberMap.get(key), ',') + ',')); } if (!raess.isEmpty()) { update raess; } return '状态更新到已出库指示'; } else { Database.rollback(sp); Database.Error emsg = dmlResult.getErrors()[0]; return 'failed to update:' + emsg.getFields() + ' ' + emsg.getMessage(); } } catch (Exception ex) { Database.rollback(sp); return ex.getMessage(); } } /** * 注残申请备品的管控 */ WebService static String RentalApplyCheckForSAoneEle(String SaID) { Statu_Achievements__c Sac = [select id, SalesChannel__c, Opportunity__r.Sales_Root__c, Status_1__c, Status_2_Formula__c, Opp_Number__c, ContractNO__c, FirstApproveDate__c, CreatedDate, X30_Deposit_Day__c, Deposit_In_Full_Day__c, DeliveryDate__c, Backorder_complete_day__c, DeliveryStatus__c from Statu_Achievements__c where id = :SaID]; if(Sac.Opportunity__r.Sales_Root__c == '販売店'){ if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET') ){ //modify by lyh 20220606 start 已购待货逻辑调整 //客户GIR订单,注残状态2是“12付全款-14已发货“这个区间且发货状态为”未交付、和部分交付“时,自付款日起第31天未生成”客户订单最终发货日“时,方可以提交”已购待货“目的的备品申请 //if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-30)>Sac.Deposit_In_Full_Day__c)&&Sac.DeliveryDate__c == null){ if((Sac.Status_2_Formula__c == '12 已订货・付全款' || Sac.Status_2_Formula__c == '13 待发货' || Sac.Status_2_Formula__c == '14 已发货') && (Sac.DeliveryStatus__c == '未交付' || Sac.DeliveryStatus__c == '部分交付')) { if((Date.today().addDays(-30) > Sac.Deposit_In_Full_Day__c) && Sac.Backorder_complete_day__c == null) { //modify by lyh 20220606 end 已购待货逻辑调整 return 'Fin'; } else { return '经销商内科订单不在申请期内,不能申请备品'; } }else{ return '经销商内科订单状态不符合备品申请资格,不能申请备品'; } }else if(Sac.Opp_Number__c.contains('SP')){ //modify by lyh 20220606 start 已购待货逻辑调整 //客户SP订单,注残状态2是“11付定金-14已发货“这个区间且发货状态为”未交付、和部分交付“时,自付款日起第61天未生成”客户订单最终发货日“时,方可以提交”已购待货“目的的备品申请 //if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-60)>Sac.X30_Deposit_Day__c )&&Sac.DeliveryDate__c == null){ if((Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货'||Sac.Status_2_Formula__c=='14 已发货') && (Sac.DeliveryStatus__c == '未交付' || Sac.DeliveryStatus__c == '部分交付')) { if((Date.today().addDays(-60) > Sac.X30_Deposit_Day__c ) && Sac.Backorder_complete_day__c == null){ //modify by lyh 20220606 end 已购待货逻辑调整 return 'Fin'; }else{ return '经销商SP订单不在申请期内,不能申请备品'; } }else{ return '经销商SP订单状态不符合备品申请资格,不能申请备品'; } }else{ return '注残销售渠道类别不在可申请备品范围内'; } }else if(Sac.Opportunity__r.Sales_Root__c == 'OCM直接販売'){ if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET')){ //modify by lyh 20220606 start 已购待货逻辑调整 //注残状态2是“9已录订单未付款-14已发货“这个区间且发货状态为”未交付、和部分交付“且“销售渠道为直销时”,GIR订单自订单录入日起第31天/未生成”客户订单最终发货日“时,方可以提交”已购待货“目的的备品申请 //if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-30)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){ if((Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货'||Sac.Status_2_Formula__c=='14 已发货') && (Sac.DeliveryStatus__c == '未交付' || Sac.DeliveryStatus__c == '部分交付')){ if((Date.today().addDays(-30) > Sac.FirstApproveDate__c ) && Sac.Backorder_complete_day__c == null) { //modify by lyh 20220606 end 已购待货逻辑调整 return 'Fin'; }else{ return 'OCM直销内科订单不在申请期内,不能申请备品'; } }else{ return 'OCM直销内科订单状态不符合备品申请资格,不能申请备品'; } }else if(Sac.Opp_Number__c.contains('SP')){ //modify by lyh 20220606 start 已购待货逻辑调整 //注残状态2是“9已录订单未付款-14已发货“这个区间且发货状态为”未交付、和部分交付“且“销售渠道为直销时”,SP订单61天未生成”客户订单最终发货日“时,方可以提交”已购待货“目的的备品申请 //if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-60)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){ if((Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货'||Sac.Status_2_Formula__c=='14 已发货') && (Sac.DeliveryStatus__c == '未交付' || Sac.DeliveryStatus__c == '部分交付')) { if((Date.today().addDays(-60) > Sac.FirstApproveDate__c ) && Sac.Backorder_complete_day__c == null) { //modify by lyh 20220606 end 已购待货逻辑调整 return 'Fin'; }else{ return 'OCM直销SP订单不在申请期内,不能申请备品'; } }else{ return 'OCM直销SP订单状态不符合备品申请资格,不能申请备品'; } }else{ return '注残销售渠道类别不在可申请备品范围内。'; } }else{ return '销售渠道未知,不能新建'; } } //bp2 //public static String RentalApplyCheckForSA(String raid,String SaID) { // List ProList = new List(); // if(raid!=null){ // Rental_Apply__c Ra = [select id, // Product_category__c, // ProductNameNum1__c, // ProductNameNum10__c, // ProductNameNum2__c, // ProductNameNum3__c, // ProductNameNum4__c, // ProductNameNum5__c, // ProductNameNum6__c, // ProductNameNum7__c, // ProductNameNum8__c, // ProductNameNum9__c // from // Rental_Apply__c // where // id=: Raid]; // ProList.add(Ra.ProductNameNum1__c); // ProList.add(Ra.ProductNameNum2__c); // ProList.add(Ra.ProductNameNum3__c); // ProList.add(Ra.ProductNameNum4__c); // ProList.add(Ra.ProductNameNum5__c); // ProList.add(Ra.ProductNameNum6__c); // ProList.add(Ra.ProductNameNum7__c); // ProList.add(Ra.ProductNameNum8__c); // ProList.add(Ra.ProductNameNum9__c); // ProList.add(Ra.ProductNameNum10__c); // List ast = [select // id, // Backorder__c // from // asset // where // Backorder__c =:SaID]; // for(asset asl : ast){ // for(String proStr : ProList){ // if(asl.Id == proStr){ // return '产品已发货,不能申请备品'; // } // } // } // } // Statu_Achievements__c Sac = [select id, // SalesChannel__c, // Status_1__c, // Status_2_Formula__c, // Opp_Number__c, // CreatedDate, // FirstApproveDate__c, // Opportunity__r.Sales_Root__c, // X30_Deposit_Day__c, // Deposit_In_Full_Day__c, // DeliveryDate__c // from Statu_Achievements__c where id = :SaID]; // if(Sac.Opportunity__r.Sales_Root__c == '販売店'){ // if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET') ){ // if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-30)>Sac.Deposit_In_Full_Day__c)&&Sac.DeliveryDate__c == null){ // return 'Fin'; // }else{ // return '经销商内科订单不在申请期内,不能申请备品'; // } // }else{ // return '经销商内科订单状态不符合备品申请资格,不能申请备品'; // } // }else if(Sac.Opp_Number__c.contains('SP')){ // if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-60)>Sac.X30_Deposit_Day__c )&&Sac.DeliveryDate__c == null){ // return 'Fin'; // }else{ // return '经销商SP订单不在申请期内,不能申请备品'; // } // }else{ // return '经销商SP订单状态不符合备品申请资格,不能申请备品'; // } // }else{ // return 'Denied'; // } // }else if(Sac.Opportunity__r.Sales_Root__c == 'OCM直接販売'){ // if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET')){ // if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-30)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){ // return 'Fin'; // }else{ // return 'OCM直销内科不在申请期内,不能申请备品'; // } // }else{ // return 'OCM直销内科订单状态不符合备品申请资格,不能申请备品'; // } // }else if(Sac.Opp_Number__c.contains('SP')){ // if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){ // if((Date.today().addDays(-60)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){ // return 'Fin'; // }else{ // return '直销SP订单不在申请期内,不能申请备品'; // } // }else{ // return 'OCM直销SP订单状态不符合备品申请资格,不能申请备品'; // } // }else{ // return 'Fin'; // } // }else{ // return '销售渠道未知,不能新建'; // } //} // bp2 ///** //备品是否可以继续操作的管控 //*/ //public static String rentalContiuneCheck(List newList,Map oldMap){ // List RaidList = new List(); // for(Rental_Apply__c ra : newList){ // RaidList.add(ra.id); // } // List RaTarList = [select Campaign__c,Repair__c, // Campaign__r.Status,Repair__r.Repair_Final_Inspection_Date__c,Repair__r.Repair_Shipped_Date__c // from Rental_Apply__c // where id=:RaidList]; // for(Rental_Apply__c RaTar : RaTarList){ // String RsStr = ''; // if( RaTar.Campaign__r.Status == '取消'|| // RaTar.Campaign__r.Status == '取消申请中'|| // RaTar.Campaign__r.Status == '已提交报告'|| // RaTar.Campaign__r.Status == '已结束'){ // RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap); // if(RsStr == 'Denied'){ // return '学会已结束,申请单不能继续操作了'; // }else{ // return 'Fin'; // } // }else if( RaTar.Repair__r.Repair_Final_Inspection_Date__c!=null){ // RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap); // if(RsStr == 'Denied'){ // return '存在修理最终检测日,申请单不能继续了'; // }else{ // return 'Fin'; // } // }else if( RaTar.Repair__r.Repair_Shipped_Date__c!=null){ // RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap); // if(RsStr == 'Denied'){ // return '存在RC修理返送日,申请单不能继续了'; // }else{ // return 'Fin'; // } // }else{ // return 'Fin'; // } // } // return 'Fin'; //} //bp2 // public static String rentalContiuneinfoCheck(List newList,Map oldMap){ // for(Rental_Apply__c Rac : newList){ // if( // //bp2 Trigger.oldMap.get(Rac.Id).get('HP_received_ng_num__c') != Rac.HP_received_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('StockDown_ng_num__c') != Rac.StockDown_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Asset_return_time__c') != Rac.Asset_return_time__c || // Trigger.oldMap.get(Rac.Id).get('Count_Extend__c') != Rac.Count_Extend__c || // Trigger.oldMap.get(Rac.Id).get('Max_Extend_workday__c') != Rac.Max_Extend_workday__c || // //bp2 Trigger.oldMap.get(Rac.Id).get('Lost_item_ng_num__c') != Rac.Lost_item_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Lost_item_finish__c') != Rac.Lost_item_finish__c || // Trigger.oldMap.get(Rac.Id).get('Last_Assigned_Date__c') != Rac.Last_Assigned_Date__c || // Trigger.oldMap.get(Rac.Id).get('Return_dadeline_final__c') != Rac.Return_dadeline_final__c || // Trigger.oldMap.get(Rac.Id).get('Rental_Apply_Equipment_Set_Cnt__c') != Rac.Rental_Apply_Equipment_Set_Cnt__c || // Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_num__c') != Rac.Pre_inspection_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Shippment_ng_num__c') != Rac.Shippment_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('ShelfUp_ng_num__c') != Rac.ShelfUp_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Loaner_received_ng_num__c') != Rac.Loaner_received_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Arrival_wh_cnt__c') != Rac.Arrival_wh_cnt__c || // Trigger.oldMap.get(Rac.Id).get('Shippment_loaner_cnt__c') != Rac.Shippment_loaner_cnt__c || // Trigger.oldMap.get(Rac.Id).get('Shipment_requested_cnt__c') != Rac.Shipment_requested_cnt__c || // Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_cnt2__c') != Rac.Pre_inspection_ng_cnt2__c || // Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_cnt__c') != Rac.Pre_inspection_ng_cnt__c || // Trigger.oldMap.get(Rac.Id).get('Shippment_loaner_time__c') != Rac.Shippment_loaner_time__c || // Trigger.oldMap.get(Rac.Id).get('Asset_loaner_closed_date__c') != Rac.Asset_loaner_closed_date__c || // Trigger.oldMap.get(Rac.Id).get('Asset_loaner_start_date__c') != Rac.Asset_loaner_start_date__c || // Trigger.oldMap.get(Rac.Id).get('Disposal_num__c') != Rac.Disposal_num__c || // Trigger.oldMap.get(Rac.Id).get('Asset_return_ng_num__c') != Rac.Asset_return_ng_num__c || // Trigger.oldMap.get(Rac.Id).get('Received_Confirm_NG_amount__c') != Rac.Received_Confirm_NG_amount__c || // Trigger.oldMap.get(Rac.Id).get('Received_Confirm_NG_Not_Return__c') != Rac.Received_Confirm_NG_Not_Return__c || ////bp2 Trigger.oldMap.get(Rac.Id).get('Loaner_received_time__c') != Rac.Loaner_received_time__c || // Trigger.oldMap.get(Rac.Id).get('Return_Track_Company__c') != Rac.Return_Track_Company__c || // Trigger.oldMap.get(Rac.Id).get('Return_Distrubutor_Method__c') != Rac.Return_Distrubutor_Method__c || // Trigger.oldMap.get(Rac.Id).get('Return_Trake_Staff__c') != Rac.Return_Trake_Staff__c || // Trigger.oldMap.get(Rac.Id).get('Return_Track_Number__c') != Rac.Return_Track_Number__c || // Trigger.oldMap.get(Rac.Id).get('HP_received_sign_day__c') != Rac.HP_received_sign_day__c || // Trigger.oldMap.get(Rac.Id).get('HP_received_sign_rich__c') != Rac.HP_received_sign_rich__c || // Trigger.oldMap.get(Rac.Id).get('HP_received_sign_text__c') != Rac.HP_received_sign_text__c || // Trigger.oldMap.get(Rac.Id).get('HP_received_sign_NG__c') != Rac.HP_received_sign_NG__c || // Trigger.oldMap.get(Rac.Id).get('HP_received_sign_NG_Reason__c') != Rac.HP_received_sign_NG_Reason__c || // Trigger.oldMap.get(Rac.Id).get('AssetManageConfirm__c') != Rac.AssetManageConfirm__c || // Trigger.oldMap.get(Rac.Id).get('Loaner_cancel_request__c') != Rac.Loaner_cancel_request__c || // Trigger.oldMap.get(Rac.Id).get('Status__c') != Rac.Status__c // ){ // return 'Fin'; // } //} // return 'Denied'; // } }