| | |
| | | + ', Equipment_Type_F__c' //20210508 LJH ADD 1672 |
| | | + ', Wei_Assigned_Cnt__c' // 20210624 ljh add SFDC-C448GR start |
| | | + ', Campaign__r.IF_Approved__c' // 20220315 ljh add |
| | | + ', Campaign__r.Meeting_Approved_No__c' // 20220315 ljh add |
| | | + ', Campaign__r.Meeting_Approved_No__r.Name' // 20220315 ljh add |
| | | + ', Campaign__r.Approved_Status__c' // 20220315 ljh add |
| | | + ' FROM Rental_Apply__c' |
| | | + ' WHERE Id=\'' + taId + '\''; |
| | |
| | | WHERE id =:taId |
| | | ]; |
| | | for (Rental_Apply__c RaTar : RaTarList) { |
| | | if( RaTar.Campaign__r.Status == '取消'){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '学会已取消,不能继续操作了')); |
| | | // 20230215 ljh DB202301265636 学会取消申请也拦截 start |
| | | // if( RaTar.Campaign__r.Status == '取消'){ |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '学会已取消,不能继续操作了')); |
| | | if( RaTar.Campaign__r.Status == '取消' || RaTar.Campaign__r.Status == '取消申请中' ){ |
| | | String tempS = ''; |
| | | if(RaTar.Campaign__r.Status == '取消'){ |
| | | tempS = '已取消'; |
| | | }else{ |
| | | tempS = '申请取消中'; |
| | | } |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '学会'+tempS+',不能继续操作了')); |
| | | // 20230215 ljh DB202301265636 学会取消申请也拦截 end |
| | | return false; |
| | | } |
| | | // else if(RaTar.Repair__r.Repair_Final_Inspection_Date__c != null){ |
| | |
| | | robj.Cancel_Select__c = false; |
| | | robj.Cancel_Reason__c = ''; |
| | | robj.Rental_Start_Date__c = RentalStartDateMap.containsKey(esd.tempOldRaesIdSub)?RentalStartDateMap.get(esd.tempOldRaesIdSub):craes.Rental_Start_Date__c ; |
| | | switch on parentObj.demo_purpose2__c{ |
| | | when '试用(无询价)','试用(有询价)','新产品评价','其他','协议借用' { |
| | | robj.Rental_End_Date__c = robj.Rental_Start_Date__c + intValueOf(parentObj.Hope_Lonaer_date_Num__c); |
| | | } |
| | | when '一般用户','保修用户','市场多年保修','再修理','索赔QIS','已购待货','故障排查' { |
| | | robj.Rental_End_Date__c = robj.Rental_Start_Date__c + 30; |
| | | } |
| | | when '学会展会' { |
| | | robj.Rental_End_Date__c = parentObj.Campaign_EndDate_F__c + 5; |
| | | } |
| | | } |
| | | robj.Rental_End_Date__c = setRentalEndDate(robj.Rental_Start_Date__c, parentObj); |
| | | |
| | | //robj.Rental_End_Date__c = robj.Rental_Start_Date__c + Integer.valueOf(craes.Test_Day__c); |
| | | // 新记录 Canceled__c & Canceled_Id__c 为选中一览的Id |
| | | robj.Canceled__c = craes.canDelete__c?craes.Canceled__c:craes.Id; |
| | |
| | | if(!isRaStatusOK()) { |
| | | return; |
| | | } |
| | | |
| | | Id userId = Userinfo.getUserId(); // 20210624 ljh add SFDC-C448GR |
| | | Datetime now = System.now(); |
| | | if(isSameCity) { |
| | |
| | | if(raesd.Is_Body__c) { |
| | | mainIdList.add(raesd.Asset__c); |
| | | raesIdSet.add(esd.rec.Rental_Apply_Equipment_Set__c); |
| | | |
| | | // add lc 20220927 SFDC-CJ48VE 备品预计出库日逻辑调整 start |
| | | // 备品预计出库日应该等于今天,否则不能发货 |
| | | if( esd.rec.Rental_Apply_Equipment_Set__r.Rental_Start_Date__c != Date.today() ){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '备品预计出货日应该等于今天,否则不能发货!')); |
| | | return; |
| | | } |
| | | // add lc 20220927 SFDC-CJ48VE 备品预计出库日逻辑调整 end |
| | | } |
| | | |
| | | // 分配时临时取消的在发货后彻底取消 |
| | | if(raesd.AgencyTempCancel__c) { |
| | | raesd.Cancel_Select__c = true; |
| | |
| | | // 发货前检测时间和检测人在trigger里设 |
| | | raesd.Shippment_loaner_time__c = now; |
| | | // 20220309 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 start |
| | | // Datetime keyDt = raesd.Add_Request_approval_time__c != null?raesd.Add_Request_approval_time__c:raesd.Rental_Apply__r.Request_approval_time__c; |
| | | // List<Rental_Apply_Equipment_Set_Detail__c> tempRaesdL; |
| | | // if(approvalMap.containsKey(keyDt)){ |
| | | // tempRaesdL = approvalMap.get(keyDt); |
| | | // }else{ |
| | | // tempRaesdL = new List<Rental_Apply_Equipment_Set_Detail__c>(); |
| | | // } |
| | | // tempRaesdL.add(raesd); |
| | | // approvalMap.put(keyDt,tempRaesdL); |
| | | Datetime keyDt = raesd.Add_Request_approval_time__c != null?raesd.Add_Request_approval_time__c:raesd.Rental_Apply__r.Request_approval_time__c; |
| | | List<Rental_Apply_Equipment_Set_Detail__c> tempRaesdL; |
| | | if(approvalMap.containsKey(keyDt)){ |
| | | tempRaesdL = approvalMap.get(keyDt); |
| | | }else{ |
| | | tempRaesdL = new List<Rental_Apply_Equipment_Set_Detail__c>(); |
| | | } |
| | | tempRaesdL.add(raesd); |
| | | approvalMap.put(keyDt,tempRaesdL); |
| | | // 20220309 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 end |
| | | updateRaesdList.add(raesd); |
| | | } |
| | |
| | | slip.Shippment_loaner_time__c = now; |
| | | FixtureUtil.withoutUpsertObjects(new List<FixtureDeliverySlip__c> {slip}); |
| | | // 20220309 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 start |
| | | // map<String,Decimal> ApplyToShipmentMap = new map<String,Decimal>(); |
| | | // if(approvalMap.size() > 0 ){ |
| | | // // dtList[0] 第一个就是最小时间 |
| | | // List<Datetime> dtList = new List<Datetime>(approvalMap.keySet()); |
| | | // Date startDateSOQL = date.newinstance(dtList[0].year(), dtList[0].month(), dtList[0].day()); |
| | | // List<OlympusCalendar__c> ocList = [SELECT Id, Date__c,IsWorkDay__c |
| | | // FROM OlympusCalendar__c |
| | | // WHERE Date__c >= :startDateSOQL |
| | | // AND Date__c <= :Date.today() |
| | | // ORDER BY Date__c ASC]; |
| | | // for(Datetime dt:dtList){ |
| | | // Boolean startFlag = false; |
| | | // Boolean endFlag = false; |
| | | // Datetime startTime = dt; |
| | | // Date startDate = Date.newInstance(startTime.year(),startTime.month(),startTime.day()); |
| | | // Datetime endTime = Datetime.now(); |
| | | // Date endDate = Date.today(); |
| | | // // 审批时间是非奥林巴斯工作日 |
| | | // if(ocList[0].IsWorkDay__c == 0){ |
| | | // for(OlympusCalendar__c oc:ocList){ |
| | | // if(oc.IsWorkDay__c == 1){ |
| | | // startTime = Datetime.newInstance(oc.Date__c.year(),oc.Date__c.month(),oc.Date__c.day(),0,0,0); |
| | | // startDate = oc.Date__c; |
| | | // startFlag = true; |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | // // 发货时间是非奥林巴斯工作日 |
| | | // if(ocList[ocList.size() - 1].IsWorkDay__c == 0){ |
| | | // for(Integer i = ocList.size() - 1; i <= 0;i--){ |
| | | // if(ocList[i].IsWorkDay__c == 1){ |
| | | // endTime = Datetime.newInstance(ocList[i].Date__c.addDays(1).year(),ocList[i].Date__c.addDays(1).month(),ocList[i].Date__c.addDays(1).day(),0,0,0); |
| | | // endDate = ocList[i].Date__c.addDays(1); |
| | | // endFlag = true; |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | // Decimal timeDifLast; |
| | | // if(ocList[0].IsWorkDay__c == 0 && ocList[ocList.size() - 1].IsWorkDay__c == 0 && !startFlag && !endFlag){ |
| | | // timeDifLast = 0; |
| | | // }else{ |
| | | // Long startL = startTime.getTime(); |
| | | // Long tendL = endTime.getTime(); |
| | | // Long timeDif = tendL - startL; |
| | | // Decimal time11 = timeDif*1.00; |
| | | // Decimal time12 = 24*3600*1000*1.00; |
| | | // timeDifLast = time11/time12; |
| | | // Integer tempWeek = 0; |
| | | // for(OlympusCalendar__c oc:ocList){ |
| | | // if(oc.IsWorkDay__c == 0 && startDate < oc.Date__c && oc.Date__c < endDate){ |
| | | // tempWeek++; |
| | | // } |
| | | // } |
| | | // timeDifLast = timeDifLast - tempWeek; |
| | | // } |
| | | // // dtestLast 四舍五入 保留1位小数 |
| | | // for(Rental_Apply_Equipment_Set_Detail__c raesd00:approvalMap.get(dt)){ |
| | | // ApplyToShipmentMap.put(raesd00.Id,timeDifLast.setScale(1)); |
| | | // } |
| | | // } |
| | | // } |
| | | map<String,Decimal> ApplyToShipmentMap = new map<String,Decimal>(); |
| | | if(approvalMap.size() > 0 ){ |
| | | // dtList[0] 第一个就是最小时间 |
| | | List<Datetime> dtList = new List<Datetime>(approvalMap.keySet()); |
| | | Date startDateSOQL = date.newinstance(dtList[0].year(), dtList[0].month(), dtList[0].day()); |
| | | List<OlympusCalendar__c> ocList = [SELECT Id, Date__c,IsWorkDay__c |
| | | FROM OlympusCalendar__c |
| | | WHERE Date__c >= :startDateSOQL |
| | | AND Date__c <= :Date.today() |
| | | ORDER BY Date__c ASC]; |
| | | Map<Date,String> ocMap = new Map<Date,String>(); |
| | | for(OlympusCalendar__c oc:ocList){ |
| | | String IsWorkDay = oc.IsWorkDay__c.format(); |
| | | ocMap.put(oc.Date__c,IsWorkDay); |
| | | } |
| | | for(Datetime dt:dtList){ |
| | | Boolean startFlag = false; |
| | | Boolean endFlag = false; |
| | | Datetime startTime = dt; |
| | | Date startDate = Date.newInstance(startTime.year(),startTime.month(),startTime.day()); |
| | | Datetime endTime = Datetime.now(); |
| | | Date endDate = Date.today(); |
| | | // 审批时间是非奥林巴斯工作日 |
| | | // if(ocList[0].IsWorkDay__c == 0){ |
| | | if(ocMap.get(startDate) == '0'){ |
| | | for(OlympusCalendar__c oc:ocList){ |
| | | if(startDate < oc.Date__c && oc.IsWorkDay__c == 1){ |
| | | startTime = Datetime.newInstance(oc.Date__c.year(),oc.Date__c.month(),oc.Date__c.day(),0,0,0); |
| | | startDate = oc.Date__c; |
| | | startFlag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // 发货时间是非奥林巴斯工作日 |
| | | if(ocList[ocList.size() - 1].IsWorkDay__c == 0){ |
| | | for(Integer i = ocList.size() - 1; i >= 0;i--){ |
| | | if(ocList[i].IsWorkDay__c == 1){ |
| | | endTime = Datetime.newInstance(ocList[i].Date__c.addDays(1).year(),ocList[i].Date__c.addDays(1).month(),ocList[i].Date__c.addDays(1).day(),0,0,0); |
| | | endDate = ocList[i].Date__c.addDays(1); |
| | | endFlag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | Decimal timeDifLast; |
| | | if(ocList[0].IsWorkDay__c == 0 && ocList[ocList.size() - 1].IsWorkDay__c == 0 && !startFlag && !endFlag){ |
| | | timeDifLast = 0; |
| | | }else{ |
| | | Long startL = startTime.getTime(); |
| | | Long tendL = endTime.getTime(); |
| | | Long timeDif = tendL - startL; |
| | | Decimal time11 = timeDif*1.00; |
| | | Decimal time12 = 24*3600*1000*1.00; |
| | | timeDifLast = time11/time12; |
| | | Integer tempWeek = 0; |
| | | for(OlympusCalendar__c oc:ocList){ |
| | | if(oc.IsWorkDay__c == 0 && startDate < oc.Date__c && oc.Date__c < endDate){ |
| | | tempWeek++; |
| | | } |
| | | } |
| | | timeDifLast = timeDifLast - tempWeek; |
| | | } |
| | | // dtestLast 四舍五入 保留1位小数 |
| | | for(Rental_Apply_Equipment_Set_Detail__c raesd00:approvalMap.get(dt)){ |
| | | ApplyToShipmentMap.put(raesd00.Id,timeDifLast.setScale(1)); |
| | | } |
| | | } |
| | | } |
| | | // 20220309 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 end |
| | | // 明细和申请连到发货单上 |
| | | for(Rental_Apply_Equipment_Set_Detail__c raesd: updateRaesdList) { |
| | |
| | | raesd.DeliverySlip__c = slip.Id; |
| | | } |
| | | // 20220315 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 start |
| | | // if(ApplyToShipmentMap.containsKey(raesd.Id)){ |
| | | // raesd.ApplyToShipmentWorkTime__c = ApplyToShipmentMap.get(raesd.Id); |
| | | // } |
| | | if(ApplyToShipmentMap.containsKey(raesd.Id)){ |
| | | raesd.ApplyToShipmentWorkTime__c = ApplyToShipmentMap.get(raesd.Id); |
| | | } |
| | | // 20220315 ljh SFDC-CC6CLJ phase5上线课题131 提交申请到备品出库时长 end |
| | | } |
| | | FixtureUtil.withoutUpdate(updateRaesdList); |
| | |
| | | if (String.isNotBlank(parentObj.Campaign__c) && parentObj.Campaign__r.IF_Approved__c){ |
| | | // ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.MeetingApprovedNo__c; |
| | | // ra.Approved_State_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.ProcessState__c; |
| | | ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__c; |
| | | ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.Name; |
| | | ra.Approved_State_Delivery__c = parentObj.Campaign__r.Approved_Status__c; |
| | | } |
| | | FixtureUtil.withoutUpdate(new List<Rental_Apply__c> {ra}); |
| | |
| | | // 同城时自动收货 |
| | | if(isSameCity && !raesIdSet.isEmpty()) { |
| | | List<Rental_Apply_Equipment_Set__c> raesList = new List<Rental_Apply_Equipment_Set__c>(); |
| | | Date rentalEndDate = setRentalEndDate(Date.today(), parentObj); |
| | | for(Id raesId:raesIdSet) { |
| | | raesList.add(new Rental_Apply_Equipment_Set__c(Id=raesId, Received_Confirm__c = 'OK')); |
| | | raesList.add(new Rental_Apply_Equipment_Set__c(Id=raesId, Received_Confirm__c = 'OK', Rental_Start_Date__c = Date.today(), Rental_End_Date__c = rentalEndDate)); |
| | | } |
| | | FixtureUtil.withoutUpdate(raesList); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | public Date setRentalEndDate(Date startDate, Rental_Apply__c rentalApplyObj) { |
| | | Date endDate = null; |
| | | switch on rentalApplyObj.demo_purpose2__c{ |
| | | when '试用(无询价)','试用(有询价)','新产品评价','其他','协议借用' { |
| | | endDate = startDate + intValueOf(rentalApplyObj.Hope_Lonaer_date_Num__c); |
| | | } |
| | | when '一般用户','保修用户','市场多年保修','再修理','索赔QIS','已购待货','故障排查' { |
| | | endDate = startDate + 30; |
| | | } |
| | | when '学会展会' { |
| | | endDate = rentalApplyObj.Campaign_EndDate_F__c + 5; |
| | | } |
| | | } |
| | | |
| | | return endDate; |
| | | } |
| | | |
| | | |
| | | public class EsdInfo { |
| | | public Rental_Apply_Equipment_Set_Detail__c rec { get; set; } |
| | | public Boolean checked {get;set;} |