|  |  |  | 
|---|
|  |  |  | trigger Repair on Repair__c (before insert, after insert, before update, after update, after delete, before delete) { | 
|---|
|  |  |  | RepairHandler handler = new RepairHandler(); | 
|---|
|  |  |  | handler.run(); | 
|---|
|  |  |  | System.debug( '-----: trigger start'); | 
|---|
|  |  |  | if ( Trigger.isBefore && Trigger.isUpdate) { | 
|---|
|  |  |  | RepairTrigger.CheckUpdate(Trigger.old, Trigger.newMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // wangweipeng  20210727   start | 
|---|
|  |  |  | // 新增修理时,如果直返收货地址的信息都为空,那么就根据医院的 OCSM管理省(文本) 字段来匹配地址表里 省和市字段 | 
|---|
|  |  |  | // 如果能匹配到那么默认是这条新增的修理收货地址 | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if ( Trigger.isBefore && Trigger.isInsert) { | 
|---|
|  |  |  | RepairBeforeInsertHandler ribt = new RepairBeforeInsertHandler(); | 
|---|
|  |  |  | ribt.beforeInsertValue(Trigger.new,Trigger.old); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //wangweipeng  20210727   end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isAfter && Trigger.isUpdate) || (Trigger.isAfter && Trigger.isDelete)) { | 
|---|
|  |  |  | NFM103Controller.NFM103Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | NFM603Controller.NFM603Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | RepairTrigger.UpdateAssert(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここより、修理のサービスコントラクト項目を自動的に更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if ( Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) { | 
|---|
|  |  |  | // 納入機器IDを一意に格納する Setです。 | 
|---|
|  |  |  | Set<ID> assetIds = new Set<Id>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 納入機器の一意のIDを得る | 
|---|
|  |  |  | for ( Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | if (String.isBlank(repair.Delivered_Product__c) == false) assetIds.add( repair.Delivered_Product__c); | 
|---|
|  |  |  | if(Test.isRunningTest()||UserInfo.getUserId()!=System.Label.ByPassTrigger){ | 
|---|
|  |  |  | RepairHandler handler = new RepairHandler(); | 
|---|
|  |  |  | handler.run(); | 
|---|
|  |  |  | System.debug( '-----: trigger start'); | 
|---|
|  |  |  | test(); | 
|---|
|  |  |  | if ( Trigger.isBefore && Trigger.isUpdate) { | 
|---|
|  |  |  | RepairTrigger.CheckUpdate(Trigger.old, Trigger.newMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 有効なサービス契約の Mapを得る | 
|---|
|  |  |  | // arg1は納入機器のID, arg2は納入機器のIDのサービス契約一覧 | 
|---|
|  |  |  | // 区分虚拟维修合同和正常维修合同 | 
|---|
|  |  |  | // 正常维修合同保有设备集合 | 
|---|
|  |  |  | Map<Id, List<Maintenance_Contract_Asset__c>> effectiveContracts = new Map<Id, List<Maintenance_Contract_Asset__c>>(); | 
|---|
|  |  |  | // 虚拟维修合同保有设备集合 | 
|---|
|  |  |  | Map<Id, List<Maintenance_Contract_Asset__c>> effectiveContractsVM = new Map<Id, List<Maintenance_Contract_Asset__c>>(); | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> contracts = OncallFinalStatusManager.selectMaintenance_Contract_Asset_List(assetIds); | 
|---|
|  |  |  | for (Maintenance_Contract_Asset__c local : contracts) { | 
|---|
|  |  |  | if (local.Maintenance_Contract__r.RecordType.DeveloperName == 'VM_Contract') { | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableVMList = effectiveContractsVM.get(local.Asset__c); | 
|---|
|  |  |  | if (middleTableVMList == null) { | 
|---|
|  |  |  | middleTableVMList = new List<Maintenance_Contract_Asset__c>(); | 
|---|
|  |  |  | effectiveContractsVM.put(local.Asset__c, middleTableVMList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | middleTableVMList.add(local); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableList = effectiveContracts.get(local.Asset__c); | 
|---|
|  |  |  | if (middleTableList == null) { | 
|---|
|  |  |  | middleTableList = new List<Maintenance_Contract_Asset__c>(); | 
|---|
|  |  |  | effectiveContracts.put(local.Asset__c, middleTableList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | middleTableList.add(local); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // wangweipeng  20210727   start | 
|---|
|  |  |  | // 新增修理时,如果直返收货地址的信息都为空,那么就根据医院的 OCSM管理省(文本) 字段来匹配地址表里 省和市字段 | 
|---|
|  |  |  | // 如果能匹配到那么默认是这条新增的修理收货地址 | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if ( Trigger.isBefore && Trigger.isInsert) { | 
|---|
|  |  |  | RepairBeforeInsertHandler ribt = new RepairBeforeInsertHandler(); | 
|---|
|  |  |  | ribt.beforeInsertValue(Trigger.new,Trigger.old); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.debug( '-----: 维修合同开始'); | 
|---|
|  |  |  | // 本題のロジック | 
|---|
|  |  |  | for ( Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | //add     wangweipeng               2021/12/09          start | 
|---|
|  |  |  | boolean defaultFlag = true; | 
|---|
|  |  |  | //add     wangweipeng               2021/12/09          end | 
|---|
|  |  |  | // 草案中修理だけ更新 | 
|---|
|  |  |  | // GZW 特殊处理 跳过维修中心自动赋值,以手选为准 start | 
|---|
|  |  |  | // 判断条件追加   && repair.Exc_work_location__c == false | 
|---|
|  |  |  | if(repair.Exc_work_location__c){ | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // GZW 特殊处理 跳过维修中心自动赋值,以手选为准 start | 
|---|
|  |  |  | //wangweipeng  20210727   end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if ((repair.Status__c == '草案中' || String.isBlank(repair.Status__c)) == false) { | 
|---|
|  |  |  | // if (Trigger.isUpdate && repair.SAP_Transfer_time__c == null) { | 
|---|
|  |  |  | if (Trigger.isUpdate && repair.SAP_Transfer_time__c == null && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同'); | 
|---|
|  |  |  | // 修理の「故障発生日」が、サービス契約の「契約開始日」〜「契約終了日」に含まれるか? | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableList = effectiveContracts.get(repair.Delivered_Product__c); | 
|---|
|  |  |  | if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isAfter && Trigger.isUpdate) || (Trigger.isAfter && Trigger.isDelete)) { | 
|---|
|  |  |  | // if(!(System.isFuture()||System.isBatch())){// Add By Lijun 20220303 to avoid mutiple execute | 
|---|
|  |  |  | NFM103Controller.NFM103Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | NFM603Controller.NFM603Trigger(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | RepairTrigger.UpdateAssert(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここより、修理のサービスコントラクト項目を自動的に更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if ( Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) { | 
|---|
|  |  |  | //先款后修-修理增加先款标识 thh 20220322 start | 
|---|
|  |  |  | RepairTrigger.AdvancePaymentFlagUpsert(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | //先款后修-修理增加先款标识 thh 20220322 end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Boolean needsetnull = true; | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同11111' + middleTableList); | 
|---|
|  |  |  | // if (middleTableList == null) { | 
|---|
|  |  |  | if (middleTableList == null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | if ((repair.NewProductGuarante_Txt__c == '2: 多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '2: 服务多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '8: 市场多年保修') | 
|---|
|  |  |  | && (repair.Sales_Branch__c != repair.Finance_of_Branch__c) && repair.SAP_Transfer_time__c == null) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | // 納入機器IDを一意に格納する Setです。 | 
|---|
|  |  |  | Set<ID> assetIds = new Set<Id>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 納入機器の一意のIDを得る | 
|---|
|  |  |  | for ( Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | if (String.isBlank(repair.Delivered_Product__c) == false) assetIds.add( repair.Delivered_Product__c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 有効なサービス契約の Mapを得る | 
|---|
|  |  |  | // arg1は納入機器のID, arg2は納入機器のIDのサービス契約一覧 | 
|---|
|  |  |  | // 区分虚拟维修合同和正常维修合同 | 
|---|
|  |  |  | // 正常维修合同保有设备集合 | 
|---|
|  |  |  | Map<Id, List<Maintenance_Contract_Asset__c>> effectiveContracts = new Map<Id, List<Maintenance_Contract_Asset__c>>(); | 
|---|
|  |  |  | // 虚拟维修合同保有设备集合 | 
|---|
|  |  |  | Map<Id, List<Maintenance_Contract_Asset__c>> effectiveContractsVM = new Map<Id, List<Maintenance_Contract_Asset__c>>(); | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> contracts = OncallFinalStatusManager.selectMaintenance_Contract_Asset_List(assetIds); | 
|---|
|  |  |  | for (Maintenance_Contract_Asset__c local : contracts) { | 
|---|
|  |  |  | if (local.Maintenance_Contract__r.RecordType.DeveloperName == 'VM_Contract') { | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableVMList = effectiveContractsVM.get(local.Asset__c); | 
|---|
|  |  |  | if (middleTableVMList == null) { | 
|---|
|  |  |  | middleTableVMList = new List<Maintenance_Contract_Asset__c>(); | 
|---|
|  |  |  | effectiveContractsVM.put(local.Asset__c, middleTableVMList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | middleTableVMList.add(local); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableList = effectiveContracts.get(local.Asset__c); | 
|---|
|  |  |  | if (middleTableList == null) { | 
|---|
|  |  |  | middleTableList = new List<Maintenance_Contract_Asset__c>(); | 
|---|
|  |  |  | effectiveContracts.put(local.Asset__c, middleTableList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | middleTableList.add(local); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (middleTableList != null) for (Maintenance_Contract_Asset__c middleTable : middleTableList) { | 
|---|
|  |  |  | if (repair.SERVICE_CONTRACT_JUDEGE_DAY__C != null | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C >= middleTable.Maintenance_Contract__r.Contract_Start_Date__c | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C <= middleTable.Maintenance_Contract__r.Contract_End_Date__c | 
|---|
|  |  |  | && middleTable != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Status__c == '契約' | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Contract_Start_Date__c != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Contract_End_Date__c != null | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | //限次合同产品信息维护相关 FXK 2021/03/05 Start | 
|---|
|  |  |  | //1.如果记录类型是维修合同 或者 记录类型是服务任务但不是URF限次合同,保持现状 | 
|---|
|  |  |  | //如果最大大修次数大于0,并且已经大修次数 小于 最大大修次数,那么保持现状 | 
|---|
|  |  |  | if (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'Maintenance_Contract' | 
|---|
|  |  |  | || (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'NewMaintenance_Contract' | 
|---|
|  |  |  | && (middleTable.Maintenance_Contract__r.URF_Contract__c != true | 
|---|
|  |  |  | || (middleTable.Maintenance_Contract__r.URF_Contract__c == true | 
|---|
|  |  |  | && (middleTable.Series_MaxRepairCount_F__c > 0 | 
|---|
|  |  |  | && middleTable.Series_RepairCount_F__c < middleTable.Series_MaxRepairCount_F__c))))) { | 
|---|
|  |  |  | repair.Maintenance_Contract__c = middleTable.Maintenance_Contract__c; | 
|---|
|  |  |  | // repair.Contract_Principal_Office__c = middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c; | 
|---|
|  |  |  | // system.debug('555555:' + middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c); | 
|---|
|  |  |  | // system.debug('mmmmmmmm:' + Trigger.isInsert); | 
|---|
|  |  |  | // system.debug('nnnnnnn:' + Trigger.isUpdate); | 
|---|
|  |  |  | repair.repairPlace__c = middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c; | 
|---|
|  |  |  | //新增逻辑 HWAG-BKP5FB 精琢科技 2020/03/19 Start | 
|---|
|  |  |  | //wangweipeng   发生数据到SAP以后,修理的维修中心不能做修改 | 
|---|
|  |  |  | // if(repair.SAP_Transfer_time__c == null){ | 
|---|
|  |  |  | if(repair.SAP_Transfer_time__c == null  && repair.Exc_work_location__c == false){ | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, middleTable); | 
|---|
|  |  |  | System.debug( '-----: 维修合同开始'); | 
|---|
|  |  |  | // 本題のロジック | 
|---|
|  |  |  | for ( Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | //add     wangweipeng               2021/12/09          start | 
|---|
|  |  |  | boolean defaultFlag = true; | 
|---|
|  |  |  | //add     wangweipeng               2021/12/09          end | 
|---|
|  |  |  | // 草案中修理だけ更新 | 
|---|
|  |  |  | // GZW 特殊处理 跳过维修中心自动赋值,以手选为准 start | 
|---|
|  |  |  | // 判断条件追加   && repair.Exc_work_location__c == false | 
|---|
|  |  |  | if(repair.Exc_work_location__c){ | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // GZW 特殊处理 跳过维修中心自动赋值,以手选为准 start | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if ((repair.Status__c == '草案中' || String.isBlank(repair.Status__c)) == false) { | 
|---|
|  |  |  | // if (Trigger.isUpdate && repair.SAP_Transfer_time__c == null) { | 
|---|
|  |  |  | if (Trigger.isUpdate && repair.SAP_Transfer_time__c == null && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同'); | 
|---|
|  |  |  | // 修理の「故障発生日」が、サービス契約の「契約開始日」〜「契約終了日」に含まれるか? | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableList = effectiveContracts.get(repair.Delivered_Product__c); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Boolean needsetnull = true; | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同11111' + middleTableList); | 
|---|
|  |  |  | // if (middleTableList == null) { | 
|---|
|  |  |  | if (middleTableList == null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | if ((repair.NewProductGuarante_Txt__c == '2: 多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '2: 服务多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '8: 市场多年保修') | 
|---|
|  |  |  | && (repair.Sales_Branch__c != repair.Finance_of_Branch__c) && repair.SAP_Transfer_time__c == null) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (middleTableList != null) for (Maintenance_Contract_Asset__c middleTable : middleTableList) { | 
|---|
|  |  |  | if (repair.SERVICE_CONTRACT_JUDEGE_DAY__C != null | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C >= middleTable.Maintenance_Contract__r.Contract_Start_Date__c | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C <= middleTable.Maintenance_Contract__r.Contract_End_Date__c | 
|---|
|  |  |  | && middleTable != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Status__c == '契約' | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Contract_Start_Date__c != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Contract_End_Date__c != null | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | //限次合同产品信息维护相关 FXK 2021/03/05 Start | 
|---|
|  |  |  | //1.如果记录类型是维修合同 或者 记录类型是服务任务但不是URF限次合同,保持现状 | 
|---|
|  |  |  | //如果最大大修次数大于0,并且已经大修次数 小于 最大大修次数,那么保持现状 | 
|---|
|  |  |  | if (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'Maintenance_Contract' | 
|---|
|  |  |  | || (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'NewMaintenance_Contract' | 
|---|
|  |  |  | && (middleTable.Maintenance_Contract__r.URF_Contract__c != true | 
|---|
|  |  |  | || (middleTable.Maintenance_Contract__r.URF_Contract__c == true | 
|---|
|  |  |  | && (middleTable.Series_MaxRepairCount_F__c > 0 | 
|---|
|  |  |  | && middleTable.Series_RepairCount_F__c < middleTable.Series_MaxRepairCount_F__c))))) { | 
|---|
|  |  |  | repair.Maintenance_Contract__c = middleTable.Maintenance_Contract__c; | 
|---|
|  |  |  | // repair.Contract_Principal_Office__c = middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c; | 
|---|
|  |  |  | // system.debug('555555:' + middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c); | 
|---|
|  |  |  | // system.debug('mmmmmmmm:' + Trigger.isInsert); | 
|---|
|  |  |  | // system.debug('nnnnnnn:' + Trigger.isUpdate); | 
|---|
|  |  |  | repair.repairPlace__c = middleTable.Maintenance_Contract__r.SalesOfficeCode_selection__c; | 
|---|
|  |  |  | //新增逻辑 HWAG-BKP5FB 精琢科技 2020/03/19 Start | 
|---|
|  |  |  | //wangweipeng   发生数据到SAP以后,修理的维修中心不能做修改 | 
|---|
|  |  |  | // if(repair.SAP_Transfer_time__c == null){ | 
|---|
|  |  |  | if(repair.SAP_Transfer_time__c == null  && repair.Exc_work_location__c == false){ | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, middleTable); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 新增逻辑 HWAG-BKP5FB 精琢科技 2020/03/19 End | 
|---|
|  |  |  | // HWAG-BJABEY LHJ 2019/12/04 Start | 
|---|
|  |  |  | repair.MaintenanceContractType__c = middleTable.Maintenance_Contract__r.RecordType.Name; | 
|---|
|  |  |  | // HWAG-BJABEY LHJ 2019/12/04 End | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //2.如果记录类型是服务任务并且是URF限次合同,如果最大大修次数为0或者空,那么直接add Error报错 让联系服务管理部; | 
|---|
|  |  |  | if (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'NewMaintenance_Contract' | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.URF_Contract__c == true) { | 
|---|
|  |  |  | if (middleTable.Series_MaxRepairCount_F__c == 0 || middleTable.Series_MaxRepairCount_F__c == null) { | 
|---|
|  |  |  | //直接add Error报错 让联系服务管理部 | 
|---|
|  |  |  | repair.addError('修理设备不是限次设备,请联系服务管理部'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //如果最大大修次数大于0,并且已经大修次数 大于或等于 最大大修次数,那么不仅不赋值维修合同信息,而且清空当前信息 | 
|---|
|  |  |  | if (middleTable.Series_MaxRepairCount_F__c > 0 && middleTable.Series_RepairCount_F__c >= middleTable.Series_MaxRepairCount_F__c) { | 
|---|
|  |  |  | //不赋值维修合同信息,而且清空当前信息 | 
|---|
|  |  |  | repair.Maintenance_Contract__c = null; | 
|---|
|  |  |  | repair.MaintenanceContractType__c = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //限次合同产品信息维护相关 FXK 2021/03/05 END | 
|---|
|  |  |  | needsetnull = false; | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同22222');//把保有设备上的维修合同存到修理上 | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //MaintenanceContractType__c:维修合同记录类型 | 
|---|
|  |  |  | /*如果不在合同中,则将1.‘修理’中的‘维修合同’和‘修理’中的‘维修合同记录类型’清空*/ | 
|---|
|  |  |  | if (needsetnull) { | 
|---|
|  |  |  | System.debug( '-----:nullにせよ'); | 
|---|
|  |  |  | repair.Maintenance_Contract__c = null; | 
|---|
|  |  |  | repair.MaintenanceContractType__c = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | System.debug( '-----: repair=' + repair); | 
|---|
|  |  |  | System.debug( '-----: repair.Maintenance_Contract__c=' + repair.Maintenance_Contract__c); | 
|---|
|  |  |  | System.debug( '-----: repair.SERVICE_CONTRACT_JUDEGE_DAY__C=' + repair.SERVICE_CONTRACT_JUDEGE_DAY__C); | 
|---|
|  |  |  | // 设备修理时,自动带出虚拟维修合同 | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableVMList = effectiveContractsVM.get(repair.Delivered_Product__c); | 
|---|
|  |  |  | // Boolean needsetnull = true; | 
|---|
|  |  |  | System.debug( '-----:自动带出虚拟维修合同'); | 
|---|
|  |  |  | System.debug( '-----:自动带出虚拟维修合同' + middleTableVMList); | 
|---|
|  |  |  | // if (middleTableVMList == null) { | 
|---|
|  |  |  | if (middleTableVMList == null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | if ((repair.NewProductGuarante_Txt__c == '2: 多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '2: 服务多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '8: 市场多年保修') | 
|---|
|  |  |  | && (repair.Sales_Branch__c != repair.Finance_of_Branch__c)) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (middleTableVMList != null) for (Maintenance_Contract_Asset__c middleTable : middleTableVMList) { | 
|---|
|  |  |  | if (repair.SERVICE_CONTRACT_JUDEGE_DAY__C != null | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C >= middleTable.startDateGurantee_Text__c | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C <= middleTable.endDateGurantee_Text__c | 
|---|
|  |  |  | && middleTable != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Status__c == '契約' | 
|---|
|  |  |  | && middleTable.startDateGurantee_Text__c != null | 
|---|
|  |  |  | && middleTable.endDateGurantee_Text__c != null | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | repair.VM_Maintenance_Contract__c = middleTable.Maintenance_Contract__c; | 
|---|
|  |  |  | needsetnull = false; | 
|---|
|  |  |  | //新增逻辑 SLIU-BMMDWK 精琢科技 2020/03/17 Start | 
|---|
|  |  |  | // if (repair.VM_Maintenance_Contract__c != null) { | 
|---|
|  |  |  | if (repair.VM_Maintenance_Contract__c != null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, middleTable); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 新增逻辑 HWAG-BKP5FB 精琢科技 2020/03/19 End | 
|---|
|  |  |  | // HWAG-BJABEY LHJ 2019/12/04 Start | 
|---|
|  |  |  | repair.MaintenanceContractType__c = middleTable.Maintenance_Contract__r.RecordType.Name; | 
|---|
|  |  |  | // HWAG-BJABEY LHJ 2019/12/04 End | 
|---|
|  |  |  | // 新增逻辑 SLIU-BMMDWK 精琢科技 2020/03/17 End | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //2.如果记录类型是服务任务并且是URF限次合同,如果最大大修次数为0或者空,那么直接add Error报错 让联系服务管理部; | 
|---|
|  |  |  | if (middleTable.Maintenance_Contract__r.RecordType.DeveloperName == 'NewMaintenance_Contract' | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.URF_Contract__c == true) { | 
|---|
|  |  |  | if (middleTable.Series_MaxRepairCount_F__c == 0 || middleTable.Series_MaxRepairCount_F__c == null) { | 
|---|
|  |  |  | //直接add Error报错 让联系服务管理部 | 
|---|
|  |  |  | repair.addError('修理设备不是限次设备,请联系服务管理部'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //如果最大大修次数大于0,并且已经大修次数 大于或等于 最大大修次数,那么不仅不赋值维修合同信息,而且清空当前信息 | 
|---|
|  |  |  | if (middleTable.Series_MaxRepairCount_F__c > 0 && middleTable.Series_RepairCount_F__c >= middleTable.Series_MaxRepairCount_F__c) { | 
|---|
|  |  |  | //不赋值维修合同信息,而且清空当前信息 | 
|---|
|  |  |  | repair.Maintenance_Contract__c = null; | 
|---|
|  |  |  | repair.MaintenanceContractType__c = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (needsetnull) { | 
|---|
|  |  |  | System.debug( '-----:nullにせよ'); | 
|---|
|  |  |  | repair.VM_Maintenance_Contract__c = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //add     wangweipeng             2021/12/10                start | 
|---|
|  |  |  | if(defaultFlag){ | 
|---|
|  |  |  | //一般修理品的维修中心赋值逻辑 | 
|---|
|  |  |  | //SAP上传修理时间 | 
|---|
|  |  |  | if(repair.SAP_Transfer_time__c == null){ | 
|---|
|  |  |  | if(repair.On_site_repair__c == 'RC修理'||repair.On_site_repair__c== '直送SORC修理'||repair.On_site_repair__c== '直送OGZ修理' ){ | 
|---|
|  |  |  | System.debug('-----------------11------'); | 
|---|
|  |  |  | repair = RepairTrigger.generalUpdateWorkLocationSelect(repair); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //限次合同产品信息维护相关 FXK 2021/03/05 END | 
|---|
|  |  |  | needsetnull = false; | 
|---|
|  |  |  | System.debug( '-----:自动带出维修合同22222');//把保有设备上的维修合同存到修理上 | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //MaintenanceContractType__c:维修合同记录类型 | 
|---|
|  |  |  | /*如果不在合同中,则将1.‘修理’中的‘维修合同’和‘修理’中的‘维修合同记录类型’清空*/ | 
|---|
|  |  |  | if (needsetnull) { | 
|---|
|  |  |  | System.debug( '-----:nullにせよ'); | 
|---|
|  |  |  | repair.Maintenance_Contract__c = null; | 
|---|
|  |  |  | repair.MaintenanceContractType__c = null; | 
|---|
|  |  |  | //add     wangweipeng             2021/12/10                end | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | System.debug( '-----: repair=' + repair); | 
|---|
|  |  |  | System.debug( '-----: repair.Maintenance_Contract__c=' + repair.Maintenance_Contract__c); | 
|---|
|  |  |  | System.debug( '-----: repair.SERVICE_CONTRACT_JUDEGE_DAY__C=' + repair.SERVICE_CONTRACT_JUDEGE_DAY__C); | 
|---|
|  |  |  | // 设备修理时,自动带出虚拟维修合同 | 
|---|
|  |  |  | List<Maintenance_Contract_Asset__c> middleTableVMList = effectiveContractsVM.get(repair.Delivered_Product__c); | 
|---|
|  |  |  | // Boolean needsetnull = true; | 
|---|
|  |  |  | System.debug( '-----:自动带出虚拟维修合同'); | 
|---|
|  |  |  | System.debug( '-----:自动带出虚拟维修合同' + middleTableVMList); | 
|---|
|  |  |  | // if (middleTableVMList == null) { | 
|---|
|  |  |  | if (middleTableVMList == null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | if ((repair.NewProductGuarante_Txt__c == '2: 多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '2: 服务多年保修' | 
|---|
|  |  |  | || repair.NewProductGuarante_Txt__c == '8: 市场多年保修') | 
|---|
|  |  |  | && (repair.Sales_Branch__c != repair.Finance_of_Branch__c)) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, null); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (middleTableVMList != null) for (Maintenance_Contract_Asset__c middleTable : middleTableVMList) { | 
|---|
|  |  |  | if (repair.SERVICE_CONTRACT_JUDEGE_DAY__C != null | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C >= middleTable.startDateGurantee_Text__c | 
|---|
|  |  |  | && repair.SERVICE_CONTRACT_JUDEGE_DAY__C <= middleTable.endDateGurantee_Text__c | 
|---|
|  |  |  | && middleTable != null | 
|---|
|  |  |  | && middleTable.Maintenance_Contract__r.Status__c == '契約' | 
|---|
|  |  |  | && middleTable.startDateGurantee_Text__c != null | 
|---|
|  |  |  | && middleTable.endDateGurantee_Text__c != null | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | repair.VM_Maintenance_Contract__c = middleTable.Maintenance_Contract__c; | 
|---|
|  |  |  | needsetnull = false; | 
|---|
|  |  |  | //新增逻辑 SLIU-BMMDWK 精琢科技 2020/03/17 Start | 
|---|
|  |  |  | // if (repair.VM_Maintenance_Contract__c != null) { | 
|---|
|  |  |  | if (repair.VM_Maintenance_Contract__c != null  && repair.Exc_work_location__c == false) { | 
|---|
|  |  |  | repair = RepairTrigger.updateWorkLocationSelect(repair, middleTable); | 
|---|
|  |  |  | defaultFlag = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 新增逻辑 SLIU-BMMDWK 精琢科技 2020/03/17 End | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (needsetnull) { | 
|---|
|  |  |  | System.debug( '-----:nullにせよ'); | 
|---|
|  |  |  | repair.VM_Maintenance_Contract__c = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.debug( '-----: 维修合同结束'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //add     wangweipeng             2021/12/10                start | 
|---|
|  |  |  | if(defaultFlag){ | 
|---|
|  |  |  | //一般修理品的维修中心赋值逻辑 | 
|---|
|  |  |  | //SAP上传修理时间 | 
|---|
|  |  |  | if(repair.SAP_Transfer_time__c == null){ | 
|---|
|  |  |  | if(repair.On_site_repair__c == 'RC修理'||repair.On_site_repair__c== '直送SORC修理'||repair.On_site_repair__c== '直送OGZ修理' ){ | 
|---|
|  |  |  | System.debug('-----------------11------'); | 
|---|
|  |  |  | repair = RepairTrigger.generalUpdateWorkLocationSelect(repair); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //add     wangweipeng             2021/12/10                end | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | System.debug( '-----: 维修合同结束'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 20160727 add 计算修理工作日 | 
|---|
|  |  |  | RepairTrigger.setRepairWorkday(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | if (Trigger.isUpdate) { | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | //迁移进程生成器中repair Alltime功能       Start | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | for (Repair__c a : Trigger.new) { | 
|---|
|  |  |  | String StatusStr = ''; | 
|---|
|  |  |  | if (a.Delete_Flag__c == true) { | 
|---|
|  |  |  | StatusStr = '0.删除'; | 
|---|
|  |  |  | } else if (a.RepairOrderStatusCode__c == 'A99' && a.IncorrectDataComment__c != null) { | 
|---|
|  |  |  | StatusStr = '0.删除'; | 
|---|
|  |  |  | } else if ((a.RepairOrderStatusCode__c == 'A95' || a.RepairOrderStatusCode__c == 'A96') | 
|---|
|  |  |  | && a.Return_Without_Repair_IF__c == true) { | 
|---|
|  |  |  | StatusStr = '0.取消'; | 
|---|
|  |  |  | } else if (a.Finish_Check__c == 1) { | 
|---|
|  |  |  | StatusStr = '5.完毕'; | 
|---|
|  |  |  | } else if (a.Facility_Return_Receipt_Collection_Date__c != null | 
|---|
|  |  |  | || a.Repair_Returned_To_HP_Date__c != null | 
|---|
|  |  |  | || a.Repair_Shipped_Date__c  != null) { | 
|---|
|  |  |  | StatusStr = '4.修理品返送阶段'; | 
|---|
|  |  |  | } else if (a.Repair_Final_Inspection_Date__c != null | 
|---|
|  |  |  | || a.Repair_Completed_Date__c != null | 
|---|
|  |  |  | || a.Repair_Start_Date__c != null) { | 
|---|
|  |  |  | StatusStr = '3.维修阶段'; | 
|---|
|  |  |  | } else if (a.Agreed_Date__c != null | 
|---|
|  |  |  | || a.Repair_Discount_Date__c  != null | 
|---|
|  |  |  | || a.Repair_Estimated_Date__c  != null | 
|---|
|  |  |  | || a.Repair_Inspection_Date__c  != null) { | 
|---|
|  |  |  | StatusStr = '2.维修报价阶段'; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | StatusStr = a.Status__c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a.Status__c = a.Status1__c; | 
|---|
|  |  |  | // DOJ2.1 gzw AwareDate公式考文本 start | 
|---|
|  |  |  | if (a.AwareDate__c != a.Aware_date__c && | 
|---|
|  |  |  | (a.Aware_date__c >= Date.newInstance(2021, 9, 1) || | 
|---|
|  |  |  | a.AwareDate__c >= Date.newInstance(2021, 9, 1) )) { | 
|---|
|  |  |  | a.Aware_date__c = a.AwareDate__c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // DOJ2.1 gzw AwareDate公式考文本 end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 20160727 add 计算修理工作日 | 
|---|
|  |  |  | RepairTrigger.setRepairWorkday(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | if (Trigger.isUpdate) { | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | //迁移进程生成器中repair Alltime功能       End | 
|---|
|  |  |  | //迁移进程生成器中repair Alltime功能       Start | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | for (Repair__c a : Trigger.new) { | 
|---|
|  |  |  | String StatusStr = ''; | 
|---|
|  |  |  | if (a.Delete_Flag__c == true) { | 
|---|
|  |  |  | StatusStr = '0.删除'; | 
|---|
|  |  |  | } else if (a.RepairOrderStatusCode__c == 'A99' && a.IncorrectDataComment__c != null) { | 
|---|
|  |  |  | StatusStr = '0.删除'; | 
|---|
|  |  |  | } else if ((a.RepairOrderStatusCode__c == 'A95' || a.RepairOrderStatusCode__c == 'A96') | 
|---|
|  |  |  | && a.Return_Without_Repair_IF__c == true) { | 
|---|
|  |  |  | StatusStr = '0.取消'; | 
|---|
|  |  |  | } else if (a.Finish_Check__c == 1) { | 
|---|
|  |  |  | StatusStr = '5.完毕'; | 
|---|
|  |  |  | } else if (a.Facility_Return_Receipt_Collection_Date__c != null | 
|---|
|  |  |  | || a.Repair_Returned_To_HP_Date__c != null | 
|---|
|  |  |  | || a.Repair_Shipped_Date__c  != null) { | 
|---|
|  |  |  | StatusStr = '4.修理品返送阶段'; | 
|---|
|  |  |  | } else if (a.Repair_Final_Inspection_Date__c != null | 
|---|
|  |  |  | || a.Repair_Completed_Date__c != null | 
|---|
|  |  |  | || a.Repair_Start_Date__c != null) { | 
|---|
|  |  |  | StatusStr = '3.维修阶段'; | 
|---|
|  |  |  | } else if (a.Agreed_Date__c != null | 
|---|
|  |  |  | || a.Repair_Discount_Date__c  != null | 
|---|
|  |  |  | || a.Repair_Estimated_Date__c  != null | 
|---|
|  |  |  | || a.Repair_Inspection_Date__c  != null) { | 
|---|
|  |  |  | StatusStr = '2.维修报价阶段'; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | StatusStr = a.Status__c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a.Status__c = a.Status1__c; | 
|---|
|  |  |  | // DOJ2.1 gzw AwareDate公式考文本 start | 
|---|
|  |  |  | if (a.AwareDate__c != a.Aware_date__c && | 
|---|
|  |  |  | (a.Aware_date__c >= Date.newInstance(2021, 9, 1) || | 
|---|
|  |  |  | a.AwareDate__c >= Date.newInstance(2021, 9, 1) )) { | 
|---|
|  |  |  | a.Aware_date__c = a.AwareDate__c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // DOJ2.1 gzw AwareDate公式考文本 end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | //迁移进程生成器中repair Alltime功能       End | 
|---|
|  |  |  | /****************************************************************************************************/ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、サービスコントラクト項目を自動的に更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、サービスコントラクト項目を自動的に更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // これより、On-Callの「On-Call跟进结果」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // これより、On-Callの「On-Call跟进结果」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if ( ( Trigger.isBefore && ( Trigger.isInsert || Trigger.isUpdate)) || ( Trigger.isAfter && Trigger.isDelete)) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if ( ( Trigger.isBefore && ( Trigger.isInsert || Trigger.isUpdate)) || ( Trigger.isAfter && Trigger.isDelete)) { | 
|---|
|  |  |  | // 処理対象となる修理を全部確保 | 
|---|
|  |  |  | List<Repair__c> repairs = ( Trigger.isBefore ? Trigger.New : new List<Repair__c>()); | 
|---|
|  |  |  | Set<Id> cncallIds = new Set<Id>(); | 
|---|
|  |  |  | for ( Repair__c repair : ( Trigger.isBefore ? Trigger.New : Trigger.Old)) { | 
|---|
|  |  |  | if (String.isBlank(repair.On_Call_ID__c) == false) { | 
|---|
|  |  |  | cncallIds.add( repair.On_Call_ID__c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 処理対象となる修理を全部確保 | 
|---|
|  |  |  | List<Repair__c> repairs = ( Trigger.isBefore ? Trigger.New : new List<Repair__c>()); | 
|---|
|  |  |  | Set<Id> cncallIds = new Set<Id>(); | 
|---|
|  |  |  | for ( Repair__c repair : ( Trigger.isBefore ? Trigger.New : Trigger.Old)) { | 
|---|
|  |  |  | if (String.isBlank(repair.On_Call_ID__c) == false) { | 
|---|
|  |  |  | cncallIds.add( repair.On_Call_ID__c); | 
|---|
|  |  |  | // 処理対象となるオンコールを全部確保 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 20210622 SQL优化 Start | 
|---|
|  |  |  | // List<On_Call__c> oncalls = OncallFinalStatusManager.getOncallList(cncallIds); | 
|---|
|  |  |  | List<On_Call__c> oncalls = new List<On_Call__c>(); | 
|---|
|  |  |  | if (cncallIds.size() > 0 ) { | 
|---|
|  |  |  | oncalls = OncallFinalStatusManager.getOncallList(cncallIds); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 End | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (oncalls.size() > 0) { | 
|---|
|  |  |  | // 処理対象となるQISを全部確保 | 
|---|
|  |  |  | List<QIS_Report__c> qiss = OncallFinalStatusManager.getQisListFronOncalls(oncalls); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // FinalStatus更新処理 | 
|---|
|  |  |  | OncallFinalStatusManager.setFinalStatus( oncalls, repairs, qiss); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OncallFinalStatusManager.updOncalls(oncalls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 処理対象となるオンコールを全部確保 | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、On-Callの「On-Call跟进结果」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 20210622 SQL优化 Start | 
|---|
|  |  |  | // List<On_Call__c> oncalls = OncallFinalStatusManager.getOncallList(cncallIds); | 
|---|
|  |  |  | List<On_Call__c> oncalls = new List<On_Call__c>(); | 
|---|
|  |  |  | if (cncallIds.size() > 0 ) { | 
|---|
|  |  |  | oncalls = OncallFinalStatusManager.getOncallList(cncallIds); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 End | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (oncalls.size() > 0) { | 
|---|
|  |  |  | // 処理対象となるQISを全部確保 | 
|---|
|  |  |  | List<QIS_Report__c> qiss = OncallFinalStatusManager.getQisListFronOncalls(oncalls); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // FinalStatus更新処理 | 
|---|
|  |  |  | OncallFinalStatusManager.setFinalStatus( oncalls, repairs, qiss); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OncallFinalStatusManager.updOncalls(oncalls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、On-Callの「On-Call跟进结果」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // これより、备品借出申请の「修理最终检测日」を更新するロジック(更新后触发WorkFlow) | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if (Trigger.isAfter && Trigger.isUpdate) { | 
|---|
|  |  |  | Map<String, Date> repairDateMap = new Map<String, Date>(); | 
|---|
|  |  |  | List<String> targetRepairList = new List<String>(); | 
|---|
|  |  |  | for (Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | Repair__c oldRepair = Trigger.OldMap.get(repair.Id); | 
|---|
|  |  |  | if (oldRepair.Repair_Final_Inspection_Date__c != repair.Repair_Final_Inspection_Date__c) { | 
|---|
|  |  |  | repairDateMap.put(repair.Id, repair.Repair_Final_Inspection_Date__c); | 
|---|
|  |  |  | targetRepairList.add(repair.Id); | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // これより、备品借出申请の「修理最终检测日」を更新するロジック(更新后触发WorkFlow) | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | if (Trigger.isAfter && Trigger.isUpdate) { | 
|---|
|  |  |  | Map<String, Date> repairDateMap = new Map<String, Date>(); | 
|---|
|  |  |  | List<String> targetRepairList = new List<String>(); | 
|---|
|  |  |  | for (Repair__c repair : Trigger.New) { | 
|---|
|  |  |  | Repair__c oldRepair = Trigger.OldMap.get(repair.Id); | 
|---|
|  |  |  | if (oldRepair.Repair_Final_Inspection_Date__c != repair.Repair_Final_Inspection_Date__c) { | 
|---|
|  |  |  | repairDateMap.put(repair.Id, repair.Repair_Final_Inspection_Date__c); | 
|---|
|  |  |  | targetRepairList.add(repair.Id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 Start | 
|---|
|  |  |  | //List<Rental_Apply__c> raList = [select Id, Repair__c from Rental_Apply__c where Repair__c = :targetRepairList]; | 
|---|
|  |  |  | List<Rental_Apply__c> raList = new List<Rental_Apply__c>(); | 
|---|
|  |  |  | if (targetRepairList.size() > 0) { | 
|---|
|  |  |  | raList = [select Id, Repair__c from Rental_Apply__c where Repair__c = :targetRepairList]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 End | 
|---|
|  |  |  | for (Rental_Apply__c ra : raList) { | 
|---|
|  |  |  | ra.Repair_Final_Inspection_Date__c = repairDateMap.get(ra.Repair__c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (raList.size() > 0) { | 
|---|
|  |  |  | update raList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 Start | 
|---|
|  |  |  | //List<Rental_Apply__c> raList = [select Id, Repair__c from Rental_Apply__c where Repair__c = :targetRepairList]; | 
|---|
|  |  |  | List<Rental_Apply__c> raList = new List<Rental_Apply__c>(); | 
|---|
|  |  |  | if (targetRepairList.size() > 0) { | 
|---|
|  |  |  | raList = [select Id, Repair__c from Rental_Apply__c where Repair__c = :targetRepairList]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 20210622 SQL优化 End | 
|---|
|  |  |  | for (Rental_Apply__c ra : raList) { | 
|---|
|  |  |  | ra.Repair_Final_Inspection_Date__c = repairDateMap.get(ra.Repair__c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (raList.size() > 0) { | 
|---|
|  |  |  | update raList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、备品借出申请の「修理最终检测日」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  | // ここまで、备品借出申请の「修理最终检测日」を更新するロジック | 
|---|
|  |  |  | // ---------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | System.debug( '-----: trigger end'); | 
|---|
|  |  |  | System.debug( '-----: trigger end'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public 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++; | 
|---|
|  |  |  | 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++; | 
|---|
|  |  |  | 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++; | 
|---|
|  |  |  | 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++; | 
|---|
|  |  |  | 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++; | 
|---|
|  |  |  | 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++; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|