| New file |
| | |
| | | { |
| | | "plugins": ["@salesforce/eslint-plugin-aura"], |
| | | "extends": ["plugin:@salesforce/eslint-plugin-aura/recommended"], |
| | | "rules": { |
| | | "vars-on-top": "off", |
| | | "no-unused-expressions": "off" |
| | | } |
| | | } |
| New file |
| | |
| | | public without sharing class AccountTriggerHandler { |
| | | |
| | | public static void setBusinesslicense(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | |
| | | Map<String, String> businesslicenseMap = new Map<String, String>(); |
| | | for (Account newAcc : newList) { |
| | | if (newAcc.ParentId == null && String.isNotBlank(newAcc.Business_license__c) && |
| | | newAcc.ProductSegment__c == 'BS' && newAcc.RecordTypeId == '012280000005gnE') { |
| | | businesslicenseMap.put(newAcc.Id, newAcc.Business_license__c); |
| | | } |
| | | } |
| | | |
| | | if ( businesslicenseMap.size() > 0) { |
| | | List<Account> accountList = [select Id, Name, ParentId, Business_license__c |
| | | from Account |
| | | where ParentId In:businesslicenseMap.keySet()]; |
| | | if (accountList.size() > 0) { |
| | | |
| | | for (Account acc : accountList) { |
| | | |
| | | acc.Business_license__c = businesslicenseMap.get(acc.ParentId); |
| | | } |
| | | update accountList; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | public static void setIsNew(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | //当前登陆人ID |
| | | String now_userId = UserInfo.getUserId(); |
| | | for (Account newAcc : newList) { |
| | | // String profileId = UserInfo.getProfileId().subString(0, 15); |
| | | //新的获取人员简档ID |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | |
| | | //新增权限整理2021-05-10 |
| | | if (new_profileId.subString(0, 15) == System.label.Market_Department || new_profileId.subString(0, 15) == System.label.Market_Department1 || new_profileId.subString(0, 15) == System.label.Service_Owner || new_profileId.subString(0, 15) == System.label.Service_OwnerMinister |
| | | || UserInfo.getUserType() == 'PowerPartner' || new_profileId.subString(0, 15) == System.label.IEPrototypeManager || newAcc.RecordTypeId == '0120T0000003Cxt') { |
| | | //新增权限整理2021-05-10 |
| | | newAcc.IsNew__c = true; |
| | | } else { |
| | | newAcc.WebsiteD__c = newAcc.Website; |
| | | newAcc.FaxD__c = newAcc.Fax; |
| | | //newAcc.CreatedByD__c = newAcc.CreatedBy; |
| | | newAcc.PhoneD__c = newAcc.Phone; |
| | | newAcc.Address1D__c = newAcc.Address1__c; |
| | | newAcc.AssetANI4D__c = newAcc.AssetANI4__c; |
| | | newAcc.AssetIE7D__c = newAcc.AssetIE7__c; |
| | | newAcc.AssetNDT7D__c = newAcc.AssetNDT7__c; |
| | | //newAcc.DealerD__c = newAcc.DealerName__c; |
| | | //newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | //newAcc.DivisionNameD__c = newAcc.DivissionName__c; |
| | | newAcc.AssetRVI5D__c = newAcc.AssetRVI5__c; |
| | | newAcc.EnglishNameD__c = newAcc.EnglishName__c; |
| | | //newAcc.ExportRegulatedCustomerD__c = newAcc.Export_Regulated_Customer__c; |
| | | //newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | newAcc.AssetRVI2D__c = newAcc.AssetRVI2__c; |
| | | newAcc.AssetNDT4D__c = newAcc.AssetNDT4__c; |
| | | newAcc.IndustryCD__c = newAcc.IndustryC__c; |
| | | newAcc.AssetRVI4D__c = newAcc.AssetRVI4__c; |
| | | newAcc.AssetRVI3D__c = newAcc.AssetRVI3__c; |
| | | //newAcc.KeyAccountD__c = newAcc.KeyAccount__c; |
| | | newAcc.AssetIE5D__c = newAcc.AssetIE5__c; |
| | | newAcc.AssetBS3D__c = newAcc.AssetBS3__c; |
| | | newAcc.AssetIE3D__c = newAcc.AssetIE3__c; |
| | | newAcc.AssetANI7D__c = newAcc.AssetANI7__c; |
| | | newAcc.AssetNDT6D__c = newAcc.AssetNDT6__c; |
| | | newAcc.MarketVerticalsD__c = newAcc.MarketVerticals__c; |
| | | newAcc.AssetIE6D__c = newAcc.AssetIE6__c; |
| | | newAcc.AssetIE2D__c = newAcc.AssetIE2__c; |
| | | newAcc.AssetBS2D__c = newAcc.AssetBS2__c; |
| | | newAcc.AssetANI3D__c = newAcc.AssetANI3__c; |
| | | newAcc.AssetIE1D__c = newAcc.AssetIE1__c; |
| | | newAcc.AssetBS1D__c = newAcc.AssetBS1__c; |
| | | newAcc.AssetRVI1D__c = newAcc.AssetRVI1__c; |
| | | newAcc.AssetNDT1D__c = newAcc.AssetNDT1__c; |
| | | newAcc.AssetANI1D__c = newAcc.AssetANI1__c; |
| | | newAcc.AssetNDT8D__c = newAcc.AssetNDT8__c; |
| | | newAcc.AssetANI8D__c = newAcc.AssetANI8__c; |
| | | newAcc.AssetBS5D__c = newAcc.AssetBS5__c; |
| | | newAcc.AssetIE8D__c = newAcc.AssetIE8__c; |
| | | newAcc.AssetRVI8D__c = newAcc.AssetRVI8__c; |
| | | newAcc.AssetANI5D__c = newAcc.AssetANI5__c; |
| | | //newAcc.ProvinceD__c = newAcc.Province__c; |
| | | newAcc.AssetRVI6D__c = newAcc.AssetRVI6__c; |
| | | newAcc.AssetANI2D__c = newAcc.AssetANI2__c; |
| | | newAcc.AssetNDT3D__c = newAcc.AssetNDT3__c; |
| | | newAcc.AssetNDT2D__c = newAcc.AssetNDT2__c; |
| | | newAcc.AssetANI6D__c = newAcc.AssetANI6__c; |
| | | //IE与LS分野的增加与修改 |
| | | newAcc.Sub_UseA__c = newAcc.Sub_Use1__c; |
| | | newAcc.Sub_UseD__c = newAcc.Sub_Use__c; |
| | | newAcc.IndustryBD__c = newAcc.IndustryB__c; |
| | | |
| | | //IE与LS分野的增加与修改 |
| | | newAcc.UseD__c = newAcc.Use__c; |
| | | newAcc.AssetRVI7D__c = newAcc.AssetRVI7__c; |
| | | newAcc.AssetBS4D__c = newAcc.AssetBS4__c; |
| | | newAcc.AssetIE4D__c = newAcc.AssetIE4__c; |
| | | newAcc.AssetNDT5D__c = newAcc.AssetNDT5__c; |
| | | newAcc.AccountStatusD__c = newAcc.AccountStatus__c; |
| | | newAcc.CancelReasonD__c = newAcc.CancelReason__c; |
| | | newAcc.CityD__c = newAcc.City__c; |
| | | newAcc.PostCodeD__c = newAcc.PostCode__c; |
| | | newAcc.DealerSelectOwner__c = newAcc.OwnerId; |
| | | newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | newAcc.DivisionName_D__c = newAcc.DivisionName__c; |
| | | newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | if (new_profileId.subString(0,15) == '00e28000000YKLo') { |
| | | newAcc.IsNew__c = true; |
| | | } |
| | | |
| | | } |
| | | //gwy 2021-06-04 LS 新增必填项OEM客户的标识 |
| | | if(newAcc.UserType__c == 'OEM客户' && newAcc.ProductSegment__c == 'BS'){ |
| | | newAcc.Whether_OEM__c = true; |
| | | } |
| | | //王鹏伟添加 服务部创建客户、联系人 |
| | | //00528000000YWC6 孙 学洋 00528000000YWC6 |
| | | //00528000000YWE7 吴 晓东 00528000000YWE7 |
| | | //00e28000000YQMx 简档:SSBG技术服务部(部长・副部长)00e28000000YQMx |
| | | //00e28000001sZE6 简档:SSBG技术服务部担当 00e28000001sZE6 |
| | | // System.debug('profileId:' + profileId); |
| | | System.debug('DealerSelectOwner__c:' + newAcc.DealerSelectOwner__c); |
| | | if ((now_userId == '00528000000YWC6' || now_userId == '00528000000YWE7' || new_profileId.subString(0, 15) == '00e28000000YQMx' || new_profileId.subString(0, 15) == '00e28000001sZE6' |
| | | //新增权限整理2021-05-10 |
| | | || new_profileId.subString(0, 15) == '00e28000000YQMx' || new_profileId.subString(0, 15) == '00e28000001sZE6') |
| | | //新增权限整理2021-05-10 |
| | | && String.isNotBlank(newAcc.DealerSelectOwner__c)){ |
| | | newAcc.OwnerId = newAcc.DealerSelectOwner__c; |
| | | } |
| | | //王鹏伟添加结束 |
| | | //gwy 2021-06-08 客户取消邮编必填项 |
| | | //newAcc.PostCode__c = newAcc.PostCode__c == null ? '000000' : newAcc.PostCode__c; |
| | | //newAcc.PostCodeD__c = newAcc.PostCodeD__c == null ? '000000' : newAcc.PostCodeD__c; |
| | | } |
| | | } |
| | | |
| | | public static void setSubUse(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | //subuse代码优化,之前的subuse的值和赋值的三个字段,放到BatchIF转义表里面。 |
| | | List<String> externalList = new List<String>(); |
| | | for (Account acc : newList) { |
| | | //2021-06-07 gwy 添加代码(自动填选项) |
| | | String recordTypeId = acc.RecordTypeId; |
| | | recordTypeId = recordTypeId.substring(0,15); |
| | | // String recordTypeId = acc.RecordTypeId; |
| | | //拼接值,并且把值全部放进列表里 |
| | | String externalValue = recordTypeId + ':' + acc.Sub_UseD__c; |
| | | String externalValue1 = recordTypeId + ':' + acc.Sub_Use__c; |
| | | if(acc.Sub_UseD__c != acc.Sub_Use__c){ |
| | | externalList.add(externalValue); |
| | | externalList.add(externalValue1); |
| | | }else{ |
| | | externalList.add(externalValue); |
| | | } |
| | | |
| | | } |
| | | //创建一个map,经过soql文查询后,符合条件,放入map。 |
| | | Map<String,String> batchIFMap= new Map<String,String>(); |
| | | if (externalList.size()>0) { |
| | | List<BatchIF_Transfer__c> batchIFList = new List<BatchIF_Transfer__c>(); |
| | | batchIFList = [select External_Value__c,Internal_Value__c from BatchIF_Transfer__c where External_Value__c In: externalList]; |
| | | for (BatchIF_Transfer__c bt : batchIFList) { |
| | | batchIFMap.put(bt.External_Value__c,bt.Internal_Value__c); |
| | | } |
| | | } |
| | | |
| | | //定义List,从map取值,进行分割赋值。有变化的就给他重新赋值。 |
| | | List<String> btList = new List<String>(); |
| | | for (Account acc : newList){ |
| | | String recordTypeid = acc.RecordTypeId; |
| | | recordTypeid = recordTypeid.substring(0,15); |
| | | String externalVal = recordTypeid + ':' + acc.Sub_UseD__c; |
| | | String externalVal1 = recordTypeid + ':' + acc.Sub_Use__c; |
| | | //acc.Sub_UseD__c |
| | | if(batchIFMap.containsKey(externalVal)){ |
| | | btList = batchIFMap.get(externalVal).split(';'); |
| | | acc.IndustryCD__c = btList[0]; |
| | | acc.MarketVerticalsD__c = btList[1]; |
| | | acc.UseD__c = btList[2]; |
| | | }else{ |
| | | //没有变化的不管,为空的或者变为空的给他赋值为空。 |
| | | if ((acc.ProductSegment__c == 'NDT' || acc.ProductSegment__c == 'IE' || acc.ProductSegment__c == 'RVI' || acc.ProductSegment__c == 'ANI') && acc.Sub_UseD__c == null) { |
| | | acc.IndustryCD__c = null; |
| | | acc.MarketVerticalsD__c = null; |
| | | acc.UseD__c = null; |
| | | } |
| | | } |
| | | //acc.Sub_Use__c |
| | | if(batchIFMap.containsKey(externalVal1)){ |
| | | btList = batchIFMap.get(externalVal1).split(';'); |
| | | acc.IndustryC__c = btList[0]; |
| | | acc.MarketVerticals__c = btList[1]; |
| | | acc.Use__c = btList[2]; |
| | | }else{ |
| | | //没有变化的不管,为空的或者变为空的给他赋值为空。 |
| | | if ((acc.ProductSegment__c == 'NDT' || acc.ProductSegment__c == 'IE' || acc.ProductSegment__c == 'RVI' || acc.ProductSegment__c == 'ANI') && acc.Sub_Use__c == null) { |
| | | acc.IndustryC__c = null; |
| | | acc.MarketVerticals__c = null; |
| | | acc.Use__c = null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // for (Account newAcc : newList) { |
| | | // Account oldAcc = oldMap == null ? null : oldMap.get(newAcc.Id); |
| | | // //2021-06-07 gwy 添加代码(自动填选项) |
| | | // if (newAcc.Sub_UseA__c != null) { |
| | | // newAcc.Sub_UseD__c = newAcc.Sub_UseA__c; |
| | | // } |
| | | // system.debug('====='+ oldAcc == null ); |
| | | // system.debug('=====recordTypeId' + newAcc.recordTypeId); |
| | | // system.debug('=====Sub_UseD__c' + newAcc.Sub_UseD__c); |
| | | |
| | | // if (oldAcc == null || newAcc.Sub_UseD__c != oldAcc.Sub_UseD__c) { |
| | | |
| | | // system.debug('====='); |
| | | // system.debug('=====recordTypeId' + newAcc.recordTypeId); |
| | | // system.debug('=====Sub_UseD__c' + newAcc.Sub_UseD__c); |
| | | |
| | | // if (newAcc.recordTypeId == '01228000000TdF6') { |
| | | // if (newAcc.Sub_UseD__c == null || newAcc.Sub_UseD__c == '') { |
| | | // newAcc.IndustryCD__c = null; |
| | | // newAcc.MarketVerticalsD__c = null; |
| | | // newAcc.UseD__c = null; |
| | | // } else if (newAcc.Sub_UseD__c == 'LED') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == 'FPD') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '半导体') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Semiconductor'; |
| | | // } else if (newAcc.Sub_UseD__c == '电子部品') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '太阳能') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '电子类_其他') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '金属') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Casting'; |
| | | // } else if (newAcc.Sub_UseD__c == '传统汽车') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == '石油地质') { |
| | | // newAcc.IndustryCD__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Geology : Geological Surveys'; |
| | | // } else if (newAcc.Sub_UseD__c == '五金模具') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_UseD__c == '重工设备') { |
| | | // newAcc.IndustryCD__c = 'Fabricated Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '材料类_其他') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Industrial Scientific research'; |
| | | // } else if (newAcc.Sub_UseD__c == '医疗器械') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '激光加工') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '制药') { |
| | | // newAcc.IndustryCD__c = 'Pharmaceutical'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '动植物') { |
| | | // newAcc.IndustryCD__c = 'Food/Feed/Agriculture'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '新能源汽车') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == '5G-PCB') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '5G-半导体') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '5G-其他') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-半导体-前道') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-半导体-中期') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-半导体-后道') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-FPD') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-3D 测量仪') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-测试仪器') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-拉曼光谱仪') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-血液') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-尿液/粪便') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-细胞学') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-遗传学') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-病理') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-生殖') { |
| | | // newAcc.IndustryCD__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-高端显微镜') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-细胞观察') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-电子显微镜') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-高内涵') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-流式细胞仪') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-ODM') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-精准医疗') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Compo-其他') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = '(Manufacturing)OEM'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFG') { |
| | | // if (newAcc.Sub_UseD__c == null || newAcc.Sub_UseD__c == '') { |
| | | // newAcc.IndustryCD__c = null; |
| | | // newAcc.MarketVerticalsD__c = null; |
| | | // newAcc.UseD__c = null; |
| | | // } else if (newAcc.Sub_UseD__c == 'Automotive') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Civil Aviation') { |
| | | // newAcc.IndustryCD__c = 'Aerospace'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = '(Maintenance)Aviation Airframe/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Security/Defense') { |
| | | // newAcc.IndustryCD__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Oil,Gas&Chemical') { |
| | | // newAcc.IndustryCD__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_UseD__c == 'General Manufacturing') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Inspection/Service/Rental') { |
| | | // newAcc.IndustryCD__c = 'Inspection/Lab/Rental Sevice Provider'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Others') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Thermal Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Process piping'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Nuclear Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Process piping'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Wind Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Power(other)') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Corrosion'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFB') { |
| | | // if (newAcc.Sub_UseD__c == null || newAcc.Sub_UseD__c == '') { |
| | | // newAcc.IndustryCD__c = null; |
| | | // newAcc.MarketVerticalsD__c = null; |
| | | // newAcc.UseD__c = null; |
| | | // } else if (newAcc.Sub_UseD__c == 'Automotive') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Civil Aviation') { |
| | | // newAcc.IndustryCD__c = 'Aerospace'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = '(Maintenance)Aviation Airframe/Engine'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Security/Defense') { |
| | | // newAcc.IndustryCD__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Oil,Gas&Chemical') { |
| | | // newAcc.IndustryCD__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_UseD__c == 'General Manufacturing') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Inspection/Service/Rental') { |
| | | // newAcc.IndustryCD__c = 'Inspection/Lab/Rental Sevice Provider'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Others') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Thermal Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Nuclear Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Wind Power') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Gear Box'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Power(other)') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'Corrosion'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFL') { |
| | | // if (newAcc.Sub_UseD__c == null || newAcc.Sub_UseD__c == '') { |
| | | // newAcc.IndustryCD__c = null; |
| | | // newAcc.MarketVerticalsD__c = null; |
| | | // newAcc.UseD__c = null; |
| | | // } else if (newAcc.Sub_UseD__c == '废旧金属') { |
| | | // newAcc.IndustryCD__c = 'Recycling'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Alloy : Recycling'; |
| | | // } else if (newAcc.Sub_UseD__c == '炼钢厂') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Tube/Rod/Bar/Sheet Metal'; |
| | | // } else if (newAcc.Sub_UseD__c == 'PMI-石化行业') { |
| | | // newAcc.IndustryCD__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'PMI'; |
| | | // } else if (newAcc.Sub_UseD__c == 'PMI-管道制造') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Pipelines'; |
| | | // } else if (newAcc.Sub_UseD__c == 'PMI-金属制造') { |
| | | // newAcc.IndustryCD__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_UseD__c == 'PMI-电力') { |
| | | // newAcc.IndustryCD__c = 'Power Generation'; |
| | | // newAcc.MarketVerticalsD__c = 'Maintenance'; |
| | | // newAcc.UseD__c = 'PMI'; |
| | | // } else if (newAcc.Sub_UseD__c == 'RoHS') { |
| | | // newAcc.IndustryCD__c = 'Electronics'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == 'ELV') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_UseD__c == '玩具&皮革') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Consumer Goods'; |
| | | // } else if (newAcc.Sub_UseD__c == '贵金属-制造') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Consumer Goods'; |
| | | // } else if (newAcc.Sub_UseD__c == '贵金属-回收') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Alloy : Precious Metals Recycling'; |
| | | // } else if (newAcc.Sub_UseD__c == '勘探-政府') { |
| | | // newAcc.IndustryCD__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Geology : Geological Surveys'; |
| | | // } else if (newAcc.Sub_UseD__c == '勘探-矿业公司') { |
| | | // newAcc.IndustryCD__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Mining : Exploration'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Mining-冶炼') { |
| | | // newAcc.IndustryCD__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Mining : Processing & Refining & Metallurgy'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Mining-开采') { |
| | | // newAcc.IndustryCD__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Mining : Production & Grade Control'; |
| | | // } else if (newAcc.Sub_UseD__c == 'EPA') { |
| | | // newAcc.IndustryCD__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_UseD__c == '土壤修复') { |
| | | // newAcc.IndustryCD__c = 'Recycling'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_UseD__c == '土壤研究') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_UseD__c == '考古&文物') { |
| | | // newAcc.IndustryCD__c = 'Academic Research'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_UseD__c == '录井') { |
| | | // newAcc.IndustryCD__c = 'Oil & Gas'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Mining : Exploration'; |
| | | // } else if (newAcc.Sub_UseD__c == '制药') { |
| | | // newAcc.IndustryCD__c = 'Pharmaceutical'; |
| | | // newAcc.MarketVerticalsD__c = 'Manufacturing'; |
| | | // newAcc.UseD__c = 'Chemical/Plastics/Rubber'; |
| | | // } else if (newAcc.Sub_UseD__c == '三元催化剂') { |
| | | // newAcc.IndustryCD__c = 'Automotive'; |
| | | // newAcc.MarketVerticalsD__c = 'Natural Resources'; |
| | | // newAcc.UseD__c = 'Alloy : Precious Metals Recycling'; |
| | | // } else if (newAcc.Sub_UseD__c == 'Others') { |
| | | // newAcc.IndustryCD__c = 'Other'; |
| | | // newAcc.MarketVerticalsD__c = 'Other'; |
| | | // newAcc.UseD__c = '(Other) Other'; |
| | | // }Add 三元催化剂 by 符晓林 2016年6月6日 |
| | | |
| | | // if (oldAcc == null || newAcc.Sub_Use__c != oldAcc.Sub_Use__c) { |
| | | // system.debug('====='); |
| | | // system.debug('=====recordTypeId' + newAcc.recordTypeId); |
| | | // system.debug('=====Sub_Use__c' + newAcc.Sub_Use__c); |
| | | // if (newAcc.recordTypeId == '01228000000TdF6') { |
| | | // //2021-06-07 gwy 添加代码(自动填选项) |
| | | // if (newAcc.Sub_Use__c == null || newAcc.Sub_Use__c == '') { |
| | | // newAcc.IndustryC__c = null; |
| | | // newAcc.MarketVerticals__c = null; |
| | | // newAcc.Use__c = null; |
| | | // } else if (newAcc.Sub_Use__c == 'LED') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == 'FPD') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '半导体') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Semiconductor'; |
| | | // } else if (newAcc.Sub_Use__c == '电子部品') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '太阳能') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '电子类_其他') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '金属') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Casting'; |
| | | // } else if (newAcc.Sub_Use__c == '传统汽车') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == '石油地质') { |
| | | // newAcc.IndustryC__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Geology : Geological Surveys'; |
| | | // } else if (newAcc.Sub_Use__c == '五金模具') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_Use__c == '重工设备') { |
| | | // newAcc.IndustryC__c = 'Fabricated Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '材料类_其他') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Industrial Scientific research'; |
| | | // } else if (newAcc.Sub_Use__c == '医疗器械') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '激光加工') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '制药') { |
| | | // newAcc.IndustryC__c = 'Pharmaceutical'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '动植物') { |
| | | // newAcc.IndustryC__c = 'Food/Feed/Agriculture'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '新能源汽车') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == '5G-PCB') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '5G-半导体') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '5G-其他') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-半导体-前道') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-半导体-中期') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-半导体-后道') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-FPD') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-3D 测量仪') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-测试仪器') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-拉曼光谱仪') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-血液') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-尿液/粪便') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-细胞学') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-遗传学') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-病理') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-生殖') { |
| | | // newAcc.IndustryC__c = 'Medical Device/Equipment'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-高端显微镜') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-细胞观察') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-电子显微镜') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-高内涵') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-流式细胞仪') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-ODM') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-精准医疗') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } else if (newAcc.Sub_Use__c == 'Compo-其他') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = '(Manufacturing)OEM'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFG') { |
| | | // if (newAcc.Sub_Use__c == null || newAcc.Sub_Use__c == '') { |
| | | // newAcc.IndustryC__c = null; |
| | | // newAcc.MarketVerticals__c = null; |
| | | // newAcc.Use__c = null; |
| | | // } else if (newAcc.Sub_Use__c == 'Automotive') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == 'Civil Aviation') { |
| | | // newAcc.IndustryC__c = 'Aerospace'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = '(Maintenance)Aviation Airframe/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == 'Security/Defense') { |
| | | // newAcc.IndustryC__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == 'Oil,Gas&Chemical') { |
| | | // newAcc.IndustryC__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_Use__c == 'Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_Use__c == 'General Manufacturing') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_Use__c == 'Inspection/Service/Rental') { |
| | | // newAcc.IndustryC__c = 'Inspection/Lab/Rental Sevice Provider'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_Use__c == 'Others') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == 'Thermal Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Process piping'; |
| | | // } else if (newAcc.Sub_Use__c == 'Nuclear Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Process piping'; |
| | | // } else if (newAcc.Sub_Use__c == 'Wind Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_Use__c == 'Power(other)') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Corrosion'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFB') { |
| | | // if (newAcc.Sub_Use__c == null || newAcc.Sub_Use__c == '') { |
| | | // newAcc.IndustryC__c = null; |
| | | // newAcc.MarketVerticals__c = null; |
| | | // newAcc.Use__c = null; |
| | | // } else if (newAcc.Sub_Use__c == 'Automotive') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Automotive Body/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == 'Civil Aviation') { |
| | | // newAcc.IndustryC__c = 'Aerospace'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = '(Maintenance)Aviation Airframe/Engine'; |
| | | // } else if (newAcc.Sub_Use__c == 'Security/Defense') { |
| | | // newAcc.IndustryC__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == 'Oil,Gas&Chemical') { |
| | | // newAcc.IndustryC__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Weld Inspection'; |
| | | // } else if (newAcc.Sub_Use__c == 'Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_Use__c == 'General Manufacturing') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_Use__c == 'Inspection/Service/Rental') { |
| | | // newAcc.IndustryC__c = 'Inspection/Lab/Rental Sevice Provider'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_Use__c == 'Others') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == 'Thermal Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Heat Exchangers'; |
| | | // } else if (newAcc.Sub_Use__c == 'Nuclear Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Process Piping'; |
| | | // } else if (newAcc.Sub_Use__c == 'Wind Power') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Gear Box'; |
| | | // } else if (newAcc.Sub_Use__c == 'Power(other)') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'Corrosion'; |
| | | // } |
| | | // } else if (newAcc.recordTypeId == '01228000000TdFL') { |
| | | // if (newAcc.Sub_Use__c == null || newAcc.Sub_Use__c == '') { |
| | | // newAcc.IndustryC__c = null; |
| | | // newAcc.MarketVerticals__c = null; |
| | | // newAcc.Use__c = null; |
| | | // } else if (newAcc.Sub_Use__c == '废旧金属') { |
| | | // newAcc.IndustryC__c = 'Recycling'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Alloy : Recycling'; |
| | | // } else if (newAcc.Sub_Use__c == '炼钢厂') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = ' Tube/Rod/Bar/Sheet Metal'; |
| | | // } else if (newAcc.Sub_Use__c == 'PMI-石化行业') { |
| | | // newAcc.IndustryC__c = 'Chemical/Petrochemical/Plastics'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'PMI'; |
| | | // } else if (newAcc.Sub_Use__c == 'PMI-管道制造') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Pipelines'; |
| | | // } else if (newAcc.Sub_Use__c == 'PMI-金属制造') { |
| | | // newAcc.IndustryC__c = 'Metal Manufacturing'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Machined Parts'; |
| | | // } else if (newAcc.Sub_Use__c == 'PMI-电力') { |
| | | // newAcc.IndustryC__c = 'Power Generation'; |
| | | // newAcc.MarketVerticals__c = 'Maintenance'; |
| | | // newAcc.Use__c = 'PMI'; |
| | | // } else if (newAcc.Sub_Use__c == 'RoHS') { |
| | | // newAcc.IndustryC__c = 'Electronics'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == 'ELV') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Electronic Device'; |
| | | // } else if (newAcc.Sub_Use__c == '玩具&皮革') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Consumer Goods'; |
| | | // } else if (newAcc.Sub_Use__c == '贵金属-制造') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Consumer Goods'; |
| | | // } else if (newAcc.Sub_Use__c == '贵金属-回收') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Alloy : Precious Metals Recycling'; |
| | | // } else if (newAcc.Sub_Use__c == '勘探-政府') { |
| | | // newAcc.IndustryC__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Geology : Geological Surveys'; |
| | | // } else if (newAcc.Sub_Use__c == '勘探-矿业公司') { |
| | | // newAcc.IndustryC__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Mining : Exploration'; |
| | | // } else if (newAcc.Sub_Use__c == 'Mining-冶炼') { |
| | | // newAcc.IndustryC__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Mining : Processing & Refining & Metallurgy'; |
| | | // } else if (newAcc.Sub_Use__c == 'Mining-开采') { |
| | | // newAcc.IndustryC__c = 'Mining/Geology'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Mining : Production & Grade Control'; |
| | | // } else if (newAcc.Sub_Use__c == 'EPA') { |
| | | // newAcc.IndustryC__c = 'Government/Security/Defense'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_Use__c == '土壤修复') { |
| | | // newAcc.IndustryC__c = 'Recycling'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_Use__c == '土壤研究') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Regulatory : Enviro-Soil'; |
| | | // } else if (newAcc.Sub_Use__c == '考古&文物') { |
| | | // newAcc.IndustryC__c = 'Academic Research'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // } else if (newAcc.Sub_Use__c == '录井') { |
| | | // newAcc.IndustryC__c = 'Oil & Gas'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Mining : Exploration'; |
| | | // } else if (newAcc.Sub_Use__c == '制药') { |
| | | // newAcc.IndustryC__c = 'Pharmaceutical'; |
| | | // newAcc.MarketVerticals__c = 'Manufacturing'; |
| | | // newAcc.Use__c = 'Chemical/Plastics/Rubber'; |
| | | // } else if (newAcc.Sub_Use__c == '三元催化剂') { |
| | | // newAcc.IndustryC__c = 'Automotive'; |
| | | // newAcc.MarketVerticals__c = 'Natural Resources'; |
| | | // newAcc.Use__c = 'Alloy : Precious Metals Recycling'; |
| | | // } else if (newAcc.Sub_Use__c == 'Others') { |
| | | // newAcc.IndustryC__c = 'Other'; |
| | | // newAcc.MarketVerticals__c = 'Other'; |
| | | // newAcc.Use__c = '(Other) Other'; |
| | | // }//Add 三元催化剂 by 符晓林 2016年6月6日 |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | public static void updateForDealer(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | //王鹏伟 服务部修改联系人重新审批 判断当前修改的登陆人是否是孙学洋 吴晓东 |
| | | String now_userId = UserInfo.getUserId(); |
| | | Map<Id, Id> manager = new Map<Id, Id>(); |
| | | for (Account newAcc : newList) { |
| | | Account oldAcc = oldMap.get(newAcc.Id); |
| | | /*if (newAcc.DealerSelectOwner__c != null ) { |
| | | manager.put(newAcc.DealerSelectOwner__c , newAcc.Id); |
| | | }*/ |
| | | if (newAcc.WebsiteD__c != oldAcc.WebsiteD__c || |
| | | newAcc.FaxD__c != oldAcc.FaxD__c || |
| | | //newAcc.CreatedByD__c != oldAcc.CreatedBy || |
| | | newAcc.PhoneD__c != oldAcc.PhoneD__c || |
| | | newAcc.Address1D__c != oldAcc.Address1D__c || |
| | | newAcc.AssetANI4D__c != oldAcc.AssetANI4D__c || |
| | | newAcc.AssetIE7D__c != oldAcc.AssetIE7D__c || |
| | | newAcc.AssetNDT7D__c != oldAcc.AssetNDT7D__c || |
| | | //newAcc.DealerD__c != oldAcc.DealerD__c || |
| | | //newAcc.DepartmentNameD__c != oldAcc.DepartmentNameD__c || |
| | | //newAcc.DivisionNameD__c != oldAcc.DivissionNameD__c || |
| | | newAcc.AssetRVI5D__c != oldAcc.AssetRVI5D__c || |
| | | newAcc.EnglishNameD__c != oldAcc.EnglishNameD__c || |
| | | //newAcc.ExportRegulatedCustomerD__c != oldAcc.ExportRegulatedCustomerD__c || |
| | | //newAcc.FacilityNameD__c != oldAcc.FacilityNameD__c || |
| | | newAcc.AssetRVI2D__c != oldAcc.AssetRVI2D__c || |
| | | newAcc.AssetNDT4D__c != oldAcc.AssetNDT4D__c || |
| | | newAcc.IndustryCD__c != oldAcc.IndustryCD__c || |
| | | //gwy BS |
| | | newAcc.IndustryBD__c != oldAcc.IndustryBD__c || |
| | | newAcc.AssetRVI4D__c != oldAcc.AssetRVI4D__c || |
| | | newAcc.AssetRVI3D__c != oldAcc.AssetRVI3D__c || |
| | | //newAcc.KeyAccountD__c != oldAcc.KeyAccountD__c || |
| | | newAcc.AssetIE5D__c != oldAcc.AssetIE5D__c || |
| | | newAcc.AssetBS3D__c != oldAcc.AssetBS3D__c || |
| | | newAcc.AssetIE3D__c != oldAcc.AssetIE3D__c || |
| | | newAcc.AssetANI7D__c != oldAcc.AssetANI7D__c || |
| | | newAcc.AssetNDT6D__c != oldAcc.AssetNDT6D__c || |
| | | newAcc.MarketVerticalsD__c != oldAcc.MarketVerticalsD__c || |
| | | newAcc.AssetIE6D__c != oldAcc.AssetIE6D__c || |
| | | newAcc.AssetIE2D__c != oldAcc.AssetIE2D__c || |
| | | newAcc.AssetBS2D__c != oldAcc.AssetBS2D__c || |
| | | newAcc.AssetANI3D__c != oldAcc.AssetANI3D__c || |
| | | newAcc.AssetIE1D__c != oldAcc.AssetIE1D__c || |
| | | newAcc.AssetBS1D__c != oldAcc.AssetBS1D__c || |
| | | newAcc.AssetRVI1D__c != oldAcc.AssetRVI1D__c || |
| | | newAcc.AssetNDT1D__c != oldAcc.AssetNDT1D__c || |
| | | newAcc.AssetANI1D__c != oldAcc.AssetANI1D__c || |
| | | newAcc.AssetNDT8D__c != oldAcc.AssetNDT8D__c || |
| | | newAcc.AssetANI8D__c != oldAcc.AssetANI8D__c || |
| | | newAcc.AssetBS5D__c != oldAcc.AssetBS5D__c || |
| | | newAcc.AssetIE8D__c != oldAcc.AssetIE8D__c || |
| | | newAcc.AssetRVI8D__c != oldAcc.AssetRVI8D__c || |
| | | newAcc.AssetANI5D__c != oldAcc.AssetANI5D__c || |
| | | //newAcc.ProvinceD__c != oldAcc.ProvinceD__c || |
| | | newAcc.AssetRVI6D__c != oldAcc.AssetRVI6D__c || |
| | | newAcc.AssetANI2D__c != oldAcc.AssetANI2D__c || |
| | | newAcc.AssetNDT3D__c != oldAcc.AssetNDT3D__c || |
| | | newAcc.AssetNDT2D__c != oldAcc.AssetNDT2D__c || |
| | | newAcc.AssetANI6D__c != oldAcc.AssetANI6D__c || |
| | | newAcc.Sub_UseD__c != oldAcc.Sub_UseD__c || |
| | | newAcc.Sub_UseA__c != oldAcc.Sub_UseA__c || |
| | | newAcc.UseD__c != oldAcc.UseD__c || |
| | | newAcc.AssetRVI7D__c != oldAcc.AssetRVI7D__c || |
| | | newAcc.AssetBS4D__c != oldAcc.AssetBS4D__c || |
| | | newAcc.AssetIE4D__c != oldAcc.AssetIE4D__c || |
| | | newAcc.AssetNDT5D__c != oldAcc.AssetNDT5D__c || |
| | | newAcc.AccountStatusD__c != oldAcc.AccountStatusD__c || |
| | | newAcc.CancelReasonD__c != oldAcc.CancelReasonD__c || |
| | | newAcc.CityD__c != oldAcc.CityD__c || |
| | | newAcc.PostCodeD__c != oldAcc.PostCodeD__c || |
| | | newAcc.DealerSelectOwner__c != oldAcc.DealerSelectOwner__c || |
| | | newAcc.FacilityNameD__c != oldAcc.FacilityNameD__c || |
| | | newAcc.DivisionName_D__c != oldAcc.DivisionName_D__c || |
| | | newAcc.DepartmentNameD__c != oldAcc.DepartmentNameD__c) { |
| | | // String profileId = UserInfo.getProfileId().subString(0, 15); |
| | | //新的获取人员简档ID |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | //System.debug('profileId:'+profileId+'---------'+'new_profileId:'+new_profileId); |
| | | //王鹏伟 添加判断 || now_userId =='00528000000YWC6' || now_userId =='00528000000YWE7' |
| | | //00528000000YWC6 孙 学洋 |
| | | //00528000000YWE7 吴 晓东 |
| | | //王鹏伟 添加&&((oldCon.ProductSegmentIE__c == true || oldCon.ProductSegmentRVI__c == true) && oldCon.isServiceCreate__c == true) |
| | | //服务部修改联系人信息 LS、NDT、ANI无需审批跳过审批状态变草案 |
| | | //新增权限整理2021-05-10 |
| | | //gwy 2021-08-20 除了市场部的人,都可以变草案 |
| | | //List<String> markNot = new String [] {'00528000000YVIc','0050K00000B3aNb','0050K00000B3aN7','00528000001uK0Z','00528000000YVHy','00528000000YVID'}; |
| | | if ((oldAcc.MarkisorNo__c == false |
| | | //新增权限整理2021-05-10 |
| | | || UserInfo.getUserType() == 'PowerPartner') |
| | | && !((oldAcc.ProductSegment__c == 'BS' || oldAcc.ProductSegment__c == 'NDT' || oldAcc.ProductSegment__c == 'ANI') && oldAcc.serviceCreate__c == true)) { |
| | | newAcc.stautesD__c = 'Draft'; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (newAcc.Website != oldAcc.Website) { |
| | | newAcc.WebsiteD__c = newAcc.Website; |
| | | } |
| | | if (newAcc.Fax != oldAcc.Fax) { |
| | | newAcc.FaxD__c = newAcc.Fax; |
| | | } |
| | | //newAcc.CreatedByD__c = newAcc.CreatedBy; |
| | | if (newAcc.Phone != oldAcc.Phone) { |
| | | newAcc.PhoneD__c = newAcc.Phone; |
| | | } |
| | | if (newAcc.Address1__c != oldAcc.Address1__c) { |
| | | newAcc.Address1D__c = newAcc.Address1__c; |
| | | } |
| | | if (newAcc.AssetANI4__c != oldAcc.AssetANI4__c) { |
| | | newAcc.AssetANI4D__c = newAcc.AssetANI4__c; |
| | | } |
| | | if (newAcc.AssetIE7__c != oldAcc.AssetIE7__c) { |
| | | newAcc.AssetIE7D__c = newAcc.AssetIE7__c; |
| | | } |
| | | if (newAcc.AssetNDT7__c != oldAcc.AssetNDT7__c) { |
| | | newAcc.AssetNDT7D__c = newAcc.AssetNDT7__c; |
| | | } |
| | | //newAcc.DealerD__c = newAcc.DealerName__c; |
| | | //newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | //newAcc.DivisionNameD__c = newAcc.DivissionName__c; |
| | | if (newAcc.AssetRVI5__c != oldAcc.AssetRVI5__c) { |
| | | newAcc.AssetRVI5D__c = newAcc.AssetRVI5__c; |
| | | } |
| | | if (newAcc.EnglishName__c != oldAcc.EnglishName__c) { |
| | | newAcc.EnglishNameD__c = newAcc.EnglishName__c; |
| | | } |
| | | //newAcc.ExportRegulatedCustomerD__c = newAcc.Export_Regulated_Customer__c; |
| | | //newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | if (newAcc.AssetRVI2__c != oldAcc.AssetRVI2__c) { |
| | | newAcc.AssetRVI2D__c = newAcc.AssetRVI2__c; |
| | | } |
| | | if (newAcc.AssetNDT4__c != oldAcc.AssetNDT4__c) { |
| | | newAcc.AssetNDT4D__c = newAcc.AssetNDT4__c; |
| | | } |
| | | //gwy BS |
| | | if (newAcc.IndustryB__c != oldAcc.IndustryB__c) { |
| | | newAcc.IndustryBD__c = newAcc.IndustryB__c; |
| | | } |
| | | if (newAcc.IndustryC__c != oldAcc.IndustryC__c) { |
| | | newAcc.IndustryCD__c = newAcc.IndustryC__c; |
| | | } |
| | | if (newAcc.AssetRVI4__c != oldAcc.AssetRVI4__c) { |
| | | newAcc.AssetRVI4D__c = newAcc.AssetRVI4__c; |
| | | } |
| | | if (newAcc.AssetRVI3__c != oldAcc.AssetRVI3__c) { |
| | | newAcc.AssetRVI3D__c = newAcc.AssetRVI3__c; |
| | | } |
| | | //newAcc.KeyAccountD__c = newAcc.KeyAccount__c; |
| | | if (newAcc.AssetIE5__c != oldAcc.AssetIE5__c) { |
| | | newAcc.AssetIE5D__c = newAcc.AssetIE5__c; |
| | | } |
| | | if (newAcc.AssetBS3__c != oldAcc.AssetBS3__c) { |
| | | newAcc.AssetBS3D__c = newAcc.AssetBS3__c; |
| | | } |
| | | if (newAcc.AssetIE3__c != oldAcc.AssetIE3__c) { |
| | | newAcc.AssetIE3D__c = newAcc.AssetIE3__c; |
| | | } |
| | | if (newAcc.AssetANI7__c != oldAcc.AssetANI7__c) { |
| | | newAcc.AssetANI7D__c = newAcc.AssetANI7__c; |
| | | } |
| | | if (newAcc.AssetNDT6__c != oldAcc.AssetNDT6__c) { |
| | | newAcc.AssetNDT6D__c = newAcc.AssetNDT6__c; |
| | | } |
| | | if (newAcc.MarketVerticals__c != oldAcc.MarketVerticals__c) { |
| | | newAcc.MarketVerticalsD__c = newAcc.MarketVerticals__c; |
| | | } |
| | | if (newAcc.AssetIE6__c != oldAcc.AssetIE6__c) { |
| | | newAcc.AssetIE6D__c = newAcc.AssetIE6__c; |
| | | } |
| | | if (newAcc.AssetIE2__c != oldAcc.AssetIE2__c) { |
| | | newAcc.AssetIE2D__c = newAcc.AssetIE2__c; |
| | | } |
| | | if (newAcc.AssetBS2__c != oldAcc.AssetBS2__c) { |
| | | newAcc.AssetBS2D__c = newAcc.AssetBS2__c; |
| | | } |
| | | if (newAcc.AssetANI3__c != oldAcc.AssetANI3__c) { |
| | | newAcc.AssetANI3D__c = newAcc.AssetANI3__c; |
| | | } |
| | | if (newAcc.AssetIE1__c != oldAcc.AssetIE1__c) { |
| | | newAcc.AssetIE1D__c = newAcc.AssetIE1__c; |
| | | } |
| | | if (newAcc.AssetBS1__c != oldAcc.AssetBS1__c) { |
| | | newAcc.AssetBS1D__c = newAcc.AssetBS1__c; |
| | | } |
| | | if (newAcc.AssetRVI1__c != oldAcc.AssetRVI1__c) { |
| | | newAcc.AssetRVI1D__c = newAcc.AssetRVI1__c; |
| | | } |
| | | if (newAcc.AssetNDT1__c != oldAcc.AssetNDT1__c) { |
| | | newAcc.AssetNDT1D__c = newAcc.AssetNDT1__c; |
| | | } |
| | | if (newAcc.AssetANI1__c != oldAcc.AssetANI1__c) { |
| | | newAcc.AssetANI1D__c = newAcc.AssetANI1__c; |
| | | } |
| | | if (newAcc.AssetNDT8__c != oldAcc.AssetNDT8__c) { |
| | | newAcc.AssetNDT8D__c = newAcc.AssetNDT8__c; |
| | | } |
| | | if (newAcc.AssetANI8__c != oldAcc.AssetANI8__c) { |
| | | newAcc.AssetANI8D__c = newAcc.AssetANI8__c; |
| | | } |
| | | if (newAcc.AssetBS5__c != oldAcc.AssetBS5__c) { |
| | | newAcc.AssetBS5D__c = newAcc.AssetBS5__c; |
| | | } |
| | | if (newAcc.AssetIE8__c != oldAcc.AssetIE8__c) { |
| | | newAcc.AssetIE8D__c = newAcc.AssetIE8__c; |
| | | } |
| | | if (newAcc.AssetRVI8__c != oldAcc.AssetRVI8__c) { |
| | | newAcc.AssetRVI8D__c = newAcc.AssetRVI8__c; |
| | | } |
| | | if (newAcc.AssetANI5__c != oldAcc.AssetANI5__c) { |
| | | newAcc.AssetANI5D__c = newAcc.AssetANI5__c; |
| | | } |
| | | //newAcc.ProvinceD__c = newAcc.Province__c; |
| | | if (newAcc.AssetRVI6__c != oldAcc.AssetRVI6__c) { |
| | | newAcc.AssetRVI6D__c = newAcc.AssetRVI6__c; |
| | | } |
| | | if (newAcc.AssetANI2__c != oldAcc.AssetANI2__c) { |
| | | newAcc.AssetANI2D__c = newAcc.AssetANI2__c; |
| | | } |
| | | if (newAcc.AssetNDT3__c != oldAcc.AssetNDT3__c) { |
| | | newAcc.AssetNDT3D__c = newAcc.AssetNDT3__c; |
| | | } |
| | | if (newAcc.AssetNDT2__c != oldAcc.AssetNDT2__c) { |
| | | newAcc.AssetNDT2D__c = newAcc.AssetNDT2__c; |
| | | } |
| | | if (newAcc.AssetANI6__c != oldAcc.AssetANI6__c) { |
| | | newAcc.AssetANI6D__c = newAcc.AssetANI6__c; |
| | | } |
| | | if (newAcc.Sub_Use1__c != oldAcc.Sub_Use1__c) { |
| | | newAcc.Sub_UseA__c = newAcc.Sub_Use1__c; |
| | | } |
| | | if (newAcc.Sub_Use__c != oldAcc.Sub_Use__c) { |
| | | newAcc.Sub_UseD__c = newAcc.Sub_Use__c; |
| | | } |
| | | if (newAcc.Use__c != oldAcc.Use__c) { |
| | | newAcc.UseD__c = newAcc.Use__c; |
| | | } |
| | | if (newAcc.AssetRVI7__c != oldAcc.AssetRVI7__c) { |
| | | newAcc.AssetRVI7D__c = newAcc.AssetRVI7__c; |
| | | } |
| | | if (newAcc.AssetBS4__c != oldAcc.AssetBS4__c) { |
| | | newAcc.AssetBS4D__c = newAcc.AssetBS4__c; |
| | | } |
| | | if (newAcc.AssetIE4__c != oldAcc.AssetIE4__c) { |
| | | newAcc.AssetIE4D__c = newAcc.AssetIE4__c; |
| | | } |
| | | if (newAcc.AssetNDT5__c != oldAcc.AssetNDT5__c) { |
| | | newAcc.AssetNDT5D__c = newAcc.AssetNDT5__c; |
| | | } |
| | | |
| | | if (newAcc.AccountStatus__c != oldAcc.AccountStatus__c) { |
| | | newAcc.AccountStatusD__c = newAcc.AccountStatus__c; |
| | | } |
| | | if (newAcc.CancelReason__c != oldAcc.CancelReason__c) { |
| | | newAcc.CancelReasonD__c = newAcc.CancelReason__c; |
| | | } |
| | | if (newAcc.City__c != oldAcc.City__c) { |
| | | newAcc.CityD__c = newAcc.City__c; |
| | | } |
| | | if (newAcc.PostCode__c != oldAcc.PostCode__c) { |
| | | newAcc.PostCodeD__c = newAcc.PostCode__c; |
| | | } |
| | | |
| | | if (newAcc.OwnerId != oldAcc.OwnerId) { |
| | | newAcc.DealerSelectOwner__c = newAcc.OwnerId; |
| | | } |
| | | //王鹏伟 新加 大区经理随审批人实时变化 开始 |
| | | if (newAcc.DealerSelectOwner__c != null ) { |
| | | manager.put(newAcc.DealerSelectOwner__c , newAcc.Id); |
| | | } |
| | | //王鹏伟 新加 大区经理随审批人实时变化 结束 |
| | | if (newAcc.FacilityName__c != oldAcc.FacilityName__c) { |
| | | newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | } |
| | | if (newAcc.DivisionName__c != oldAcc.DivisionName__c) { |
| | | newAcc.DivisionName_D__c = newAcc.DivisionName__c; |
| | | } |
| | | if (newAcc.DepartmentName__c != oldAcc.DepartmentName__c) { |
| | | newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | } |
| | | //gwy 2021-06-08 客户取消邮编必填项 |
| | | /* if (newAcc.PostCodeD__c == null) { |
| | | newAcc.PostCodeD__c = '000000'; |
| | | }*/ |
| | | //王鹏伟新加 服务部创建客户联系人 |
| | | if ((newAcc.DealerSelectOwner__c != oldAcc.DealerSelectOwner__c) && String.isNotBlank(newAcc.DealerSelectOwner__c) && newAcc.serviceCreate__c == true) { |
| | | newAcc.OwnerId = newAcc.DealerSelectOwner__c; |
| | | } |
| | | //王鹏伟新加 结束 |
| | | // 拼接客户 by hanchao 20160809 |
| | | // String new_profileId1 = UserInfo.getProfileId().subString(0,15); |
| | | //新的获取人员简档ID |
| | | String new_profileId1 = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | //System.debug('new_profileId1:'+new_profileId1+'---------'+'new_profileId1:'+new_profileId1); |
| | | |
| | | if ((new_profileId1.subString(0, 15) == System.label.Market_Department1 || new_profileId1.subString(0, 15) == System.label.Market_Department || new_profileId1.subString(0, 15) == System.label.Service_Owner |
| | | || UserInfo.getUserType() == 'PowerPartner') && |
| | | newAcc.IsNew__c == true && (newAcc.FacilityNameD__c != oldAcc.FacilityNameD__c || |
| | | newAcc.DivisionName_D__c != oldAcc.DivisionName_D__c || |
| | | newAcc.DepartmentNameD__c != oldAcc.DepartmentNameD__c )) { |
| | | |
| | | String DivisionName1; |
| | | String DepartmentName1; |
| | | if (newAcc.DivisionName_D__c == '无' || newAcc.DivisionName_D__c == null) { |
| | | DivisionName1 = ''; |
| | | } else {DivisionName1 = newAcc.DivisionName_D__c;} |
| | | if (newAcc.DepartmentNameD__c == '无' || newAcc.DepartmentNameD__c == null) { |
| | | DepartmentName1 = ''; |
| | | } else {DepartmentName1 = newAcc.DepartmentNameD__c;} |
| | | |
| | | newAcc.Name = newAcc.FacilityNameD__c + DivisionName1 + ' ' + DepartmentName1; |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | List<User> userList = new List<User>(); |
| | | Set<Id> userid = new Set<Id>(); |
| | | userid.addAll(manager.keySet()); |
| | | system.debug(manager); |
| | | system.debug(userid); |
| | | userList = [select id,SalesManager__c,BS_AsistGenManger__c from User where id in :userid]; |
| | | system.debug(userList); |
| | | if (userList.size() > 0) { |
| | | for (User use : userList) { |
| | | Id accid = manager.get(use.Id); |
| | | system.debug('Manager__c--accid:'+accid); |
| | | system.debug('use:'+use); |
| | | system.debug(newMap); |
| | | if (newMap.get(accid).ProductSegment__c == 'BS') { |
| | | newMap.get(accid).Manager__c = use.BS_AsistGenManger__c; |
| | | }else { |
| | | newMap.get(accid).Manager__c = use.SalesManager__c; |
| | | } |
| | | system.debug(newMap.get(accid).Manager__c); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void dealerAccountApproval(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | for (Account newAcc : newList) { |
| | | Account oldAcc = oldMap.get(newAcc.Id); |
| | | // String new_profileId1 = UserInfo.getProfileId().subString(0,15); |
| | | //新的获取人员简档ID |
| | | String new_profileId1 = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | //System.debug('new_profileId1:'+new_profileId1+'---------'+'new_profileId1:'+new_profileId1); |
| | | |
| | | String record = newAcc.RecordTypeId; |
| | | system.debug(record); |
| | | //王鹏伟 服务部创建客户联系人 修改 添加判断条件 || newAcc.serviceCreate__c == true |
| | | if (new_profileId1.subString(0, 15) == System.label.Market_Department || new_profileId1.subString(0, 15) == System.label.Market_Department1 || newAcc.serviceCreate__c == true |
| | | ){ |
| | | if (newAcc.stautesD__c == 'Pass') { |
| | | newAcc.Website = newAcc.WebsiteD__c; |
| | | newAcc.Fax = newAcc.FaxD__c; |
| | | //newAcc.CreatedBy = newAcc.CreatedByD__c; |
| | | newAcc.Phone = newAcc.PhoneD__c; |
| | | newAcc.Address1__c = newAcc.Address1D__c; |
| | | newAcc.AssetANI4__c = newAcc.AssetANI4D__c; |
| | | newAcc.AssetIE7__c = newAcc.AssetIE7D__c; |
| | | newAcc.AssetNDT7__c = newAcc.AssetNDT7D__c; |
| | | //newAcc.Dealer__c = newAcc.DealerNameD__c; |
| | | //newAcc.DepartmentName__c = newAcc.DepartmentNameD__c; |
| | | //newAcc.DivisionName__c = newAcc.DivissionNameD__c; |
| | | newAcc.AssetRVI5__c = newAcc.AssetRVI5D__c; |
| | | newAcc.EnglishName__c = newAcc.EnglishNameD__c; |
| | | //newAcc.ExportRegulatedCustomer__c = newAcc.Export_Regulated_CustomerD__c; |
| | | //newAcc.FacilityName__c = newAcc.FacilityNameD__c; |
| | | newAcc.AssetRVI2__c = newAcc.AssetRVI2D__c; |
| | | newAcc.AssetNDT4__c = newAcc.AssetNDT4D__c; |
| | | //gwy 2021-06-15 更改 |
| | | newAcc.IndustryC__c = newAcc.IndustryCD__c; |
| | | newAcc.IndustryB__c = newAcc.IndustryBD__c; |
| | | //newAcc.IndustryB__c = newAcc.IndustryBD__c; |
| | | newAcc.AssetRVI4__c = newAcc.AssetRVI4D__c; |
| | | newAcc.AssetRVI3__c = newAcc.AssetRVI3D__c; |
| | | //newAcc.KeyAccount__c = newAcc.KeyAccountD__c; |
| | | newAcc.AssetIE5__c = newAcc.AssetIE5D__c; |
| | | newAcc.AssetBS3__c = newAcc.AssetBS3D__c; |
| | | newAcc.AssetIE3__c = newAcc.AssetIE3D__c; |
| | | newAcc.AssetANI7__c = newAcc.AssetANI7D__c; |
| | | newAcc.AssetNDT6__c = newAcc.AssetNDT6D__c; |
| | | newAcc.MarketVerticals__c = newAcc.MarketVerticalsD__c; |
| | | newAcc.AssetIE6__c = newAcc.AssetIE6D__c; |
| | | newAcc.AssetIE2__c = newAcc.AssetIE2D__c; |
| | | newAcc.AssetBS2__c = newAcc.AssetBS2D__c; |
| | | newAcc.AssetANI3__c = newAcc.AssetANI3D__c; |
| | | newAcc.AssetIE1__c = newAcc.AssetIE1D__c; |
| | | newAcc.AssetBS1__c = newAcc.AssetBS1D__c; |
| | | newAcc.AssetRVI1__c = newAcc.AssetRVI1D__c; |
| | | newAcc.AssetNDT1__c = newAcc.AssetNDT1D__c; |
| | | newAcc.AssetANI1__c = newAcc.AssetANI1D__c; |
| | | newAcc.AssetNDT8__c = newAcc.AssetNDT8D__c; |
| | | newAcc.AssetANI8__c = newAcc.AssetANI8D__c; |
| | | newAcc.AssetBS5__c = newAcc.AssetBS5D__c; |
| | | newAcc.AssetIE8__c = newAcc.AssetIE8D__c; |
| | | newAcc.AssetRVI8__c = newAcc.AssetRVI8D__c; |
| | | newAcc.AssetANI5__c = newAcc.AssetANI5D__c; |
| | | //newAcc.Province__c = newAcc.ProvinceD__c; |
| | | newAcc.AssetRVI6__c = newAcc.AssetRVI6D__c; |
| | | newAcc.AssetANI2__c = newAcc.AssetANI2D__c; |
| | | newAcc.AssetNDT3__c = newAcc.AssetNDT3D__c; |
| | | newAcc.AssetNDT2__c = newAcc.AssetNDT2D__c; |
| | | newAcc.AssetANI6__c = newAcc.AssetANI6D__c; |
| | | newAcc.Sub_Use1__c = newAcc.Sub_UseA__c; |
| | | newAcc.Sub_Use__c = newAcc.Sub_UseD__c; |
| | | newAcc.Use__c = newAcc.UseD__c; |
| | | newAcc.AssetRVI7__c = newAcc.AssetRVI7D__c; |
| | | newAcc.AssetBS4__c = newAcc.AssetBS4D__c; |
| | | newAcc.AssetIE4__c = newAcc.AssetIE4D__c; |
| | | newAcc.AssetNDT5__c = newAcc.AssetNDT5D__c; |
| | | |
| | | newAcc.AccountStatus__c = newAcc.AccountStatusD__c; |
| | | newAcc.CancelReason__c = newAcc.CancelReasonD__c; |
| | | newAcc.City__c = newAcc.CityD__c; |
| | | newAcc.PostCode__c = newAcc.PostCodeD__c; |
| | | newAcc.FacilityName__c = newAcc.FacilityNameD__c; |
| | | newAcc.DivisionName__c = newAcc.DivisionName_D__c; |
| | | newAcc.DepartmentName__c = newAcc.DepartmentNameD__c; |
| | | |
| | | String DivisionName; |
| | | String DepartmentName; |
| | | if (newAcc.DivisionName__c == '无' || newAcc.DivisionName__c == null) { |
| | | DivisionName = ''; |
| | | } else {DivisionName = newAcc.DivisionName__c;} |
| | | if (newAcc.DepartmentName__c == '无' || newAcc.DepartmentName__c == null) { |
| | | DepartmentName = ''; |
| | | } else {DepartmentName = newAcc.DepartmentName__c;} |
| | | |
| | | newAcc.Name = newAcc.FacilityNameD__c + DivisionName + ' ' + DepartmentName; |
| | | |
| | | if (newAcc.IsNew__c = true) { |
| | | newAcc.IsNew__c = false; |
| | | } |
| | | if (String.isNotBlank(newAcc.DealerSelectOwner__c)) { |
| | | newAcc.OwnerId = newAcc.DealerSelectOwner__c; |
| | | } |
| | | } |
| | | } |
| | | if (newAcc.stautesD__c != oldAcc.stautesD__c && record.substring(0, 15) != '012280000005gnE') { |
| | | // 批准时 |
| | | if (newAcc.stautesD__c == 'Pass') { |
| | | newAcc.Website = newAcc.WebsiteD__c; |
| | | newAcc.Fax = newAcc.FaxD__c; |
| | | //newAcc.CreatedBy = newAcc.CreatedByD__c; |
| | | newAcc.Phone = newAcc.PhoneD__c; |
| | | newAcc.Address1__c = newAcc.Address1D__c; |
| | | newAcc.AssetANI4__c = newAcc.AssetANI4D__c; |
| | | newAcc.AssetIE7__c = newAcc.AssetIE7D__c; |
| | | newAcc.AssetNDT7__c = newAcc.AssetNDT7D__c; |
| | | //newAcc.Dealer__c = newAcc.DealerNameD__c; |
| | | //newAcc.DepartmentName__c = newAcc.DepartmentNameD__c; |
| | | //newAcc.DivisionName__c = newAcc.DivissionNameD__c; |
| | | newAcc.AssetRVI5__c = newAcc.AssetRVI5D__c; |
| | | newAcc.EnglishName__c = newAcc.EnglishNameD__c; |
| | | //newAcc.ExportRegulatedCustomer__c = newAcc.Export_Regulated_CustomerD__c; |
| | | //newAcc.FacilityName__c = newAcc.FacilityNameD__c; |
| | | newAcc.AssetRVI2__c = newAcc.AssetRVI2D__c; |
| | | newAcc.AssetNDT4__c = newAcc.AssetNDT4D__c; |
| | | //gwy 2021-06-15 更改 |
| | | newAcc.IndustryB__c = newAcc.IndustryBD__c; |
| | | newAcc.IndustryC__c = newAcc.IndustryCD__c; |
| | | //newAcc.IndustryC__c = newAcc.IndustryBD__c; |
| | | //newAcc.IndustryB__c = newAcc.IndustryBD__c; |
| | | newAcc.AssetRVI4__c = newAcc.AssetRVI4D__c; |
| | | newAcc.AssetRVI3__c = newAcc.AssetRVI3D__c; |
| | | //newAcc.KeyAccount__c = newAcc.KeyAccountD__c; |
| | | newAcc.AssetIE5__c = newAcc.AssetIE5D__c; |
| | | newAcc.AssetBS3__c = newAcc.AssetBS3D__c; |
| | | newAcc.AssetIE3__c = newAcc.AssetIE3D__c; |
| | | newAcc.AssetANI7__c = newAcc.AssetANI7D__c; |
| | | newAcc.AssetNDT6__c = newAcc.AssetNDT6D__c; |
| | | newAcc.MarketVerticals__c = newAcc.MarketVerticalsD__c; |
| | | newAcc.AssetIE6__c = newAcc.AssetIE6D__c; |
| | | newAcc.AssetIE2__c = newAcc.AssetIE2D__c; |
| | | newAcc.AssetBS2__c = newAcc.AssetBS2D__c; |
| | | newAcc.AssetANI3__c = newAcc.AssetANI3D__c; |
| | | newAcc.AssetIE1__c = newAcc.AssetIE1D__c; |
| | | newAcc.AssetBS1__c = newAcc.AssetBS1D__c; |
| | | newAcc.AssetRVI1__c = newAcc.AssetRVI1D__c; |
| | | newAcc.AssetNDT1__c = newAcc.AssetNDT1D__c; |
| | | newAcc.AssetANI1__c = newAcc.AssetANI1D__c; |
| | | newAcc.AssetNDT8__c = newAcc.AssetNDT8D__c; |
| | | newAcc.AssetANI8__c = newAcc.AssetANI8D__c; |
| | | newAcc.AssetBS5__c = newAcc.AssetBS5D__c; |
| | | newAcc.AssetIE8__c = newAcc.AssetIE8D__c; |
| | | newAcc.AssetRVI8__c = newAcc.AssetRVI8D__c; |
| | | newAcc.AssetANI5__c = newAcc.AssetANI5D__c; |
| | | //newAcc.Province__c = newAcc.ProvinceD__c; |
| | | newAcc.AssetRVI6__c = newAcc.AssetRVI6D__c; |
| | | newAcc.AssetANI2__c = newAcc.AssetANI2D__c; |
| | | newAcc.AssetNDT3__c = newAcc.AssetNDT3D__c; |
| | | newAcc.AssetNDT2__c = newAcc.AssetNDT2D__c; |
| | | newAcc.AssetANI6__c = newAcc.AssetANI6D__c; |
| | | newAcc.Sub_Use1__c = newAcc.Sub_UseA__c; |
| | | newAcc.Sub_Use__c = newAcc.Sub_UseD__c; |
| | | newAcc.Use__c = newAcc.UseD__c; |
| | | newAcc.AssetRVI7__c = newAcc.AssetRVI7D__c; |
| | | newAcc.AssetBS4__c = newAcc.AssetBS4D__c; |
| | | newAcc.AssetIE4__c = newAcc.AssetIE4D__c; |
| | | newAcc.AssetNDT5__c = newAcc.AssetNDT5D__c; |
| | | |
| | | newAcc.AccountStatus__c = newAcc.AccountStatusD__c; |
| | | newAcc.CancelReason__c = newAcc.CancelReasonD__c; |
| | | newAcc.City__c = newAcc.CityD__c; |
| | | newAcc.PostCode__c = newAcc.PostCodeD__c; |
| | | newAcc.FacilityName__c = newAcc.FacilityNameD__c; |
| | | newAcc.DivisionName__c = newAcc.DivisionName_D__c; |
| | | newAcc.DepartmentName__c = newAcc.DepartmentNameD__c; |
| | | |
| | | String DivisionName; |
| | | String DepartmentName; |
| | | if (newAcc.DivisionName__c == '无' || newAcc.DivisionName__c == null) { |
| | | DivisionName = ''; |
| | | } else {DivisionName = newAcc.DivisionName__c;} |
| | | if (newAcc.DepartmentName__c == '无' || newAcc.DepartmentName__c == null) { |
| | | DepartmentName = ''; |
| | | } else {DepartmentName = newAcc.DepartmentName__c;} |
| | | |
| | | newAcc.Name = newAcc.FacilityNameD__c + DivisionName + ' ' + DepartmentName; |
| | | |
| | | if (newAcc.IsNew__c = true) { |
| | | newAcc.IsNew__c = false; |
| | | } |
| | | if (String.isNotBlank(newAcc.DealerSelectOwner__c)) { |
| | | newAcc.OwnerId = newAcc.DealerSelectOwner__c; |
| | | } |
| | | } |
| | | if (newAcc.stautesD__c == 'Reject' && newAcc.IsNew__c == false) { |
| | | newAcc.WebsiteD__c = newAcc.Website; |
| | | newAcc.FaxD__c = newAcc.Fax; |
| | | //newAcc.CreatedByD__c = newAcc.CreatedBy; |
| | | newAcc.PhoneD__c = newAcc.Phone; |
| | | newAcc.Address1D__c = newAcc.Address1__c; |
| | | newAcc.AssetANI4D__c = newAcc.AssetANI4__c; |
| | | newAcc.AssetIE7D__c = newAcc.AssetIE7__c; |
| | | newAcc.AssetNDT7D__c = newAcc.AssetNDT7__c; |
| | | //newAcc.DealerD__c = newAcc.DealerName__c; |
| | | //newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | //newAcc.DivisionNameD__c = newAcc.DivissionName__c; |
| | | newAcc.AssetRVI5D__c = newAcc.AssetRVI5__c; |
| | | newAcc.EnglishNameD__c = newAcc.EnglishName__c; |
| | | //newAcc.ExportRegulatedCustomerD__c = newAcc.Export_Regulated_Customer__c; |
| | | //newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | newAcc.AssetRVI2D__c = newAcc.AssetRVI2__c; |
| | | newAcc.AssetNDT4D__c = newAcc.AssetNDT4__c; |
| | | //gwy 2021-06-15 更改 |
| | | newAcc.IndustryBD__c = newAcc.IndustryB__c; |
| | | newAcc.IndustryCD__c = newAcc.IndustryC__c; |
| | | //newAcc.IndustryCD__c = newAcc.IndustryB__c; |
| | | //newAcc.IndustryBD__c = newAcc.IndustryB__c; |
| | | newAcc.AssetRVI4D__c = newAcc.AssetRVI4__c; |
| | | newAcc.AssetRVI3D__c = newAcc.AssetRVI3__c; |
| | | //newAcc.KeyAccountD__c = newAcc.KeyAccount__c; |
| | | newAcc.AssetIE5D__c = newAcc.AssetIE5__c; |
| | | newAcc.AssetBS3D__c = newAcc.AssetBS3__c; |
| | | newAcc.AssetIE3D__c = newAcc.AssetIE3__c; |
| | | newAcc.AssetANI7D__c = newAcc.AssetANI7__c; |
| | | newAcc.AssetNDT6D__c = newAcc.AssetNDT6__c; |
| | | newAcc.MarketVerticalsD__c = newAcc.MarketVerticals__c; |
| | | newAcc.AssetIE6D__c = newAcc.AssetIE6__c; |
| | | newAcc.AssetIE2D__c = newAcc.AssetIE2__c; |
| | | newAcc.AssetBS2D__c = newAcc.AssetBS2__c; |
| | | newAcc.AssetANI3D__c = newAcc.AssetANI3__c; |
| | | newAcc.AssetIE1D__c = newAcc.AssetIE1__c; |
| | | newAcc.AssetBS1D__c = newAcc.AssetBS1__c; |
| | | newAcc.AssetRVI1D__c = newAcc.AssetRVI1__c; |
| | | newAcc.AssetNDT1D__c = newAcc.AssetNDT1__c; |
| | | newAcc.AssetANI1D__c = newAcc.AssetANI1__c; |
| | | newAcc.AssetNDT8D__c = newAcc.AssetNDT8__c; |
| | | newAcc.AssetANI8D__c = newAcc.AssetANI8__c; |
| | | newAcc.AssetBS5D__c = newAcc.AssetBS5__c; |
| | | newAcc.AssetIE8D__c = newAcc.AssetIE8__c; |
| | | newAcc.AssetRVI8D__c = newAcc.AssetRVI8__c; |
| | | newAcc.AssetANI5D__c = newAcc.AssetANI5__c; |
| | | //newAcc.ProvinceD__c = newAcc.Province__c; |
| | | newAcc.AssetRVI6D__c = newAcc.AssetRVI6__c; |
| | | newAcc.AssetANI2D__c = newAcc.AssetANI2__c; |
| | | newAcc.AssetNDT3D__c = newAcc.AssetNDT3__c; |
| | | newAcc.AssetNDT2D__c = newAcc.AssetNDT2__c; |
| | | newAcc.AssetANI6D__c = newAcc.AssetANI6__c; |
| | | newAcc.Sub_UseA__c = newAcc.Sub_Use1__c; |
| | | newAcc.Sub_UseD__c = newAcc.Sub_Use__c; |
| | | newAcc.UseD__c = newAcc.Use__c; |
| | | newAcc.AssetRVI7D__c = newAcc.AssetRVI7__c; |
| | | newAcc.AssetBS4D__c = newAcc.AssetBS4__c; |
| | | newAcc.AssetIE4D__c = newAcc.AssetIE4__c; |
| | | newAcc.AssetNDT5D__c = newAcc.AssetNDT5__c; |
| | | |
| | | newAcc.AccountStatusD__c = newAcc.AccountStatus__c; |
| | | newAcc.CancelReasonD__c = newAcc.CancelReason__c; |
| | | newAcc.CityD__c = newAcc.City__c; |
| | | newAcc.PostCodeD__c = newAcc.PostCode__c; |
| | | |
| | | newAcc.DealerSelectOwner__c = newAcc.OwnerId; |
| | | newAcc.FacilityNameD__c = newAcc.FacilityName__c; |
| | | newAcc.DivisionName_D__c = newAcc.DivisionName__c; |
| | | newAcc.DepartmentNameD__c = newAcc.DepartmentName__c; |
| | | } |
| | | } |
| | | //gwy 2021-06-04 LS 新增必填项OEM客户的标识 |
| | | if(newAcc.UserType__c == 'OEM客户' && newAcc.ProductSegment__c == 'BS'){ |
| | | newAcc.Whether_OEM__c = true; |
| | | }else{ |
| | | newAcc.Whether_OEM__c = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void dealerAccountApproval2(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | List<String> accIdList = new List<String>(); |
| | | |
| | | for (Account newAcc : newList) { |
| | | Account oldAcc = oldMap.get(newAcc.Id); |
| | | if (newAcc.stautesD__c != oldAcc.stautesD__c) { |
| | | // 批准时 |
| | | if (newAcc.stautesD__c == 'Pass') { |
| | | accIdList.add(newAcc.Id); |
| | | } |
| | | // 市场战略部人员新建提交时 (韩超) |
| | | if (newAcc.stautesD__c == 'Submit' && newAcc.IsStrCreated__c == true && newAcc.IsNew__c == true ) { |
| | | accIdList.add(newAcc.Id); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | if (accIdList.size() > 0) { |
| | | List<AccountShare> accsList = [select Id, accountId, UserOrGroupId, AccountAccessLevel, RowCause from AccountShare where accountId = :accIdList and RowCause = 'Team' and AccountAccessLevel = 'Read']; |
| | | for (AccountShare accs : accsList) { |
| | | accs.AccountAccessLevel = 'Edit'; |
| | | } |
| | | if (accsList != null && accsList.size() > 0) { |
| | | update accsList; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void setDealerGroup(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | List<String> groupIdList = new List<String>(); |
| | | List<String> accIdList = new List<String>(); |
| | | List<String> specialDealerList = new List<String>(); |
| | | |
| | | Map<String, String> userMap = new Map<String, String>(); |
| | | List<User> userList = [select id, accountId from User where ContactId != null]; |
| | | for (User u : userList) { |
| | | userMap.put(u.id, u.accountId); |
| | | } |
| | | for (Account newAcc : newList) { |
| | | |
| | | accIdList.add(newAcc.Id); |
| | | String dealerId = userMap.get(newAcc.OwnerId); |
| | | String groupId = StaticParameter.dealerGroupMap.get(dealerId == null ? '' : dealerId.substring(0, 15)); |
| | | Boolean flag = StaticParameter.specialDealerList.contains(dealerId == null ? '' : dealerId.substring(0, 15)); |
| | | if (flag) { |
| | | specialDealerList.add(newAcc.Id); |
| | | } |
| | | if (groupId == null || groupId.length() == 0) { |
| | | continue; |
| | | } |
| | | groupIdList.add(groupId); |
| | | //accIdList.add(newAcc.Id); |
| | | } |
| | | List<GroupMember> gmList = [select id, groupId, userOrGroupId from GroupMember where groupId = :groupIdList]; |
| | | |
| | | List<AccountTeamMember> insertList = new list<AccountTeamMember>(); |
| | | for (Account newAcc : newList) { |
| | | String dealerId = userMap.get(newAcc.OwnerId); |
| | | String groupId = StaticParameter.dealerGroupMap.get(dealerId == null ? '' : dealerId.substring(0, 15)); |
| | | // 市场战略部新建保存时将创建者插入客户小组 |
| | | if (newAcc.IsStrCreated__c == true) { |
| | | AccountTeamMember atm2 = new AccountTeamMember(); |
| | | atm2.accountId = newAcc.Id; |
| | | atm2.userId = newAcc.CreatedById; |
| | | atm2.teamMemberRole = 'Sales Manager'; |
| | | insertList.add(atm2); |
| | | } |
| | | if (specialDealerList.contains(newAcc.Id)) { |
| | | AccountTeamMember atm = new AccountTeamMember(); |
| | | atm.accountId = newAcc.Id; |
| | | atm.userId = newAcc.CreatedById; |
| | | atm.teamMemberRole = 'Sales Manager'; |
| | | insertList.add(atm); |
| | | continue; |
| | | } |
| | | // |
| | | if (groupId == null || groupId.length() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | for (GroupMember gm : gmList) { |
| | | if (gm.groupId == groupId) { |
| | | AccountTeamMember atm = new AccountTeamMember(); |
| | | atm.accountId = newAcc.Id; |
| | | atm.userId = gm.userOrGroupId; |
| | | atm.teamMemberRole = 'Sales Manager'; |
| | | insertList.add(atm); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | if (insertList != null && insertList.size() > 0) { |
| | | insert insertList; |
| | | } |
| | | |
| | | List<AccountShare> accsList = new List<AccountShare>(); |
| | | accsList = [select Id, accountId, UserOrGroupId, AccountAccessLevel, RowCause from AccountShare where accountId = :accIdList and RowCause = 'Team']; |
| | | for (AccountShare accs : accsList) { |
| | | accs.AccountAccessLevel = 'Edit'; |
| | | } |
| | | if (accsList != null && accsList.size() > 0) { |
| | | update accsList; |
| | | } |
| | | } |
| | | /** |
| | | * [updateCampaignRelationship description]市场活动页面创建客户 |
| | | * @param newList [description] |
| | | * @param newMap [description] |
| | | * @param oldList [description] |
| | | * @param oldMap [description] |
| | | * @param HandleType [description]1.新增、2.变更、3.删除 |
| | | * @return [description] |
| | | */ |
| | | public static void updateCampaignRelationship(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap, string HandleType) { |
| | | |
| | | List<Account> accountList = new List<Account>(); |
| | | if ('1'.equals(HandleType)) { |
| | | accountList = newList; |
| | | } else { |
| | | accountList = oldList; |
| | | } |
| | | List<CampaignRelationship__c> insertCampaignRelationshipList = new List<CampaignRelationship__c>(); |
| | | for (Account newAcc : accountList) { |
| | | |
| | | if (newAcc.AccountCampaign__c != null) { |
| | | CampaignRelationship__c campaignRelationship = new CampaignRelationship__c(); |
| | | campaignRelationship.RelationshipCampaign__c = newAcc.AccountCampaign__c; |
| | | campaignRelationship.RelationshipAccount__c = newAcc.Id; |
| | | if (newAcc.RecordTypeId == '01228000000TdF6' || newAcc.RecordTypeId == '01228000000PvwI') { |
| | | campaignRelationship.RelationshipProductSegment__c = 'IE'; |
| | | } else if (newAcc.RecordTypeId == '01228000000TdFB' || newAcc.RecordTypeId == '01228000000PvwK') { |
| | | campaignRelationship.RelationshipProductSegment__c = 'RVI'; |
| | | } else if (newAcc.RecordTypeId == '01228000000TdFG' || newAcc.RecordTypeId == '01228000000PvwJ') { |
| | | campaignRelationship.RelationshipProductSegment__c = 'NDT'; |
| | | } else if (newAcc.RecordTypeId == '01228000000TdFL' || newAcc.RecordTypeId == '01228000000PvwG') { |
| | | campaignRelationship.RelationshipProductSegment__c = 'ANI'; |
| | | } |
| | | insertCampaignRelationshipList.add(campaignRelationship); |
| | | } |
| | | } |
| | | system.debug('insertCampaignRelationshipList--->' + insertCampaignRelationshipList); |
| | | if (insertCampaignRelationshipList != null && insertCampaignRelationshipList.size() > 0) { |
| | | insert insertCampaignRelationshipList; |
| | | } |
| | | } |
| | | |
| | | public static void CheckAccoutnNameChange(List<Account> newList, Map<Id, Account> newMap, List<Account> oldList, Map<Id, Account> oldMap) { |
| | | List<String> idList = new List<String>(); |
| | | List<Account> checkAccountList = new List<Account>(); |
| | | //新的获取人员简档ID |
| | | // String profileId = UserInfo.getProfileId().subString(0, 15); |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | |
| | | //旧的获取简档ID UserInfo.getProfileId().subString(0, 15) |
| | | for (Account acc : newList) { |
| | | Account oldAcc = oldMap.get(acc.Id); |
| | | //新增权限整理2021-05-10 |
| | | if (UserInfo.getUserType() != 'PowerPartner' && |
| | | new_profileId.subString(0, 15) != '00e28000000wAuN' && new_profileId.subString(0, 15) != '00e28000000eN67' && new_profileId.subString(0, 15) != '00e28000001sIDP' |
| | | ) { |
| | | //新增权限整理2021-05-10 |
| | | System.debug(acc.Name); |
| | | System.debug(oldAcc.Name); |
| | | if ((acc.Name.trim() != oldAcc.Name.trim() || acc.FacilityName__c != oldAcc.FacilityName__c || |
| | | acc.DivisionName__c != oldAcc.DivisionName__c || acc.DepartmentName__c != oldAcc.DepartmentName__c || |
| | | acc.FacilityNameD__c != oldAcc.FacilityNameD__c || acc.DivisionName_D__c != oldAcc.DivisionName_D__c || |
| | | acc.DepartmentNameD__c != oldAcc.DepartmentNameD__c ) && oldAcc.stautesD__c != 'Submit') { |
| | | |
| | | idList.add(acc.Id); |
| | | checkAccountList.add(acc); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(idList.size() > 0){ |
| | | List<AccountTeamMember> accTeamList = new List<AccountTeamMember>(); |
| | | Set<String> havePartnerSet = new Set<String>(); |
| | | accTeamList = [SELECT id,user.userType,accountId FROM AccountTeamMember WHERE accountId IN : idList]; |
| | | if(accTeamList.size() > 0){ |
| | | for(AccountTeamMember atm : accTeamList){ |
| | | if(atm.user.userType == 'PowerPartner'){ |
| | | havePartnerSet.add(atm.accountId); |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (Account acc : checkAccountList) { |
| | | if (havePartnerSet.contains(acc.Id)) { |
| | | newMap.get(acc.Id).addError('不能修改已经分配给代理的客户。'); |
| | | }else{ |
| | | if(acc.MarketingStrategyCreated__c || (acc.serviceCreate__c && (acc.ProductSegment__c == 'NDT' ||acc.ProductSegment__c == 'ANI' ||acc.ProductSegment__c == 'BS' ))){ |
| | | |
| | | }else{ |
| | | newMap.get(acc.Id).stautesD__c = 'Draft'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public static void asd() { |
| | | Integer i = 1; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AccountTriggerHandlerTest { |
| | | |
| | | static testMethod void tsetBusinesslicense() { |
| | | AccountTriggerHandler.asd(); |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | //Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | Account dealerParent = new Account(); |
| | | dealerParent.Name = 'test dealer'; |
| | | dealerParent.RecordTypeId = rectDealer[0].Id; |
| | | dealerParent.ProductSegment__c = 'BS'; |
| | | dealerParent.PostCode__c='000000'; |
| | | dealerParent.ManagementCode_Ext__c = 'P11111'; |
| | | insert dealerParent; |
| | | |
| | | Account dealer1 = new Account(); |
| | | dealer1.Name = 'test dealer'; |
| | | dealer1.RecordTypeId = rectDealer[0].Id; |
| | | dealer1.ProductSegment__c = 'BS'; |
| | | dealer1.PostCode__c='000000'; |
| | | dealer1.ManagementCode_Ext__c = 'C22222'; |
| | | dealer1.ParentId = dealerParent.Id; |
| | | insert dealer1; |
| | | |
| | | Account dealer2 = new Account(); |
| | | dealer2.Name = 'test dealer'; |
| | | dealer2.RecordTypeId = rectDealer[0].Id; |
| | | dealer2.ProductSegment__c = 'BS'; |
| | | dealer2.PostCode__c='000000'; |
| | | dealer2.ManagementCode_Ext__c = 'C33333'; |
| | | dealer2.ParentId = dealerParent.Id; |
| | | insert dealer2; |
| | | |
| | | dealerParent.Business_license__c = 'Test20191227'; |
| | | update dealerParent; |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | static testMethod void myUnitTest() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | |
| | | Account dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'IE'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | |
| | | User user = new User(); |
| | | user.LastName = 'testAccount'; |
| | | user.FirstName = 'test'; |
| | | user.Alias = '2105'; |
| | | user.Email = 'testAccount@test.com'; |
| | | user.Username = 'testAccount@test222.com'; |
| | | user.CommunityNickname = 'testAccount'; |
| | | user.IsActive = true; |
| | | user.EmailEncodingKey = 'ISO-2022-JP'; |
| | | user.TimeZoneSidKey = 'Asia/Tokyo'; |
| | | user.LocaleSidKey = 'ja_JP'; |
| | | user.LanguageLocaleKey = 'ja'; |
| | | user.ProfileId = System.Label.SystemAdmin; |
| | | insert user; |
| | | |
| | | Account acc = new Account(); |
| | | acc.Name = '*'; |
| | | acc.Website = 'Website'; |
| | | acc.Fax = 'Fax'; |
| | | acc.Phone = 'Phone'; |
| | | acc.Address1__c = 'Address1__c'; |
| | | acc.AssetANI4__c = 'AssetANI4__c'; |
| | | acc.AssetIE7__c = 'AssetIE7__c'; |
| | | acc.AssetNDT7__c = 'AssetNDT7__c'; |
| | | acc.Dealer__c = dealer.id; |
| | | acc.DepartmentName__c = 'DepartmentName__c'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.AssetRVI5__c = 'AssetRVI5__c'; |
| | | acc.EnglishName__c = 'EnglishName__c'; |
| | | acc.ExportRegulatedCustomer__c = true; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.AssetRVI2__c = 'AssetRVI2__c'; |
| | | acc.AssetNDT4__c = 'AssetNDT4__c'; |
| | | acc.IndustryC__c = 'Academic Research'; |
| | | acc.AssetRVI4__c = 'AssetRVI4__c'; |
| | | acc.AssetRVI3__c = 'AssetRVI3__c'; |
| | | acc.KeyAccount__c = 'Large Account'; |
| | | acc.AssetIE5__c = 'AssetIE5__c'; |
| | | acc.AssetBS3__c = 'AssetBS3__c'; |
| | | acc.AssetIE3__c = 'AssetIE3__c'; |
| | | acc.AssetANI7__c = 'AssetANI7__c'; |
| | | acc.AssetNDT6__c = 'AssetNDT6__c'; |
| | | acc.MarketVerticals__c = 'LS Research'; |
| | | acc.AssetIE6__c = 'AssetIE6__c'; |
| | | acc.AssetIE2__c = 'AssetIE2__c'; |
| | | acc.AssetBS2__c = 'AssetBS2__c'; |
| | | acc.AssetANI3__c = 'AssetANI3__c'; |
| | | acc.AssetIE1__c = 'AssetIE1__c'; |
| | | acc.AssetBS1__c = 'AssetBS1__c'; |
| | | acc.AssetRVI1__c = 'AssetRVI1__c'; |
| | | acc.AssetNDT1__c = 'AssetNDT1__c'; |
| | | acc.AssetANI1__c = 'AssetANI1__c'; |
| | | acc.AssetNDT8__c = 'AssetNDT8__c'; |
| | | acc.AssetANI8__c = 'AssetANI8__c'; |
| | | acc.AssetBS5__c = 'AssetBS5__c'; |
| | | acc.AssetIE8__c = 'AssetIE8__c'; |
| | | acc.AssetRVI8__c = 'AssetRVI8__c'; |
| | | acc.AssetANI5__c = 'AssetANI5__c'; |
| | | acc.Province__c = '北京'; |
| | | acc.AssetRVI6__c = 'AssetRVI6__c'; |
| | | acc.AssetANI2__c = 'AssetANI2__c'; |
| | | acc.AssetNDT3__c = 'AssetNDT3__c'; |
| | | acc.AssetNDT2__c = 'AssetNDT2__c'; |
| | | acc.AssetANI6__c = 'AssetANI6__c'; |
| | | acc.Sub_Use__c = 'LED'; |
| | | acc.Use__c = '(LS Research) Other'; |
| | | acc.AssetRVI7__c = 'AssetRVI7__c'; |
| | | acc.AssetBS4__c = 'AssetBS4__c'; |
| | | acc.AssetIE4__c = 'AssetIE4__c'; |
| | | acc.AssetNDT5__c = 'AssetNDT5__c'; |
| | | acc.AccountStatus__c = 'Active'; |
| | | acc.CancelReason__c = 'CancelReason__c'; |
| | | acc.City__c = 'City__c'; |
| | | acc.PostCode__c = '100111'; |
| | | acc.serviceCreate__c = true; |
| | | acc.stautesD__c = 'Pass'; |
| | | |
| | | insert acc; |
| | | |
| | | acc.Website = 'WebsiteD__c'; |
| | | acc.Fax = 'FaxD__c'; |
| | | acc.Phone = 'PhoneD__c'; |
| | | acc.Address1__c = 'Address1D__c'; |
| | | acc.AssetANI4__c = 'AssetANI4D__c'; |
| | | acc.AssetIE7__c = 'AssetIE7D__c'; |
| | | acc.AssetNDT7__c = 'AssetNDT7D__c'; |
| | | acc.AssetRVI5__c = 'AssetRVI5D__c'; |
| | | acc.EnglishName__c = 'EnglishNameD__c'; |
| | | acc.AssetRVI2__c = 'AssetRVI2D__c'; |
| | | acc.AssetNDT4__c = 'AssetNDT4D__c'; |
| | | acc.IndustryC__c = 'Electronics'; |
| | | acc.AssetRVI4__c = 'AssetRVI4D__c'; |
| | | acc.AssetRVI3__c = 'AssetRVI3D__c'; |
| | | acc.AssetIE5__c = 'AssetIE5D__c'; |
| | | acc.AssetBS3__c = 'AssetBS3D__c'; |
| | | acc.AssetIE3__c = 'AssetIE3D__c'; |
| | | acc.AssetANI7__c = 'AssetANI7D__c'; |
| | | acc.AssetNDT6__c = 'AssetNDT6D__c'; |
| | | acc.MarketVerticals__c = 'Other'; |
| | | acc.AssetIE6__c = 'AssetIE6D__c'; |
| | | acc.AssetIE2__c = 'AssetIE2D__c'; |
| | | acc.AssetBS2__c = 'AssetBS2D__c'; |
| | | acc.AssetANI3__c = 'AssetANI3D__c'; |
| | | acc.AssetIE1__c = 'AssetIE1D__c'; |
| | | acc.AssetBS1__c = 'AssetBS1D__c'; |
| | | acc.AssetRVI1__c = 'AssetRVI1D__c'; |
| | | acc.AssetNDT1__c = 'AssetNDT1D__c'; |
| | | acc.AssetANI1__c = 'AssetANI1D__c'; |
| | | acc.AssetNDT8__c = 'AssetNDT8D__c'; |
| | | acc.AssetANI8__c = 'AssetANI8D__c'; |
| | | acc.AssetBS5__c = 'AssetBS5D__c'; |
| | | acc.AssetIE8__c = 'AssetIE8D__c'; |
| | | acc.AssetRVI8__c = 'AssetRVI8D__c'; |
| | | acc.AssetANI5__c = 'AssetANI5D__c'; |
| | | acc.AssetRVI6__c = 'AssetRVI6D__c'; |
| | | acc.AssetANI2__c = 'AssetANI2D__c'; |
| | | acc.AssetNDT3__c = 'AssetNDT3D__c'; |
| | | acc.AssetNDT2__c = 'AssetNDT2D__c'; |
| | | acc.AssetANI6__c = 'AssetANI6D__c'; |
| | | acc.Sub_Use__c = 'Compo-FPD'; |
| | | acc.Use__c = '(Other) Other'; |
| | | acc.AssetRVI7__c = 'AssetRVI7D__c'; |
| | | acc.AssetBS4__c = 'AssetBS4D__c'; |
| | | acc.AssetIE4__c = 'AssetIE4D__c'; |
| | | acc.AssetNDT5__c = 'AssetNDT5D__c'; |
| | | acc.AccountStatus__c = 'Cancel'; |
| | | acc.CancelReason__c = 'CancelReasonD__c'; |
| | | acc.City__c = 'CityD__c'; |
| | | acc.PostCode__c = '100222'; |
| | | acc.OwnerId = user.Id; |
| | | |
| | | update acc; |
| | | |
| | | acc.WebsiteD__c = 'WebsiteD__c'; |
| | | acc.FaxD__c = 'FaxD__c'; |
| | | acc.PhoneD__c = 'PhoneD__c'; |
| | | acc.Address1D__c = 'Address1D__c'; |
| | | acc.AssetANI4D__c = 'AssetANI4D__c'; |
| | | acc.AssetIE7D__c = 'AssetIE7D__c'; |
| | | acc.AssetNDT7D__c = 'AssetNDT7D__c'; |
| | | acc.AssetRVI5D__c = 'AssetRVI5D__c'; |
| | | acc.EnglishNameD__c = 'EnglishNameD__c'; |
| | | acc.AssetRVI2D__c = 'AssetRVI2D__c'; |
| | | acc.AssetNDT4D__c = 'AssetNDT4D__c'; |
| | | acc.IndustryCD__c = 'Mining/Geology'; |
| | | acc.AssetRVI4D__c = 'AssetRVI4D__c'; |
| | | acc.AssetRVI3D__c = 'AssetRVI3D__c'; |
| | | acc.AssetIE5D__c = 'AssetIE5D__c'; |
| | | acc.AssetBS3D__c = 'AssetBS3D__c'; |
| | | acc.AssetIE3D__c = 'AssetIE3D__c'; |
| | | acc.AssetANI7D__c = 'AssetANI7D__c'; |
| | | acc.AssetNDT6D__c = 'AssetNDT6D__c'; |
| | | acc.MarketVerticalsD__c = 'Other'; |
| | | acc.AssetIE6D__c = 'AssetIE6D__c'; |
| | | acc.AssetIE2D__c = 'AssetIE2D__c'; |
| | | acc.AssetBS2D__c = 'AssetBS2D__c'; |
| | | acc.AssetANI3D__c = 'AssetANI3D__c'; |
| | | acc.AssetIE1D__c = 'AssetIE1D__c'; |
| | | acc.AssetBS1D__c = 'AssetBS1D__c'; |
| | | acc.AssetRVI1D__c = 'AssetRVI1D__c'; |
| | | acc.AssetNDT1D__c = 'AssetNDT1D__c'; |
| | | acc.AssetANI1D__c = 'AssetANI1D__c'; |
| | | acc.AssetNDT8D__c = 'AssetNDT8D__c'; |
| | | acc.AssetANI8D__c = 'AssetANI8D__c'; |
| | | acc.AssetBS5D__c = 'AssetBS5D__c'; |
| | | acc.AssetIE8D__c = 'AssetIE8D__c'; |
| | | acc.AssetRVI8D__c = 'AssetRVI8D__c'; |
| | | acc.AssetANI5D__c = 'AssetANI5D__c'; |
| | | acc.AssetRVI6D__c = 'AssetRVI6D__c'; |
| | | acc.AssetANI2D__c = 'AssetANI2D__c'; |
| | | acc.AssetNDT3D__c = 'AssetNDT3D__c'; |
| | | acc.AssetNDT2D__c = 'AssetNDT2D__c'; |
| | | acc.AssetANI6D__c = 'AssetANI6D__c'; |
| | | acc.Sub_UseD__c = '石油地质'; |
| | | acc.UseD__c = 'Geology : Geological Surveys'; |
| | | acc.AssetRVI7D__c = 'AssetRVI7D__c'; |
| | | acc.AssetBS4D__c = 'AssetBS4D__c'; |
| | | acc.AssetIE4D__c = 'AssetIE4D__c'; |
| | | acc.AssetNDT5D__c = 'AssetNDT5D__c'; |
| | | acc.AccountStatusD__c = 'Cancel'; |
| | | acc.CancelReasonD__c = 'CancelReasonD__c'; |
| | | acc.CityD__c = 'CityD__c'; |
| | | acc.PostCodeD__c = '100222'; |
| | | acc.DealerSelectOwner__c = UserInfo.getUserId(); |
| | | |
| | | update acc; |
| | | |
| | | acc.stautesD__c = 'Completed'; |
| | | update acc; |
| | | acc.stautesD__c = 'Submit'; |
| | | update acc; |
| | | |
| | | acc.stautesD__c = 'Pass'; |
| | | update acc; |
| | | |
| | | acc.stautesD__c = 'Reject'; |
| | | update acc; |
| | | } |
| | | |
| | | static testMethod void testSubUse1() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | List<Account> acclist = new List<Account>(); |
| | | String[] ieSubUse = new String[] {'LED','FPD','半导体','电子部品','电子类_其他','金属','汽车','石油地质','五金模具','重工设备','材料类_其他'}; |
| | | for (Integer i = 0; i < ieSubUse.size(); i++) { |
| | | Account acc1 = new Account(); |
| | | acc1.Name = '*'; |
| | | acc1.FacilityName__c = 'Account'; |
| | | acc1.DivisionName__c = ieSubUse[i]; |
| | | acc1.RecordTypeId = rectIE[0].Id; |
| | | acc1.ProductSegment__c = 'IE'; |
| | | acc1.Sub_UseD__c = ieSubUse[i]; |
| | | acc1.Sub_Use__c = ieSubUse[i]; |
| | | acc1.PostCode__c = '000000'; |
| | | acclist.add(acc1); |
| | | } |
| | | insert acclist; |
| | | } |
| | | |
| | | static testMethod void testSubUse2() { |
| | | List<RecordType> rectRVI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer RVI']; |
| | | |
| | | List<Account> acclist = new List<Account>(); |
| | | String[] rviSubUse = new String[] {'Automotive','Civil Aviation','Security/Defense','Oil,Gas&Chemical','Power','General Manufacturing','Inspection/Service/Rental','Others','Thermal Power','Nuclear Power','Wind Power','Power(other)'}; |
| | | for (Integer i = 0; i < rviSubUse.size(); i++) { |
| | | Account acc1 = new Account(); |
| | | acc1.Name = '*'; |
| | | acc1.FacilityName__c = 'Account'; |
| | | acc1.DivisionName__c = rviSubUse[i]; |
| | | acc1.RecordTypeId = rectRVI[0].Id; |
| | | acc1.ProductSegment__c = 'RVI'; |
| | | acc1.Sub_UseD__c = rviSubUse[i]; |
| | | acc1.Sub_Use__c = rviSubUse[i]; |
| | | acc1.PostCode__c = '000001'; |
| | | acclist.add(acc1); |
| | | } |
| | | insert acclist; |
| | | } |
| | | |
| | | static testMethod void testSubUse3() { |
| | | List<RecordType> rectANI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer ANI']; |
| | | |
| | | List<Account> acclist = new List<Account>(); |
| | | String[] aniSubUse = new String[] {'废旧金属','炼钢厂','PMI-石化行业','PMI-管道制造','PMI-金属制造','PMI-电力','RoHS','ELV','玩具&皮革','贵金属-制造','贵金属-回收','勘探-政府','勘探-矿业公司','Mining-冶炼','Mining-开采','EPA','土壤修复','土壤研究','考古&文物','录井','制药','三元催化剂'}; |
| | | for (Integer i = 0; i < aniSubUse.size(); i++) { |
| | | Account acc1 = new Account(); |
| | | acc1.Name = '*'; |
| | | acc1.FacilityName__c = 'Account'; |
| | | acc1.DivisionName__c = aniSubUse[i]; |
| | | acc1.RecordTypeId = rectANI[0].Id; |
| | | acc1.ProductSegment__c = 'ANI'; |
| | | acc1.Sub_UseD__c = aniSubUse[i]; |
| | | acc1.Sub_Use__c = aniSubUse[i]; |
| | | acc1.PostCode__c = '000002'; |
| | | acclist.add(acc1); |
| | | } |
| | | insert acclist; |
| | | } |
| | | static testMethod void testSubUse5() { |
| | | List<RecordType> rectBS = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer BS']; |
| | | |
| | | List<Account> acclist = new List<Account>(); |
| | | String[] bSIndu = new String[] {'Biotech',' Food/Feed/Agriculture','Clinic/Hospital','Commercial Diagnostic Laboratories','Education','Government/Security/Defense'}; |
| | | for (Integer i = 0; i < bSIndu.size(); i++) { |
| | | Account acc1 = new Account(); |
| | | acc1.Name = '*'; |
| | | acc1.FacilityName__c = 'Account'; |
| | | acc1.DivisionName__c = bSIndu[i]; |
| | | acc1.RecordTypeId = rectBS[0].Id; |
| | | acc1.ProductSegment__c = 'BS'; |
| | | acc1.IndustryBD__c = bSIndu[i]; |
| | | acc1.IndustryB__c = bSIndu[i]; |
| | | acc1.PostCode__c = '000002'; |
| | | acclist.add(acc1); |
| | | } |
| | | insert acclist; |
| | | } |
| | | static testMethod void testSubUse4() { |
| | | List<RecordType> rectNDT = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer NDT']; |
| | | |
| | | List<Account> acclist = new List<Account>(); |
| | | String[] rviSubUse = new String[] {'Automotive','Civil Aviation','Security/Defense','Oil,Gas&Chemical','Power','General Manufacturing','Inspection/Service/Rental','Others','Thermal Power','Nuclear Power','Wind Power','Power(other)'}; |
| | | for (Integer i = 0; i < rviSubUse.size(); i++) { |
| | | Account acc1 = new Account(); |
| | | acc1.Name = '*'; |
| | | acc1.FacilityName__c = 'Account'; |
| | | acc1.DivisionName__c = rviSubUse[i]; |
| | | acc1.RecordTypeId = rectNDT[0].Id; |
| | | acc1.ProductSegment__c = 'NDT'; |
| | | acc1.Sub_UseD__c = rviSubUse[i]; |
| | | acc1.Sub_Use__c = rviSubUse[i]; |
| | | acc1.PostCode__c = '000003'; |
| | | acclist.add(acc1); |
| | | } |
| | | insert acclist; |
| | | } |
| | | static testMethod void tsetTriggerAccount() { |
| | | AccountTriggerHandler.asd(); |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | //Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | Account dealerParent = new Account(); |
| | | dealerParent.Name = 'test dealer'; |
| | | dealerParent.RecordTypeId = rectDealer[0].Id; |
| | | dealerParent.ProductSegment__c = 'IE'; |
| | | dealerParent.PostCode__c='000000'; |
| | | dealerParent.ManagementCode_Ext__c = 'P11111'; |
| | | dealerParent.Sub_UseA__c = '电子部品'; |
| | | dealerParent.compo_Acc__c = '非COMPO客户'; |
| | | insert dealerParent; |
| | | |
| | | |
| | | Account dealer1 = new Account(); |
| | | dealer1.Name = 'test dealer'; |
| | | dealer1.RecordTypeId = rectDealer[0].Id; |
| | | dealer1.ProductSegment__c = 'IE'; |
| | | dealer1.PostCode__c='000000'; |
| | | dealer1.ManagementCode_Ext__c = 'C22222'; |
| | | dealer1.ParentId = dealerParent.Id; |
| | | dealer1.compo_Acc__c = '非COMPO客户'; |
| | | insert dealer1; |
| | | |
| | | Account dealer2 = new Account(); |
| | | dealer2.Name = 'test dealer'; |
| | | dealer2.RecordTypeId = rectDealer[0].Id; |
| | | dealer2.ProductSegment__c = 'IE'; |
| | | dealer2.PostCode__c='000000'; |
| | | dealer2.ManagementCode_Ext__c = 'C33333'; |
| | | dealer2.ParentId = dealerParent.Id; |
| | | dealer2.compo_Acc__c = '非COMPO客户'; |
| | | insert dealer2; |
| | | |
| | | dealerParent.Sub_UseA__c = '电子部品'; |
| | | dealerParent.Sub_Use1__c = '电子部品'; |
| | | dealerParent.Business_license__c = 'Test20191227'; |
| | | update dealerParent; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class AccountWebService { |
| | | WebService static String AccountCancel(String accountId) { |
| | | Account account = new Account(); |
| | | List<Account> accountList = [select Id, OwnerId, AccountStatus__c, CancelReason__c from Account where Id =:accountId]; |
| | | if (accountList.size() == 0) { |
| | | return '无效的客户'; |
| | | } else { |
| | | account = accountList[0]; |
| | | } |
| | | if (account.AccountStatus__c == 'Cancel') { |
| | | return '客户已经取消'; |
| | | } |
| | | if (account.CancelReason__c == null || account.CancelReason__c.length() == 0) { |
| | | return '必须输入取消理由'; |
| | | } |
| | | account.AccountStatus__c = 'Cancel'; |
| | | account.OwnerId = System.Label.BatchUserId; |
| | | update account; |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | WebService static String UpdateShare(String accountId, String ownerOld, String ownerNew) { |
| | | try { |
| | | Account acc = new Account( |
| | | Id = accountId, |
| | | OwnerId = ownerNew |
| | | ); |
| | | update acc; |
| | | |
| | | List<AccountShare> asList = [select Id, AccountId, UserOrGroupId, AccountAccessLevel, RowCause from AccountShare where AccountId = :accountId and UserOrGroupId = :ownerOld and RowCause = 'Team' and AccountAccessLevel = 'Read']; |
| | | for (AccountShare ash : asList) { |
| | | ash.AccountAccessLevel = 'Edit'; |
| | | } |
| | | if (asList.size() > 0) { |
| | | update asList; |
| | | } |
| | | } catch (Exception ex) { |
| | | return ex.getMessage(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | // 技术服务部担当、技术服务部(部长、副部长)、IE 样机管理者 简档 创建客户跳过必填字段验证,改为提交审批时验证 |
| | | // CHAN-BU98HT XHL 20201014 |
| | | WebService static String RequiredField(String accountId) { |
| | | String result = '1'; |
| | | |
| | | List<String> errorMessageList = new List<String>(); |
| | | // 王鹏伟修改前 SQL 备份 |
| | | //List<Account> accList = [select Id,Name,FacilityNameD__c,DivisionName_D__c,DealerSelectOwner__c,Province__c,CityD__c,Address1D__c,Sub_UseD__c,AccountStatusD__c,PostCodeD__c,DepartmentNameD__c,IndustryCD__c,MarketVerticalsD__c,UseD__c,EnglishNameD__c,TargetCustomer__c,CustomerSource__c,UserType__c,RecordTypeId from Account where Id = :accountId ]; |
| | | List<Account> accList = [select Id,Name,FacilityNameD__c,DivisionName_D__c,DealerSelectOwner__c,Province__c,CityD__c,Address1D__c,Sub_UseD__c,AccountStatusD__c,PostCodeD__c,DepartmentNameD__c,IndustryCD__c,MarketVerticalsD__c,UseD__c,EnglishNameD__c,TargetCustomer__c,CustomerSource__c,UserType__c,RecordTypeId,DealerAccount__c,AssetRVI1D__c,serviceCreate__c from Account where Id = :accountId ]; |
| | | if (accList.size() > 0) { |
| | | |
| | | // 共同部分8个字段 |
| | | Account account = accList[0]; |
| | | // 客户/代理商名称. |
| | | if (String.isBlank(account.FacilityNameD__c)) { |
| | | String errorMessage = '客户/代理商名称.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 部门名称. |
| | | if (String.isBlank(account.DivisionName_D__c)) { |
| | | String errorMessage = '部门名称.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 审批人 |
| | | if (String.isBlank(account.DealerSelectOwner__c)) { |
| | | String errorMessage = '审批人'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 省 |
| | | if (String.isBlank(account.Province__c)) { |
| | | String errorMessage = '省'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 城市. |
| | | if (String.isBlank(account.CityD__c)) { |
| | | String errorMessage = '城市.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 地址1. |
| | | if (String.isBlank(account.Address1D__c)) { |
| | | String errorMessage = '地址1.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 账户状态. |
| | | /*if (String.isBlank(account.AccountStatusD__c)) { |
| | | String errorMessage = '账户状态. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | }*/ |
| | | // 邮编. |
| | | /*if (String.isBlank(account.PostCodeD__c)) { |
| | | String errorMessage = '邮编. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | }*/ |
| | | // Sub Use. |
| | | if (String.isBlank(account.Sub_UseD__c)) { |
| | | String errorMessage = 'Sub Use.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // ANI NDT RVI IE |
| | | /*if ('01228000000TdFL'.equals(account.RecordTypeId) || '01228000000TdFG'.equals(account.RecordTypeId) || |
| | | '01228000000TdFB'.equals(account.RecordTypeId) || '01228000000TdF6'.equals(account.RecordTypeId)) { |
| | | // Sub Use. |
| | | if (String.isBlank(account.Sub_UseD__c)) { |
| | | String errorMessage = 'Sub Use. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | }*/ |
| | | // RVI IE 王鹏伟新加 |
| | | if(('01228000000TdFB'.equals(account.RecordTypeId) || '01228000000TdF6'.equals(account.RecordTypeId)) && account.serviceCreate__c == true){ |
| | | //代理商 |
| | | if(!String.isNotBlank(String.valueOf(account.DealerAccount__c))){ |
| | | String errorMessage = '代理商'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | // RVI 判断RVI产品信息 |
| | | if('01228000000TdFB'.equals(account.RecordTypeId)){ |
| | | // |
| | | if(!String.isNotBlank(account.AssetRVI1D__c)){ |
| | | String errorMessage = 'RVI产品信息'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | // IE |
| | | if ('01228000000TdF6'.equals(account.RecordTypeId)) { |
| | | // 英文名称. |
| | | /*if (String.isBlank(account.EnglishNameD__c)) { |
| | | String errorMessage = '英文名称. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | }*/ |
| | | // 客户类型 |
| | | /*if (String.isBlank(account.TargetCustomer__c)) { |
| | | String errorMessage = '客户类型 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | }*/ |
| | | // 客户来源. |
| | | if (String.isBlank(account.CustomerSource__c)) { |
| | | String errorMessage = '客户来源.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 用户属性 |
| | | if (String.isBlank(account.UserType__c)) { |
| | | String errorMessage = '用户属性'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | // BS |
| | | /*if ('01228000000TdF1'.equals(account.RecordTypeId)) { |
| | | // 科室. |
| | | if (String.isBlank(account.DepartmentNameD__c)) { |
| | | String errorMessage = '科室. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 行业. |
| | | if (String.isBlank(account.IndustryCD__c)) { |
| | | String errorMessage = '行业. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 市场分类. |
| | | if (String.isBlank(account.MarketVerticalsD__c)) { |
| | | String errorMessage = '市场分类. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | // 用途. |
| | | if (String.isBlank(account.UseD__c)) { |
| | | String errorMessage = '用途. 必填 请确认;'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | */ |
| | | if (errorMessageList.size() > 0){ |
| | | result = ''; |
| | | for (String error :errorMessageList) { |
| | | result += error +'\n'; |
| | | } |
| | | result += '必填,请确认!'; |
| | | } |
| | | |
| | | } |
| | | return result; |
| | | } |
| | | // 技术服务部担当、技术服务部(部长、副部长)、IE 样机管理者 简档 创建联系人跳过必填字段验证,改为提交审批时验证 |
| | | // CHAN-BU98HT XHL 20201014 |
| | | WebService static String ContactRequiredField(String contactId) { |
| | | String result = '1'; |
| | | List<String> errorMessageList = new List<String>(); |
| | | List<Contact> contactList = [Select Id,Name,MobilePhone,MobilePhoneD__c,Postcode__c,PostcodeD__c,Address1__c,Address1D__c,CreatedById,ContactStatusD__c,RecordTypeId,CreatedBy.ProfileId,ProductSegmentBS__c From Contact where Id = : contactId ]; |
| | | String userId = UserInfo.getUserId(); |
| | | if (contactList.size() > 0) { |
| | | Contact contact = contactList[0]; |
| | | String profileId = contact.CreatedBy.ProfileId; |
| | | //技术服务部担当 |
| | | if ('00e28000001sZE6'.equals(profileId.subString(0,15)) || |
| | | '00e28000000eN67'.equals(profileId.subString(0,15))) { |
| | | if (String.isBlank(contact.MobilePhoneD__c)) { |
| | | String errorMessage = '手机.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | if (String.isBlank(contact.Name)) { |
| | | String errorMessage = '姓名'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | |
| | | if (String.isBlank(contact.Address1D__c)) { |
| | | String errorMessage = '地址1.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | if(contact.ProductSegmentBS__c == true){ |
| | | if (String.isBlank(contact.PostcodeD__c)) { |
| | | String errorMessage = '邮政编码.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | if (String.isBlank(contact.ContactStatusD__c)) { |
| | | String errorMessage = '状态. '; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // SSBG IE 样机管理者,SSBG技术服务部(部长・副部长) |
| | | if ('00e28000000YQMx'.equals(profileId.subString(0,15)) || |
| | | '00e0K000001l0l9'.equals(profileId.subString(0,15)) || |
| | | '00e28000000eN67'.equals(profileId.subString(0,15))) { |
| | | |
| | | if (String.isBlank(contact.MobilePhone)) { |
| | | String errorMessage = '手机'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | if (String.isBlank(contact.Name)) { |
| | | String errorMessage = '姓名'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | |
| | | if (String.isBlank(contact.Address1__c)) { |
| | | String errorMessage = '地址1'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | |
| | | if(contact.ProductSegmentBS__c == true){ |
| | | if (String.isBlank(contact.PostcodeD__c)) { |
| | | String errorMessage = '邮政编码.'; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | if (String.isBlank(contact.ContactStatusD__c)) { |
| | | String errorMessage = '状态. '; |
| | | errorMessageList.add(errorMessage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (errorMessageList.size() > 0){ |
| | | result = ''; |
| | | for (String error :errorMessageList) { |
| | | result += error +'\n'; |
| | | } |
| | | result += '必填,请确认!'; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AccountWebServiceTest { |
| | | |
| | | static testMethod void myUnitTest() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456' |
| | | ); |
| | | Account acc2 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | PostCode__c = '123456' |
| | | ); |
| | | Account acc3 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | CancelReason__c = 'test', |
| | | PostCode__c = '123456' |
| | | ); |
| | | insert new List<Account> {acc1,acc2,acc3}; |
| | | |
| | | String rs = ''; |
| | | rs = AccountWebService.AccountCancel('12345678'); |
| | | System.assertEquals('无效的客户', rs); |
| | | |
| | | rs = AccountWebService.AccountCancel(acc1.Id); |
| | | System.assertEquals('客户已经取消', rs); |
| | | |
| | | rs = AccountWebService.AccountCancel(acc2.Id); |
| | | System.assertEquals('必须输入取消理由', rs); |
| | | |
| | | rs = AccountWebService.AccountCancel(acc3.Id); |
| | | System.assertEquals('1', rs); |
| | | List<Account> accList = [select Id,AccountStatus__c from Account where Id = :acc3.Id]; |
| | | System.assertEquals('Cancel', accList[0].AccountStatus__c); |
| | | } |
| | | |
| | | static testMethod void myUnitTest2() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | String localid = UserInfo.getUserId(); |
| | | |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456' |
| | | ); |
| | | insert acc1; |
| | | |
| | | User user = new User(); |
| | | user.LastName = 'test20201014'; |
| | | user.FirstName = 'test'; |
| | | user.Alias = 'test'; |
| | | user.Email = 'test@test.com'; |
| | | user.Username = 'test111@test222.com'; |
| | | user.CommunityNickname = 'test20201014'; |
| | | user.IsActive = true; |
| | | user.EmailEncodingKey = 'ISO-2022-JP'; |
| | | user.TimeZoneSidKey = 'Asia/Tokyo'; |
| | | user.LocaleSidKey = 'ja_JP'; |
| | | user.LanguageLocaleKey = 'ja'; |
| | | user.ProfileId = System.Label.SystemAdmin; |
| | | insert user; |
| | | |
| | | AccountTeamMember atm = new AccountTeamMember( |
| | | AccountId = acc1.Id, |
| | | userId = localid, |
| | | teamMemberRole = 'Sales Manager' |
| | | ); |
| | | AccountTeamMember atm2 = new AccountTeamMember( |
| | | AccountId = acc1.Id, |
| | | userId = user.Id, |
| | | teamMemberRole = 'Sales Manager' |
| | | ); |
| | | insert new AccountTeamMember[] {atm,atm2}; |
| | | |
| | | String rs = ''; |
| | | rs = AccountWebService.UpdateShare(acc1.Id, localid, user.Id); |
| | | System.assertEquals('1', rs); |
| | | |
| | | List<AccountTeamMember> atmList = [select Id, AccountAccessLevel from AccountTeamMember where Id = :atm.Id]; |
| | | System.assertEquals('Edit', atmList[0].AccountAccessLevel); |
| | | } |
| | | // 技术服务部客户与联系人申请提交时字段验证 |
| | | static testMethod void TechnicalServiceCreated() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | List<RecordType> rectBS = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer BS']; |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456', |
| | | serviceCreate__c = true |
| | | ); |
| | | Account acc2 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectBS[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | //DivisionName__c = 'Customer BS', |
| | | FacilityName__c = 'abc' |
| | | ); |
| | | Account acc3 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | CancelReason__c = 'test', |
| | | PostCode__c = '123456' |
| | | ); |
| | | User hpOwner = new User( LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = System.Label.SystemAdmin2,MarketingStrategy__c =true); |
| | | insert hpOwner; |
| | | System.runAs(hpOwner){ |
| | | insert new List<Account> {acc1,acc2,acc3}; |
| | | |
| | | // insert dealer; |
| | | Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=acc1.id); |
| | | insert core; |
| | | |
| | | String rs = ''; |
| | | // rs = AccountWebService.AccountCancel('12345678'); |
| | | // System.assertEquals('无效的客户', rs); |
| | | |
| | | rs = AccountWebService.RequiredField(acc1.Id); |
| | | // System.assertEquals('客户已经取消', rs); |
| | | |
| | | rs = AccountWebService.RequiredField(acc2.Id); |
| | | // System.assertEquals('必须输入取消理由', rs); |
| | | rs = AccountWebService.ContactRequiredField(core.Id); |
| | | // rs = AccountWebService.AccountCancel(acc3.Id); |
| | | // System.assertEquals('1', rs); |
| | | // List<Account> accList = [select Id,AccountStatus__c from Account where Id = :acc3.Id]; |
| | | // System.assertEquals('Cancel', accList[0].AccountStatus__c); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public class AgentContributionArticleController { |
| | | // The constructor must take a ApexPages.KnowledgeArticleVersionStandardController as an argument |
| | | public AgentContributionArticleController(ApexPages.KnowledgeArticleVersionStandardController ctl) { |
| | | SObject article = ctl.getRecord(); //this is the SObject for the new article. |
| | | //It can optionally be cast to the proper article type, e.g. FAQ__kav article = (FAQ__kav) ctl.getRecord(); |
| | | |
| | | String sourceId = ctl.getSourceId(); //this returns the id of the case that was closed. |
| | | Case c = [select subject, description from Case where id=:sourceId]; |
| | | |
| | | article.put('title', 'From Case: '+c.subject); //this overrides the default behavior of pre-filling the title of the article with the subject of the closed case. |
| | | article.put('Details__c',c.description); |
| | | |
| | | ctl.selectDataCategory('Geography','USA'); //Only one category per category group can be specified. |
| | | ctl.selectDataCategory('Topics','Maintenance'); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>51.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class AllAssetController { |
| | | |
| | | public String assECcode { get; set; } |
| | | public String assName { get; set; } |
| | | public Asset rec { get; set; } |
| | | public String setId { get; set; } |
| | | |
| | | public List<EquipmentSetInfo> equipmentSetRecords { get; set; } |
| | | public List<EquipmentSetInfo> loanerSetRecords { get; set; } |
| | | |
| | | private Integer dayCount = 0; |
| | | |
| | | |
| | | private Integer Select_Limit = 200; |
| | | |
| | | |
| | | |
| | | public AllAssetController() { |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | } |
| | | |
| | | public Integer loanerSetNo { |
| | | get { |
| | | return loanerSetRecords == null ? 0 : loanerSetRecords.size(); |
| | | } |
| | | } |
| | | |
| | | public Integer pageRecordNo { |
| | | get { |
| | | return equipmentSetRecords == null ? 0 : equipmentSetRecords.size(); |
| | | } |
| | | } |
| | | |
| | | public void init() { |
| | | List<Asset> assList = [select Id,Name, SerialNumber, Internal_Asset_number__c, OT_Code__c,EC_Code__c, Name__c,ProductName__c, |
| | | AssetType__c,status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c,Remarks2__c, |
| | | Rental_Customer__r.Name,Rental_End_Date__c,Description,Rental_Start_Date__c |
| | | from Asset |
| | | WHERE Id != null AND Equipment_Type__c = 'BS']; |
| | | |
| | | for(Integer i = 0 ;i<assList.size();i++){ |
| | | if (i == Select_Limit ){ |
| | | break; |
| | | } |
| | | |
| | | equipmentSetRecords.add(new EquipmentSetInfo(assList[i])); |
| | | } |
| | | this.getLoanerSet(); |
| | | rec = new Asset(); |
| | | rec.Equipment_Type__c = 'BS'; |
| | | } |
| | | |
| | | public void getLoanerSet() { |
| | | // 所有样机Set |
| | | loanerSetRecords = new List<EquipmentSetInfo>(); |
| | | List<loaner_Set__c> loanerSetSearch = [select Id, Name, Equipment_Type__c,Remarks__c,SerialNumber__c,Internal_Asset_number__c,Status__c,loaner_place__c,Reservation_information__c |
| | | from Loaner_Set__c |
| | | WHERE Equipment_Type__c = 'BS' |
| | | order by Name]; |
| | | Integer line = 0; |
| | | for(loaner_Set__c ls : loanerSetSearch){ |
| | | EquipmentSetInfo li = new EquipmentSetInfo(line, ls); |
| | | loanerSetRecords.add(li); |
| | | line += 1; |
| | | } |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'loanerSetRecords' + loanerSetRecords)); |
| | | } |
| | | |
| | | public void getLoanerSetdet() { |
| | | |
| | | |
| | | // 样机set中所有样机 |
| | | List<String> loanerSetDetIDList = new List<String>(); |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | for(Loaner_Set_Detail__c lSD : [SELECT Id,Asset__c FROM Loaner_Set_Detail__c WHERE Loaner_Set__c = :setId]){ |
| | | loanerSetDetIDList.add(lSD.Asset__c); |
| | | } |
| | | |
| | | List<Asset> queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c,Name__c,AssetType__c, |
| | | OT_Code__c, EC_Code__c, status,Count_can_allocate_F__c, |
| | | RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,ProductName__c |
| | | ,Description,Rental_Start_Date__c |
| | | from Asset |
| | | where Id in :loanerSetDetIDList]; |
| | | |
| | | // 新明细行做成 |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (i == Select_Limit) { |
| | | break; |
| | | } |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | public void searchLoanerApp() { |
| | | //已选择个体管理样机 |
| | | List<String> loanerindividualList = new List<String>(); |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | |
| | | String soql = 'select Id,Name, SerialNumber, Loaner__c,Internal_Asset_number__c, OT_Code__c,EC_Code__c, Name__c,ProductName__c,AssetType__c,'; |
| | | soql += ' status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c ,Description,Rental_Start_Date__c from Asset WHERE Id != null '; |
| | | |
| | | |
| | | if (!String.isBlank(assName)) { |
| | | soql += ' and Name like \'%' + String.escapeSingleQuotes(assName.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(rec.OT_Code__c)) { |
| | | soql += ' and OT_Code__c like \'%' + String.escapeSingleQuotes(rec.OT_Code__c.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(assECcode)) { |
| | | soql += ' and EC_Code__c like \'%' + String.escapeSingleQuotes(assECcode.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | |
| | | soql += ' and Equipment_Type__c = \'BS\''; |
| | | |
| | | if (!String.isBlank(rec.loaner_place__c)) { |
| | | soql += ' and loaner_place__c = \'' + String.escapeSingleQuotes(rec.loaner_place__c) + '\''; |
| | | } |
| | | if (!String.isBlank(rec.Status)) { |
| | | soql += ' and status = \'' + String.escapeSingleQuotes(rec.Status) + '\''; |
| | | } |
| | | if (!String.isBlank(rec.SerialNumber)) { |
| | | soql += ' and SerialNumber like \'%' + String.escapeSingleQuotes(rec.SerialNumber.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(rec.Internal_Asset_number__c)) { |
| | | soql += ' and Internal_Asset_number__c like \'%' + String.escapeSingleQuotes(rec.Internal_Asset_number__c.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | List<Asset> queryList = Database.query(soql); |
| | | System.debug(soql); |
| | | System.debug(queryList); |
| | | // 新明细行做成 |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (i == Select_Limit) { |
| | | break; |
| | | } |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | |
| | | } |
| | | System.debug(equipmentSetRecords); |
| | | |
| | | } |
| | | |
| | | |
| | | /* private void makeMessage() { |
| | | if (Over_Limit) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '数据超过' + Select_Limit + '件,只显示前' + Select_Limit + '件')); |
| | | Over_Limit = false; |
| | | } |
| | | }*/ |
| | | |
| | | |
| | | class EquipmentSetInfo implements Comparable { |
| | | public Boolean check { get; set; } |
| | | public Boolean oldcheck { get; set; } |
| | | public loaner_application_detail__c lad { get; set; } |
| | | public Asset aset { get; set; } |
| | | public Loaner_Set__c lSet { get; set; } |
| | | public Date Rental_Start_Date { get; set; } |
| | | public Date Rental_End_Date { get; set; } |
| | | //最早可借出时间 |
| | | public Date earliest_Lend_Date { get; set; } |
| | | public Integer SEdayCount { get; set; } |
| | | public Integer deatilNo { get; set; } |
| | | public Boolean canInput { get; set; } |
| | | public Boolean showNo { get; set; } |
| | | public String remark { get; set; } |
| | | //public Date endDate {get; set; } |
| | | //转借元申请明细标记 |
| | | public Boolean firstDet { get; set; } |
| | | |
| | | // 已存产品明细 |
| | | public EquipmentSetInfo(loaner_application_detail__c e) { |
| | | check = true; |
| | | oldcheck= true; |
| | | lad = e; |
| | | aset = e.LOANER__r; |
| | | //endDate = aset.Rental_End_Date__c; |
| | | if(String.isNotBlank(lad.Remark__c)){ |
| | | remark = lad.Remark__c; |
| | | }else{ |
| | | remark = aset.Remarks2__c; |
| | | } |
| | | deatilNo = 1; |
| | | canInput = false; |
| | | firstDet = false; |
| | | if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | showNo = true; |
| | | }else{ |
| | | showNo = false; |
| | | } |
| | | } |
| | | |
| | | public EquipmentSetInfo(Integer in_line, Loaner_Set__c e) { |
| | | deatilNo = in_line; |
| | | lSet = e; |
| | | |
| | | } |
| | | |
| | | public EquipmentSetInfo(Asset e) { |
| | | check = false; |
| | | oldcheck = false; |
| | | lad = new loaner_application_detail__c(); |
| | | aset = e; |
| | | remark = aset.Remarks2__c; |
| | | firstDet = false; |
| | | if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | canInput = true; |
| | | showNo = true; |
| | | }else{ |
| | | //lad.loaner_ApplyNo__c = 1; |
| | | deatilNo = 1; |
| | | canInput = false; |
| | | showNo = false; |
| | | } |
| | | } |
| | | // 排序 |
| | | public Integer compareTo(Object compareTo) { |
| | | return null; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AllAssetControllerTest { |
| | | |
| | | static Product2 prd1; |
| | | static Product2 prd2; |
| | | static Account acc; |
| | | static Account dealer; |
| | | static Contact core; |
| | | static User testUser; |
| | | static loaner_Set__c loanerSet; |
| | | |
| | | //转借元代理商 |
| | | static Account leaddealer; |
| | | static testMethod void setupTestData() { |
| | | |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'BS'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'BS'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | loanerSet = new loaner_Set__c(); |
| | | loanerSet.Equipment_Type__c = 'BS'; |
| | | loanerSet.Set_No__c = 'IETEST0001'; |
| | | loanerSet.Name = 'IETEST0001'; |
| | | |
| | | insert loanerSet; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'BS'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '在库'; |
| | | assetC1.Equipment_Type__c = 'BS'; |
| | | assetC1.loaner_place__c = '北京酒仙桥'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'BS'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | insert new Asset[] {asset,assetC1}; |
| | | |
| | | Loaner_Set_Detail__c lSD1 = new Loaner_Set_Detail__c(); |
| | | lSD1.Loaner_Set__c = loanerSet.Id; |
| | | lSD1.Asset__c = asset.Id; |
| | | Loaner_Set_Detail__c lSD2 = new Loaner_Set_Detail__c(); |
| | | lSD2.Loaner_Set__c = loanerSet.Id; |
| | | lSD2.Asset__c = assetC1.Id; |
| | | insert new Loaner_Set_Detail__c[] {lSD1,lSD2}; |
| | | |
| | | AllAssetController assetTest = new AllAssetController(); |
| | | assetTest.init(); |
| | | |
| | | assetTest.assName = '1'; |
| | | assetTest.assECcode = '1'; |
| | | assetTest.rec.loaner_place__c = '1'; |
| | | assetTest.rec.Status = '1'; |
| | | assetTest.rec.SerialNumber = '1'; |
| | | assetTest.rec.Internal_Asset_number__c = '1'; |
| | | |
| | | assetTest.searchLoanerApp(); |
| | | |
| | | assetTest.setId = loanerSet.id; |
| | | assetTest.getLoanerSetdet(); |
| | | |
| | | Integer i = assetTest.loanerSetNo; |
| | | i = assetTest.pageRecordNo; |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class ApplicationMessageController { |
| | | String oldResponse; |
| | | // 备品借出申请 |
| | | public loaner_application__c ra { get; set; } |
| | | public loaner_application__c ra1 { get; set; } |
| | | public loaner_application__c cc { get; set; } |
| | | // 备品借出申请ID |
| | | public Id raid { get; private set; } |
| | | |
| | | public Boolean hasError { get; private set; } |
| | | public String baseUrl { get; private set; } |
| | | |
| | | |
| | | public ApplicationMessageController() { |
| | | //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | raid = ApexPages.currentPage().getParameters().get('raid'); |
| | | } |
| | | |
| | | public ApplicationMessageController(ApexPages.StandardController stdController) { |
| | | //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | raid = stdController.getId(); |
| | | } |
| | | |
| | | // 画面初始化 |
| | | public void init() { |
| | | hasError = false; |
| | | ra = new loaner_application__c(); |
| | | cc = new loaner_application__c(); |
| | | List<loaner_application__c> raList = [select Id, Name, OCN_Internal_Notes__c from loaner_application__c where |
| | | |
| | | Id = :raid]; |
| | | if (raList.size() > 0) { |
| | | ra = raList[0]; |
| | | } |
| | | } |
| | | |
| | | // 画面初始化-POP UP |
| | | public void init1() { |
| | | hasError = false; |
| | | ra1 = new loaner_application__c(); |
| | | List<loaner_application__c> ra1List = [select Id, Name, OCN_Internal_Notes__c from loaner_application__c where |
| | | |
| | | Id = :raid]; |
| | | if (ra1List.size() > 0) { |
| | | ra1 = ra1List[0]; |
| | | } |
| | | oldResponse = ra1.OCN_Internal_Notes__c; |
| | | ra1.OCN_Internal_Notes__c = ''; |
| | | } |
| | | |
| | | |
| | | |
| | | // 保存按钮 |
| | | public PageReference saveBtn() { |
| | | hasError = false; |
| | | |
| | | String response = ra1.OCN_Internal_Notes__c; |
| | | if (response == null || response.trim().length() == 0) { |
| | | ra1.OCN_Internal_Notes__c.addError('请输入内容。'); |
| | | hasError=true; |
| | | return null; |
| | | } |
| | | |
| | | // 送信者 |
| | | String username = UserInfo.getName(); |
| | | // 发送时间 |
| | | Datetime dt = Datetime.now(); |
| | | // 原留言-oldResponse |
| | | // oldResponse = ra.OCN_Internal_Notes__c; |
| | | |
| | | // 现留言 |
| | | String temp = ''; |
| | | temp += '****** ' + username + ' ' + dt.format() + ' ******\n'; |
| | | temp += ra1.OCN_Internal_Notes__c; |
| | | if (oldResponse != null && oldResponse.trim().length() > 0) { |
| | | temp += '\n\n' + oldResponse; |
| | | } |
| | | try { |
| | | // 更新留言 |
| | | // loaner_application__c updra = new loaner_application__c(); |
| | | // updra.Id = ra.Id; |
| | | ra1.OCN_Internal_Notes__c = temp; |
| | | |
| | | update ra1; |
| | | ra1.OCN_Internal_Notes__c = ''; |
| | | |
| | | //Create a dummy instance of outbound email object |
| | | // Messaging.SingleEmailMessage message= new Messaging.SingleEmailMessage(); |
| | | //set a roolback point |
| | | // Savepoint sp = Database.setSavepoint(); |
| | | //set desired email template id |
| | | // message.templateId = 'xxxxxx'; |
| | | //set the target object record id(this is mandatory while using email template) |
| | | // Id recId = [select Id from Contact where Email != null limit 1].id; |
| | | // message.targetObjectId = recId; |
| | | //fire dummy email |
| | | // messaging.sendEmail(new Messaging.SingleEmailMessage[] {message}); |
| | | //roll back to savepoint so that email is not sent |
| | | // Database.rollback(sp); |
| | | //Create insatnce of actual email |
| | | Messaging.SingleEmailMessage messageNEW= new |
| | | |
| | | Messaging.SingleEmailMessage(); |
| | | //get the bode from above dummy instance and set it to your actual email |
| | | //messageNEW.HTMLBody = message.getHtmlBody(); |
| | | //messageNEW.Subject = '备品借出申请' + ra.Name + '' + 'OCN内部留言'; |
| | | messageNEW.Subject = '备品借出申请 ' + ra1.Name + '-OCSM内部留言'; |
| | | messageNEW.PlainTextBody = temp; |
| | | //set desired email addresses |
| | | messageNEW.setCharset('UTF-8'); |
| | | |
| | | } catch (Exception ex) { |
| | | system.debug('=====' + ex.getMessage()); |
| | | hasError = true; |
| | | ApexPages.addMessages(ex); |
| | | return null; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>42.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | public with sharing class ApplicationMessageControllerTest { |
| | | |
| | | static testMethod void myTest1() { |
| | | // 新建备品借出申请 |
| | | loaner_application__c odr = new loaner_application__c( |
| | | Name = '', |
| | | Equipment_Type__c = 'IE', |
| | | OCN_Internal_Notes__c = '' |
| | | ); |
| | | insert odr; |
| | | |
| | | //画面迁移--留言画面 |
| | | PageReference page = new PageReference('/apex/ApplicationMessagePopUp?raid=' + |
| | | |
| | | odr.Id ); |
| | | System.Test.setCurrentPage(page); |
| | | |
| | | ApplicationMessageController controller = new ApplicationMessageController(); |
| | | |
| | | |
| | | //取得备品借出申请 |
| | | loaner_application__c odr1 = [select Id, Name, OCN_Internal_Notes__c from |
| | | |
| | | loaner_application__c where Id = :odr.Id]; |
| | | |
| | | //初始化 |
| | | controller.init1(); |
| | | System.assertEquals('', controller.ra1.OCN_Internal_Notes__c); |
| | | |
| | | //发送按钮 |
| | | controller.ra1.OCN_Internal_Notes__c = 'test1'; |
| | | |
| | | //保存后 |
| | | controller.saveBtn(); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | static testMethod void myTest2() { |
| | | // 新建备品借出申请 |
| | | loaner_application__c odr = new loaner_application__c( |
| | | Name = '', |
| | | Equipment_Type__c = 'IE', |
| | | OCN_Internal_Notes__c = 'test1' |
| | | ); |
| | | insert odr; |
| | | |
| | | //画面迁移--留言画面 |
| | | PageReference page = new PageReference('/apex/ApplicationMessagePopUp?raid=' + |
| | | |
| | | odr.Id ); |
| | | System.Test.setCurrentPage(page); |
| | | |
| | | ApplicationMessageController controller = new ApplicationMessageController(); |
| | | |
| | | |
| | | //取得备品借出申请 |
| | | loaner_application__c odr1 = [select Id, Name, OCN_Internal_Notes__c from |
| | | |
| | | loaner_application__c where Id = :odr.Id]; |
| | | |
| | | //初始化 |
| | | controller.init(); |
| | | //System.assertEquals('', controller.ra1.OCN_Internal_Notes__c); |
| | | controller.ra1 = odr1; |
| | | |
| | | //发送按钮 |
| | | controller.ra1.OCN_Internal_Notes__c = ''; |
| | | |
| | | //保存后 |
| | | controller.saveBtn(); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>42.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class AssetNumberChangeController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机ID |
| | | public String astId { get; private set; } |
| | | public Asset ast { get; private set; } |
| | | // 样机库存调整历史 |
| | | public Loaner_change_history__c lch { get; set; } |
| | | |
| | | public AssetNumberChangeController() { |
| | | astId = System.currentPageReference().getParameters().get('id'); |
| | | } |
| | | |
| | | public AssetNumberChangeController(ApexPages.StandardController controller) { |
| | | astId = controller.getRecord().Id; |
| | | } |
| | | |
| | | public PageReference init() { |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 样机信息取得 |
| | | if (String.isBlank(astId) == true) { |
| | | return null; |
| | | } |
| | | List<Asset> astList = [select id, Name, AccountId, EC_Code__c, SerialNumber, |
| | | Equipment_Type__c, lonar_owner__c, loaner_place__c, total_number__c |
| | | from Asset |
| | | where Id = :astId]; |
| | | if (astList.size() == 0) { |
| | | return null; |
| | | } |
| | | ast = astList[0]; |
| | | // 新建样机库存调整历史 |
| | | lch = new Loaner_change_history__c(); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | // 项目check |
| | | if (lch.change_content__c == null) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入调整内容。')); |
| | | return null; |
| | | } |
| | | if (lch.change_number__c == null) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入调整数量。')); |
| | | return null; |
| | | } |
| | | |
| | | // 样机总数计算 |
| | | if (ast.total_number__c == null) ast.total_number__c = 0; |
| | | Decimal total_number = ast.total_number__c + lch.change_number__c; |
| | | |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | // 插入样机库存调整历史 |
| | | lch.Asset__c = ast.Id; |
| | | lch.change_day__c = Date.today(); |
| | | lch.total_number__c = total_number; |
| | | insert lch; |
| | | // 样机总数计算 |
| | | Asset upd_ast = new Asset(Id = ast.Id); |
| | | upd_ast.total_number__c = total_number; |
| | | update upd_ast; |
| | | // 返回样机详细画面 |
| | | String url = baseUrl; |
| | | url += '\\' + ast.Id; |
| | | return new Pagereference(url); |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机详细画面 |
| | | String url = baseUrl; |
| | | url += '\\' + ast.Id; |
| | | return new Pagereference(url); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AssetNumberChangeControllerTest { |
| | | @isTest static void test_method_one() { |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | //样机客户 |
| | | Account acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'IE'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 产品 |
| | | Product2 prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | Product2 prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'IE'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | insert asset; |
| | | |
| | | PageReference page = new PageReference('/apex/AssetNumberChange?id=' + asset.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | AssetNumberChangeController loanerApplyCon = new AssetNumberChangeController(); |
| | | loanerApplyCon.init(); |
| | | System.assertEquals('asset', loanerApplyCon.ast.Name); |
| | | loanerApplyCon.saveBtn(); |
| | | loanerApplyCon.lch.change_content__c= '追加'; |
| | | loanerApplyCon.saveBtn(); |
| | | loanerApplyCon.lch.change_number__c= 30; |
| | | loanerApplyCon.saveBtn(); |
| | | asset = [select Id,total_number__c from asset where Id = :asset.Id]; |
| | | System.assertEquals(50, asset.total_number__c); |
| | | |
| | | loanerApplyCon.cancelBtn(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class AssetTriggerHandler { |
| | | |
| | | /* |
| | | *判断样机管理者是否可以修改样机状态 |
| | | *2018/10/17 |
| | | */ |
| | | public static void checkStatus(List<Asset> newList, Map<Id, Asset> newMap, List<Asset> oldList, Map<Id, Asset> oldMap) { |
| | | List<String> assetIdList = new List<String>(); |
| | | Set<Asset> assSet = new Set<Asset>(); |
| | | for(Asset ass : newList){ |
| | | Asset oldAsset = oldMap.get(ass.Id); |
| | | //如果Status_text__c字段不为空 ,则判断为样机管理者修改 |
| | | if(ass.Status_text__c != null && ass.Status_text__c != ''){ |
| | | //如果样机状态为在库,则认为样机管理者可以修改。 |
| | | if(oldAsset.Status == '在库') { |
| | | assSet.add(ass); |
| | | continue; |
| | | } |
| | | //如果样机状态不为 在库 ,记录ID用于判断样机状态能否修改 |
| | | assetIdList.add(ass.Id); |
| | | } |
| | | } |
| | | |
| | | Set<String> assetIdSet = new Set<String>(); |
| | | Set<String> assetIDSet1 = new Set<String>(); |
| | | if(assetIdList.size() > 0){ |
| | | List<loaner_application_detail__c> ladList= [select id,LOANER__c,RAESD_Status__c,loaner_application__r.Status__c from loaner_application_detail__c where LOANER__c = : assetIdList]; |
| | | |
| | | if(ladList.size()>0){ |
| | | for(loaner_application_detail__c lad : ladList ){ |
| | | //如果明细状态不为已回库,则认为样机处于借用单之中,不能进行操作。 |
| | | if(lad.RAESD_Status__c == '已回库' || (lad.RAESD_Status__c == '已分配' && lad.loaner_application__r.Status__c == '草案中')){ |
| | | assetIdSet.add(lad.LOANER__c); |
| | | }else{ |
| | | assetIDSet1.add(lad.LOANER__c); |
| | | } |
| | | } |
| | | }else{ |
| | | assetIdSet.addAll(assetIdList); |
| | | } |
| | | } |
| | | |
| | | if(assetIDSet1.size() >0){ |
| | | for(String ass : assetIDSet1){ |
| | | newMap.get(ass).addError('该样机在系统中有样机借用申请单,不能修改'); |
| | | return; |
| | | } |
| | | } |
| | | if(assetIdSet.size() > 0){ |
| | | for(String ass : assetIdSet){ |
| | | for(Integer i = 0; i < newList.size();i++){ |
| | | if(ass == newList[i].Id){ |
| | | newList[i].Status = newList[i].Status_text__c; |
| | | newList[i].Status_text__c = null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(assSet.size() >0){ |
| | | for(Asset ass : assSet){ |
| | | ass.Status = ass.Status_text__c; |
| | | ass.Status_text__c = null; |
| | | } |
| | | } |
| | | AssetTriggerHandler.tes(); |
| | | |
| | | } |
| | | |
| | | //样机状态修改时,修改套装明细中的信息 |
| | | public static void isInstock(List<Asset> newList, Map<Id, Asset> newMap, List<Asset> oldList, Map<Id, Asset> oldMap) { |
| | | |
| | | List<String> idString = new List<String>(); |
| | | |
| | | for(Asset ass : newList){ |
| | | Asset old = oldMap.get(ass.Id); |
| | | if(ass.Status != old.Status){ |
| | | idString.add(ass.Id); |
| | | } |
| | | } |
| | | |
| | | if(idString.size() == 0){ |
| | | return; |
| | | } |
| | | |
| | | List<Loaner_Set_Detail__c> lsdList = [select id,Asset__c from Loaner_Set_Detail__c where Asset__c in :idString]; |
| | | if(lsdList.size() == 0){ |
| | | return; |
| | | } |
| | | |
| | | for(Loaner_Set_Detail__c lsd : lsdList){ |
| | | if(newMap.get(lsd.Asset__c).Status=='在库'){ |
| | | lsd.is_instock__c = true; |
| | | }else{ |
| | | lsd.is_instock__c = false; |
| | | } |
| | | } |
| | | |
| | | update lsdList; |
| | | |
| | | } |
| | | |
| | | //只有样机状态为在库时,ANI和NDT的样机管理者才能修改样机存放地。 |
| | | public static void checkPlace(List<Asset> newList, Map<Id, Asset> newMap, List<Asset> oldList, Map<Id, Asset> oldMap) { |
| | | String userId = UserInfo.getUserId(); |
| | | userId.substring(0,15); |
| | | for(Asset ass : newList){ |
| | | Asset old = oldMap.get(ass.Id); |
| | | if (ass.Status != '在库' && ass.ANI_NDTmanager__c == true) { |
| | | if (ass.loaner_place__c != old.loaner_place__c) { |
| | | ass.loaner_place__c.addError('非在库状态下不能修改样机存放地!'); |
| | | } |
| | | } |
| | | if (ass.ANI_NDTmanager__c == true) { |
| | | if (ass.Name != old.Name) { |
| | | ass.Name.addError('不允许修改保有设备名称!'); |
| | | } |
| | | } |
| | | if (ass.ANI_NDTmanager__c == true) { |
| | | if (ass.Equipment_Type__c != old.Equipment_Type__c) { |
| | | ass.Equipment_Type__c.addError('不允许修改样机分类!'); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private static void tes(){ |
| | | Integer i =1; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AssetTriggerHandlerTest { |
| | | |
| | | static Product2 prd1; |
| | | static Product2 prd2; |
| | | static Account acc; |
| | | static Account dealer; |
| | | static Contact core; |
| | | static User testUser; |
| | | static Asset asset; |
| | | static Asset assetC1; |
| | | static Asset assetC2; |
| | | static void setupTestData() { |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'IE'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'IE'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (个体管理) |
| | | assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '在库'; |
| | | assetC1.Equipment_Type__c = 'IE'; |
| | | assetC1.loaner_place__c = '北京酒仙桥'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd2.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | insert new Asset[] {assetC2,assetC1}; |
| | | } |
| | | @isTest static void test_method_one() { |
| | | |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | // Implement test code |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | insert loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '出库前已检测'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | |
| | | |
| | | |
| | | assetC2.Status_text__c = '待修理'; |
| | | update assetC2; |
| | | } |
| | | |
| | | @isTest static void test_01(){ |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'BS'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'BS'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | loaner_Set__c loanerSet = new loaner_Set__c(); |
| | | loanerSet.Equipment_Type__c = 'BS'; |
| | | loanerSet.Set_No__c = 'IETEST0001'; |
| | | loanerSet.Name = 'IETEST0001'; |
| | | |
| | | insert loanerSet; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'BS'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '出借'; |
| | | assetC1.Equipment_Type__c = 'BS'; |
| | | assetC1.loaner_place__c = '北京酒仙桥'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '出借'; |
| | | assetC2.Equipment_Type__c = 'BS'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | insert new Asset[] {asset,assetC1}; |
| | | |
| | | Loaner_Set_Detail__c lSD1 = new Loaner_Set_Detail__c(); |
| | | lSD1.Loaner_Set__c = loanerSet.Id; |
| | | lSD1.Asset__c = asset.Id; |
| | | Loaner_Set_Detail__c lSD2 = new Loaner_Set_Detail__c(); |
| | | lSD2.Loaner_Set__c = loanerSet.Id; |
| | | lSD2.Asset__c = assetC1.Id; |
| | | insert new Loaner_Set_Detail__c[] {lSD1,lSD2}; |
| | | |
| | | asset.Status = '出借'; |
| | | |
| | | update asset; |
| | | |
| | | assetC1.Status = '在库'; |
| | | |
| | | update assetC1; |
| | | |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | // Implement test code |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | insert loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '已回库'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC1.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | assetC1.Status = '出借'; |
| | | update assetC1; |
| | | |
| | | |
| | | assetC1.Status_text__c = '待修理'; |
| | | update assetC1; |
| | | |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global without sharing class AssetTurnoverBatch implements Database.Batchable<sObject> { |
| | | public static Integer FIELDMAX = 62; |
| | | private final List<Id> TEST_ID = null; |
| | | private BatchIF_Log__c iflog; |
| | | |
| | | global AssetTurnoverBatch(List<Id> testId) { |
| | | TEST_ID = testId; |
| | | System.debug('TEST_ID=' + TEST_ID); |
| | | iflog = new BatchIF_Log__c(); |
| | | iflog.Type__c = 'PushNotification'; |
| | | iflog.Log__c = 'AssetTurnoverBatch start\n'; |
| | | iflog.ErrorLog__c = ''; |
| | | insert iflog; |
| | | } |
| | | |
| | | global AssetTurnoverBatch(){ |
| | | iflog = new BatchIF_Log__c(); |
| | | iflog.Type__c = 'PushNotification'; |
| | | iflog.Log__c = 'AssetTurnoverBatch start\n'; |
| | | iflog.ErrorLog__c = ''; |
| | | insert iflog; |
| | | } |
| | | /** |
| | | *查询样机借出明细的信息 |
| | | */ |
| | | global Database.QueryLocator start(Database.BatchableContext BC) { |
| | | SS_Batch_Column_Mapping__c ladMapping = SS_Batch_Column_Mapping__c.getValues('loaner_application_detail__c'); |
| | | Set<String> apiTempSet = new Set<String>(); |
| | | apiTempSet.add('Id'); |
| | | for (Integer i = 1; i <= FIELDMAX; i++) { |
| | | String lpadI = ('00' + i).right(3); |
| | | String fromColumn = 'From_Column_' + lpadI + '__c'; |
| | | String apiStr = String.valueOf(ladMapping.get(fromColumn)); |
| | | if (String.isBlank(apiStr) == false && apiTempSet.contains(apiStr) == false) { |
| | | apiTempSet.add(apiStr); |
| | | } |
| | | } |
| | | String soql = 'Select ' + String.join(new List<String>(apiTempSet), ',') + ' from ' + ladMapping.Name; |
| | | if (TEST_ID <> null) { |
| | | soql += ' where Id IN: TEST_ID'; |
| | | } |
| | | System.debug('soql=' + soql); |
| | | return Database.getQueryLocator(soql); |
| | | } |
| | | /** |
| | | *样机周转表生成 |
| | | */ |
| | | global void execute(Database.BatchableContext BC, List<loaner_application_detail__c> ladList) { |
| | | List<loaner_report__c> lrList = new List<loaner_report__c>(); |
| | | SS_Batch_Column_Mapping__c ladMapping = SS_Batch_Column_Mapping__c.getValues('loaner_application_detail__c'); |
| | | //将样机借用申请明细的字段的值复制到周转表中。 |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | Boolean insflag = false; |
| | | loaner_report__c lr = new loaner_report__c(); |
| | | for(Integer i = 1; i <= FIELDMAX; i++){ |
| | | String lpadI = ('00' + i).right(3); |
| | | String fromColumn = 'From_Column_' + lpadI + '__c'; |
| | | String apiStr = String.valueOf(ladMapping.get(fromColumn)); |
| | | if (String.isBlank(apiStr) == false) { |
| | | String ssColumn = 'SS_Column_' + lpadI + '__c'; |
| | | String ssApiStr = String.valueOf(ladMapping.get(ssColumn)); |
| | | try{ |
| | | lr.put(ssApiStr, lad.get(apiStr)); |
| | | }catch(Exception e){ |
| | | iflog.ErrorLog__c = 'ERROR ' + String.valueOf(ladMapping.get('SS_TableName__c')) + ' [' + apiStr + '] => [' + ssApiStr + ']' + e.getMessage() + '\n'; |
| | | } |
| | | } |
| | | } |
| | | System.debug(lr); |
| | | lrList.add(lr); |
| | | } |
| | | |
| | | for(loaner_report__c lr : lrList){ |
| | | Integer thisMonth = Date.today().month() == 1 ? 12 : Date.today().month() -1; |
| | | Integer lronMonth = null; |
| | | Integer lroutMonth = null; |
| | | |
| | | Integer thisYear = Date.today().month() == 1 ? Date.today().year() -1 : Date.today().year(); |
| | | Integer lronYear = null; |
| | | Integer lroutYear = null; |
| | | |
| | | |
| | | if(lr.Detail_Received_loaner_Date__c != null){ |
| | | lronMonth = lr.Detail_Received_loaner_Date__c.month(); |
| | | lronYear = lr.Detail_Received_loaner_Date__c.year(); |
| | | } |
| | | if(lr.Detail_Shipment_Request_Date__c != null){ |
| | | lroutMonth = lr.Detail_Shipment_Request_Date__c.month(); |
| | | lroutYear = lr.Detail_Shipment_Request_Date__c.year(); |
| | | } |
| | | |
| | | System.debug('thisYear : ' + thisYear + '\tlronYear : ' + lronYear + '\tlroutYear : ' + lroutYear); |
| | | System.debug('thisMonth : ' + thisMonth + '\tlronMonth : ' + lronMonth + '\tlroutMonth : ' + lroutMonth); |
| | | //获取本月天数,月份,年份 |
| | | lr.DayOfTheMonth__c = Date.daysInMonth(thisYear, thisMonth); |
| | | lr.Month__c = thisMonth; |
| | | lr.Year__c = String.valueOf(thisYear); |
| | | lr.StatisticsTime__c = Date.newInstance(thisYear, thisMonth, 1); |
| | | System.debug('dayInMonth : ' + lr.DayOfTheMonth__c); |
| | | //判断本月借出天数 |
| | | if(thisMonth == lronMonth && thisYear == lronYear){ |
| | | if(thisMonth != lroutMonth ){ |
| | | System.debug('1'); |
| | | lr.loan_days__c = Date.newInstance(thisYear, thisMonth, 1).daysBetween(lr.Detail_Received_loaner_Date__c) + 1; |
| | | lr.OutTime__c = Datetime.newInstance(thisYear, thisMonth, 1, 0, 0, 0); |
| | | }else{ |
| | | System.debug('666'); |
| | | lr.loan_days__c = lr.Detail_Shipment_Request_Date__c.daysBetween(lr.Detail_Received_loaner_Date__c) + 1; |
| | | } |
| | | }else if(lronMonth == null){ |
| | | if(thisMonth == lroutMonth && thisYear == lroutYear){ |
| | | lr.loan_days__c = lr.Detail_Shipment_Request_Date__c.daysBetween(Date.newInstance(thisYear, thisMonth, Date.daysInMonth(thisYear, thisMonth))) + 1; |
| | | lr.inTime__c = Datetime.newInstance(thisYear,thisMonth+1,1,0,0,0); |
| | | }else if(lroutMonth > thisMonth && thisYear == lroutYear){ |
| | | lr.loan_days__c = 0; |
| | | System.debug('2'); |
| | | lr.inTime__c = null; |
| | | lr.OutTime__c = null; |
| | | }else if(lroutMonth == null){ |
| | | lr.loan_days__c = 0; |
| | | System.debug('3'); |
| | | lr.inTime__c = null; |
| | | lr.OutTime__c = null; |
| | | }else{ |
| | | lr.loan_days__c = lr.DayOfTheMonth__c; |
| | | lr.OutTime__c = Datetime.newInstance(thisYear, thisMonth, 1, 0, 0, 0); |
| | | lr.inTime__c = Datetime.newInstance(thisYear,thisMonth+1,1,0,0,0); |
| | | } |
| | | }else{ |
| | | if(lroutMonth == thisMonth && lroutYear == thisYear && lronMonth > thisMonth){ |
| | | lr.loan_days__c = lr.Detail_Shipment_Request_Date__c.daysBetween(Date.newInstance(thisYear, thisMonth, Date.daysInMonth(thisYear, thisMonth))) + 1; |
| | | lr.inTime__c = Datetime.newInstance(thisYear, thisMonth+1, 1, 0, 0, 0); |
| | | }else{ |
| | | System.debug('4'); |
| | | lr.loan_days__c = 0; |
| | | lr.inTime__c = null; |
| | | lr.OutTime__c = null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | System.debug(lrList); |
| | | this.aa(); |
| | | try{ |
| | | insert lrList; |
| | | }catch(Exception e){ |
| | | System.debug(e); |
| | | } |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public void aa(){ |
| | | Integer i = 1; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AssetTurnoverBatchTest { |
| | | |
| | | @isTest(SeeAllData = true) static void test_method_one() { |
| | | // Implement test code |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6).addMonths(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7).addMonths(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12).addMonths(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12}; |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner.Status__c = '部分发货'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | Loaner_Express__c le = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id, |
| | | NotReceivingNum__c = 3 |
| | | ); |
| | | |
| | | insert le; |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | detail.Loaner_Express__c = le.id; |
| | | detail.Received_loaner_Date__c = Date.today().addMonths(-1); |
| | | detail.Shipment_Request_Date__c = Date.today().addMonths(-1); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | detail.Loaner_Express__c = le.id; |
| | | //detail.Shipment_Request_Date__c = Date.today(); |
| | | detail.Received_loaner_Date__c = Date.today().addMonths(-1); |
| | | detail.Shipment_Request_Date__c = Date.today().addMonths(-1); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | detail.Received_loaner_Date__c = Date.today().addMonths(-1); |
| | | detail.Shipment_Request_Date__c = Date.today().addMonths(-1); |
| | | detail.Loaner_Express__c = le.id; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | List<Id> ladIdList = new List<Id>(); |
| | | for(loaner_application_detail__c lad : In_detail){ |
| | | if(lad.Id != null){ |
| | | ladIdList.add(lad.Id); |
| | | } |
| | | } |
| | | |
| | | SS_Batch_Column_Mapping__c ladMapping = SS_Batch_Column_Mapping__c.getValues('loaner_application_detail__c'); |
| | | String lpadI = ('00' + 1).right(3); |
| | | String fromColumn = 'From_Column_' + lpadI + '__c'; |
| | | String apiStr = String.valueOf(ladMapping.get(fromColumn)); |
| | | Database.executeBatch(new AssetTurnoverBatch(ladIdList), 200); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class AssetTurnoverSchedulable implements Schedulable { |
| | | global void execute(SchedulableContext sc) { |
| | | //MyBatchClass b = new MyBatchClass(); |
| | | //database.executebatch(b); |
| | | Id execBTId = Database.executeBatch(new AssetTurnoverBatch(), 200); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AssetTurnoverSchedulableTest { |
| | | |
| | | static testMethod void testExecute() { |
| | | // This test runs a scheduled job at midnight Sept. 3rd. 2022 |
| | | String CRON_EXP = '0 0 0 3 9 ? 2032'; |
| | | |
| | | System.Test.startTest(); |
| | | // Schedule the test job |
| | | String jobId = system.schedule('AssetTurnoverSchedulableTest', CRON_EXP, new AssetTurnoverSchedulable()); |
| | | // Get the information from the CronTrigger API object |
| | | CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId]; |
| | | // Verify the expressions are the same |
| | | System.assertEquals(CRON_EXP, ct.CronExpression); |
| | | // Verify the job has not run |
| | | System.assertEquals(0, ct.TimesTriggered); |
| | | // Verify the next time the job will run |
| | | System.assertEquals('2032-09-03 00:00:00', String.valueOf(ct.NextFireTime)); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class AttachmentTriggerHandler { |
| | | |
| | | public static void fileCheck(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<String> orderIdList = new List<String>(); |
| | | List<String> orderIdList2 = new List<String>(); |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | String name = newAtt.Name; |
| | | if (parentId.startsWith('801') && name.startsWith('ORDER-')) { |
| | | orderIdList.add(newAtt.parentId); |
| | | } |
| | | if (parentId.startsWith('801')) { |
| | | orderIdList2.add(newAtt.parentId); |
| | | } |
| | | } |
| | | |
| | | Map<String, String> isUploadMap = new Map<String, String>(); |
| | | Map<String, String> draftMap = new Map<String, String>(); |
| | | Map<String, String> submitMap = new Map<String, String>(); |
| | | Map<String, String> passMap = new Map<String, String>(); |
| | | if (orderIdList.size() > 0) { |
| | | List<Order> orderList = [select id,IsUpload__c,ApproveStatus__c from Order where id = :orderIdList]; |
| | | for (Order o : orderList) { |
| | | if (o.IsUpload__c) { |
| | | isUploadMap.put(o.Id, o.Id); |
| | | } |
| | | if (o.ApproveStatus__c == 'Draft' || o.ApproveStatus__c == 'Completed' || o.ApproveStatus__c == 'Reject') { |
| | | draftMap.put(o.Id, o.Id); |
| | | } |
| | | } |
| | | } |
| | | if (orderIdList2.size() > 0) { |
| | | List<Order> orderList2 = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c from Order where id = :orderIdList2]; |
| | | for (Order o : orderList2) { |
| | | if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { |
| | | submitMap.put(o.Id, o.Id); |
| | | } |
| | | if (o.IsOrderPassed__c) { |
| | | passMap.put(o.Id, o.Id); |
| | | } |
| | | } |
| | | } |
| | | //新的获取人员简档ID 获取到的ID是15位 |
| | | // String profileId = UserInfo.getProfileId().substring(0, 15); |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | for (Attachment newAtt : newList) { |
| | | // if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) |
| | | // && UserInfo.getProfileId() != System.Label.Business_department) { |
| | | // newAtt.addError('合同批准后不能更改附件。'); |
| | | // } |
| | | |
| | | if (new_profileId != System.Label.Business_department && new_profileId != System.Label.SystemAdmin |
| | | && submitMap.containsKey(newAtt.parentId)) { |
| | | newAtt.addError('合同被锁定,不能上传附件。'); |
| | | } |
| | | if (isUploadMap.containsKey(newAtt.parentId)) { |
| | | newAtt.addError('合同附件已经存在,不能上传多个。'); |
| | | } |
| | | if (draftMap.containsKey(newAtt.parentId)) { |
| | | newAtt.addError('请先审批完特殊条件再提交合同文件。'); |
| | | } |
| | | } |
| | | } |
| | | //禁止上传多个收货确认单和装机确认单 |
| | | public static void fileCheck5(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<String> lacIdList1 = new List<String>(); |
| | | List<String> lacIdList2 = new List<String>(); |
| | | List<String> lacIdList3 = new List<String>(); |
| | | List<String> lacIdList4 = new List<String>(); |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | String name = newAtt.Name; |
| | | if (parentId.startsWith('a0Q') && name.startsWith('收货确认-')) { |
| | | lacIdList1.add(newAtt.parentId); |
| | | } |
| | | if(parentId.startsWith('a0Q') && name.startsWith('装机确认')){ |
| | | lacIdList2.add(newAtt.parentId); |
| | | } |
| | | if(parentId.startsWith('a0Q') && (name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF'))){ |
| | | lacIdList3.add(newAtt.parentId); |
| | | } |
| | | if(parentId.startsWith('a0Q') && name.startsWith('转借确认')){ |
| | | lacIdList4.add(newAtt.parentId); |
| | | } |
| | | |
| | | } |
| | | Map<String,String> isUploadMap1 = new Map<String,String>(); |
| | | Map<String,String> isUploadMap2 = new Map<String,String>(); |
| | | Map<String,String> isUploadMap3 = new Map<String,String>(); |
| | | Map<String,String> isUploadMap4 = new Map<String,String>(); |
| | | if(lacIdList1.size()>0){ |
| | | List<loaner_application__c> lacList1 = [select id,Receipt_Attachment__c from loaner_application__c where id = :lacIdList1]; |
| | | for(loaner_application__c lac :lacList1){ |
| | | if(lac.Receipt_Attachment__c){ |
| | | isUploadMap1.put(lac.Id, lac.Id); |
| | | } |
| | | } |
| | | } |
| | | if(lacIdList2.size()>0){ |
| | | List<loaner_application__c> lacList2 = [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :lacIdList2]; |
| | | for(loaner_application__c lac : lacList2){ |
| | | if(lac.Installation_Qualification_Attachment__c){ |
| | | isUploadMap2.put(lac.Id, lac.Id); |
| | | } |
| | | } |
| | | } |
| | | if(lacIdList3.size()>0){ |
| | | List<loaner_application__c> lacList3 = [select id,Loaner_AgreementPDF__c from loaner_application__c where id = :lacIdList3]; |
| | | for(loaner_application__c lac : lacList3){ |
| | | if(lac.Loaner_AgreementPDF__c){ |
| | | isUploadMap3.put(lac.Id, lac.Id); |
| | | } |
| | | } |
| | | } |
| | | if(lacIdList4.size()>0){ |
| | | List<loaner_application__c> lacList4 = [select id,Loaner_Confirm_Photo__c from loaner_application__c where id = :lacIdList4]; |
| | | for(loaner_application__c lac : lacList4){ |
| | | if(lac.Loaner_Confirm_Photo__c){ |
| | | isUploadMap4.put(lac.Id, lac.Id); |
| | | } |
| | | } |
| | | } |
| | | for(Attachment newAtt : newList){ |
| | | if(isUploadMap1.containsKey(newAtt.parentId)){ |
| | | newAtt.addError('收货确认附件已经存在,不能上传多个。'); |
| | | } |
| | | if(isUploadMap2.containsKey(newAtt.parentId)){ |
| | | newAtt.addError('装机确认附件已经存在,不能上传多个。'); |
| | | } |
| | | if(isUploadMap3.containsKey(newAtt.parentId)){ |
| | | newAtt.addError('借用协议附件已经存在,不能上传多个。'); |
| | | } |
| | | if(isUploadMap4.containsKey(newAtt.parentId)){ |
| | | newAtt.addError('转借确认附件已经存在,不能上传多个。'); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //装机确认后,禁止删除确认单 |
| | | public static void fileCheck6(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | |
| | | List<String> lacIdList = new List<String>(); |
| | | List<String> lacIdList1 = new List<String>(); |
| | | for(Attachment oldAtt : oldList){ |
| | | String parentId = oldAtt.parentId; |
| | | String name = oldAtt.Name; |
| | | if(parentId.startsWith('a0Q') && name.startsWith('装机确认')){ |
| | | lacIdList.add(parentId); |
| | | } |
| | | if(parentId.startsWith('a0Q') && (name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF'))){ |
| | | lacIdList1.add(parentId); |
| | | } |
| | | } |
| | | |
| | | Map<String,String> deleteMap = new Map<String,String>(); |
| | | Map<String,String> deleteMap1 = new Map<String,String>(); |
| | | if(lacIdList.size()>0){ |
| | | List<loaner_application__c> lacList = [select id,HP_Received_Sign_Date__c from loaner_application__c where id = :lacIdList]; |
| | | for(loaner_application__c lac : lacList){ |
| | | if(lac.HP_Received_Sign_Date__c != null){ |
| | | deleteMap.put(lac.id,lac.id); |
| | | } |
| | | } |
| | | } |
| | | if(lacIdList1.size() >0 ){ |
| | | List<loaner_application__c> lacList1 = [select id,Bollow_Date__c from loaner_application__c where id = :lacIdList1]; |
| | | for(loaner_application__c lac: lacList1){ |
| | | if(lac.Bollow_Date__c != null){ |
| | | deleteMap1.put(lac.id,lac.id); |
| | | } |
| | | } |
| | | } |
| | | for(Attachment oldAtt : oldList){ |
| | | if(deleteMap.containsKey(oldAtt.parentId)){ |
| | | oldAtt.addError('已装机确认,不能删除装机确认附件'); |
| | | } |
| | | if(deleteMap1.containsKey(oldAtt.parentId)){ |
| | | oldAtt.addError('已出库指示,不能删除借用协议附件'); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | public static void uploadContract(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<Order> orderList = new List<Order>(); |
| | | |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | String name = newAtt.Name; |
| | | if (parentId.startsWith('801') && name.startsWith('ORDER-')) { |
| | | Order ord = new Order(); |
| | | ord.Id = parentId; |
| | | //ord.Name = name.substring(6, name.indexOf('.')); |
| | | ord.Upload_IsChanged__c = true; |
| | | ord.IsUpload__c = true; |
| | | |
| | | orderList.add(ord); |
| | | } |
| | | } |
| | | |
| | | if (orderList.size() > 0) { |
| | | update orderList; |
| | | } |
| | | |
| | | } |
| | | |
| | | // Added by HANCHAO 20170123 |
| | | public static void AfterPassUpload(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<Order> orderList = new List<Order>(); |
| | | |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | if (parentId.startsWith('801')) { |
| | | Order ord1 = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c from Order where id = :parentId]; |
| | | if (ord1.IsOrderPassed__c) { |
| | | Order ord = new Order(); |
| | | ord.Id = parentId; |
| | | ord.AfterPassAttachmentUpload__c = true; |
| | | orderList.add(ord); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (orderList.size() > 0) { |
| | | update orderList; |
| | | } |
| | | |
| | | } |
| | | //添加确认单时添加对应标记 |
| | | public static void fileCheck4(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap){ |
| | | |
| | | List<loaner_application__c> lacList = new List<loaner_application__c>(); |
| | | |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | String name = newAtt.Name; |
| | | //判断是否上传收货确认附件和安装确认附件 |
| | | if(parentId.startsWith('a0Q')){ |
| | | if(name.startsWith('收货确认-')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | // [select id,Receipt_Attachment__c from loaner_application__c where id = :parentId]; |
| | | lac.Receipt_Attachment__c = true; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('装机确认')){ |
| | | loaner_application__c lac =new loaner_application__c(); |
| | | lac.id = parentId; |
| | | // [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :parentId]; |
| | | lac.Installation_Qualification_Attachment__c = true; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | lac.Loaner_AgreementPDF__c = true; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('转借确认')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | lac.Loaner_Confirm_Photo__c = true; |
| | | lacList.add(lac); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | if(lacList.size() > 0){ |
| | | try{ |
| | | update lacList; |
| | | }catch(Exception ex){ |
| | | newList[0].addError(ex.getMessage().mid((ex.getMessage().indexOf('first error:') + 12),ex.getMessage().length())); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | public static void fileCheck2(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<String> orderIdList = new List<String>(); |
| | | |
| | | for (Attachment oldAtt : oldList) { |
| | | String parentId = oldAtt.parentId; |
| | | if (parentId.startsWith('801')) { |
| | | orderIdList.add(oldAtt.parentId); |
| | | } |
| | | } |
| | | |
| | | Map<String, String> submitMap = new Map<String, String>(); |
| | | Map<String, Order> passMap = new Map<String, Order>(); |
| | | |
| | | if (orderIdList.size() > 0) { |
| | | List<Order> orderList = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c, Is_Already_Splited__c from Order where id = :orderIdList]; |
| | | for (Order o : orderList) { |
| | | if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { |
| | | submitMap.put(o.Id, o.Id); |
| | | } |
| | | if (o.IsOrderPassed__c) { |
| | | passMap.put(o.Id, o); |
| | | } |
| | | } |
| | | } |
| | | //新的获取人员简档ID 获取到的ID是15位 |
| | | // String profileId = UserInfo.getProfileId().substring(0, 15); |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | for (Attachment oldAtt : oldList) { |
| | | /*if (UserInfo.getProfileId() != System.Label.SystemAdmin && submitMap.containsKey(oldAtt.parentId)) { |
| | | oldAtt.addError('合同被锁定,不能更改附件。'); |
| | | } |
| | | if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(oldAtt.parentId) |
| | | && UserInfo.getProfileId() != System.Label.Business_department && passMap.get(oldAtt.parentId).Is_Already_Splited__c == false) { |
| | | oldAtt.addError('合同批准后不能更改附件。'); |
| | | }*/ |
| | | if (new_profileId != System.Label.SystemAdmin |
| | | && submitMap.containsKey(oldAtt.parentId)) { |
| | | oldAtt.addError('合同被锁定,不能更改附件。'); |
| | | } |
| | | if (new_profileId != System.Label.SystemAdmin && passMap.containsKey(oldAtt.parentId) |
| | | && new_profileId != System.Label.Business_department && passMap.get(oldAtt.parentId).Is_Already_Splited__c == false) { |
| | | oldAtt.addError('合同批准后不能更改附件。'); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void fileCheck3(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<String> orderIdList = new List<String>(); |
| | | |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | if (parentId.startsWith('801')) { |
| | | orderIdList.add(newAtt.parentId); |
| | | } |
| | | } |
| | | |
| | | Map<String, String> submitMap = new Map<String, String>(); |
| | | Map<String, Order> passMap = new Map<String, Order>(); |
| | | |
| | | if (orderIdList.size() > 0) { |
| | | List<Order> orderList = [select id,IsUpload__c,ApproveStatus__c,IsOrderPassed__c, Is_Already_Splited__c from Order where id = :orderIdList]; |
| | | for (Order o : orderList) { |
| | | if (o.ApproveStatus__c == 'Submit' || o.ApproveStatus__c == 'OrderSubmit') { |
| | | submitMap.put(o.Id, o.Id); |
| | | } |
| | | if (o.IsOrderPassed__c) { |
| | | passMap.put(o.Id, o); |
| | | } |
| | | } |
| | | } |
| | | //新的获取人员简档ID 获取到的ID是15位 |
| | | // String profileId = UserInfo.getProfileId().substring(0, 15); |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | /*for (Attachment newAtt : newList) { |
| | | if (UserInfo.getProfileId() != System.Label.SystemAdmin && submitMap.containsKey(newAtt.parentId)) { |
| | | newAtt.addError('合同被锁定,不能更改附件。'); |
| | | } |
| | | if (UserInfo.getProfileId() != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) |
| | | && UserInfo.getProfileId() != System.Label.Business_department && passMap.get(newAtt.parentId).Is_Already_Splited__c == false) { |
| | | newAtt.addError('合同批准后不能更改附件。'); |
| | | } |
| | | }*/ |
| | | for (Attachment newAtt : newList) { |
| | | if (new_profileId != System.Label.SystemAdmin |
| | | && submitMap.containsKey(newAtt.parentId)) { |
| | | newAtt.addError('合同被锁定,不能更改附件。'); |
| | | } |
| | | if (new_profileId != System.Label.SystemAdmin && passMap.containsKey(newAtt.parentId) |
| | | && new_profileId != System.Label.Business_department && passMap.get(newAtt.parentId).Is_Already_Splited__c == false) { |
| | | newAtt.addError('合同批准后不能更改附件。'); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void deleteContract(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<Order> orderList = new List<Order>(); |
| | | |
| | | for (Attachment oldAtt : oldList) { |
| | | String parentId = oldAtt.parentId; |
| | | String name = oldAtt.Name; |
| | | if (parentId.startsWith('801') && name.startsWith('ORDER-')) { |
| | | Order ord = new Order(); |
| | | ord.Id = parentId; |
| | | //ord.Name = ''; |
| | | ord.Upload_IsChanged__c = true; |
| | | ord.IsUpload__c = false; |
| | | |
| | | orderList.add(ord); |
| | | } |
| | | } |
| | | |
| | | if (orderList.size() > 0) { |
| | | update orderList; |
| | | } |
| | | } |
| | | |
| | | //删除确认单时取消对应标记; |
| | | public static void deleteconfirm(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap){ |
| | | List<loaner_application__c> lacList = new List<loaner_application__c>(); |
| | | |
| | | for (Attachment oldAtt : oldList) { |
| | | String parentId = oldAtt.parentId; |
| | | String name = oldAtt.Name; |
| | | //判断是否删除收货确认附件和安装确认附件 |
| | | if(parentId.startsWith('a0Q')){ |
| | | if(name.startsWith('收货确认-')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | // [select id,Receipt_Attachment__c from loaner_application__c where id = :parentId]; |
| | | lac.Receipt_Attachment__c = false; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('装机确认')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | // [select id,Installation_Qualification_Attachment__c from loaner_application__c where id = :parentId]; |
| | | lac.Installation_Qualification_Attachment__c = false; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('借用协议') || name.startsWith('借用单') || name.startsWith('DeliveryConfirmPDF')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | lac.Loaner_AgreementPDF__c = false; |
| | | lacList.add(lac); |
| | | } |
| | | if(name.startsWith('转借确认')){ |
| | | loaner_application__c lac = new loaner_application__c(); |
| | | lac.id = parentId; |
| | | lac.Loaner_Confirm_Photo__c = false; |
| | | lacList.add(lac); |
| | | } |
| | | } |
| | | } |
| | | if(lacList.size() > 0){ |
| | | update lacList; |
| | | } |
| | | } |
| | | |
| | | //业务活动上传附件完成之后将附件克隆至相关联的用户信息上面 |
| | | public static void AfterUploadToUserFaultInfo(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap) { |
| | | List<String> selectBAIdList = new List<String>(); |
| | | String firstThreeDigitCode= System.label.FirstThreeDigitCode; |
| | | for (Attachment newAtt : newList) { |
| | | String parentId = newAtt.parentId; |
| | | if (parentId.startsWith(firstThreeDigitCode)) { |
| | | selectBAIdList.add(parentId); |
| | | } |
| | | } |
| | | |
| | | if (selectBAIdList.size() > 0) { |
| | | List<BusinessActivity__c> businessActivityList = TSRepairUtil.GetBusinessActivityList(null,null, selectbaIdList,null,null,''); |
| | | |
| | | String userFaultInfoId = businessActivityList[0].User_FaultInfo__c; |
| | | System.debug('userFaultInfoId---->'+userFaultInfoId); |
| | | if (String.isNotBlank(userFaultInfoId)) { |
| | | |
| | | // 获取用户/故障信息的附件 |
| | | List<String> selectUfIdList = new List<String>(); |
| | | selectUfIdList.add(userFaultInfoId); |
| | | List<Attachment> ufAttachmentList = TSRepairUtil.GetAttachmentList(selectUfIdList); |
| | | |
| | | if (ufAttachmentList.size() >0){ |
| | | //删除用户/故障信息的附件 |
| | | delete ufAttachmentList; |
| | | |
| | | } |
| | | |
| | | //将业务活动下的附件克隆至 用户/故障信息 |
| | | TSRepairUtil.insertattachmentCloneList(selectBAIdList,userFaultInfoId); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | //王鹏伟 贸易管理客户申请表 合同已提交 不允许修改贸易管理客户申请表附件 |
| | | public static void updateTradeCustomerManagerFile(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap){ |
| | | for(Attachment accach : newList){ |
| | | String parentId = accach.parentId; |
| | | String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; |
| | | if(parentId.startsWith(tradeCustomerManagerStart)){ |
| | | TradeCustomerManager__c trade = [select Id,order__c,isHaveLink__c from TradeCustomerManager__c where Id =: parentId]; |
| | | if(trade!=null){ |
| | | Order order = [select Id,applicationForm__c,ApproveStatus__c from Order where id=:trade.order__c]; |
| | | if(order !=null){ |
| | | if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){ |
| | | accach.addError('合同已提交,申请表附件不可修改!'); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //王鹏伟判断是否是 贸易管理客户申请表 下的文件 如果是 |
| | | public static void DeleteTradeCustomerManagerFile(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap){ |
| | | for(Attachment accach : oldList){ |
| | | String parentId = accach.parentId; |
| | | String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; |
| | | if(parentId.startsWith(tradeCustomerManagerStart)){ |
| | | TradeCustomerManager__c trade = [select Id,order__c,isHaveLink__c from TradeCustomerManager__c where Id =: parentId]; |
| | | if(trade!=null){ |
| | | Order order = [select Id,applicationForm__c,ApproveStatus__c from Order where id=:trade.order__c]; |
| | | if(order!=null){ |
| | | if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){ |
| | | accach.addError('合同已提交,申请表附件不可删除!'); |
| | | return; |
| | | } |
| | | if(order!=null &&(accach.Name.startsWith('军事')||(accach.Name.startsWith('个人信息') && trade.isHaveLink__c == '是'))){ |
| | | order.applicationForm__c = false; |
| | | update order; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //王鹏伟新加判断 贸易管理客户申请表 一个申请表下只能有一份文件名以军事或个人信息开头的文件! |
| | | public static void UploadTradeCustomerManagerFile(List<Attachment> newList, Map<Id, Attachment> newMap, List<Attachment> oldList, Map<Id, Attachment> oldMap){ |
| | | for(Attachment accach : newList){ |
| | | String parentId = accach.parentId; |
| | | String tradeCustomerManagerStart = System.label.TradeCustomerManagerStart; |
| | | if(parentId.startsWith(tradeCustomerManagerStart)){ |
| | | List<Attachment> fileList = [select Id,Name from Attachment where ParentId =:parentId]; |
| | | if(fileList!=null && fileList.size()!=0){ |
| | | for(Attachment acc : fileList){ |
| | | if(acc.Name.substring(0,2).equals('军事') && accach.Name.startsWith('军事')){ |
| | | accach.addError('一个贸易管理客户申请表下,只能有一份文件名以军事开头的文件!'); |
| | | return; |
| | | } |
| | | if(acc.Name.startsWith('个人信息') && accach.Name.startsWith('个人信息')){ |
| | | accach.addError('一个贸易管理客户申请表下,只能有一份文件名以个人开头的文件!'); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class AttachmentTriggerTest { |
| | | static void setupTestData() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | } |
| | | static testMethod void myTest1() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account accIE = new Account( |
| | | Name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c='Customer IE', |
| | | FacilityName__c='abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | insert accIE; |
| | | Contact con = new Contact(); |
| | | con.LastName = 'test'; |
| | | con.AccountId = accIE.Id; |
| | | con.MobilePhone = 'MobilePhoneD__c'; |
| | | con.OtherPhone = 'OtherPhoneD__c'; |
| | | con.Fax = 'FaxD__c'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Phone = 'PhoneD__c'; |
| | | con.Title = 'TitleD__c'; |
| | | con.Address1__c = 'Address1D__c'; |
| | | con.Address2__c = 'Address2D__c'; |
| | | con.Address3__c = 'Address3D__c'; |
| | | con.Postcode__c = '100111'; |
| | | con.ContactStatus__c = 'ContactStatusD__c'; |
| | | con.CancelReason__c = 'CancelReasonD__c'; |
| | | con.StatusD__c = 'Pass'; |
| | | insert con; |
| | | PriceBook2 pricebook =new PriceBook2( |
| | | Name = 'IE' |
| | | ); |
| | | insert pricebook; |
| | | |
| | | List<RecordType> rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity']; |
| | | // 有预定下单日 |
| | | Opportunity opp = new Opportunity( |
| | | Name = 'test opp', |
| | | AccountId = accIE.Id, |
| | | RecordTypeId = rectOpp[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | StageName = 'Phase3', |
| | | CurrencyIsoCode = 'CNY', |
| | | ProductSegment__c = 'IE', |
| | | CloseDate = Date.today(), |
| | | NewInquiryDate__c = Date.today().addDays(-2), |
| | | ExpectedOrderDate__c = Date.today().addDays(2), |
| | | SalesChannel__c = 'direct' |
| | | ); |
| | | insert opp; |
| | | OpportunityContactRole role = new OpportunityContactRole( |
| | | Role = 'End user', |
| | | IsPrimary = true, |
| | | OpportunityId = opp.Id, |
| | | ContactId = con.Id |
| | | ); |
| | | insert role; |
| | | Order odr = new Order( |
| | | Name = '', |
| | | Status = 'Draft', |
| | | AccountId = accIE.Id, |
| | | ApproveStatus__c = 'Draft', |
| | | OpportunityId = opp.Id, |
| | | EffectiveDate = Date.today(), |
| | | EndUser__c = con.Id |
| | | ); |
| | | insert odr; |
| | | |
| | | Attachment att = new Attachment( |
| | | Name = 'ORDER-123456.pdf', |
| | | parentId = odr.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att; |
| | | |
| | | Attachment att2 = new Attachment( |
| | | Name = 'not-ORDER-123456.pdf', |
| | | parentId = odr.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | |
| | | delete att; |
| | | } |
| | | |
| | | static testMethod void myTest2() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | Attachment att = new Attachment( |
| | | Name = '借用协议-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att; |
| | | Attachment att2 = new Attachment( |
| | | Name = '装机确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | |
| | | Attachment att3 = new Attachment( |
| | | Name = '收货确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att3; |
| | | |
| | | try{ |
| | | Attachment att4 = new Attachment( |
| | | Name = '借用协议-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att4; |
| | | }catch(Exception ex){ |
| | | try{ |
| | | Attachment att21 = new Attachment( |
| | | Name = '装机确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att21; |
| | | }catch(Exception ex1){ |
| | | try{ |
| | | Attachment att31 = new Attachment( |
| | | Name = '收货确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att31; |
| | | }catch(Exception ex2){ |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | static testMethod void myTest3() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | Attachment att = new Attachment( |
| | | Name = '借用协议-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att; |
| | | Attachment att2 = new Attachment( |
| | | Name = '装机确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | |
| | | Attachment att3 = new Attachment( |
| | | Name = '收货确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att3; |
| | | |
| | | delete att; |
| | | delete att2; |
| | | delete att3; |
| | | } |
| | | static testMethod void myTest4() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | loaner.HP_Received_Sign_Date__c = Date.today(); |
| | | loaner.Bollow_Date__c = Date.today(); |
| | | insert loaner; |
| | | Attachment att = new Attachment( |
| | | Name = '借用协议-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att; |
| | | Attachment att2 = new Attachment( |
| | | Name = '装机确认-123456.pdf', |
| | | parentId = loaner.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | try{ |
| | | delete att; |
| | | }catch(Exception ex){ |
| | | try{ |
| | | delete att2; |
| | | }catch(Exception ex1){ |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | // 业务活动 附件上传 |
| | | static testMethod void myTest5() { |
| | | |
| | | TS_Repair__c tsr = new TS_Repair__c(); |
| | | tsr.TSReportDate__c = Date.today(); |
| | | insert tsr; |
| | | |
| | | User_FaultInfo__c uf1 = new User_FaultInfo__c(); |
| | | insert uf1; |
| | | FailureAsset__c fa1 = new FailureAsset__c(); |
| | | fa1.model__c = 'test1'; |
| | | fa1.FAUserFaultInfo__c = uf1.Id; |
| | | insert fa1; |
| | | Attachment att3 = new Attachment( |
| | | Name = 'not-ORDER-123456.pdf', |
| | | parentId = uf1.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att3; |
| | | |
| | | BusinessActivity__c ba1 = new BusinessActivity__c(); |
| | | ba1.BusinessATS__c = tsr.Id; |
| | | ba1.User_FaultInfo__c = uf1.Id; |
| | | insert ba1; |
| | | |
| | | Attachment att = new Attachment( |
| | | Name = 'ORDER-123456.pdf', |
| | | parentId = ba1.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att; |
| | | |
| | | Attachment att2 = new Attachment( |
| | | Name = 'not-ORDER-123456.pdf', |
| | | parentId = ba1.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | |
| | | |
| | | |
| | | } |
| | | static testMethod void myTest6() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account accIE = new Account( |
| | | Name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c='Customer IE', |
| | | FacilityName__c='abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | insert accIE; |
| | | Contact con = new Contact(); |
| | | con.LastName = 'test'; |
| | | con.AccountId = accIE.Id; |
| | | con.MobilePhone = 'MobilePhoneD__c'; |
| | | con.OtherPhone = 'OtherPhoneD__c'; |
| | | con.Fax = 'FaxD__c'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Phone = 'PhoneD__c'; |
| | | con.Title = 'TitleD__c'; |
| | | con.Address1__c = 'Address1D__c'; |
| | | con.Address2__c = 'Address2D__c'; |
| | | con.Address3__c = 'Address3D__c'; |
| | | con.Postcode__c = '100111'; |
| | | con.ContactStatus__c = 'ContactStatusD__c'; |
| | | con.CancelReason__c = 'CancelReasonD__c'; |
| | | con.StatusD__c = 'Pass'; |
| | | insert con; |
| | | PriceBook2 pricebook =new PriceBook2( |
| | | Name = 'IE' |
| | | ); |
| | | insert pricebook; |
| | | |
| | | List<RecordType> rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity']; |
| | | // 有预定下单日 |
| | | Opportunity opp = new Opportunity( |
| | | Name = 'test opp', |
| | | AccountId = accIE.Id, |
| | | RecordTypeId = rectOpp[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | StageName = 'Phase3', |
| | | CurrencyIsoCode = 'CNY', |
| | | ProductSegment__c = 'IE', |
| | | CloseDate = Date.today(), |
| | | NewInquiryDate__c = Date.today().addDays(-2), |
| | | ExpectedOrderDate__c = Date.today().addDays(2), |
| | | SalesChannel__c = 'direct', |
| | | customerType__c = 'B' |
| | | ); |
| | | insert opp; |
| | | OpportunityContactRole role = new OpportunityContactRole( |
| | | Role = 'End user', |
| | | IsPrimary = true, |
| | | OpportunityId = opp.Id, |
| | | ContactId = con.Id |
| | | ); |
| | | insert role; |
| | | Order odr = new Order( |
| | | Name = '', |
| | | Status = 'Draft', |
| | | AccountId = accIE.Id, |
| | | ApproveStatus__c = 'Draft', |
| | | OpportunityId = opp.Id, |
| | | EffectiveDate = Date.today(), |
| | | EndUser__c = con.Id |
| | | ); |
| | | insert odr; |
| | | TradeCustomerManager__c tra = new TradeCustomerManager__c( |
| | | OrderIdSave__c = odr.Id, |
| | | order__c = odr.Id |
| | | ); |
| | | insert tra; |
| | | Attachment att1 = new Attachment( |
| | | Name = '军事.pdf', |
| | | parentId = tra.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att1; |
| | | Attachment att2 = new Attachment( |
| | | Name = '个人信息.pdf', |
| | | parentId = tra.Id, |
| | | Body = EncodingUtil.base64Decode('test') |
| | | ); |
| | | insert att2; |
| | | att1.Name = 'test.pdf'; |
| | | update att1; |
| | | delete att1; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>31.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class BreachRecordBatch implements Database.Batchable<sObject>,Database.Stateful { |
| | | |
| | | private List<String> idList = null; |
| | | |
| | | public List<String> outlaId = new List<String>(); |
| | | public List<String> autolaId = new List<String>(); |
| | | global BreachRecordBatch() { |
| | | |
| | | } |
| | | |
| | | global BreachRecordBatch(List<String> temp) { |
| | | idList = temp; |
| | | } |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext BC) { |
| | | if(idList != null && idList.size() > 0){ |
| | | return Database.getQueryLocator([select id,Receipt_Date__c,Loaner_Express__c,Equipment_Type__c,Automatic_Received_Date__c,loaner_application__c,loaner_application__r.Rental_End_Date__c, |
| | | loaner_application__r.OwnerId,loaner_application__r.Owner.ProfileId,loaner_application__r.Is_Automatic_Received__c,loaner_application__r.Is_time_out__c |
| | | from loaner_application_detail__c |
| | | where (loaner_application__r.Rental_End_Date__c <= :Date.today() or Automatic_Received_Date__c <= :Date.today()) |
| | | //and loaner_application__r.CreatorUserType__c = 'PowerPartner' |
| | | and RAESD_Status__c in ('已出库','申请者已收货','申请者已装机确认') and id in :idList ]); |
| | | }else{ |
| | | return Database.getQueryLocator([select id,Receipt_Date__c,Loaner_Express__c,Equipment_Type__c,Automatic_Received_Date__c,loaner_application__c,loaner_application__r.Rental_End_Date__c, |
| | | loaner_application__r.OwnerId,loaner_application__r.Owner.ProfileId,loaner_application__r.Is_Automatic_Received__c,loaner_application__r.Is_time_out__c |
| | | from loaner_application_detail__c |
| | | where ((loaner_application__r.Rental_End_Date__c <= :Date.today() and RAESD_Status__c in ('已出库','申请者已收货','申请者已装机确认')) |
| | | or (Automatic_Received_Date__c <= :Date.today() and RAESD_Status__c = '已出库'))]); |
| | | } |
| | | } |
| | | |
| | | global void execute(Database.BatchableContext BC, List<sObject> scope) { |
| | | |
| | | List<String> passUserId = new List<String>{ |
| | | '00e0K000001z2Y8', |
| | | '00e0K000001l1Dx', |
| | | '00e0K000001l1E2', |
| | | '00e0K000001l1E7', |
| | | '00e28000000YMiL', |
| | | '00e28000000YMif', |
| | | '00e28000000eN61', |
| | | '00e28000000eN64', |
| | | '00e28000001wf2h' |
| | | }; |
| | | |
| | | Map<String,loaner_application__c> timeoutMap= new Map<String,loaner_application__c>(); |
| | | Map<String,loaner_application__c> autoMap= new Map<String,loaner_application__c>(); |
| | | |
| | | Set<loaner_application__c> timeoutSet= new Set<loaner_application__c>(); |
| | | Set<loaner_application__c> autoSet= new Set<loaner_application__c>(); |
| | | |
| | | Set<String> timeoutID = new Set<String>(); |
| | | Set<String> autoID = new Set<String>(); |
| | | |
| | | Set<String> userIdSet = new Set<String>(); |
| | | List<User> userList = new List<User>(); |
| | | Map<String,User> userMap = new Map<String,User>(); |
| | | List<loaner_application_detail__c> ladList = new List<loaner_application_detail__c>(); |
| | | Set<String> leIdSet = new Set<String>(); |
| | | |
| | | Set<String> laIdSet = new Set<String>(); |
| | | Map<String,String> usertypeMap = New Map<String,String>(); |
| | | |
| | | system.debug(scope.size()); |
| | | //获取符合条件的明细的借用单和借用物流单. |
| | | for(sObject temp : scope){ |
| | | |
| | | loaner_application_detail__c lad = (loaner_application_detail__c) temp; |
| | | if(lad.loaner_application__r.Owner.ProfileId != null){ |
| | | if(passUserId.contains(String.valueOf(lad.loaner_application__r.Owner.ProfileId).subString(0,15))){ |
| | | |
| | | }else{ |
| | | userIdSet.add(lad.loaner_application__r.OwnerId); |
| | | usertypeMap.put(lad.loaner_application__r.OwnerId, lad.Equipment_Type__c); |
| | | leIdSet.add(lad.Loaner_Express__c); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //userList = [select id,Automatic_Received_Number__c,Return_Timeout_Number__c from User where id in : userIdSet]; |
| | | //明细 |
| | | List<Loaner_Express__c> leList = new List<Loaner_Express__c>(); |
| | | for(Loaner_Express__c le : [select id from Loaner_Express__c where id= :leIdSet]){ |
| | | le.NotReceivingNum__c = 0; |
| | | leList.add(le); |
| | | } |
| | | /*for(User temp : userList){ |
| | | |
| | | userMap.put(temp.id, temp); |
| | | |
| | | }*/ |
| | | |
| | | Map<String,loaner_application__c> updatLa = new Map<String,loaner_application__c>(); |
| | | Map<String,loaner_application__c> updatLa1 = new Map<String,loaner_application__c>(); |
| | | |
| | | |
| | | //判断明细是否超期 |
| | | for(sObject temp : scope){ |
| | | loaner_application_detail__c lad = (loaner_application_detail__c) temp; |
| | | //如果自动收货日期是今天或者今天之前,并且借用单是否自动收货是false并且没有收货日期。 |
| | | |
| | | if(lad.Automatic_Received_Date__c <= Date.today() |
| | | && lad.loaner_application__r.Is_Automatic_Received__c != true |
| | | && lad.Receipt_Date__c == null ){ |
| | | //借用单 |
| | | loaner_application__c la = new loaner_application__c(); |
| | | la.id = lad.loaner_application__c; |
| | | la.OwnerId = lad.loaner_application__r.OwnerId; |
| | | la.Is_Automatic_Received__c = true; |
| | | if(lad.loaner_application__r.Owner.ProfileId != null){ |
| | | if(passUserId.contains(String.valueOf(lad.loaner_application__r.Owner.ProfileId).subString(0,15))){ |
| | | |
| | | }else{ |
| | | autoMap.put(la.id, la); |
| | | } |
| | | } |
| | | lad.RAESD_Status__c = '申请者已收货'; |
| | | lad.Receipt_Status__c= 'OK'; |
| | | lad.Receipt_Date__c = Date.today(); |
| | | ladList.add(lad); |
| | | laIdSet.add(lad.loaner_application__c); |
| | | if(!updatLa.keySet().contains(la.id)){ |
| | | updatLa.put(la.Id, la); |
| | | } |
| | | |
| | | //updatLa.add(la); |
| | | } |
| | | //如果借出结束日是今天或者今天之前,并且是否超期是false |
| | | if(lad.loaner_application__r.Rental_End_Date__c <= Date.today() |
| | | && lad.loaner_application__r.Is_time_out__c != true ){ |
| | | loaner_application__c la = new loaner_application__c(); |
| | | la.id = lad.loaner_application__c; |
| | | la.OwnerId = lad.loaner_application__r.OwnerId; |
| | | la.Is_time_out__c = true; |
| | | if(!updatLa1.keySet().contains(la.id)){ |
| | | updatLa1.put(la.Id, la); |
| | | } |
| | | |
| | | //updatLa1.add(la); |
| | | if(lad.loaner_application__r.Owner.ProfileId != null){ |
| | | if(passUserId.contains(String.valueOf(lad.loaner_application__r.Owner.ProfileId).subString(0,15))){ |
| | | |
| | | }else{ |
| | | timeoutMap.put(la.id, la); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | system.debug(timeoutSet); |
| | | system.debug(autoSet); |
| | | autoSet.addAll(autoMap.values()); |
| | | timeoutSet.addAll(timeoutMap.values()); |
| | | |
| | | |
| | | //自动收货 |
| | | /*for(sObject temp : scope){ |
| | | loaner_application_detail__c lad = (loaner_application_detail__c) temp; |
| | | |
| | | if(lad.Automatic_Received_Date__c <= Date.today() && lad.Receipt_Date__c == null){ |
| | | lad.RAESD_Status__c = '申请者已收货'; |
| | | lad.Receipt_Status__c= 'OK'; |
| | | lad.Receipt_Date__c = Date.today(); |
| | | ladList.add(lad); |
| | | laIdSet.add(lad.loaner_application__c); |
| | | } |
| | | }*/ |
| | | |
| | | //List<User> autoUser = new List<User>(); |
| | | List<User> timeoutUser = new List<User>(); |
| | | List<loaner_application__c> autoList = new List<loaner_application__c>(); |
| | | List<loaner_application__c> timeoutList = new List<loaner_application__c>(); |
| | | |
| | | List<User_Violations__c> ulList = [select id,Violations_User__c,Violations_reason__c from User_Violations__c where Is_effective__c = true and Violations_User__c in : userIdSet]; |
| | | Map<String,Integer> uvMap = new Map<String,Integer>(); |
| | | Map<String,Integer> uvMap2 = new Map<String,Integer>(); |
| | | |
| | | //统计现在系统中已有的违规次数 |
| | | for(User_Violations__c uv : ulList){ |
| | | /*if(uv.Violations_reason__c == '系统自动收货'){ |
| | | if(uvMap.containsKey(uv.Violations_User__c)){ |
| | | uvMap.put(uv.Violations_User__c, uvMap.get(uv.Violations_User__c)+1); |
| | | }else{ |
| | | uvMap.put(uv.Violations_User__c, 1); |
| | | } |
| | | } |
| | | if(uv.Violations_reason__c == '超期未归还'){ |
| | | if(uvMap2.containsKey(uv.Violations_User__c)){ |
| | | uvMap2.put(uv.Violations_User__c, uvMap2.get(uv.Violations_User__c)+1); |
| | | }else{ |
| | | uvMap2.put(uv.Violations_User__c, 1); |
| | | } |
| | | }*/ |
| | | |
| | | if(uvMap.containsKey(uv.Violations_User__c)){ |
| | | uvMap.put(uv.Violations_User__c, uvMap.get(uv.Violations_User__c)+1); |
| | | }else{ |
| | | uvMap.put(uv.Violations_User__c, 1); |
| | | } |
| | | } |
| | | |
| | | |
| | | Map<String,List<User_Violations__c>> newMap = new Map<String,List<User_Violations__c>>(); |
| | | List<loaner_application__c> laList = new List<loaner_application__c>(); |
| | | system.debug(autoSet); |
| | | if(autoSet.size()>0){ |
| | | laList = [select id,Approver__c,loaner_Manager__c,ApproveManager__c from loaner_application__c where id in :autoMap.keySet()]; |
| | | for(loaner_application__c la : autoSet){ |
| | | //User user = userMap.get(la.OwnerId); |
| | | /*if(user == null){ |
| | | break; |
| | | }*/ |
| | | //userMap.get(la.OwnerId).Automatic_Received_Number__c = (userMap.get(la.OwnerId).Automatic_Received_Number__c == null? 0 : userMap.get(la.OwnerId).Automatic_Received_Number__c ) + 1; |
| | | |
| | | if(autolaId.contains(la.Id)){ |
| | | |
| | | }else{ |
| | | loaner_application__c la1 = new loaner_application__c(); |
| | | for(loaner_application__c la2 : laList){ |
| | | if(la2.Id == la.Id){ |
| | | la1 = la2; |
| | | } |
| | | } |
| | | User_Violations__c uv = new User_Violations__c(); |
| | | uv.Violations_User__c = la.OwnerId; |
| | | uv.Violations_Loaner__c = la.id; |
| | | uv.Violations_reason__c = '系统自动收货'; |
| | | uv.ApplyPerson__c = la1.Approver__c; |
| | | uv.loaner_Manager__c = la1.loaner_Manager__c; |
| | | uv.ApproveManager__c = la1.ApproveManager__c; |
| | | if(newMap.containsKey(uv.Violations_User__c)){ |
| | | newMap.get(uv.Violations_User__c).add(uv); |
| | | }else{ |
| | | List<User_Violations__c> uvlist = new List<User_Violations__c>(); |
| | | uvlist.add(uv); |
| | | newMap.put(uv.Violations_User__c,uvlist); |
| | | } |
| | | autolaId.add(la.Id); |
| | | //autoUser.add(user); |
| | | } |
| | | } |
| | | } |
| | | |
| | | Map<String,List<User_Violations__c>> newMap2 = new Map<String,List<User_Violations__c>>(); |
| | | system.debug(timeoutSet); |
| | | if(timeoutSet.size()>0){ |
| | | laList = [select id,Approver__c,loaner_Manager__c,ApproveManager__c from loaner_application__c where id in :timeoutMap.keySet()]; |
| | | for(loaner_application__c la : timeoutSet){ |
| | | //User user = userMap.get(la.OwnerId); |
| | | /* if(user == null){ |
| | | break; |
| | | }*/ |
| | | // user.Return_Timeout_Number__c = (user.Return_Timeout_Number__c == null ? 0 : user.Return_Timeout_Number__c ) +1; |
| | | //timeoutUser.add(user); |
| | | //userMap.put(la.OwnerId,user); |
| | | |
| | | if(outlaId.contains(la.Id)){ |
| | | |
| | | }else{ |
| | | |
| | | loaner_application__c la1 = new loaner_application__c(); |
| | | for(loaner_application__c la2 : laList){ |
| | | if(la2.Id == la.Id){ |
| | | la1 = la2; |
| | | } |
| | | } |
| | | |
| | | User_Violations__c uv = new User_Violations__c(); |
| | | uv.Violations_User__c = la.OwnerId; |
| | | uv.Violations_Loaner__c = la.id; |
| | | uv.Violations_reason__c = '超期未归还'; |
| | | uv.ApplyPerson__c = la1.Approver__c; |
| | | uv.loaner_Manager__c = la1.loaner_Manager__c; |
| | | uv.ApproveManager__c = la1.ApproveManager__c; |
| | | |
| | | /*if(newMap2.containsKey(uv.Violations_User__c)){ |
| | | newMap2.get(uv.Violations_User__c).add(uv); |
| | | }else{ |
| | | List<User_Violations__c> uvlist = new List<User_Violations__c>(); |
| | | uvlist.add(uv); |
| | | newMap2.put(uv.Violations_User__c,uvlist); |
| | | }*/ |
| | | if(newMap.containsKey(uv.Violations_User__c)){ |
| | | newMap.get(uv.Violations_User__c).add(uv); |
| | | }else{ |
| | | List<User_Violations__c> uvlist = new List<User_Violations__c>(); |
| | | uvlist.add(uv); |
| | | newMap.put(uv.Violations_User__c,uvlist); |
| | | } |
| | | outlaId.add(la.Id); |
| | | } |
| | | } |
| | | } |
| | | |
| | | system.debug(newMap.values()); |
| | | system.debug(newMap2.values()); |
| | | |
| | | List<User_Violations__c> updateList = new List<User_Violations__c>(); |
| | | for(String str : newMap.keySet()){ |
| | | if(usertypeMap.get(str) == 'NDT' ||usertypeMap.get(str) == 'ANI'){ |
| | | if(uvMap.containsKey(str)){ |
| | | if(newMap.containsKey(str)){ |
| | | if((uvMap.get(str) + newMap.get(str).size()) >= 1 && uvMap.get(str) < 1){ |
| | | newMap.get(str)[0].Is_locking__c = true; |
| | | newMap.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | }else{ |
| | | if(newMap.containsKey(str)){ |
| | | if(newMap.get(str).size() >= 1 ){ |
| | | newMap.get(str)[0].Is_locking__c = true; |
| | | newMap.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | if(uvMap.containsKey(str)){ |
| | | if(newMap.containsKey(str)){ |
| | | if((uvMap.get(str) + newMap.get(str).size()) >= 2 && uvMap.get(str) < 2){ |
| | | newMap.get(str)[0].Is_locking__c = true; |
| | | newMap.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | }else{ |
| | | if(newMap.containsKey(str)){ |
| | | if(newMap.get(str).size() >= 2 ){ |
| | | newMap.get(str)[0].Is_locking__c = true; |
| | | newMap.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | updateList.addAll(newMap.get(str)); |
| | | } |
| | | |
| | | /*for(String str : newMap2.keySet()){ |
| | | if(uvMap2.containsKey(str)){ |
| | | if(newMap2.containsKey(str)){ |
| | | if((uvMap2.get(str) + newMap2.get(str).size()) == 2 && uvMap2.get(str) != 2){ |
| | | newMap2.get(str)[0].Is_locking__c = true; |
| | | newMap2.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | }else{ |
| | | if(newMap2.containsKey(str)){ |
| | | if(newMap2.get(str).size() >= 2 ){ |
| | | newMap2.get(str)[0].Is_locking__c = true; |
| | | newMap2.get(str)[0].Locking_Start_Date__c = Date.today(); |
| | | } |
| | | } |
| | | } |
| | | updateList.addAll(newMap2.get(str)); |
| | | }*/ |
| | | |
| | | system.debug('updateList:' + updateList); |
| | | insert updateList; |
| | | |
| | | //update userMap.values(); |
| | | |
| | | if(ladList.size()>0){ |
| | | update ladList; |
| | | } |
| | | if(leList.size()>0){ |
| | | update leList; |
| | | } |
| | | if(updatLa.size()>0){ |
| | | update updatLa.values(); |
| | | } |
| | | if(updatLa1.size()>0){ |
| | | update updatLa1.values(); |
| | | } |
| | | |
| | | if(laIdSet.size()>0){ |
| | | laList = [select id,Count_SendOut__c,Count_ApplicantReceived__c from loaner_application__c where id = :laIdSet and Status__c = '全部发货']; |
| | | for(loaner_application__c la : laList){ |
| | | if(la.Count_SendOut__c == la.Count_ApplicantReceived__c){ |
| | | la.Status__c = '申请者已收货'; |
| | | } |
| | | } |
| | | update laList; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | List<User_Violations__c> uvList = [select id,Violations_User__c,Is_locking__c,Violations_reason__c from User_Violations__c where Is_effective__c = true order by Violations_User__c]; |
| | | Map<String,Integer> userMap = new Map<String,Integer>(); |
| | | Map<String,Integer> userMap2 = new Map<String,Integer>(); |
| | | |
| | | Map<String,String> user_vMap = new Map<String,String>(); |
| | | |
| | | for(User_Violations__c uv : uvList){ |
| | | if(uv.Violations_reason__c == '超期未归还'){ |
| | | if(userMap.containsKey(uv.Violations_User__c)){ |
| | | userMap.put(uv.Violations_User__c, userMap.get(uv.Violations_User__c)+1); |
| | | }else{ |
| | | userMap.put(uv.Violations_User__c, 1); |
| | | } |
| | | }else if(uv.Violations_reason__c == '系统自动收货'){ |
| | | if(userMap2.containsKey(uv.Violations_User__c)){ |
| | | userMap2.put(uv.Violations_User__c, userMap2.get(uv.Violations_User__c)+1); |
| | | }else{ |
| | | userMap2.put(uv.Violations_User__c, 1); |
| | | } |
| | | } |
| | | if(uv.Is_locking__c == true){ |
| | | user_vMap.put(uv.Violations_User__c,uv.Id); |
| | | } |
| | | } |
| | | system.debug(user_vMap); |
| | | Map<String,User> userList = new Map<String,User>(); |
| | | |
| | | for(String userId : userMap.keySet()){ |
| | | User user = new User(); |
| | | user.Id = userId; |
| | | user.Return_Timeout_Number__c = userMap.get(userId); |
| | | if(user_vMap.containsKey(userId)){ |
| | | user.ViolationsID__c = user_vMap.get(userId); |
| | | } |
| | | userList.put(user.Id, user); |
| | | } |
| | | |
| | | for(String userId : userMap2.keySet()){ |
| | | User user = new User(); |
| | | if(userList.containsKey(userId)){ |
| | | user = userList.get(userId); |
| | | user.Automatic_Received_Number__c = userMap2.get(userId); |
| | | }else{ |
| | | user.Id = userId; |
| | | user.Automatic_Received_Number__c = userMap2.get(userId); |
| | | } |
| | | |
| | | if(user_vMap.containsKey(userId)){ |
| | | user.ViolationsID__c = user_vMap.get(userId); |
| | | } |
| | | userList.put(user.Id, user); |
| | | } |
| | | |
| | | |
| | | system.debug(userList); |
| | | List<User> updateList = userList.values(); |
| | | update updateList; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class BreachRecordBatchTest { |
| | | |
| | | @isTest static void test_method_one() { |
| | | OlympusCalendar__c ocq = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c ocw = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oce = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4r = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5q = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6q = new OlympusCalendar__c(Date__c = Date.today().addDays(-6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c ocww = new OlympusCalendar__c(Date__c = Date.today().addDays(-7), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c ocwww= new OlympusCalendar__c(Date__c = Date.today().addDays(-8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c ocew = new OlympusCalendar__c(Date__c = Date.today().addDays(-9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4rw = new OlympusCalendar__c(Date__c = Date.today().addDays(-10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5qw = new OlympusCalendar__c(Date__c = Date.today().addDays(-11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6qw = new OlympusCalendar__c(Date__c = Date.today().addDays(-12), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,ocq,ocw,oce,oc4r,oc5q,oc6q, ocww,ocwww,ocew,oc4rw,oc5qw,oc6qw}; |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | //List<RecordType> rectus = [select Id from RecordType where IsActive = true and SobjectType = 'User' and Name = 'Customer IE']; |
| | | |
| | | User user = new User(); |
| | | user.LastName = 'test'; |
| | | user.FirstName = 'test'; |
| | | user.Alias = 'test'; |
| | | user.Email = 'test@test.com'; |
| | | user.Username = 'test111@test222.com'; |
| | | user.CommunityNickname = 'test'; |
| | | user.IsActive = true; |
| | | user.EmailEncodingKey = 'ISO-2022-JP'; |
| | | user.TimeZoneSidKey = 'Asia/Tokyo'; |
| | | user.LocaleSidKey = 'ja_JP'; |
| | | user.LanguageLocaleKey = 'ja'; |
| | | user.ProfileId = System.Label.SystemAdmin; |
| | | insert user; |
| | | |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner.Status__c = '部分发货'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | loaner.Rental_End_Date__c = Date.today().addDays(-2); |
| | | loaner.OwnerId = user.Id; |
| | | |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | |
| | | loaner_application__c loaner1 = new loaner_application__c(); |
| | | loaner1.Name = 'TEST'; |
| | | loaner1.RecordTypeId = rectLo[0].id; |
| | | loaner1.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner1.DEMO_PURPOSE__C = '演示'; |
| | | loaner1.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner1.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner1.Status__c = '部分发货'; |
| | | loaner1.Return_Track_Company__c = '物流公司'; |
| | | loaner1.Rental_End_Date__c = Date.today().addDays(+3); |
| | | loaner1.OwnerId = user.Id; |
| | | |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner1; |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '申请者已收货'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '申请者已收货'; |
| | | //detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner1.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.Automatic_Received_Date__c = Date.today().addDays(-1); |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | Loaner_Express__c le = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id |
| | | ); |
| | | |
| | | insert le; |
| | | In_detail[2].Loaner_Express__c = le.Id; |
| | | le.Consignor_LogisticsNumber__c ='test123123'; |
| | | le.Consignor_LogisticsCompany__c = 'testCompany'; |
| | | le.Shipment_Request_Date__c = Date.today(); |
| | | le.NotReceivingNum__c = 1; |
| | | update le; |
| | | update In_detail; |
| | | |
| | | le.Consignor_LogisticsNumber__c = '3232323'; |
| | | update le; |
| | | |
| | | Loaner_Express__c le1 = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id |
| | | ); |
| | | |
| | | insert le1; |
| | | //BreachRecordBatch.come(); |
| | | List<String> idList = new List<String>(); |
| | | for(loaner_application_detail__c lad : In_detail){ |
| | | idList.add(lad.id); |
| | | } |
| | | |
| | | System.debug(idList.size()+'1111111111111111111111111'); |
| | | Database.executeBatch(new BreachRecordBatch(idList), 20); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class BreachRecordSchedulable implements Schedulable { |
| | | global void execute(SchedulableContext sc) { |
| | | //MyBatchClass b = new MyBatchClass(); |
| | | //database.executebatch(b); |
| | | Id execBTId = Database.executeBatch(new BreachRecordBatch(), 200); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class BreachRecordSchedulableTest { |
| | | |
| | | static testMethod void testExecute() { |
| | | // This test runs a scheduled job at midnight Sept. 3rd. 2022 |
| | | String CRON_EXP = '0 0 0 3 9 ? 2032'; |
| | | |
| | | System.Test.startTest(); |
| | | // Schedule the test job |
| | | String jobId = system.schedule('BreachRecordSchedulableTest', CRON_EXP, new BreachRecordSchedulable()); |
| | | // Get the information from the CronTrigger API object |
| | | CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId]; |
| | | // Verify the expressions are the same |
| | | System.assertEquals(CRON_EXP, ct.CronExpression); |
| | | // Verify the job has not run |
| | | System.assertEquals(0, ct.TimesTriggered); |
| | | // Verify the next time the job will run |
| | | System.assertEquals('2032-09-03 00:00:00', String.valueOf(ct.NextFireTime)); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class BusinessActivityHandler { |
| | | |
| | | public static void ValidDaysBetweenTwoWorkingDays(List<BusinessActivity__c> newList, Map<Id, BusinessActivity__c> newMap, List<BusinessActivity__c> oldList, Map<Id, BusinessActivity__c> oldMap) { |
| | | |
| | | Map<String, Date> dateRangeMap = new Map<String, Date>(); |
| | | // 是否需要初始化一个日期如 1970-01-01 |
| | | Date bigDate = Date.today();//Date.newInstance(1970,1, 1); |
| | | Date smaDate = Date.today();//Date.newInstance(4000, 12, 31); |
| | | dateRangeMap.put('BigDate', bigDate); |
| | | dateRangeMap.put('SmaDate', smaDate); |
| | | Map<String, User_FaultInfo__c> updateUserFaultInfoMap = new Map<String, User_FaultInfo__c>(); |
| | | for (BusinessActivity__c ba : newList) { |
| | | |
| | | // 报告日期(后台用) |
| | | if (ba.AgreeReportDate__c != null) { |
| | | |
| | | if (ba.AgreeReportDate__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.AgreeReportDate__c); |
| | | } |
| | | |
| | | if (ba.AgreeReportDate__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.AgreeReportDate__c ); |
| | | } |
| | | } |
| | | |
| | | |
| | | // 要求服务日期 |
| | | if (ba.BusinessADateRequest__c != null) { |
| | | |
| | | if (ba.BusinessADateRequest__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.BusinessADateRequest__c); |
| | | } |
| | | |
| | | if (ba.BusinessADateRequest__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.BusinessADateRequest__c ); |
| | | } |
| | | |
| | | } |
| | | // 案件完成日 |
| | | if (ba.BusinessACompletionDate__c != null) { |
| | | if (ba.BusinessACompletionDate__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.BusinessACompletionDate__c); |
| | | } |
| | | |
| | | if (ba.BusinessACompletionDate__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.BusinessACompletionDate__c ); |
| | | } |
| | | } |
| | | // 同意报价日期 |
| | | if (ba.BusinessADateApproval__c != null) { |
| | | if (ba.BusinessADateApproval__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.BusinessADateApproval__c); |
| | | } |
| | | |
| | | if (ba.BusinessADateApproval__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.BusinessADateApproval__c ); |
| | | } |
| | | } |
| | | // 报价日期 |
| | | if (ba.BusinessADateQuotation__c != null) { |
| | | if (ba.BusinessADateQuotation__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.BusinessADateQuotation__c); |
| | | } |
| | | |
| | | if (ba.BusinessADateQuotation__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.BusinessADateQuotation__c ); |
| | | } |
| | | } |
| | | // 报修日期 |
| | | if (ba.BusinessARepairDate__c != null) { |
| | | if (ba.BusinessARepairDate__c > dateRangeMap.get('BigDate')) { |
| | | dateRangeMap.put('BigDate', ba.BusinessARepairDate__c); |
| | | } |
| | | |
| | | if (ba.BusinessARepairDate__c < dateRangeMap.get('SmaDate')) { |
| | | dateRangeMap.put('SmaDate', ba.BusinessARepairDate__c ); |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (dateRangeMap.size() > 0) { |
| | | if (dateRangeMap.size() > 0) { |
| | | System.debug('SmaDate--->' + dateRangeMap.get('SmaDate')); |
| | | System.debug('BigDate--->' + dateRangeMap.get('BigDate')); |
| | | Map<String, OlympusCalendar__c> olyCalendarMap = calendarUtil.getCalendarMap(dateRangeMap.get('SmaDate').addDays(-40), dateRangeMap.get('BigDate').addDays(15)); |
| | | System.debug(olyCalendarMap); |
| | | for (BusinessActivity__c ba : newList) { |
| | | // 派遣周期 |
| | | if ( ba.BusinessASegment__c == 'IE' || ba.BusinessASegment__c == 'LS') { |
| | | |
| | | if (ba.BusinessADateRequest__c == null || //[要求服务日期]=空 |
| | | ba.BusinessAServicePlace__c == '站内' || //[服务场所]=”站内“ |
| | | ba.BusinessAServiceCategory__c == 'Sevice' || //[服务范畴]="service" |
| | | ba.BusinessAServiceCategory__c == 'Association' ) {// [服务范畴]="Association" |
| | | // 派遣周期 置空 |
| | | ba.BusinessADispatchTime__c = null; |
| | | } else { |
| | | if (ba.BusinessAServiceCategory__c == 'Repair' && //[服务范畴]="Repair" |
| | | ba.BusinessAServicePlace__c == '现场') {//[服务场所]=“现场” |
| | | Date beginDate = null; |
| | | Date endDate = null ; |
| | | if (ba.AgreeReportDate__c >= ba.BusinessADateRequest__c) { |
| | | beginDate = ba.BusinessADateRequest__c; |
| | | endDate = ba.AgreeReportDate__c; |
| | | } else { |
| | | beginDate = ba.AgreeReportDate__c; |
| | | endDate = ba.BusinessADateRequest__c; |
| | | } |
| | | Integer count = calendarUtil.getNumfromCalendarMap(olyCalendarMap, beginDate, endDate); |
| | | if (count < 1) { |
| | | count = 0 ; |
| | | } else if (count > 1) { |
| | | count = count - 1; |
| | | } |
| | | ba.BusinessADispatchTime__c = count; |
| | | // [报告日期]- [要求服务日期] 判断哪个日期小 |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | // RVI/NDT不需要计算派遣周期 因此直接置空 |
| | | ba.BusinessADispatchTime__c = null; |
| | | } |
| | | |
| | | // 维修周期 |
| | | if (ba.BusinessACompletionDate__c == null || // [案件完成日]=空 |
| | | ba.BusinessAServiceCategory__c == 'Sevice' || //[服务范畴]="service" |
| | | ba.BusinessAServiceCategory__c == 'Association') {//[服务范畴]="Association" |
| | | // 维修周期 = null |
| | | ba.BusinessAMaintainTime__c = null; |
| | | } else { |
| | | if (ba.BusinessAServiceCategory__c == 'Repair') {//[服务范畴]="Repair" |
| | | if (ba.BusinessANatureService__c == '有偿' ) {//[服务性质]="有偿" |
| | | if (ba.BusinessADateApproval__c == null) {//[同意报价日]=空 |
| | | // 维修周期 = null |
| | | ba.BusinessAMaintainTime__c = null; |
| | | continue; |
| | | } else { |
| | | Date beginDate = ba.BusinessADateApproval__c; //同意报价日期 |
| | | Date endDate = ba.BusinessACompletionDate__c ;//案件完成日 |
| | | Integer count = calendarUtil.getNumfromCalendarMap(olyCalendarMap, beginDate, endDate); |
| | | if (count < 1) { |
| | | count = 0 ; |
| | | } else if (count > 1) { |
| | | count = count - 1; |
| | | } |
| | | ba.BusinessAMaintainTime__c = count; |
| | | // networkday [案件完成日](大)- [同意报价日期](小) |
| | | } |
| | | |
| | | } else if (ba.BusinessANatureService__c == '无偿' ) { |
| | | Date beginDate = ba.AgreeReportDate__c;//报告日期 |
| | | Date endDate = ba.BusinessACompletionDate__c ;//案件完成日 |
| | | Integer count = calendarUtil.getNumfromCalendarMap(olyCalendarMap, beginDate, endDate); |
| | | if (count < 1) { |
| | | count = 0 ; |
| | | } else if (count > 1) { |
| | | count = count - 1; |
| | | } |
| | | ba.BusinessAMaintainTime__c = count; |
| | | // networkday [案件完成日]- [报告日期] |
| | | } |
| | | } |
| | | } |
| | | // 停机时间 |
| | | if ( ba.BusinessACompletionDate__c == null || //[案件完成日]=空 |
| | | ba.BusinessARepairDate__c == null || //[报修日期]=空 |
| | | ba.BusinessAServiceCategory__c == 'Sevice' || //[服务范畴]="Sevice" |
| | | ba.BusinessAServiceCategory__c == 'Association' ) {//[服务范畴]="Association" |
| | | // 停机时间 = null |
| | | ba.BusinessADowntime__c = null ; |
| | | } else { |
| | | Date beginDate1 = ba.BusinessARepairDate__c;//报修日期 |
| | | Date endDate1 = ba.BusinessACompletionDate__c ;//案件完成日 |
| | | Integer count1 = calendarUtil.getNumfromCalendarMap(olyCalendarMap, beginDate1, endDate1); |
| | | if (ba.BusinessAServiceCategory__c == 'Repair') { |
| | | if (ba.BusinessANatureService__c == '有偿' ) { |
| | | if (ba.BusinessADateQuotation__c == null || //报价日期 |
| | | ba.BusinessADateApproval__c == null) { //同意报价日期 |
| | | |
| | | ba.BusinessADowntime__c = null; |
| | | continue; |
| | | } |
| | | Date beginDate2 = ba.BusinessADateQuotation__c;//报价日期 |
| | | Date endDate2 = ba.BusinessADateApproval__c ;//同意报价日期 |
| | | Integer count2 = calendarUtil.getNumfromCalendarMap(olyCalendarMap, beginDate2, endDate2); |
| | | // networkday [案件完成日]- [报修日期]-networkday [同意报价日期]- [报价日期] |
| | | if (count1 - count2 < 1) { |
| | | ba.BusinessADowntime__c = 0; |
| | | } else { |
| | | ba.BusinessADowntime__c = count1 - count2 - 1; |
| | | } |
| | | |
| | | } else if (ba.BusinessANatureService__c == '无偿' ) { |
| | | // networkday [案件完成日]- [报修日期] |
| | | |
| | | if (count1 < 1) { |
| | | count1 = 0 ; |
| | | } else { |
| | | count1 = count1 - 1; |
| | | } |
| | | ba.BusinessADowntime__c = count1; |
| | | } |
| | | } |
| | | } |
| | | if (String.isNotBlank(ba.User_FaultInfo__c) && ba.BusinessAFirstSubmission__c != null) { |
| | | User_FaultInfo__c updateUserFaultInfo = new User_FaultInfo__c(); |
| | | updateUserFaultInfo.Id = ba.User_FaultInfo__c; |
| | | updateUserFaultInfo.UserFaultInfoDispatchTime__c = ba.BusinessADispatchTime__c ; //派遣周期 |
| | | updateUserFaultInfo.UserFaultInfoMaintainTime__c = ba.BusinessAMaintainTime__c;//维修周期 |
| | | updateUserFaultInfo.UserFaultInfoDowntime__c = ba.BusinessADowntime__c;//停机时间 |
| | | updateUserFaultInfoMap.put(ba.User_FaultInfo__c, updateUserFaultInfo); |
| | | } |
| | | } |
| | | |
| | | if (updateUserFaultInfoMap != null && updateUserFaultInfoMap.size() > 0) { |
| | | update updateUserFaultInfoMap.values(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | // 汇总TS日报关联的业务活动的管理编码 |
| | | public static void TSRepairManagementCode(List<BusinessActivity__c> newList, Map<Id, BusinessActivity__c> newMap, List<BusinessActivity__c> oldList, Map<Id, BusinessActivity__c> oldMap) { |
| | | Map<String, String> tSRepairIdMap = new Map<String, String>(); |
| | | |
| | | if (Trigger.isDelete) { |
| | | // 待删除的业务活动 |
| | | Map<String, String> pendingDeleteMap = new Map<String, String>(); |
| | | |
| | | for (BusinessActivity__c ba : oldList) { |
| | | // 获取业务活动的TS日报 |
| | | if (String.isNotBlank(ba.BusinessATS__c)) { |
| | | tSRepairIdMap.put(ba.BusinessATS__c, ba.BusinessATS__c); |
| | | pendingDeleteMap.put(ba.Id, ba.FindManagementCode__c); |
| | | } |
| | | } |
| | | |
| | | if (tSRepairIdMap != null && tSRepairIdMap.size() > 0) { |
| | | updateTSRepair(tSRepairIdMap,pendingDeleteMap); |
| | | } |
| | | } else if (Trigger.isInsert || Trigger.isUpdate) { |
| | | // Trigger.isInsert 业务活动 选择 已有的用户/故障信息,将管理编码汇总 |
| | | for (BusinessActivity__c ba : newList) { |
| | | // 获取业务活动的TS日报 |
| | | if (String.isNotBlank(ba.BusinessATS__c) && String.isNotBlank(ba.FindManagementCode__c)) { |
| | | tSRepairIdMap.put(ba.BusinessATS__c, ba.BusinessATS__c); |
| | | } |
| | | } |
| | | |
| | | if (tSRepairIdMap != null && tSRepairIdMap.size() > 0) { |
| | | Map<String, String> pendingDeleteMap = new Map<String, String>(); |
| | | updateTSRepair(tSRepairIdMap,pendingDeleteMap); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void updateTSRepair(Map<String, String> tSRepairIdMap,Map<String, String> pendingDeleteMap) { |
| | | List<BusinessActivity__c> getBusinessActivity = new List<BusinessActivity__c>(); |
| | | // 查找业务活动 |
| | | getBusinessActivity = [select Id, Name, ManagementCode__c, FindManagementCode__c, BusinessATS__c,TSRepairManagementCode__c from BusinessActivity__c where BusinessATS__c In:tSRepairIdMap.keySet() order by Id]; |
| | | Map<String, String> updateTSRepairMap = new Map<String, String>(); |
| | | for (BusinessActivity__c ba : getBusinessActivity) { |
| | | // 判断是否在待删除的Map中,不在 将 管理编码汇总 |
| | | if (!pendingDeleteMap.containsKey(ba.Id)) { |
| | | if (String.isNotBlank(ba.FindManagementCode__c)) { |
| | | String managementCode = ba.FindManagementCode__c; |
| | | if (updateTSRepairMap.containsKey(ba.BusinessATS__c)) { |
| | | managementCode = updateTSRepairMap.get(ba.BusinessATS__c); |
| | | managementCode += ';' + ba.FindManagementCode__c; |
| | | |
| | | } |
| | | updateTSRepairMap.put(ba.BusinessATS__c, managementCode); |
| | | } |
| | | |
| | | } else { |
| | | // 待删除的业务活动的管理编码与 TS日报 汇总的管理编码 相同 ,清空 TS日报的 管理编码 |
| | | if (ba.FindManagementCode__c == ba.TSRepairManagementCode__c) { |
| | | updateTSRepairMap.put(ba.BusinessATS__c, ''); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (updateTSRepairMap != null && updateTSRepairMap.size() > 0) { |
| | | |
| | | List<TS_Repair__c> updateTSRepairList = new List<TS_Repair__c>(); |
| | | for (String tSRepairId : updateTSRepairMap.keySet() ) { |
| | | TS_Repair__c tSRepair = new TS_Repair__c(); |
| | | tSRepair.Id = tSRepairId; |
| | | tSRepair.TSRepairManagementCode__c = updateTSRepairMap.get(tSRepairId); |
| | | updateTSRepairList.add(tSRepair); |
| | | } |
| | | |
| | | if (updateTSRepairList.size() > 0) { |
| | | |
| | | update updateTSRepairList; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class BusinessActivityHandlerTest { |
| | | public static TS_Repair__c tsr; |
| | | public static TS_Repair__c tsr2; |
| | | public static BusinessActivity__c ba1; |
| | | public static BusinessActivity__c ba2; |
| | | public static BusinessActivity__c ba3; |
| | | public static BusinessActivity__c ba4; |
| | | |
| | | public static User_FaultInfo__c uf1; |
| | | public static User_FaultInfo__c uf2; |
| | | public static User_FaultInfo__c uf3; |
| | | |
| | | public static FailureAsset__c fa1; |
| | | public static FailureAsset__c fa2; |
| | | public static FailureAsset__c fa3; |
| | | static void basicData() { |
| | | |
| | | tsr = new TS_Repair__c(); |
| | | tsr.TSReportDate__c = Date.today(); |
| | | tsr.TSRepairManagementCode__c = 'TestName'; |
| | | insert tsr; |
| | | tsr2 = new TS_Repair__c(); |
| | | tsr2.TSReportDate__c = Date.today(); |
| | | insert tsr2; |
| | | |
| | | uf1 = new User_FaultInfo__c(); |
| | | insert uf1; |
| | | fa1 = new FailureAsset__c(); |
| | | fa1.model__c = 'test1'; |
| | | fa1.FAUserFaultInfo__c = uf1.Id; |
| | | insert fa1; |
| | | ba1 = new BusinessActivity__c(); |
| | | ba1.BusinessATS__c = tsr.Id; |
| | | ba1.workingHours__c = 2; |
| | | ba1.BusinessAApprovalOpinion__c = '同意'; |
| | | ba1.User_FaultInfo__c = uf1.Id; |
| | | ba1.AgreeReportDate__c = Date.today().addDays(-2);//报告日期(后台用) |
| | | ba1.BusinessADateRequest__c = Date.today().addDays(-3);//要求服务日期 |
| | | ba1.BusinessACompletionDate__c = Date.today().addDays(-2);//案件完成日 |
| | | ba1.BusinessADateApproval__c= Date.today().addDays(-2);//同意报价日期 |
| | | ba1.BusinessADateQuotation__c= Date.today().addDays(-2);// 报价日期 |
| | | ba1.BusinessARepairDate__c= Date.today().addDays(-2);//报修日期 |
| | | ba1.BusinessASegment__c = 'LS'; |
| | | ba1.BusinessAServicePlace__c = '现场'; |
| | | ba1.serviceType__c = '硬件修理'; |
| | | ba1.BusinessAServiceCategory__c = 'Repair'; |
| | | |
| | | ba1.BusinessANatureService__c = '有偿'; |
| | | ba1.BusinessAFirstSubmission__c = Datetime.now(); |
| | | insert ba1; |
| | | |
| | | ba4 = new BusinessActivity__c(); |
| | | ba4.BusinessATS__c = tsr.Id; |
| | | ba4.workingHours__c = 7; |
| | | ba4.BusinessAApprovalOpinion__c = ''; |
| | | ba4.User_FaultInfo__c = uf1.Id; |
| | | |
| | | ba4.AgreeReportDate__c = Date.today().addDays(1);//报告日期(后台用) |
| | | ba4.BusinessADateRequest__c = Date.today().addDays(2);//要求服务日期 |
| | | ba4.BusinessACompletionDate__c = Date.today().addDays(1);//案件完成日 |
| | | ba4.BusinessADateApproval__c= Date.today().addDays(4);//同意报价日期 |
| | | ba4.BusinessADateQuotation__c= Date.today().addDays(1);// 报价日期 |
| | | ba4.BusinessARepairDate__c= Date.today().addDays(-3);//报修日期 |
| | | ba4.BusinessASegment__c = 'LS'; |
| | | ba4.BusinessAServicePlace__c = '现场'; |
| | | ba4.serviceType__c = '硬件修理'; |
| | | ba4.BusinessAServiceCategory__c = 'Repair'; |
| | | |
| | | ba4.BusinessANatureService__c = '无偿'; |
| | | ba4.BusinessAFirstSubmission__c = Datetime.now(); |
| | | insert ba4; |
| | | |
| | | |
| | | BusinessActivity__c ba5 = new BusinessActivity__c(); |
| | | ba5.FindManagementCode__c = 'TestName'; |
| | | ba5.BusinessATS__c = tsr.Id; |
| | | ba5.workingHours__c = 7; |
| | | ba5.BusinessAApprovalOpinion__c = ''; |
| | | ba5.User_FaultInfo__c = uf1.Id; |
| | | ba5.BusinessASegment__c = 'RVI'; |
| | | ba5.serviceType__c = '产品安装'; |
| | | ba5.BusinessAServiceCategory__c = 'Sevice'; |
| | | |
| | | insert ba5; |
| | | update ba5; |
| | | BusinessActivity__c ba6 = ba5.clone(); |
| | | ba6.BusinessASegment__c = 'LS'; |
| | | ba6.BusinessAServicePlace__c = '现场'; |
| | | ba6.serviceType__c = '硬件修理'; |
| | | ba6.BusinessAServiceCategory__c = 'Repair'; |
| | | |
| | | ba6.BusinessANatureService__c = '有偿'; |
| | | insert ba6; |
| | | |
| | | delete ba6; |
| | | // uf2 = new User_FaultInfo__c(); |
| | | // insert uf2; |
| | | // fa2 = new FailureAsset__c(); |
| | | // fa2.model__c = 'test2'; |
| | | // fa2.FAUserFaultInfo__c = uf2.Id; |
| | | // insert fa2; |
| | | // ba2 = new BusinessActivity__c(); |
| | | // ba2.BusinessATS__c = tsr2.Id; |
| | | // ba2.workingHours__c = 2; |
| | | // ba2.User_FaultInfo__c = uf2.Id; |
| | | // insert ba2; |
| | | |
| | | // uf3 = new User_FaultInfo__c(); |
| | | // insert uf3; |
| | | // fa3 = new FailureAsset__c(); |
| | | // fa3.model__c = 'test3'; |
| | | // fa3.FAUserFaultInfo__c = uf3.Id; |
| | | // insert fa3; |
| | | // ba3 = new BusinessActivity__c(); |
| | | // ba3.BusinessATS__c = tsr2.Id; |
| | | // ba3.workingHours__c = 2; |
| | | // ba3.User_FaultInfo__c = uf3.Id; |
| | | // insert ba3; |
| | | |
| | | // Attachment att = new Attachment( |
| | | // Name = 'ORDER-123456.pdf', |
| | | // parentId = ba1.Id, |
| | | // Body = EncodingUtil.base64Decode('test') |
| | | // ); |
| | | // insert att; |
| | | |
| | | // Attachment att2 = new Attachment( |
| | | // Name = 'not-ORDER-123456.pdf', |
| | | // parentId = ba2.Id, |
| | | // Body = EncodingUtil.base64Decode('test') |
| | | // ); |
| | | // insert att2; |
| | | |
| | | } |
| | | static testMethod void testMethod1() { |
| | | basicData(); |
| | | update uf1; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class CampaignRelationshipController { |
| | | |
| | | public string campaignId {get; set;} |
| | | public List<CampaignRelationship__c> CRList {get; set;} |
| | | public List<CampaignRelationship__c> RVICRList {get; set;} |
| | | public List<CampaignRelationship__c> NDTCRList {get; set;} |
| | | public List<CampaignRelationship__c> ANICRList {get; set;} |
| | | public List<CampaignRelationship__c> IECRList {get; set;} |
| | | |
| | | public String baseUrl { get; set; } |
| | | |
| | | public CampaignRelationshipController(){ |
| | | |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0, path.indexOf('/apex')); |
| | | } |
| | | campaignId = System.currentPageReference().getParameters().get('campaignId'); |
| | | |
| | | |
| | | } |
| | | |
| | | public CampaignRelationshipController(ApexPages.StandardController controller) { |
| | | campaignId = controller.getRecord().Id; |
| | | system.debug('campaignId---->'+campaignId); |
| | | |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0, path.indexOf('/apex')); |
| | | } |
| | | |
| | | } |
| | | |
| | | public PageReference init() { |
| | | |
| | | CRList = new List<CampaignRelationship__c>(); |
| | | CRList = [SELECT Id,Name,RelationshipAccount__c,RelationshipAccount__r.Name, |
| | | RelationshipAccountStatus__c,RelationshipProductSegment__c, |
| | | RelationshipCampaign__c,ManagementCode__c |
| | | FROM CampaignRelationship__c |
| | | WHERE RelationshipCampaign__c = :campaignId Order by Id]; |
| | | |
| | | |
| | | RVICRList = new List<CampaignRelationship__c>(); |
| | | NDTCRList = new List<CampaignRelationship__c>(); |
| | | |
| | | ANICRList = new List<CampaignRelationship__c>(); |
| | | |
| | | IECRList = new List<CampaignRelationship__c>(); |
| | | if (CRList.size() > 0) { |
| | | for (CampaignRelationship__c cr:CRList) { |
| | | if (cr.RelationshipProductSegment__c == 'RVI') { |
| | | RVICRList.add(cr); |
| | | } else if (cr.RelationshipProductSegment__c == 'NDT') { |
| | | NDTCRList.add(cr); |
| | | } else if (cr.RelationshipProductSegment__c == 'ANI') { |
| | | ANICRList.add(cr); |
| | | } else if (cr.RelationshipProductSegment__c == 'IE') { |
| | | IECRList.add(cr); |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public PageReference DataLoadAccount(){ |
| | | |
| | | PageReference ref = new Pagereference(baseUrl +'/apex/DataLoadAccount?campaignId=' + campaignId); |
| | | ref.setRedirect(true); |
| | | return ref; |
| | | //return null ; |
| | | } |
| | | |
| | | //public PageReference UnabletoEdit() { |
| | | // PageReference ref = new Pagereference('/apex/TSRepair?Id=' + repairId); |
| | | // ref.setRedirect(true); |
| | | // return ref; |
| | | // } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class CampaignRelationshipControllerTest { |
| | | static testMethod void testMethod1() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | List<RecordType> rectRVI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer RVI']; |
| | | List<RecordType> rectNDT = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer NDT']; |
| | | List<RecordType> rectANI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer ANI']; |
| | | Campaign campain = new Campaign(); |
| | | campain.Name = '测试市场活动'; |
| | | |
| | | insert campain; |
| | | List<Account> insertAccountList = new List<Account>(); |
| | | Account accIE = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | //insert accIE; |
| | | insertAccountList.add(accIE); |
| | | |
| | | Account accRVI = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectRVI[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer RVI', |
| | | FacilityName__c = 'abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | //insert accRVI; |
| | | insertAccountList.add(accRVI); |
| | | Account accNDT = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectNDT[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer NDT', |
| | | FacilityName__c = 'abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | //insert accNDT; |
| | | insertAccountList.add(accNDT); |
| | | Account accANI = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectANI[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer ANI', |
| | | FacilityName__c = 'abc', |
| | | PostCode__c='000000' |
| | | ); |
| | | //insert accANI; |
| | | insertAccountList.add(accANI); |
| | | insert insertAccountList; |
| | | |
| | | List<CampaignRelationship__c> relationshipList = new List<CampaignRelationship__c>(); |
| | | CampaignRelationship__c r1 = new CampaignRelationship__c(); |
| | | r1.RelationshipAccount__c = accIE.id; |
| | | r1.RelationshipCampaign__c = campain.Id; |
| | | relationshipList.add(r1); |
| | | |
| | | CampaignRelationship__c r2 = new CampaignRelationship__c(); |
| | | r2.RelationshipAccount__c = accRVI.id; |
| | | r2.RelationshipCampaign__c = campain.Id; |
| | | relationshipList.add(r2); |
| | | |
| | | CampaignRelationship__c r3 = new CampaignRelationship__c(); |
| | | r3.RelationshipAccount__c = accNDT.id; |
| | | r3.RelationshipCampaign__c = campain.Id; |
| | | relationshipList.add(r3); |
| | | |
| | | CampaignRelationship__c r4 = new CampaignRelationship__c(); |
| | | r4.RelationshipAccount__c = accANI.id; |
| | | r4.RelationshipCampaign__c = campain.Id; |
| | | relationshipList.add(r4); |
| | | |
| | | |
| | | insert relationshipList; |
| | | PageReference page = new PageReference('/apex/CampaignRelationship?campaignId='+campain.Id); |
| | | System.Test.setCurrentPage(page); |
| | | CampaignRelationshipController controller = new CampaignRelationshipController(); |
| | | controller.init(); |
| | | |
| | | controller = new CampaignRelationshipController(new ApexPages.StandardController(campain)); |
| | | controller.init(); |
| | | controller.DataLoadAccount(); |
| | | |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class CampaignUpsertContactToSapBatch implements Database.Batchable<sObject>, Database.AllowsCallouts { |
| | | public String query; |
| | | // 市场活动批量导入联系人,每晚发送给SAP |
| | | public List<String> contactIdList; |
| | | global CampaignUpsertContactToSapBatch() { |
| | | this.query = query; |
| | | } |
| | | |
| | | global CampaignUpsertContactToSapBatch(List<String> contactIdList) { |
| | | this.contactIdList = contactIdList; |
| | | } |
| | | |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext bc) { |
| | | |
| | | if (contactIdList != null && contactIdList.size() > 0) { |
| | | return Database.getQueryLocator([SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE Id IN : contactIdList]); |
| | | } else { |
| | | return Database.getQueryLocator([SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE CampaignUpsertContact__c = true ]); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | global void execute(Database.BatchableContext BC, List<Contact> contactList) { |
| | | |
| | | if (contactList != null && contactList.size() > 0){ |
| | | List<String> contactIdListToSAP = new List<String>(); |
| | | for (Contact con:contactList) { |
| | | con.CampaignUpsertContact__c = false; |
| | | contactIdListToSAP.add(con.Id); |
| | | } |
| | | SBG001TriggerHandler.calloutContactNotFuture(null,contactIdListToSAP); |
| | | update contactList; |
| | | |
| | | } |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class CampaignUpsertContactToSapBatchSchedule implements Schedulable { |
| | | global void execute(SchedulableContext sc) { |
| | | Id execBTId = Database.executeBatch(new CampaignUpsertContactToSapBatch(), 100); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class CampaignUpsertContactToSapBatchTest { |
| | | static testMethod void testMethod1() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | |
| | | Account acc = new Account(); |
| | | acc.Name = 'test001'; |
| | | acc.RecordTypeId = '01228000000TdF1'; |
| | | acc.ProductSegment__c = 'BS'; |
| | | acc.ManagementCode_Ext__c = '1234567'; |
| | | acc.AccountStatus__c = 'Active'; |
| | | acc.DepartmentName__c = 'DepartmentNametest'; |
| | | acc.DivisionName__c = 'DivisionNametest'; |
| | | acc.City__c = '北京'; |
| | | acc.Phone = '18711111111'; |
| | | acc.MobilePhoneNumber__c ='18711111112'; |
| | | acc.Fax = '18711111113'; |
| | | acc.PostCode__c = '100111'; |
| | | acc.Address1__c = 'Address1'; |
| | | acc.Sub_Use__c = 'LED'; |
| | | insert acc; |
| | | |
| | | Contact con = new Contact(); |
| | | con.StatusD__c = 'Pass'; |
| | | con.FirstName = 'con'; |
| | | con.LastName = 'test'; |
| | | con.AccountId = acc.Id; |
| | | con.ManagementCode_Ext__c = '1234568'; |
| | | con.ContactStatus__c = 'Active'; |
| | | con.Phone = '01012345678'; |
| | | con.MobilePhone = '01012345679'; |
| | | acc.Fax = '18711111113'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Postcode__c = '100111'; |
| | | con.Address1__c = 'Address1D'; |
| | | con.Department = 'Department'; |
| | | con.CampaignUpsertContact__c = true; |
| | | insert con; |
| | | |
| | | Test.startTest(); |
| | | Id execBTId = null; |
| | | // System.Test.StartTest(); |
| | | List<Contact> contactList = [SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE CampaignUpsertContact__c = true]; |
| | | System.assertEquals(1, contactList.size()); |
| | | execBTId = Database.executeBatch(new CampaignUpsertContactToSapBatch()); |
| | | Test.stopTest(); |
| | | contactList = [SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE CampaignUpsertContact__c = true]; |
| | | System.assertEquals(0, contactList.size()); |
| | | } |
| | | |
| | | static testMethod void testMethod2() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | |
| | | Account acc = new Account(); |
| | | acc.Name = 'test001'; |
| | | acc.RecordTypeId = '01228000000TdF1'; |
| | | acc.ProductSegment__c = 'BS'; |
| | | acc.ManagementCode_Ext__c = '1234567'; |
| | | acc.AccountStatus__c = 'Active'; |
| | | acc.DepartmentName__c = 'DepartmentNametest'; |
| | | acc.DivisionName__c = 'DivisionNametest'; |
| | | acc.City__c = '北京'; |
| | | acc.Phone = '18711111111'; |
| | | acc.MobilePhoneNumber__c ='18711111112'; |
| | | acc.Fax = '18711111113'; |
| | | acc.PostCode__c = '100111'; |
| | | acc.Address1__c = 'Address1'; |
| | | acc.Sub_Use__c = 'LED'; |
| | | insert acc; |
| | | |
| | | Contact con = new Contact(); |
| | | con.StatusD__c = 'Pass'; |
| | | con.FirstName = 'con'; |
| | | con.LastName = 'test'; |
| | | con.AccountId = acc.Id; |
| | | con.ManagementCode_Ext__c = '1234568'; |
| | | con.ContactStatus__c = 'Active'; |
| | | con.Phone = '01012345678'; |
| | | con.MobilePhone = '01012345679'; |
| | | acc.Fax = '18711111113'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Postcode__c = '100111'; |
| | | con.Address1__c = 'Address1D'; |
| | | con.Department = 'Department'; |
| | | con.CampaignUpsertContact__c = true; |
| | | insert con; |
| | | |
| | | Test.startTest(); |
| | | Id execBTId = null; |
| | | List<String> contactIdList = new List<String>(); |
| | | contactIdList.add(con.Id); |
| | | execBTId = Database.executeBatch(new CampaignUpsertContactToSapBatch(contactIdList)); |
| | | Test.stopTest(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class CampaignUpsertContactToSapTest { |
| | | static testMethod void test_method_one() { |
| | | // This test runs a scheduled job at midnight Sept. 3rd. 2022 |
| | | String CRON_EXP = '0 0 0 3 9 ? 2022'; |
| | | |
| | | System.Test.startTest(); |
| | | // Schedule the test job |
| | | String jobId = system.schedule('CampaignUpsertContactToSapTest', CRON_EXP, new CampaignUpsertContactToSapBatchSchedule()); |
| | | // Get the information from the CronTrigger API object |
| | | CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId]; |
| | | // Verify the expressions are the same |
| | | System.assertEquals(CRON_EXP, ct.CronExpression); |
| | | // Verify the job has not run |
| | | System.assertEquals(0, ct.TimesTriggered); |
| | | // Verify the next time the job will run |
| | | System.assertEquals('2022-09-03 00:00:00', String.valueOf(ct.NextFireTime)); |
| | | System.Test.StopTest(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class CaseEmailComeBackListen implements Messaging.InboundEmailHandler { |
| | | global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) { |
| | | System.debug('进入Case回复邮件监听'); |
| | | String id = ''; |
| | | if(String.isNotBlank(email.subject)){ |
| | | List<String> str = email.subject.split('~'); |
| | | if(str!=null && str.size()!=0){ |
| | | //截取邮件关联信息,查询邮件关联对象,判断是否跳过邮件服务 |
| | | String name = str[1]; |
| | | if(String.isNotBlank(name)){ |
| | | List<User_FaultInfo__c> caseList = [select Id,notSaveEmail__c,Name from User_FaultInfo__c where Name=:name]; |
| | | if(caseList!=null && caseList.size()!=0){ |
| | | id = caseList[0].Id; |
| | | System.debug('Case邮件回复监听:'+caseList[0].notSaveEmail__c); |
| | | if(caseList[0].notSaveEmail__c){ |
| | | System.debug('跳过邮件服务监听'); |
| | | caseList[0].notSaveEmail__c = false; |
| | | update caseList[0]; |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | Messaging.InboundEmailResult result = new Messaging.InboundEmailresult(); |
| | | createEmail(email,id); |
| | | //SendEmail(); |
| | | result.success = true; |
| | | return result; |
| | | } |
| | | public void createEmail(Messaging.InboundEmail email,String id){ |
| | | Mail_Merge__c mailMerge = new Mail_Merge__c(); |
| | | //邮件标题 |
| | | if(String.isNotBlank(email.subject)){ |
| | | mailMerge.SUBJECTCOPY__c = email.subject; |
| | | List<String> str = email.subject.split('~'); |
| | | if(str!=null && str.size()!=0){ |
| | | mailMerge.SUBJECT__c = str[0]; |
| | | mailMerge.Name = str[0]; |
| | | } |
| | | }else{ |
| | | mailMerge.SUBJECTCOPY__c = ''; |
| | | mailMerge.SUBJECT__c = ''; |
| | | mailMerge.Name = ''; |
| | | } |
| | | mailMerge.CaseF__c = id; |
| | | mailMerge.RECORD_TYPE__c = 'Case'; |
| | | //发件人地址 |
| | | mailMerge.FROM__c = email.fromAddress; |
| | | //收件人地址 |
| | | mailMerge.RECIPIENT__c = getAddresses(email.toAddresses); |
| | | //抄送人 |
| | | mailMerge.CC__c = getAddresses(email.ccAddresses); |
| | | //邮件信息 |
| | | mailMerge.MESSAGE__c = email.plainTextBody; |
| | | //收取回复邮件时间 |
| | | mailMerge.DATE__c = Date.today(); |
| | | |
| | | mailMerge.TYPE__c = 'reply'; |
| | | |
| | | insert mailMerge; |
| | | //保存邮件附件 |
| | | saveFile(email.binaryAttachments,mailMerge.Id); |
| | | } |
| | | |
| | | public String getAddresses(List<String> addresses){ |
| | | String returnStr = ''; |
| | | if(addresses!=null && addresses.size()!=0){ |
| | | for(String str:addresses){ |
| | | returnStr += str+';'; |
| | | } |
| | | } |
| | | return returnStr; |
| | | } |
| | | |
| | | public void saveFile(List<Messaging.InboundEmail.BinaryAttachment> binaryAttachments,String Id){ |
| | | if (binaryAttachments != null && binaryAttachments.size()!=0) { |
| | | List<Attachment> attachmentList = new List<Attachment>(); |
| | | for(Messaging.InboundEmail.BinaryAttachment emailFile : binaryAttachments){ |
| | | Attachment attachment = new Attachment(); |
| | | attachment.Name = emailFile.fileName; |
| | | attachment.Body = emailFile.body; |
| | | attachment.ParentId = Id; |
| | | attachmentList.add(attachment); |
| | | } |
| | | insert attachmentList; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class CaseWebService { |
| | | // 关闭个案 |
| | | WebService static String CloseCase(String caseId) { |
| | | String result = '1'; |
| | | Case closeCase = new Case(); |
| | | closeCase.Id = caseId; |
| | | closeCase.Status = 'Closed'; |
| | | |
| | | try{ |
| | | update closeCase; |
| | | } catch (Exception ex) { |
| | | result = ex.getMessage(); |
| | | } |
| | | return result; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class CertificationDetailTriggerHandler { |
| | | |
| | | public static void updateDealerPurchaseDetail(List<CertificationDetails__c> newList, Map<Id, CertificationDetails__c> newMap, |
| | | List<CertificationDetails__c> oldList, Map<Id, CertificationDetails__c> oldMap) { |
| | | // SBG203证照变更后,新增证照明细,给代理商购买明细中的证照明细字段赋值-ANI辐射证照已更新-新源志勤-XHL |
| | | Map<String,List<CertificationDetails__c>> certificationDetailMap = new Map<String,List<CertificationDetails__c>>(); |
| | | List<CertificationDetails__c> detailList = new List<CertificationDetails__c>(); |
| | | String dealerId = ''; |
| | | for (CertificationDetails__c detail : newList) { |
| | | |
| | | if (detail.ActivitieTypes__c == '销售' && detail.IsActive__c == true) { |
| | | dealerId = detail.CertificationDetailAccountId__c; |
| | | if (certificationDetailMap.containsKey(dealerId)) { |
| | | detailList = certificationDetailMap.get(dealerId); |
| | | detailList.add(detail); |
| | | certificationDetailMap.put(dealerId, detailList); |
| | | } else { |
| | | detailList.add(detail); |
| | | certificationDetailMap.put(dealerId, detailList); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | if (String.isNotBlank(dealerId) && certificationDetailMap != null && certificationDetailMap.size() > 0) { |
| | | Map<String, PurchaseDetails__c> dealerModelQuantityMap = RadiationUtil.GetPurchaseDetailsMap(dealerId); |
| | | if (dealerModelQuantityMap != null && dealerModelQuantityMap.size() > 0) { |
| | | for (CertificationDetails__c detail : certificationDetailMap.get(dealerId)) { |
| | | |
| | | if ('Delta和Vanta'.equals(detail.ProdustionType__c)) { |
| | | |
| | | List<String> childModels = new List<String> {'Delta', 'Vanta'}; |
| | | for (String childModel : childModels) { |
| | | |
| | | if (dealerModelQuantityMap.containsKey(childModel)) { |
| | | dealerModelQuantityMap.get(childModel).PurchaseDetail__c = detail.Id; |
| | | } |
| | | |
| | | } |
| | | |
| | | } else { |
| | | if (dealerModelQuantityMap.containsKey(detail.ProdustionType__c)) { |
| | | dealerModelQuantityMap.get(detail.ProdustionType__c).PurchaseDetail__c = detail.Id; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | update dealerModelQuantityMap.values(); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class CertificationDetailTriggerTest { |
| | | public static Account acc0; |
| | | public static License_Information__c licenseInfo; |
| | | public static String effectiveYear; |
| | | static void inittransfersData() { |
| | | NFMUtil.EscapeSBG001TriggerHandler = true; |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | // ANI代理商 |
| | | acc0 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer ANI', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer ANI', |
| | | FacilityNameD__c = 'abc', |
| | | PostCode__c = '123456', |
| | | NationalEnterpriseUser__c = true |
| | | ); |
| | | insert acc0; |
| | | // 辐射证照 |
| | | licenseInfo = new License_Information__c(); |
| | | licenseInfo.LicenseAndAccount__c = acc0.Id; |
| | | licenseInfo.ValidFrom__c = Date.today().addDays(-22); |
| | | licenseInfo.ValidTo__c = Date.today().addDays(22); |
| | | licenseInfo.LicenseType__c = '辐射安全许可证'; |
| | | insert licenseInfo; |
| | | // 创建购买明细 |
| | | effectiveYear = String.valueOf(Date.today().year()); |
| | | PurchaseDetails__c pdetail = new PurchaseDetails__c(); |
| | | pdetail.PurchaseAccount__c = acc0.Id; |
| | | pdetail.TakeEffectInYear__c = effectiveYear; |
| | | pdetail.PurProductModel__c = 'Delta'; |
| | | pdetail.SoldNumber__c = 22; |
| | | // insert pdetail; |
| | | |
| | | PurchaseDetails__c pdetai2 = new PurchaseDetails__c(); |
| | | pdetai2.PurchaseAccount__c = acc0.Id; |
| | | pdetai2.TakeEffectInYear__c = effectiveYear; |
| | | pdetai2.PurProductModel__c = 'Vanta'; |
| | | pdetai2.SoldNumber__c = 22; |
| | | // insert pdetai2; |
| | | |
| | | PurchaseDetails__c pdetai3 = new PurchaseDetails__c(); |
| | | pdetai3.PurchaseAccount__c = acc0.Id; |
| | | pdetai3.TakeEffectInYear__c = effectiveYear; |
| | | pdetai3.PurProductModel__c = 'FOX-IQ'; |
| | | pdetai3.SoldNumber__c = 22; |
| | | // insert pdetai3; |
| | | |
| | | insert new List<PurchaseDetails__c> {pdetail,pdetai2,pdetai3}; |
| | | } |
| | | static testMethod void testMethod1() { |
| | | inittransfersData(); |
| | | String accountId = acc0.Id; |
| | | // 新建证照明细 |
| | | CertificationDetails__c cDetail = new CertificationDetails__c(); |
| | | cDetail.LicenseInformation__c = licenseInfo.Id; |
| | | cDetail.DeviceName__c = '手持式X荧光分析仪'; |
| | | cDetail.ActivitieTypes__c = '销售'; |
| | | cDetail.ProdustionType__c = 'Delta和Vanta'; |
| | | cDetail.ProductModelNumber__c = 122; |
| | | |
| | | CertificationDetails__c cDetai2 = new CertificationDetails__c(); |
| | | cDetai2.LicenseInformation__c = licenseInfo.Id; |
| | | cDetai2.DeviceName__c = '测试'; |
| | | cDetai2.ActivitieTypes__c = '销售'; |
| | | cDetai2.ProdustionType__c = 'FOX-IQ'; |
| | | cDetai2.ProductModelNumber__c = 122; |
| | | |
| | | insert new List<CertificationDetails__c> {cDetail,cDetai2}; |
| | | |
| | | // List<PurchaseDetails__c> purchaseDetailsList = [select Id, Name, RemainingNumber__c, SoldNumber__c, |
| | | // PurProductModel__c, PurchaseAccount__c,PurchaseDetail__c |
| | | // from PurchaseDetails__c |
| | | // where TakeEffectInYear__c = :effectiveYear and PurchaseAccount__c = :accountId]; |
| | | |
| | | // System.assertEquals(depart1.Id, purchaseDetailsList); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the change password functionality |
| | | */ |
| | | public with sharing class ChangePasswordController { |
| | | public String oldPassword {get; set;} |
| | | public String newPassword {get; set;} |
| | | public String verifyNewPassword {get; set;} |
| | | |
| | | public PageReference changePassword() { |
| | | return Site.changePassword(newPassword, verifyNewPassword, oldpassword); |
| | | } |
| | | |
| | | public ChangePasswordController() {} |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the change password functionality |
| | | */ |
| | | @IsTest public with sharing class ChangePasswordControllerTest { |
| | | @IsTest(SeeAllData=true) public static void testChangePasswordController() { |
| | | // Instantiate a new controller with all parameters in the page |
| | | ChangePasswordController controller = new ChangePasswordController(); |
| | | controller.oldPassword = '123456'; |
| | | controller.newPassword = 'qwerty1'; |
| | | controller.verifyNewPassword = 'qwerty1'; |
| | | |
| | | System.assertEquals(controller.changePassword(),null); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public class ChatterAnswers { |
| | | public String createAccount(String firstname, String lastname, Id siteAdminId) { |
| | | Account a = new Account(name = firstname + ' ' + lastname, ownerId = siteAdminId); |
| | | insert a; |
| | | return a.Id; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>27.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class ChatterAnswersEscalationTriggerTest { |
| | | static testMethod void validateQuestionEscalation() { |
| | | String questionTitle = 'questionTitle'; |
| | | String questionBody = 'questionBody'; |
| | | Community[] c = [SELECT Id from Community]; |
| | | // We cannot create a question without a community |
| | | if (c.size() == 0) { return; } |
| | | String communityId = c[0].Id; |
| | | Question q = new Question(); |
| | | q.Title = questionTitle; |
| | | q.Body = questionBody; |
| | | q.CommunityId = communityId; |
| | | insert(q); |
| | | q.Priority = 'high'; |
| | | update(q); |
| | | Case ca = [SELECT Origin, CommunityId, Subject, Description from Case where QuestionId =: q.Id]; |
| | | // Test that escaltion trigger correctly escalate the question to a case |
| | | System.assertEquals(questionTitle, ca.Subject); |
| | | System.assertEquals(questionBody, ca.Description); |
| | | System.assertEquals('Chatter Answers', ca.Origin); |
| | | System.assertEquals(communityId, ca.CommunityId); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>27.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class CodeGenerator implements Process.Plugin |
| | | { |
| | | global Process.PluginResult invoke(Process.PluginRequest request) |
| | | { |
| | | Map<String, Object> result = new Map<String, Object>(); |
| | | |
| | | Integer rand = Math.round(Math.random()*100000); |
| | | String code = string.valueOf(rand); |
| | | |
| | | result.put('Code', code); |
| | | |
| | | return new Process.PluginResult(result); |
| | | } |
| | | |
| | | global Process.PluginDescribeResult describe() |
| | | { |
| | | Process.PluginDescribeResult result = new Process.PluginDescribeResult(); |
| | | result.description='This plug-in generates a radnom 5-digits code'; |
| | | result.tag='Identity'; |
| | | |
| | | result.inputParameters = new List<Process.PluginDescribeResult.InputParameter> {}; |
| | | |
| | | result.outputParameters = new List<Process.PluginDescribeResult.OutputParameter> { |
| | | new Process.PluginDescribeResult.OutputParameter('Code', |
| | | Process.PluginDescribeResult.ParameterType.STRING) |
| | | }; |
| | | |
| | | return result; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>32.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class CodeGeneratorTest |
| | | { |
| | | static testMethod void getCode() { |
| | | |
| | | CodeGenerator generator = new CodeGenerator(); |
| | | Map<String,Object> inputParams = new Map<String,Object>(); |
| | | Map<String,Object> outputParams = new Map<String,Object>(); |
| | | |
| | | Process.PluginRequest request = new Process.PluginRequest(inputParams); |
| | | Process.PluginResult result; |
| | | result = generator.invoke(request); |
| | | |
| | | System.AssertEquals(1,1); |
| | | } |
| | | |
| | | static testMethod void describeTest() { |
| | | |
| | | CodeGenerator generator = new CodeGenerator(); |
| | | Process.PluginDescribeResult result = generator.describe(); |
| | | |
| | | System.AssertEquals(result.OutputParameters.size(), 1); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>32.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that takes the user to the right start page based on credentials or lack thereof |
| | | */ |
| | | public with sharing class CommunitiesLandingController { |
| | | |
| | | // Code we will invoke on page load. |
| | | public PageReference forwardToStartPage() { |
| | | return Network.communitiesLanding(); |
| | | } |
| | | |
| | | public CommunitiesLandingController() {} |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that takes the user to the right start page based on credentials or lack thereof |
| | | */ |
| | | @IsTest public with sharing class CommunitiesLandingControllerTest { |
| | | @IsTest(SeeAllData=true) public static void testCommunitiesLandingController() { |
| | | // Instantiate a new controller with all parameters in the page |
| | | CommunitiesLandingController controller = new CommunitiesLandingController(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the site login functionality |
| | | */ |
| | | global with sharing class CommunitiesLoginController { |
| | | |
| | | global CommunitiesLoginController () {} |
| | | |
| | | // Code we will invoke on page load. |
| | | global PageReference forwardToAuthPage() { |
| | | String startUrl = System.currentPageReference().getParameters().get('startURL'); |
| | | String displayType = System.currentPageReference().getParameters().get('display'); |
| | | return Network.forwardToAuthPage(startUrl, displayType); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the site login functionality |
| | | */ |
| | | @IsTest global with sharing class CommunitiesLoginControllerTest { |
| | | @IsTest(SeeAllData=true) |
| | | global static void testCommunitiesLoginController () { |
| | | CommunitiesLoginController controller = new CommunitiesLoginController(); |
| | | System.assertEquals(null, controller.forwardToAuthPage()); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that takes the user to the right start page based on credentials or lack thereof |
| | | */ |
| | | public with sharing class CommunitiesSelfRegConfirmController { |
| | | |
| | | public CommunitiesSelfRegConfirmController() {} |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that takes the user to the right start page based on credentials or lack thereof |
| | | */ |
| | | @IsTest public with sharing class CommunitiesSelfRegConfirmControllerTest { |
| | | @IsTest(SeeAllData=true) public static void testCommunitiesSelfRegConfirmController() { |
| | | // Instantiate a new controller with all parameters in the page |
| | | CommunitiesSelfRegConfirmController controller = new CommunitiesSelfRegConfirmController(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that supports self registration of users in communities that allow self registration |
| | | */ |
| | | public class CommunitiesSelfRegController { |
| | | |
| | | public String firstName {get; set;} |
| | | public String lastName {get; set;} |
| | | public String email {get; set;} |
| | | public String password {get; set {password = value == null ? value : value.trim(); } } |
| | | public String confirmPassword {get; set { confirmPassword = value == null ? value : value.trim(); } } |
| | | public String communityNickname {get; set { communityNickname = value == null ? value : value.trim(); } } |
| | | |
| | | public CommunitiesSelfRegController() {} |
| | | |
| | | private boolean isValidPassword() { |
| | | return password == confirmPassword; |
| | | } |
| | | |
| | | public PageReference registerUser() { |
| | | |
| | | // it's okay if password is null - we'll send the user a random password in that case |
| | | if (!isValidPassword()) { |
| | | ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.ERROR, Label.site.passwords_dont_match); |
| | | ApexPages.addMessage(msg); |
| | | return null; |
| | | } |
| | | |
| | | String profileId = null; // To be filled in by customer. |
| | | String roleEnum = null; // To be filled in by customer. |
| | | String accountId = ''; // To be filled in by customer. |
| | | |
| | | String userName = email; |
| | | |
| | | User u = new User(); |
| | | u.Username = userName; |
| | | u.Email = email; |
| | | u.FirstName = firstName; |
| | | u.LastName = lastName; |
| | | u.CommunityNickname = communityNickname; |
| | | u.ProfileId = profileId; |
| | | |
| | | String userId; |
| | | |
| | | try { |
| | | userId = Site.createExternalUser(u, accountId, password); |
| | | } catch(Site.ExternalUserCreateException ex) { |
| | | List<String> errors = ex.getDisplayMessages(); |
| | | for (String error : errors) { |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, error)); |
| | | } |
| | | |
| | | // This message is used for debugging. Do not display this in the UI to the end user. |
| | | // It has the information around why the user creation failed. |
| | | System.debug(ex.getMessage()); |
| | | } |
| | | |
| | | if (userId != null) { |
| | | if (password != null && password.length() > 1) { |
| | | return Site.login(userName, password, ApexPages.currentPage().getParameters().get('startURL')); |
| | | } |
| | | else { |
| | | PageReference page = System.Page.CommunitiesSelfRegConfirm; |
| | | page.setRedirect(true); |
| | | return page; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that supports self registration of users in communities that allow self registration |
| | | */ |
| | | @IsTest public with sharing class CommunitiesSelfRegControllerTest { |
| | | @IsTest(SeeAllData=true) |
| | | public static void testCommunitiesSelfRegController() { |
| | | CommunitiesSelfRegController controller = new CommunitiesSelfRegController(); |
| | | controller.firstName = 'FirstName'; |
| | | controller.lastName = 'LastName'; |
| | | controller.email = 'test@force.com'; |
| | | controller.communityNickname = 'test'; |
| | | |
| | | // registerUser will always return null when the page isn't accessed as a guest user |
| | | System.assert(controller.registerUser() == null); |
| | | |
| | | controller.password = 'abcd1234'; |
| | | controller.confirmPassword = 'abcd123'; |
| | | System.assert(controller.registerUser() == null); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class ContactTriggerHandler { |
| | | |
| | | public static void setIsNew(List<Contact> newList, Map<Id, Contact> newMap, List<Contact> oldList, Map<Id, Contact> oldMap) { |
| | | for (Contact newCon : newList) { |
| | | // String new_profileId = UserInfo.getProfileId().subString(0,15); |
| | | //calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的 |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | |
| | | if (new_profileId.subString(0,15) == System.label.Market_Department || new_profileId.subString(0,15) == System.label.Market_Department1 || new_profileId.subString(0,15) == System.label.Service_Owner || |
| | | UserInfo.getUserType() == 'PowerPartner') { |
| | | newCon.IsNew__c = true; |
| | | } else { |
| | | newCon.MobilePhoneD__c = newCon.MobilePhone; |
| | | newCon.OtherPhoneD__c = newCon.OtherPhone; |
| | | newCon.FaxD__c = newCon.Fax; |
| | | newCon.EmailD__c = newCon.Email; |
| | | newCon.PhoneD__c = newCon.Phone; |
| | | newCon.TitleD__c = newCon.Title; |
| | | newCon.Address1D__c = newCon.Address1__c; |
| | | newCon.Address2D__c = newCon.Address2__c; |
| | | newCon.Address3D__c = newCon.Address3__c; |
| | | newCon.PostcodeD__c = newCon.Postcode__c; |
| | | newCon.ContactStatusD__c = newCon.ContactStatus__c; |
| | | newCon.CancelReasonD__c = newCon.CancelReason__c; |
| | | if(new_profileId.subString(0,15) == '00e28000000YKLo'){ |
| | | newCon.IsNew__c = true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void updateForDealer(List<Contact> newList, Map<Id, Contact> newMap, List<Contact> oldList, Map<Id, Contact> oldMap) { |
| | | //王鹏伟 添加userId 服务部修改联系人重新审批 判断当前修改的登陆人是否是孙学洋 吴晓东 |
| | | String userId = UserInfo.getUserId(); |
| | | for (Contact newCon : newList) { |
| | | Contact oldCon = oldMap.get(newCon.Id); |
| | | |
| | | if(newCon.AccountStaut__c != 'Pass' && newCon.StatusD__c != oldCon.StatusD__c && newCon.StatusD__c == 'Pass' ){ |
| | | newCon.addError('请先审批对应的客户'); |
| | | } |
| | | |
| | | if (newCon.MobilePhoneD__c != oldCon.MobilePhoneD__c || |
| | | newCon.OtherPhoneD__c != oldCon.OtherPhoneD__c || |
| | | newCon.FaxD__c != oldCon.FaxD__c || |
| | | newCon.EmailD__c != oldCon.EmailD__c || |
| | | newCon.PhoneD__c != oldCon.PhoneD__c || |
| | | newCon.TitleD__c != oldCon.TitleD__c || |
| | | newCon.Address1D__c != oldCon.Address1D__c || |
| | | newCon.Address2D__c != oldCon.Address2D__c || |
| | | newCon.Address3D__c != oldCon.Address3D__c || |
| | | newCon.PostcodeD__c != oldCon.PostcodeD__c || |
| | | newCon.ContactStatusD__c != oldCon.ContactStatusD__c || |
| | | newCon.CancelReasonD__c != oldCon.CancelReasonD__c) { |
| | | // String new_profileId = UserInfo.getProfileId().subString(0,15); |
| | | //新的获取简档ID calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的 |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | //王鹏伟 添加 && !((oldCon.ProductSegment__c == 'BS' || oldCon.ProductSegment__c == 'NDT' || oldCon.ProductSegment__c = 'ANI') && oldCon.isServiceCreate__c == true) |
| | | //服务部修改联系人信息 LS、NDT、ANI无需审批,跳过审批状态变草案 |
| | | if (( new_profileId.subString(0,15) == System.label.Service_Owner |
| | | || UserInfo.getUserType() == 'PowerPartner' || userId =='00528000000YWC6' || userId =='00528000000YWE7') |
| | | && !((oldCon.ProductSegment__c == 'BS' || oldCon.ProductSegment__c == 'NDT' || oldCon.ProductSegment__c == 'ANI') && oldCon.isServiceCreate__c == true)) { |
| | | newCon.StatusD__c = 'Draft'; |
| | | } |
| | | } |
| | | |
| | | if (newCon.MobilePhone != oldCon.MobilePhone) { |
| | | newCon.MobilePhoneD__c = newCon.MobilePhone; |
| | | } |
| | | if (newCon.OtherPhone != oldCon.OtherPhone) { |
| | | newCon.OtherPhoneD__c = newCon.OtherPhone; |
| | | } |
| | | if (newCon.Fax != oldCon.Fax) { |
| | | newCon.FaxD__c = newCon.Fax; |
| | | } |
| | | if (newCon.Email != oldCon.Email) { |
| | | newCon.EmailD__c = newCon.Email; |
| | | } |
| | | if (newCon.Phone != oldCon.Phone) { |
| | | newCon.PhoneD__c = newCon.Phone; |
| | | } |
| | | if (newCon.Title != oldCon.Title) { |
| | | newCon.TitleD__c = newCon.Title; |
| | | } |
| | | if (newCon.Address1__c != oldCon.Address1__c) { |
| | | newCon.Address1D__c = newCon.Address1__c; |
| | | } |
| | | if (newCon.Address2__c != oldCon.Address2__c) { |
| | | newCon.Address2D__c = newCon.Address2__c; |
| | | } |
| | | if (newCon.Address3__c != oldCon.Address3__c) { |
| | | newCon.Address3D__c = newCon.Address3__c; |
| | | } |
| | | if (newCon.Postcode__c != oldCon.Postcode__c) { |
| | | newCon.PostcodeD__c = newCon.Postcode__c; |
| | | } |
| | | |
| | | if (newCon.ContactStatus__c != oldCon.ContactStatus__c) { |
| | | newCon.ContactStatusD__c = newCon.ContactStatus__c; |
| | | } |
| | | if (newCon.CancelReason__c != oldCon.CancelReason__c) { |
| | | newCon.CancelReasonD__c = newCon.CancelReason__c; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void dealerContactApproval(List<Contact> newList, Map<Id, Contact> newMap, List<Contact> oldList, Map<Id, Contact> oldMap) { |
| | | List<String> accIdList = new List<String>(); |
| | | for (Contact newCon : newList) { |
| | | accIdList.add(newCon.AccountId); |
| | | } |
| | | // 现有客户小组 |
| | | Map<String, String> accsMap = new Map<String, String>(); |
| | | //List<AccountTeamMember> atmList = [select Id, AccountId, UserId from AccountTeamMember where AccountId in :accIdList]; |
| | | List<AccountShare> accsList = [select id, accountId, UserOrGroupId, AccountAccessLevel, RowCause from AccountShare where AccountId in :accIdList and RowCause = 'Team']; |
| | | for (AccountShare accs : accsList) { |
| | | accsMap.put(accs.AccountId + '' + accs.UserOrGroupId, accs.Id); |
| | | } |
| | | // 需要更新客户小组 |
| | | // List<AccountShare> updList = new List<AccountShare>(); |
| | | |
| | | //新的获取简档ID calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的 |
| | | // String new_profileId = UserInfo.getProfileId().subString(0,15); |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | |
| | | for (Contact newCon : newList) { |
| | | Contact oldCon = oldMap.get(newCon.Id); |
| | | |
| | | if (new_profileId.subString(0,15) == System.label.Market_Department || new_profileId.subString(0,15) == System.label.Market_Department1){ |
| | | newCon.MobilePhone = newCon.MobilePhoneD__c; |
| | | newCon.OtherPhone = newCon.OtherPhoneD__c; |
| | | newCon.Fax = newCon.FaxD__c; |
| | | newCon.Email = newCon.EmailD__c; |
| | | newCon.Phone = newCon.PhoneD__c; |
| | | newCon.Title = newCon.TitleD__c; |
| | | newCon.Address1__c = newCon.Address1D__c; |
| | | newCon.Address2__c = newCon.Address2D__c; |
| | | newCon.Address3__c = newCon.Address3D__c; |
| | | newCon.Postcode__c = newCon.PostcodeD__c; |
| | | |
| | | newCon.ContactStatus__c = newCon.ContactStatusD__c; |
| | | newCon.CancelReason__c = newCon.CancelReasonD__c; |
| | | } else if (newCon.StatusD__c != oldCon.StatusD__c) { |
| | | if (newCon.StatusD__c == 'Submit') { |
| | | //newCon.DealerSelectOwner__c = newCon.Account.DealerSelectOwner__c; |
| | | } |
| | | if (newCon.StatusD__c == 'Pass') { |
| | | // 批准过程肯定是一条一条批准的,所以这里再循环中写了select文 |
| | | |
| | | List<Account> accList = [select Id, IsNew__c, AccountStatus__c from Account where Id = :newCon.AccountId]; |
| | | if (accList.size() > 0 ) { |
| | | Account acc = accList[0]; |
| | | if (acc.IsNew__c == true || (acc.AccountStatus__c == 'Cancel' && newCon.ContactStatusD__c != 'Cancel')) { |
| | | newCon.addError('客户无效或未通过审批,不能批准当前联系人。'); |
| | | } |
| | | } |
| | | |
| | | newCon.MobilePhone = newCon.MobilePhoneD__c; |
| | | newCon.OtherPhone = newCon.OtherPhoneD__c; |
| | | newCon.Fax = newCon.FaxD__c; |
| | | newCon.Email = newCon.EmailD__c; |
| | | newCon.Phone = newCon.PhoneD__c; |
| | | newCon.Title = newCon.TitleD__c; |
| | | newCon.Address1__c = newCon.Address1D__c; |
| | | newCon.Address2__c = newCon.Address2D__c; |
| | | newCon.Address3__c = newCon.Address3D__c; |
| | | newCon.Postcode__c = newCon.PostcodeD__c; |
| | | |
| | | newCon.ContactStatus__c = newCon.ContactStatusD__c; |
| | | newCon.CancelReason__c = newCon.CancelReasonD__c; |
| | | |
| | | // if (accsMap.containsKey(newCon.AccountId + '' + newCon.OwnerId) == true && newCon.IsNew__c == true) { |
| | | // AccountShare upd = new AccountShare( |
| | | // Id = accsMap.get(newCon.AccountId + '' + newCon.OwnerId), |
| | | // AccountAccessLevel = 'Edit' |
| | | // ); |
| | | // updList.add(upd); |
| | | // } |
| | | |
| | | if (newCon.IsNew__c = true) { |
| | | newCon.IsNew__c = false; |
| | | } |
| | | } |
| | | if (newCon.StatusD__c == 'Reject' && newCon.IsNew__c == false) { |
| | | newCon.MobilePhoneD__c = newCon.MobilePhone; |
| | | newCon.OtherPhoneD__c = newCon.OtherPhone; |
| | | newCon.FaxD__c = newCon.Fax; |
| | | newCon.EmailD__c = newCon.Email; |
| | | newCon.PhoneD__c = newCon.Phone; |
| | | newCon.TitleD__c = newCon.Title; |
| | | newCon.Address1D__c = newCon.Address1__c; |
| | | newCon.Address2D__c = newCon.Address2__c; |
| | | newCon.Address3D__c = newCon.Address3__c; |
| | | newCon.PostcodeD__c = newCon.Postcode__c; |
| | | |
| | | newCon.ContactStatusD__c = newCon.ContactStatus__c; |
| | | newCon.CancelReasonD__c = newCon.CancelReason__c; |
| | | } |
| | | } |
| | | } |
| | | // 更新客户小组 |
| | | // if (updList!= null && updList.size() > 0) { |
| | | // update updList; |
| | | // } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class ContactTriggerHandlerTest { |
| | | |
| | | static testMethod void myUnitTest() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | User user = new User(); |
| | | user.LastName = 'test02'; |
| | | user.FirstName = 'test'; |
| | | user.Alias = 'test02'; |
| | | user.Email = 'test@test02.com'; |
| | | user.Username = 'test111@test3222.com'; |
| | | user.CommunityNickname = 'test1111'; |
| | | user.IsActive = true; |
| | | user.EmailEncodingKey = 'ISO-2022-JP'; |
| | | user.TimeZoneSidKey = 'Asia/Tokyo'; |
| | | user.LocaleSidKey = 'ja_JP'; |
| | | user.LanguageLocaleKey = 'ja'; |
| | | user.ProfileId = System.Label.SystemAdmin; |
| | | insert user; |
| | | |
| | | Account acc = new Account(); |
| | | acc.Name = '*'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | acc.stautesD__c= 'Pass'; |
| | | insert acc; |
| | | |
| | | Contact con = new Contact(); |
| | | con.LastName = 'test'; |
| | | con.AccountId = acc.Id; |
| | | con.MobilePhone = 'MobilePhoneD__c'; |
| | | con.OtherPhone = 'OtherPhoneD__c'; |
| | | con.Fax = 'FaxD__c'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Phone = 'PhoneD__c'; |
| | | con.Title = 'TitleD__c'; |
| | | con.Address1__c = 'Address1D__c'; |
| | | con.Address2__c = 'Address2D__c'; |
| | | con.Address3__c = 'Address3D__c'; |
| | | con.Postcode__c = '100111'; |
| | | con.ContactStatus__c = 'ContactStatusD__c'; |
| | | con.CancelReason__c = 'CancelReasonD__c'; |
| | | con.StatusD__c = 'Pass'; |
| | | |
| | | insert con; |
| | | |
| | | con.MobilePhone = 'MobilePhone'; |
| | | con.OtherPhone = 'OtherPhone'; |
| | | con.Fax = 'Fax'; |
| | | con.Email = 'Email@test.com'; |
| | | con.Phone = 'Phone'; |
| | | con.Title = 'Title'; |
| | | con.Address1__c = 'Address1__c'; |
| | | con.Address2__c = 'Address2__c'; |
| | | con.Address3__c = 'Address3__c'; |
| | | con.Postcode__c = '100222'; |
| | | con.ContactStatus__c = 'ContactStatus__c'; |
| | | con.CancelReason__c = 'CancelReason__c'; |
| | | |
| | | update con; |
| | | |
| | | con.MobilePhoneD__c = 'MobilePhoneD__c'; |
| | | con.OtherPhoneD__c = 'OtherPhoneD__c'; |
| | | con.FaxD__c = 'FaxD__c'; |
| | | con.EmailD__c = 'EmailD__c@test.com'; |
| | | con.PhoneD__c = 'PhoneD__c'; |
| | | con.TitleD__c = 'TitleD__c'; |
| | | con.Address1D__c = 'Address1D__c'; |
| | | con.Address2D__c = 'Address2D__c'; |
| | | con.Address3D__c = 'Address3D__c'; |
| | | con.PostcodeD__c = '100111'; |
| | | con.ContactStatusD__c = 'ContactStatusD__c'; |
| | | con.CancelReasonD__c = 'CancelReasonD__c'; |
| | | |
| | | update con; |
| | | |
| | | con.StatusD__c = 'Completed'; |
| | | update con; |
| | | con.StatusD__c = 'Submit'; |
| | | update con; |
| | | con.StatusD__c = 'Pass'; |
| | | update con; |
| | | |
| | | con.StatusD__c = 'Reject'; |
| | | update con; |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>33.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global without sharing class ControllerUtil { |
| | | public ControllerUtil() { |
| | | 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++; |
| | | |
| | | } |
| | | |
| | | public static Pricebook2 getStandardPricebook() { |
| | | if (Test.isRunningTest()) { |
| | | return new Pricebook2(Id = Test.getStandardPricebookId(), Name = 'Standard Pricebook'); |
| | | } else { |
| | | List<Pricebook2> pbs = [Select Id, Name From Pricebook2 where IsStandard = true]; |
| | | if (pbs.size() > 0) { |
| | | return pbs[0]; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void updateExpress(List<Loaner_Express__c> upLeList){ |
| | | update upLeList; |
| | | } |
| | | |
| | | public class myException extends Exception {} |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class ControllerUtilTest { |
| | | |
| | | @isTest static void test_ControllerUtil() { |
| | | ControllerUtil con = new ControllerUtil(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class CustContController { |
| | | //合成url |
| | | public String ccUrl { get; private set; } |
| | | //两个用来拼接url |
| | | public String accid { get; private set; } |
| | | public String conid { get; private set; } |
| | | //初始化 |
| | | public loaner_user__c lou { get; private set; } |
| | | public loaner_user__c lu { get; private set; } |
| | | //判断 |
| | | public String isOk {get; private set; } |
| | | |
| | | public CustContController() { |
| | | accid = System.currentPageReference().getParameters().get('accid'); |
| | | conid = System.currentPageReference().getParameters().get('conid'); |
| | | } |
| | | |
| | | public void init(){ |
| | | |
| | | lou = new loaner_user__c(); |
| | | List<Account> accList = new List<Account>(); |
| | | List<Contact> conList = new List<Contact>(); |
| | | if (String.isNotBlank(accid)) { |
| | | accList = [select id from Account where id =: accid]; |
| | | } |
| | | if (String.isNotBlank(conid)) { |
| | | conList = [select id from Contact where id =: conid]; |
| | | } |
| | | |
| | | if(accList.size() >0){ |
| | | lou.Customer__c = accid; |
| | | } |
| | | |
| | | if(conList.size() > 0 ){ |
| | | lou.Contact__c = conid; |
| | | } |
| | | } |
| | | |
| | | public void getisOk(){ |
| | | isOk = ''; |
| | | //前台选的客户与联系人都可以取到他俩的id,选没选没关系,只需要查询比较他俩都被选中的情况下 |
| | | Contact cont = new Contact(); |
| | | if (String.isNotBlank(lou.Contact__c)) { |
| | | cont = [select AccountId from Contact where id =:lou.Contact__c]; |
| | | } |
| | | System.debug(cont.AccountId); |
| | | if (cont.AccountId != null) { |
| | | if (String.isNotBlank(lou.Customer__c) && String.isNotBlank(lou.Contact__c)) { |
| | | isOk = cont.AccountId == lou.Customer__c ? '1' : '0'; |
| | | } |
| | | if (String.isBlank(lou.Customer__c)) { |
| | | isOk = '2'; |
| | | } |
| | | }else if (String.isNotBlank(lou.Customer__c)){ |
| | | isOk = '1'; |
| | | } |
| | | System.debug(isOk); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class DataLoadAccountController { |
| | | |
| | | public List<String> StringList {get; set;} |
| | | |
| | | public String campaignId {get; set;} |
| | | |
| | | public List<CampaignRelationship__c> CRList {get; set;} |
| | | |
| | | public List<AccountContactInfo> ACInfoList {get; set;} |
| | | public Blob contentFile { get; set; } |
| | | public String nameFile { get; set; } |
| | | |
| | | public Boolean errorFlag { get; set; } |
| | | public String errorMessage {get; set;} |
| | | |
| | | public Map<String, List<Contact>> upsertContactMap; |
| | | public Map<String, Account> upsertAccountMap; |
| | | public Map<String,Account> accountMap; |
| | | public Map<String,String> accountIsUpdateMap; |
| | | public Map<String,String> accountInDealerMap; |
| | | |
| | | |
| | | private Integer line_Account_ProductSegment = 0;//分野 |
| | | private Integer line_Account_accountName = 1;//客户名 |
| | | private Integer line_Account_DivisionName_D = 2;//部门 |
| | | private Integer line_Account_approver = 3;//审批人 |
| | | private Integer line_Account_Province = 4;//省 |
| | | private Integer line_Account_CityD = 5;//市 |
| | | private Integer line_Account_Address1D = 6;//客户地址 |
| | | private Integer line_Account_PostCodeD = 7;//客户邮编 |
| | | private Integer line_Account_Sub_UseD = 8;//客户Sub_Use; |
| | | private Integer line_Account_EnglishNameD = 9;//客户英文名称(IE) |
| | | private Integer line_Account_CustomerSource = 10;//客户来源 |
| | | private Integer line_Account_UserType = 11;//用户属性 |
| | | private Integer line_Account_TargetCustomer = 12;//客户类型 |
| | | private Integer line_Account_Remark = 13;//客户备注 |
| | | private Integer line_Contact_LastName = 14;//联系人姓名 |
| | | private Integer line_Contact_Address1D = 15;//联系人地址 |
| | | private Integer line_Contact_MobilePhoneD = 16;//联系人手机 |
| | | private Integer line_Contact_PostcodeD = 17;//联系人邮编 |
| | | private Integer line_Contact_Remark = 18;//联系人备注 |
| | | private Integer line_nineteen; |
| | | |
| | | public String baseUrl { get; set; } |
| | | |
| | | public DataLoadAccountController() { |
| | | |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0, path.indexOf('/apex')); |
| | | } |
| | | campaignId = System.currentPageReference().getParameters().get('campaignId'); |
| | | ACInfoList = new List<AccountContactInfo>(); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | ACInfoList = new List<AccountContactInfo>(); |
| | | return null; |
| | | } |
| | | |
| | | public PageReference csvRead() { |
| | | |
| | | String strFile = ''; |
| | | List<String> listFile = new List<String>(); |
| | | errorFlag = false; |
| | | errormessage = null; |
| | | |
| | | List<String> errormessageList = new List<String>(); |
| | | Map<String, List<String>> errormessageMap = new Map<String, List<String>>(); |
| | | try { |
| | | if (contentFile != null) { |
| | | strFile = contentFile.toString(); |
| | | listFile = strFile.split('\n'); |
| | | } else { |
| | | errorFlag = true; |
| | | errormessage = '读取内容为空。'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put('导入文件异常', errormessageList); |
| | | Pageerrormessage(errormessageMap); |
| | | return null; |
| | | } |
| | | } catch (Exception ex) { |
| | | errorFlag = true; |
| | | errormessage = '读取的文件不是CSV文件或CSV文件的编码不是UTF-8'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put('导入文件异常', errormessageList); |
| | | Pageerrormessage(errormessageMap); |
| | | return null; |
| | | } |
| | | |
| | | List<String[]> arrayFile = new List<String[]>(); |
| | | String firstline = listFile[0]; |
| | | if (firstline.indexOf('客户分野') < 0) { |
| | | errorFlag = true; |
| | | errormessage = '读取内容格式不正确。'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put('导入文件异常', errormessageList); |
| | | Pageerrormessage(errormessageMap); |
| | | return null; |
| | | } else { |
| | | String strReplace = ''; |
| | | List<String> temp = strFile.split('"'); |
| | | for (Integer i = 0; i < temp.size(); i++) { |
| | | if (math.mod(i, 2) == 1) { |
| | | temp[i] = temp[i].replace(',', '#%&'); |
| | | } |
| | | strReplace += temp[i]; |
| | | } |
| | | // system.debug('=====strReplace:' + strReplace); |
| | | List<String> listReplace = strReplace.split('\n'); |
| | | for (String replace : listReplace) { |
| | | system.debug('=====replace:' + replace); |
| | | if (replace != '\r' && replace.length() > 0) { |
| | | replace = replace.replace('\r', ''); |
| | | String[] a = replace.split(',', -1); |
| | | for (Integer i = 0; i < a.size(); i++) { |
| | | if (a[i].indexOf('#%&') > 0) { |
| | | a[i] = a[i].replace('#%&', ','); |
| | | } |
| | | } |
| | | // 验证导入的模板有多少列 |
| | | if (a.size() != 19) { |
| | | errorFlag = true; |
| | | errormessage = '读取内容格式不正确。Line:' + arrayFile.size(); |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put('导入文件异常', errormessageList); |
| | | Pageerrormessage(errormessageMap); |
| | | return null; |
| | | } |
| | | |
| | | arrayFile.add(a); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (arrayFile.size() > 1) { |
| | | |
| | | checkFields(arrayFile); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference save() { |
| | | system.debug('upsertAccountMap-----><----' + upsertAccountMap); |
| | | |
| | | Savepoint sp = Database.setSavepoint(); |
| | | // try { |
| | | List<CampaignRelationship__c> insertCampaignRelationshipList = new List<CampaignRelationship__c>(); |
| | | if (upsertAccountMap != null && upsertAccountMap.size() > 0) { |
| | | |
| | | // 保存客户 |
| | | upsert upsertAccountMap.values(); |
| | | List<Contact> upsertContactList = new List<Contact>(); |
| | | Map<String,Contact> insertContactMap = new Map<String,Contact>(); |
| | | for (String accountkey : upsertAccountMap.keySet()) { |
| | | String productSegment = upsertAccountMap.get(accountkey).ProductSegment__c; |
| | | String accountId = upsertAccountMap.get(accountkey).Id; |
| | | if (upsertContactMap != null && upsertContactMap.size() > 0) { |
| | | if (upsertContactMap.containsKey(accountkey)) { |
| | | // 给联系人赋值客户Id |
| | | for (Contact contact : upsertContactMap.get(accountkey)) { |
| | | if (String.isNotBlank(contact.LastName)) { |
| | | contact.CampaignUpsertContact__c = true; |
| | | if (String.isBlank(contact.Id)) { |
| | | contact.AccountId = accountId; |
| | | upsertContactList.add(contact); |
| | | } else { |
| | | insertContactMap.put(contact.Id, contact); |
| | | } |
| | | |
| | | // upsertContactList.add(contact); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | String accountName = upsertAccountMap.get(accountkey).FacilityNameD__c; |
| | | String divisionName = upsertAccountMap.get(accountkey).DivisionName_D__c; |
| | | String accountAssemblyName = accountName + divisionName; |
| | | // 若客户已存在,创建客户-市场活动关系,若客户不存在,那么客户创建完成之后,会在trigger里创建客户-市场活动关系 |
| | | if ( accountMap != null && accountMap.containsKey(accountAssemblyName)) { |
| | | |
| | | CampaignRelationship__c campaignRelationship = campaignRelationshipAssembly(accountId,productSegment); |
| | | |
| | | insertCampaignRelationshipList.add(campaignRelationship); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | // 保存联系人 |
| | | // if (upsertContactMap != null && upsertContactMap.size() > 0) { |
| | | // // upsert upsertContactMap.values(); |
| | | // Integer Error01 = Integer.valueOf('TEST--->'+upsertContactMap); |
| | | // } |
| | | if (upsertContactList.size() > 0) { |
| | | upsert upsertContactList; |
| | | } |
| | | |
| | | if (insertContactMap != null && insertContactMap.size() >0) { |
| | | update insertContactMap.values(); |
| | | } |
| | | |
| | | } |
| | | // 若客户已在代理商下,那么创建客户-市场活动关系 |
| | | if (accountInDealerMap != null && accountInDealerMap.size() > 0) { |
| | | |
| | | for (String accountId : accountInDealerMap.keySet()) { |
| | | CampaignRelationship__c campaignRelationship = campaignRelationshipAssembly(accountId,accountInDealerMap.get(accountId)); |
| | | insertCampaignRelationshipList.add(campaignRelationship); |
| | | } |
| | | } |
| | | |
| | | // 保存客户-市场活动关系 |
| | | if (insertCampaignRelationshipList.size() > 0) { |
| | | insert insertCampaignRelationshipList; |
| | | } |
| | | // } catch (Exception e) { |
| | | // errorFlag = true; |
| | | // ApexPages.addMessages(e); |
| | | // Database.rollback(sp); |
| | | // return null; |
| | | // } |
| | | return null; |
| | | } |
| | | // 客户-市场活动关系 赋值 |
| | | public CampaignRelationship__c campaignRelationshipAssembly(String accountId,String productSegment){ |
| | | CampaignRelationship__c result = new CampaignRelationship__c(); |
| | | result.RelationshipAccount__c = accountId; |
| | | result.RelationshipCampaign__c = campaignId; |
| | | result.RelationshipProductSegment__c = productSegment; |
| | | return result; |
| | | } |
| | | // 数据验证及数据拼装 |
| | | public void checkFields(List<String[]> arrayFile) { |
| | | Integer no = 1; |
| | | AccountContactInfo ifno = new AccountContactInfo(no); |
| | | // 查找审批人 |
| | | Map<String,User> userMap = getUser(arrayFile); |
| | | |
| | | accountMap = new Map<String,Account>(); |
| | | // 根据导入文件的客户名称与部门名称以及分野,去系统中查找市场部创建的客户 |
| | | accountMap = getAccountMap(arrayFile); |
| | | accountIsUpdateMap = new Map<String,String>(); |
| | | // 查找客户下的客户团队是否有代理商用户,借此判断客户是否在代理商下 |
| | | accountIsUpdateMap = getAccountTeamMemberList(accountMap); |
| | | // 查找联系人 |
| | | Map<String,Contact> contactMap = getContactMap(accountMap); |
| | | // 客户在代理商下 |
| | | accountInDealerMap = new Map<String,String>(); |
| | | |
| | | |
| | | |
| | | String tem = ''; |
| | | |
| | | upsertContactMap = new Map<String, List<Contact>>(); |
| | | upsertAccountMap = new Map<String, Account>(); |
| | | Map<String, List<String>> errormessageMap = new Map<String, List<String>>(); |
| | | for (Integer line = 1; line < arrayFile.size(); line++) { |
| | | List<Contact> countList = new List<Contact>(); |
| | | Account account = new Account(); |
| | | Contact contact = new Contact(); |
| | | // 客户分野不为空 |
| | | if (String.isNotBlank(arrayFile[line][line_Account_ProductSegment])) { |
| | | |
| | | tem = arrayFile[line][line_Account_ProductSegment]; |
| | | String accountName= arrayFile[line][line_Account_accountName]; |
| | | String divisionName= arrayFile[line][line_Account_DivisionName_D]; |
| | | if (String.isNotBlank(accountName) && String.isNotBlank(divisionName)) { |
| | | tem += ':' + accountName + divisionName; |
| | | } else { |
| | | Integer fileNo = line+1; |
| | | List<String> errormessageList = new List<String>(); |
| | | errormessageList.add( '导入文件第 [ ' + fileNo + ' ] 行 客户名称或部门名称为空,请确认,此条客户与联系人跳过'); |
| | | tem += '-' + fileNo; |
| | | errormessageMap.put(tem,errormessageList); |
| | | continue; |
| | | } |
| | | // 验证客户是否符合规则 |
| | | if (accountFieldCheck(arrayFile[line], errormessageMap, tem,userMap)) { |
| | | |
| | | account = accountAssembly(arrayFile[line],userMap); |
| | | String managementCode = ''; |
| | | |
| | | if (accountMap != null && accountMap.size() > 0 ) { |
| | | String accountId = getAccountId(accountMap,arrayFile[line], errormessageMap, tem); |
| | | if (String.isNotBlank(accountId)) { |
| | | account.Id = accountId; |
| | | |
| | | String key = accountName + divisionName; |
| | | managementCode = accountMap.get(key).ManagementCode_F__c; |
| | | } |
| | | } |
| | | |
| | | // 此处需要处理重名客户 |
| | | if (!upsertAccountMap.containsKey(tem)) { |
| | | // 判断客户是否已在代理商下,在代理商下不更新客户 |
| | | if (accountIsUpdateMap != null && accountIsUpdateMap.size() > 0) { |
| | | // 客户更新 |
| | | if (String.isNotBlank(account.Id)) { |
| | | // 判断客户是否已在代理商下,若不在代理商下更新客户基本信息 |
| | | if (!accountIsUpdateMap.containsKey(account.Id)) { |
| | | upsertAccountMap.put(tem, account); |
| | | } else { |
| | | |
| | | accountInDealerMap.put(account.Id, tem.split(':')[0]); |
| | | List<String> errormessageList = new List<String>(); |
| | | errormessage = '客户名:' + tem.split(':')[1] +divisionName+ ' 客户编码 [ '+managementCode+' ] 已在代理商下;此条客户与联系人不会被更新,仅创建 客户-市场活动关系'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem, errormessageList); |
| | | // 若客户在代理商下 ,客户导入页面会显示该客户的信息,但是不会更新客户 |
| | | // continue; |
| | | } |
| | | } else { |
| | | // 客户新增 |
| | | upsertAccountMap.put(tem, account); |
| | | } |
| | | |
| | | } else { |
| | | // 客户新增 |
| | | upsertAccountMap.put(tem, account); |
| | | } |
| | | |
| | | } else { |
| | | List<String> errormessageList = new List<String>(); |
| | | errormessage = '分野:'+ tem.split(':')[0] + ',客户名:' + tem.split(':')[1] + ' 重名,此条客户与联系人跳过'; |
| | | errormessageList.add(errormessage); |
| | | tem += 'Error'; |
| | | errormessageMap.put(tem, errormessageList); |
| | | system.debug('tem------>' + tem); |
| | | continue; |
| | | |
| | | } |
| | | // 判断与客户同一行的联系人字段是否都为空值 |
| | | if (FirstContactIsNull(arrayFile[line])) { |
| | | ifno = new AccountContactInfo(no, account); |
| | | ACInfoList.add(ifno); |
| | | no++; |
| | | } else { |
| | | // 检查联系人字段是否有异常 |
| | | if (contactFieldCheck(arrayFile[line], errormessageMap, tem)) { |
| | | contact = contactAssembly(arrayFile[line], tem); |
| | | // 若客户在代理商下 客户导入页面会显示联系人信息,但是不会更新联系人信息 |
| | | if (accountInDealerMap != null && accountInDealerMap.size() > 0 && accountInDealerMap.containsKey(account.Id)) { |
| | | ifno = new AccountContactInfo(no, account, contact); |
| | | ACInfoList.add(ifno); |
| | | no++; |
| | | continue; |
| | | } |
| | | if (contactMap != null && contactMap.size() >0) { |
| | | String contactId = getContactId(account,contactMap,arrayFile[line], errormessageMap, tem); |
| | | if (String.isNotBlank(contactId)) { |
| | | contact.Id = contactId; |
| | | } |
| | | } |
| | | countList.add(contact); |
| | | upsertContactMap.put(tem, countList); |
| | | ifno = new AccountContactInfo(no, account, contact); |
| | | ACInfoList.add(ifno); |
| | | no++; |
| | | } else { |
| | | errormessageMap.putAll(errormessageMap); |
| | | } |
| | | } |
| | | } else { |
| | | errormessageMap.putAll(errormessageMap); |
| | | } |
| | | |
| | | system.debug('tem---->' + tem); |
| | | } else { |
| | | if (upsertAccountMap.containsKey(tem)) { |
| | | if (contactFieldCheck(arrayFile[line], errormessageMap, tem)) { |
| | | // 将同一客户下的联系人放到同一个联系人集合中 |
| | | if (upsertContactMap.containsKey(tem)) { |
| | | contact = contactAssembly(arrayFile[line], tem); |
| | | account = upsertAccountMap.get(tem); |
| | | if (contactMap != null && contactMap.size() >0) { |
| | | String contactId = getContactId(account,contactMap,arrayFile[line], errormessageMap, tem); |
| | | if (String.isNotBlank(contactId)) { |
| | | contact.Id = contactId; |
| | | } |
| | | } |
| | | List<Contact> contacts = upsertContactMap.get(tem); |
| | | contacts.add(contact); |
| | | upsertContactMap.put(tem, contacts); |
| | | |
| | | ifno = new AccountContactInfo(no, account, contact); |
| | | ACInfoList.add(ifno); |
| | | no++; |
| | | } else { |
| | | // 同一客户下的前面的联系人都为空或验证不通过。将剩余符合规则的放入联系人集合中。 |
| | | contact = contactAssembly(arrayFile[line], tem); |
| | | if (contactMap != null && contactMap.size() >0) { |
| | | String contactId = getContactId(account,contactMap,arrayFile[line], errormessageMap, tem); |
| | | if (String.isNotBlank(contactId)) { |
| | | contact.Id = contactId; |
| | | } |
| | | } |
| | | countList.add(contact); |
| | | upsertContactMap.put(tem, countList); |
| | | account = upsertAccountMap.get(tem); |
| | | ifno = new AccountContactInfo(no, account, contact); |
| | | ACInfoList.add(ifno); |
| | | no++; |
| | | } |
| | | |
| | | } else { |
| | | errormessageMap.putAll(errormessageMap); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | // 异常信息页面展示 |
| | | if (errormessageMap != null && errormessageMap.size() > 0) { |
| | | Pageerrormessage(errormessageMap); |
| | | |
| | | } |
| | | } |
| | | // 异常信息 |
| | | public void Pageerrormessage(Map<String, List<String>> errormessageMap) { |
| | | |
| | | errorFlag = true; |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '以下数据含有异常信息,请确认!!!')); |
| | | for (String key :errormessageMap.keySet()) { |
| | | if (key.indexOf(':') > 0) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '客户 '+ key.split(':')[1] + ':')); |
| | | } else { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '客户 '+ key + ':')); |
| | | } |
| | | for (String errorm :errormessageMap.get(key)){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '--->' + errorm)); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | // 验证与客户同一行的联系人字段是否都为空 |
| | | public Boolean FirstContactIsNull(String[] strList){ |
| | | Boolean contactNameflag = String.isBlank(strList[line_Contact_LastName]); |
| | | Boolean contactAddrflag = String.isBlank(strList[line_Contact_Address1D]); |
| | | Boolean contactPhoneflag = String.isBlank(strList[line_Contact_MobilePhoneD]); |
| | | Boolean contactPostflag = String.isBlank(strList[line_Contact_PostcodeD]); |
| | | |
| | | if (contactNameflag && contactAddrflag && contactPhoneflag && contactPostflag) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | // 为联系人字段赋值 |
| | | public Contact contactAssembly(String[] strList,String tem) { |
| | | |
| | | Contact result = new Contact(); |
| | | result.LastName = strList[line_Contact_LastName]; |
| | | result.FirstName = null; |
| | | result.Address1D__c = strList[line_Contact_Address1D]; |
| | | result.MobilePhoneD__c = strList[line_Contact_MobilePhoneD]; |
| | | result.PostcodeD__c = strList[line_Contact_PostcodeD]; |
| | | result.Remark__c = strList[line_Contact_Remark]; |
| | | result.ContactStatusD__c = 'Active'; |
| | | //result.StatusD__c = 'Pass'; |
| | | if (tem.split(':')[0] == 'IE') { |
| | | result.ProductSegmentIE__c = true; |
| | | } else if (tem.split(':')[0] == 'RVI') { |
| | | result.ProductSegmentRVI__c = true; |
| | | } else if (tem.split(':')[0] == 'NDT') { |
| | | result.ProductSegmentNDT__c = true; |
| | | } else if (tem.split(':')[0] == 'ANI') { |
| | | result.ProductSegmentANI__c = true; |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | // 为客户字段赋值 |
| | | public Account accountAssembly(String[] strList,Map<String,User> userMap) { |
| | | |
| | | Account result = new Account(); |
| | | String productSegment = strList[line_Account_ProductSegment]; |
| | | result.ProductSegment__c = productSegment; |
| | | result.FacilityNameD__c = strList[line_Account_accountName]; |
| | | result.FacilityName__c = strList[line_Account_accountName]; |
| | | result.Name = '*'; |
| | | result.DivisionName_D__c = strList[line_Account_DivisionName_D]; |
| | | String approver = strList[line_Account_approver].replaceAll(' ', ''); |
| | | result.DealerSelectOwner__c = userMap.get(approver).Id; |
| | | result.Province__c = strList[line_Account_Province]; |
| | | result.CityD__c = strList[line_Account_CityD]; |
| | | result.Address1D__c = strList[line_Account_Address1D]; |
| | | result.PostCodeD__c = strList[line_Account_PostCodeD]; |
| | | String subUse = ''; |
| | | if ((productSegment != 'IE') && '汽车'.equals(strList[line_Account_Sub_UseD])) { |
| | | subUse = 'Automotive'; |
| | | } else if ('其他'.equals(strList[line_Account_Sub_UseD])){ |
| | | subUse = 'Others'; |
| | | } else { |
| | | subUse = strList[line_Account_Sub_UseD]; |
| | | } |
| | | result.Sub_UseD__c = subUse; |
| | | |
| | | result.AccountCampaign__c = campaignId; |
| | | if ('IE'.equals(productSegment)) { |
| | | result.EnglishNameD__c = strList[line_Account_EnglishNameD]; |
| | | result.CustomerSource__c = strList[line_Account_CustomerSource]; |
| | | result.UserType__c = strList[line_Account_UserType]; |
| | | result.TargetCustomer__c = strList[line_Account_TargetCustomer]; |
| | | result.Sub_UseA__c = subUse; |
| | | if(subUse.startsWith('Compo')){ |
| | | result.compo_Acc__c = 'COMPO客户'; |
| | | }else{ |
| | | result.compo_Acc__c = '非COMPO客户'; |
| | | } |
| | | } |
| | | |
| | | result.Remark__c = strList[line_Account_Remark]; |
| | | |
| | | result.AccountStatusD__c = 'Active'; |
| | | |
| | | if (productSegment == 'IE') { |
| | | result.recordTypeId = '01228000000TdF6'; |
| | | } else if (productSegment == 'RVI') { |
| | | result.recordTypeId = '01228000000TdFB'; |
| | | } else if (productSegment == 'NDT') { |
| | | result.recordTypeId = '01228000000TdFG'; |
| | | } else if (productSegment == 'ANI') { |
| | | result.recordTypeId = '01228000000TdFL'; |
| | | } |
| | | return result; |
| | | } |
| | | // 获取审批人 |
| | | public Map<String,User> getUser(List<String[]> arrayFile){ |
| | | Map<String,User> result = new Map<String,User>(); |
| | | List<String> approverList = new List<String>(); |
| | | //查找审批人是否存在 |
| | | for (Integer line = 1; line < arrayFile.size(); line++) { |
| | | //客户分野 |
| | | Boolean productSegment = String.isBlank(arrayFile[line][line_Account_ProductSegment]); |
| | | //审批人 |
| | | Boolean approver = String.isBlank(arrayFile[line][line_Account_approver]); |
| | | if (!productSegment && !approver) { |
| | | approverList.add(arrayFile[line][line_Account_approver]); |
| | | } |
| | | } |
| | | |
| | | if (approverList.size() > 0) { |
| | | |
| | | List<User> userList = [SELECT id,Name,LastName,FirstName |
| | | FROM User ]; |
| | | |
| | | if (userList.size() > 0) { |
| | | for (User user :userList) { |
| | | String firstName = String.isBlank(user.FirstName) ? '' :user.FirstName; |
| | | String name = user.LastName + firstName; |
| | | result.put(name,user); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | // 导入文件客户字段验证 |
| | | public Boolean accountFieldCheck(String[] strList, Map<String, List<String>> errormessageMap, String tem,Map<String,User> userMap) { |
| | | //客户名称 |
| | | Boolean dealerNameflag = String.isBlank(strList[line_Account_accountName]); |
| | | |
| | | //部门名称 |
| | | Boolean deptNameflag = String.isBlank(strList[line_Account_DivisionName_D]); |
| | | //审批人 |
| | | Boolean approverflag = String.isBlank(strList[line_Account_approver]); |
| | | //省 |
| | | Boolean provinceflag = String.isBlank(strList[line_Account_Province]); |
| | | //城市 |
| | | Boolean cityflag = String.isBlank(strList[line_Account_CityD]); |
| | | //客户地址 |
| | | Boolean addressflag = String.isBlank(strList[line_Account_Address1D]); |
| | | //邮编 |
| | | Boolean postflag = String.isBlank(strList[line_Account_PostCodeD]); |
| | | //Sub Use |
| | | Boolean sub_Useflag = String.isBlank(strList[line_Account_Sub_UseD]); |
| | | //客户英文名称(IE验证) |
| | | Boolean accountEnglishNameflag = String.isBlank(strList[line_Account_EnglishNameD]); |
| | | //客户来源(IE验证) |
| | | Boolean customerSourceflag = String.isBlank(strList[line_Account_CustomerSource]); |
| | | //用户属性(IE验证) |
| | | Boolean useRattributeflag = String.isBlank(strList[line_Account_UserType]); |
| | | //客户类型(IE验证) |
| | | Boolean targetCustomerflag = String.isBlank(strList[line_Account_TargetCustomer]); |
| | | |
| | | Boolean temflag = true; |
| | | String errormessage = ''; |
| | | if (tem.indexOf(':') > 0) { |
| | | errormessage = tem.split(':')[1] + ':'; |
| | | } else { |
| | | errormessage = tem; |
| | | } |
| | | |
| | | List<String> errormessageList = new List<String>(); |
| | | |
| | | if (approverflag) { |
| | | errormessage += ' 客户审批人不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | //验证审批人是否存在 |
| | | String approver = strList[line_Account_approver].replaceAll(' ', ''); |
| | | |
| | | if (!userMap.containsKey(approver)){ |
| | | errormessage += ' 客户审批人 ['+strList[line_Account_approver]+'] 不存在,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | if (provinceflag) { |
| | | errormessage += ' 客户省不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | |
| | | Schema.DescribeFieldResult fieldResult = Account.Province__c.getDescribe(); |
| | | |
| | | Map<String,String> accountProvinceMap = getPickListValuesMap(fieldResult); |
| | | String accountProvince = strList[line_Account_Province]; |
| | | if (!accountProvinceMap.containsKey(accountProvince)) { |
| | | errormessage += ' 客户省的值异常,[ '+accountProvince+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | if (cityflag) { |
| | | errormessage += ' 客户城市不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | if (addressflag) { |
| | | errormessage += ' 客户地址不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | if (postflag) { |
| | | errormessage += ' 客户邮政编码不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | Pattern pt = Pattern.compile('[0-9]\\d{5}(?!\\d)'); |
| | | Matcher mc = pt.matcher(strList[line_Account_PostCodeD]); |
| | | if(!mc.matches()) { |
| | | errormessage += ' 客户邮政编码不是6位数字,[ '+strList[line_Account_PostCodeD]+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | if (sub_Useflag) { |
| | | errormessage += ' Sub Use不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | |
| | | // 判断Sub Use是否符合分野所选值 |
| | | String segment = strList[line_Account_ProductSegment]; |
| | | String subUse = strList[line_Account_Sub_UseD]; |
| | | String key = segment + ':' + subUse; |
| | | if (!SegmentSubUseMap.containsKey(key)) { |
| | | String accountName = strList[line_Account_accountName]; |
| | | errormessage += accountName +'- Sub Use [ '+subUse + ' ] 的值无效,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | if (strList[line_Account_ProductSegment] == 'IE') { |
| | | if (accountEnglishNameflag) { |
| | | errormessage += ' 客户的英文名称不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | if (customerSourceflag) { |
| | | errormessage += ' 客户的客户来源不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | Schema.DescribeFieldResult fieldResult = Account.CustomerSource__c.getDescribe(); |
| | | |
| | | Map<String,String> sourceMap = getPickListValuesMap(fieldResult); |
| | | String customerSource = strList[line_Account_CustomerSource]; |
| | | if (!sourceMap.containsKey(customerSource)) { |
| | | errormessage += ' 客户的客户来源值异常,[ '+customerSource+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | if (useRattributeflag) { |
| | | errormessage += ' 客户的用户属性不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | Schema.DescribeFieldResult fieldResult = Account.UserType__c.getDescribe(); |
| | | |
| | | Map<String,String> userTypeMap = getPickListValuesMap(fieldResult); |
| | | String userType = strList[line_Account_UserType]; |
| | | if (!userTypeMap.containsKey(userType)) { |
| | | errormessage += ' 客户的用户属性值异常,[ '+userType+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | |
| | | if (targetCustomerflag) { |
| | | errormessage += ' 客户的客户类型不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | Schema.DescribeFieldResult fieldResult = Account.TargetCustomer__c.getDescribe(); |
| | | |
| | | Map<String,String> targetCustomerMap = getPickListValuesMap(fieldResult); |
| | | String targetCustomer = strList[line_Account_TargetCustomer]; |
| | | if (!targetCustomerMap.containsKey(targetCustomer)) { |
| | | errormessage += ' 客户的客户类型值异常,[ '+targetCustomer+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (temflag) { |
| | | return true; |
| | | |
| | | } else { |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem, errormessageList); |
| | | return temflag; |
| | | } |
| | | |
| | | |
| | | } |
| | | // 获取客户Id |
| | | public String getAccountId(Map<String,Account> accountMap,String[] strList,Map<String, List<String>> errormessageMap, String tem) { |
| | | List<String> errormessageList = new List<String>(); |
| | | if (errormessageMap != null && errormessageMap.size() >0 && errormessageMap.containsKey(tem)) { |
| | | errormessageList = errormessageMap.get(tem); |
| | | } |
| | | |
| | | String result = ''; |
| | | String accountName = strList[line_Account_accountName]; |
| | | String divisionName = strList[line_Account_DivisionName_D]; |
| | | String name = accountName + divisionName; |
| | | |
| | | if (accountMap.containsKey(name)) { |
| | | result = accountMap.get(name).Id; |
| | | String managementCode = accountMap.get(name).ManagementCode_F__c; |
| | | String errormessage = '客户:'+name+' 系统中已存在,客户编码 [ '+managementCode+' ],将更新此客户,请注意;\n'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem,errormessageList); |
| | | } |
| | | |
| | | |
| | | |
| | | return result; |
| | | |
| | | } |
| | | // 获取联系人Id |
| | | public String getContactId(Account account, Map<String,Contact> contactMap,String[] strList,Map<String, List<String>> errormessageMap, String tem) { |
| | | List<String> errormessageList = new List<String>(); |
| | | if (errormessageMap != null && errormessageMap.size() >0 && errormessageMap.containsKey(tem)) { |
| | | errormessageList = errormessageMap.get(tem); |
| | | } |
| | | String result = ''; |
| | | String accountName = account.FacilityNameD__c; |
| | | String divisionName = account.DivisionName_D__c; |
| | | String accountAssemblyName = accountName + divisionName; |
| | | |
| | | String contactlastName = strList[line_Contact_LastName].replaceAll(' ', ''); |
| | | |
| | | String key = accountAssemblyName + contactlastName; |
| | | if (contactMap.containsKey(key)) { |
| | | result = contactMap.get(key).Id; |
| | | String managementCode = contactMap.get(key).ManagementCode_F__c; |
| | | String errormessage = '联系人:'+contactlastName+' 系统中已存在,联系人编码 [ '+managementCode+' ],将更新此联系人,请注意;\n'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem,errormessageList); |
| | | } |
| | | return result; |
| | | } |
| | | // 获取市场战略部创建的客户 |
| | | public Map<String,Account> getAccountMap( List<String[]> arrayFile) { |
| | | |
| | | Map<String,Account> result = new Map<String,Account>(); |
| | | List<String> accountNameList = new List<String>(); |
| | | String productSegment = ''; |
| | | for (Integer line = 1; line < arrayFile.size(); line++) { |
| | | if (String.isNotBlank(arrayFile[line][line_Account_ProductSegment])) { |
| | | productSegment = arrayFile[line][line_Account_ProductSegment]; |
| | | String accountName = arrayFile[line][line_Account_accountName]; |
| | | String divisionName = arrayFile[line][line_Account_DivisionName_D]; |
| | | if (String.isNotBlank(accountName) && String.isNotBlank(divisionName)) { |
| | | String name = accountName + divisionName; |
| | | accountNameList.add(name); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (accountNameList != null && accountNameList.size() > 0) { |
| | | |
| | | List<Account> accountList = [SELECT id,Name,DivisionName_D__c,ProductSegment__c,createddate,OwnerId ,ManagementCode_F__c from Account where MarketingStrategyCreated__c = true AND Name = :accountNameList AND ProductSegment__c = :productSegment]; |
| | | |
| | | if ( accountList.size() > 0) { |
| | | for (Account account :accountList) { |
| | | result.put(account.Name, account); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | // 查找市场战略部创建的客户下的联系人 |
| | | public Map<String,Contact> getContactMap(Map<String,Account> accountMap) { |
| | | |
| | | if (accountMap != null && accountMap.size() > 0) { |
| | | |
| | | Map<String,Contact> result = new Map<String,Contact>(); |
| | | List<String> accountIdList = new List<String>(); |
| | | for (String name : accountMap.keySet()) { |
| | | |
| | | String accountId = accountMap.get(name).Id; |
| | | accountId = accountId.subString(0,15); |
| | | accountIdList.add(accountId); |
| | | } |
| | | |
| | | List<Contact> contactList = [ SELECT Id,ManagementCode_F__c,Name__c,AccountId__c,Account.Name from Contact where AccountId__c In :accountIdList Order by AccountId__c,Id]; |
| | | |
| | | if (contactList.size() > 0) { |
| | | |
| | | for (Contact contact :contactList) { |
| | | String accountNameAndContactName = contact.Account.Name + contact.Name__c; |
| | | result.put(accountNameAndContactName,contact); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | return null; |
| | | |
| | | } |
| | | |
| | | // 查找客户下的客户团队中,是否有代理商用户 |
| | | public Map<String,String> getAccountTeamMemberList(Map<String,Account> accountMap) { |
| | | |
| | | if (accountMap != null && accountMap.size() > 0) { |
| | | Map<String,String> result = new Map<String,String>(); |
| | | List<String> accountIdList = new List<String>(); |
| | | for (String name : accountMap.keySet()) { |
| | | |
| | | String accountId = accountMap.get(name).Id; |
| | | accountIdList.add(accountId); |
| | | } |
| | | |
| | | List<AccountTeamMember> accountTeamMemberList = [ SELECT Id, AccountId,Account.Name, UserId,User.User_Type__c FROM AccountTeamMember where User.User_Type__c = 'PowerPartner' AND AccountId in :accountIdList]; |
| | | if (accountTeamMemberList.size() > 0) { |
| | | for (AccountTeamMember accountTeamMember :accountTeamMemberList) { |
| | | result.put(accountTeamMember.AccountId,accountTeamMember.UserId); |
| | | } |
| | | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | // 验证导入文件的联系人数据 |
| | | public Boolean contactFieldCheck(String[] strList, Map<String, List<String>> errormessageMap, String tem) { |
| | | |
| | | Boolean contactNameflag = String.isBlank(strList[line_Contact_LastName]); |
| | | Boolean contactAddrflag = String.isBlank(strList[line_Contact_Address1D]); |
| | | Boolean contactPhoneflag = String.isBlank(strList[line_Contact_MobilePhoneD]); |
| | | Boolean contactPostflag = String.isBlank(strList[line_Contact_PostcodeD]); |
| | | |
| | | List<String> errormessageList = new List<String>(); |
| | | if (errormessageMap != null && errormessageMap.size() > 0 && errormessageMap.containsKey(tem)) { |
| | | errormessageList = errormessageMap.get(tem); |
| | | } |
| | | if (contactNameflag && ( !contactAddrflag || !contactPhoneflag || !contactPostflag)) { |
| | | String errormessage = '联系人的姓氏不能为空,请确认;\n'; |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem, errormessageList); |
| | | return false; |
| | | } else if (!contactNameflag) { |
| | | Boolean temflag = true; |
| | | String contactName = strList[line_Contact_LastName]; |
| | | String errormessage = contactName + ':'; |
| | | if (contactAddrflag) { |
| | | errormessage += ' 联系人地址不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | if (contactPhoneflag) { |
| | | errormessage += ' 联系人手机不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | if (contactPostflag) { |
| | | errormessage += ' 联系人邮政编码不能为空,请确认;\n'; |
| | | temflag = false; |
| | | } else { |
| | | Pattern pt = Pattern.compile('[0-9]\\d{5}(?!\\d)'); |
| | | Matcher mc = pt.matcher(strList[line_Contact_PostcodeD]); |
| | | if(!mc.matches()) { |
| | | errormessage += ' 联系人邮政编码不是6位数字,[ '+strList[line_Contact_PostcodeD]+' ]请确认;\n'; |
| | | temflag = false; |
| | | } |
| | | } |
| | | |
| | | if (temflag) { |
| | | return true; |
| | | } else { |
| | | errormessageList.add(errormessage); |
| | | errormessageMap.put(tem, errormessageList); |
| | | return temflag; |
| | | } |
| | | |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | class AccountContactInfo { |
| | | public Integer lineNo { get; set; } |
| | | public Account accountpage {get; set;} |
| | | |
| | | public Contact contactpage {get; set;} |
| | | |
| | | public AccountContactInfo(Integer line) { |
| | | |
| | | } |
| | | // 客户数据正常但与客户同一行的联系人数据异常 |
| | | public AccountContactInfo(Integer line, Account account) { |
| | | lineNo = line; |
| | | accountpage = account; |
| | | } |
| | | // 客户数据与客户同一行的联系人数据都正常 |
| | | public AccountContactInfo(Integer line, Account account, Contact contact) { |
| | | lineNo = line; |
| | | accountpage = account; |
| | | contactpage = contact; |
| | | } |
| | | } |
| | | /** |
| | | * 获取一个对象某个选项列表的全部值 |
| | | * @Author XHL |
| | | * @DateTime 2019-09-18 |
| | | * @param fieldResult Schema.DescribeFieldResult fieldResult = Account.Use__c.getDescribe(); |
| | | * 例:获取客户Use字段选项列表的值 |
| | | * @return [description] |
| | | */ |
| | | public Map<String,String> getPickListValuesMap(Schema.DescribeFieldResult fieldResult){ |
| | | Map<String,String> pickListValuesMap= new Map<String,String>(); |
| | | List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues(); |
| | | for( Schema.PicklistEntry pickListVal : ple) |
| | | { |
| | | pickListValuesMap.put(pickListVal.getValue(),pickListVal.getLabel()); |
| | | } |
| | | return pickListValuesMap; |
| | | } |
| | | |
| | | // 验证各个分野的sub Use是否符合要求 |
| | | private Map<String, String> SegmentSubUseMap = new Map<String, String> { |
| | | // IE |
| | | 'IE:LED' => 'LED', |
| | | 'IE:FPD' => 'FPD', |
| | | 'IE:半导体' => '半导体', |
| | | 'IE:电子部品' => '电子部品', |
| | | 'IE:太阳能' => '太阳能', |
| | | 'IE:电子类_其他' => '电子类_其他', |
| | | 'IE:金属' => '金属', |
| | | 'IE:汽车' => '汽车', |
| | | 'IE:石油地质' => '石油地质', |
| | | 'IE:五金模具' => '五金模具', |
| | | 'IE:重工设备' => '重工设备', |
| | | 'IE:材料类_其他' => '材料类_其他', |
| | | // ANI |
| | | 'ANI:其他' => '其他', |
| | | 'ANI:废旧金属' => '废旧金属', |
| | | 'ANI:炼钢厂' => '炼钢厂', |
| | | 'ANI:PMI-石化行业' => 'PMI-石化行业', |
| | | 'ANI:PMI-管道制造' => 'PMI-管道制造', |
| | | 'ANI:PMI-金属制造' => 'PMI-金属制造', |
| | | 'ANI:PMI-电力' => 'PMI-电力', |
| | | 'ANI:RoHS' => 'RoHS', |
| | | 'ANI:ELV' => 'ELV', |
| | | 'ANI:玩具&皮革' => '玩具&皮革', |
| | | 'ANI:贵金属-制造' => '贵金属-制造', |
| | | 'ANI:贵金属-回收' => '贵金属-回收', |
| | | 'ANI:勘探-政府' => '勘探-政府', |
| | | 'ANI:勘探-矿业公司' => '勘探-矿业公司', |
| | | 'ANI:Mining-冶炼' => 'Mining-冶炼', |
| | | 'ANI:Mining-开采' => 'Mining-开采', |
| | | 'ANI:EPA' => 'EPA', |
| | | 'ANI:土壤修复' => '土壤修复', |
| | | 'ANI:土壤研究' => '土壤研究', |
| | | 'ANI:考古&文物' => '考古&文物', |
| | | 'ANI:录井' => '录井', |
| | | 'ANI:制药' => '制药', |
| | | 'ANI:三元催化剂' => '三元催化剂', |
| | | 'ANI:Thermal Power' => 'Thermal Power', |
| | | 'ANI:Nuclear Power' => 'Nuclear Power', |
| | | 'ANI:Wind Power' => 'Wind Power', |
| | | 'ANI:Power(other)' => 'Power(other)', |
| | | // NDT |
| | | 'NDT:汽车' => '汽车', |
| | | 'NDT:Civil Aviation' => 'Civil Aviation', |
| | | 'NDT:Security/Defense' => 'Security/Defense', |
| | | 'NDT:Oil,Gas&Chemical' => 'Oil,Gas&Chemical', |
| | | 'NDT:General Manufacturing' => 'General Manufacturing', |
| | | 'NDT:Inspection/Service/Rental' => 'Inspection/Service/Rental', |
| | | 'NDT:其他' => '其他', |
| | | 'NDT:Thermal Power' => 'Thermal Power', |
| | | 'NDT:Nuclear Power' => 'Nuclear Power', |
| | | 'NDT:Wind Power' => 'Wind Power', |
| | | 'NDT:Power(other)' => 'Power(other)', |
| | | // RVI |
| | | 'RVI:汽车' => '汽车', |
| | | 'RVI:Civil Aviation' => 'Civil Aviation', |
| | | 'RVI:Security/Defense' => 'Security/Defense', |
| | | 'RVI:Oil,Gas&Chemical' => 'Oil,Gas&Chemical', |
| | | 'RVI:General Manufacturing' => 'General Manufacturing', |
| | | 'RVI:Inspection/Service/Rental' => 'Inspection/Service/Rental', |
| | | 'RVI:其他' => '其他', |
| | | 'RVI:Thermal Power' => 'Thermal Power', |
| | | 'RVI:Nuclear Power' => 'Nuclear Power', |
| | | 'RVI:Wind Power' => 'Wind Power', |
| | | 'RVI:Power(other)' => 'Power(other)' |
| | | }; |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class DataLoadAccountControllerTest { |
| | | public static List<RecordType> rectIE; |
| | | public static List<RecordType> rectRVI; |
| | | public static List<RecordType> rectNDT; |
| | | public static List<RecordType> rectANI; |
| | | public static Campaign campain; |
| | | public static DataLoadAccountController controller; |
| | | public static Account accountIE; |
| | | public static Account accountNDT; |
| | | public static Account dealer; |
| | | public static Contact core; |
| | | public static Contact core2; |
| | | public static Contact core3; |
| | | public static void Basicdata(){ |
| | | rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | rectRVI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer RVI']; |
| | | rectNDT = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer NDT']; |
| | | rectANI = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer ANI']; |
| | | |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | |
| | | //代理商 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.FacilityNameD__c = '测试测试1111'; |
| | | dealer.FacilityName__c = '测试测试1111'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'BS'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | // 代理商下联系人 |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | |
| | | String timenow = Datetime.now().format('yyyyMMddHHmmss'); |
| | | // 市场部用户(MarketingStrategy__c =true) |
| | | User hpOwner = new User( LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = System.Label.SystemAdmin,MarketingStrategy__c =true); |
| | | insert hpOwner; |
| | | // 创建代理商用户(ContactId = core.id) |
| | | User dealerUser = new User( LastName = 'ceshi20200803', FirstName = 'owner20200803', Alias = 'hp', CommunityNickname = 'testUser01', Email = 'olympus_hpowner@sunbridge.com', Username = 'testUser01@prectech.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = prof.Id,MarketingStrategy__c =true,ContactId = core.id); |
| | | insert dealerUser; |
| | | // 模拟市场部创建用户 |
| | | System.runAs(hpOwner){ |
| | | accountIE = new Account(); |
| | | accountIE.Name = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭00'; |
| | | accountIE.FacilityNameD__c = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭00动力试制院'; |
| | | accountIE.FacilityName__c = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭00动力试制院'; |
| | | accountIE.DivisionName_D__c = '动力试制院'; |
| | | accountIE.RecordTypeId = rectIE[0].Id; |
| | | accountIE.ProductSegment__c = 'IE'; |
| | | accountIE.stautesD__c = 'Pass'; |
| | | |
| | | insert accountIE; |
| | | |
| | | // accountNDT |
| | | |
| | | accountNDT = new Account(); |
| | | accountNDT.Name = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01'; |
| | | accountNDT.FacilityNameD__c = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01动力试制院'; |
| | | accountNDT.FacilityName__c = '安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01动力试制院'; |
| | | accountNDT.DivisionName_D__c = '动力试制院'; |
| | | accountNDT.RecordTypeId = rectNDT[0].Id; |
| | | accountNDT.ProductSegment__c = 'NDT'; |
| | | accountNDT.stautesD__c = 'Pass'; |
| | | |
| | | // insert accountNDT; |
| | | } |
| | | // 创建客户的联系人 |
| | | core2 = new Contact(email='jplumber@salesforce.com', firstname='',lastname='曹迎春1',accountid=accountIE.id); |
| | | insert core2; |
| | | core3 = new Contact(email='jplumber@salesforce.com', firstname='',lastname='曹迎春2',accountid=accountIE.id); |
| | | insert core3; |
| | | |
| | | // 创建客户的客户团队 |
| | | List<AccountTeamMember> insertList = new List<AccountTeamMember>(); |
| | | // 客户团队-代理商用户 |
| | | AccountTeamMember atm1 = new AccountTeamMember(); |
| | | atm1.accountId = accountIE.Id; |
| | | atm1.userId = dealerUser.Id; |
| | | atm1.teamMemberRole = 'Sales Manager'; |
| | | insertList.add(atm1); |
| | | // 客户团队-正常 |
| | | AccountTeamMember atm2 = new AccountTeamMember(); |
| | | atm2.accountId = accountIE.Id; |
| | | atm2.userId = hpOwner.Id; |
| | | atm2.teamMemberRole = 'Sales Manager'; |
| | | insertList.add(atm2); |
| | | insert insertList; |
| | | // 创建市场活动 |
| | | campain = new Campaign(); |
| | | campain.Name = '测试市场活动'; |
| | | |
| | | insert campain; |
| | | |
| | | List<Account> accountList = [SELECT id,Name,DivisionName_D__c,ProductSegment__c,createddate,OwnerId ,ManagementCode_F__c from Account where IsMarketingStrategyCreated__c = true]; |
| | | |
| | | System.debug('accountList--->'+accountList); |
| | | |
| | | PageReference page = new PageReference('/apex/DataLoadAccount?campaignId='+campain.Id); |
| | | System.Test.setCurrentPage(page); |
| | | controller = new DataLoadAccountController(); |
| | | } |
| | | //全部导入数据都有值 |
| | | static testMethod void fullData_ANI() { |
| | | |
| | | Basicdata(); |
| | | |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob+= '"ANI","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","其他","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | |
| | | controller.save(); |
| | | } |
| | | |
| | | static testMethod void fullData_NDT_0() { |
| | | |
| | | Basicdata(); |
| | | |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob+= '"NDT","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","其他","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | |
| | | controller.save(); |
| | | } |
| | | |
| | | static testMethod void fullData_NDT() { |
| | | |
| | | Basicdata(); |
| | | |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob+= '"NDT","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","其他","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | strblob+= '"NDT","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","其他","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | |
| | | controller.save(); |
| | | } |
| | | |
| | | static testMethod void fullData_IE() { |
| | | |
| | | Basicdata(); |
| | | |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob+= '"IE","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院1","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春IE01","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | strblob+= '"IE","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭02","动力试制院2","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春IE02","合肥市蜀山区包河经济开发区紫云路2","13956020242","230000","联系人1"\n'; |
| | | strblob+= '"IE","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭03","动力试制院3","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","anhuijianghuaiqichegufenyouxiangongsi1","销售活动","公共机构","目标","客户1","曹迎春IE03","合肥市蜀山区包河经济开发区紫云路3","13956020243","230000","联系人1"\n'; |
| | | |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | |
| | | controller.save(); |
| | | } |
| | | |
| | | // 验证客户必填字段 |
| | | static testMethod void inspectData_Account() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob += '"IE","测试客户字段验证","测试客户字段验证","","","","","","","","","","","","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | strblob += '"IE","测试客户字段验证2","测试客户字段验证","xxxx","xxx","","","xxx","xxx","","xxx","xxx","xxx","xxx","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | } |
| | | // 验证联系人 |
| | | static testMethod void inspectData_Contact() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob += '"RVI","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭00","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","Security/Defense","","","","","客户1","","","","",""\n'; |
| | | strblob += '"","","","","","","","","","","","","","","曹迎春1","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","曹迎春2","","","","联系人1"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","曹迎春3","合肥市蜀山区包河经济开发区紫云路1","13956020241","23000","联系人1"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","","合肥市蜀山区包河经济开发区紫云路1","13956020241","230000","联系人1"\n'; |
| | | strblob += '"RVI","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭01","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","23001","Security/Defense","","","","","客户1","","","","",""\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | } |
| | | // 同一客户下的前面的联系人都为空或验证不通过。将剩余符合规则的放入联系人集合中。 |
| | | static testMethod void inspectData_Contact_1() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob += '"ANI","安徽江淮汽车股份有限公司技术中心-测试导入页面关闭ANI","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","三元催化剂","","","","","客户1","","","","",""\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | } |
| | | // 客户名为空 |
| | | static testMethod void inspectData_Contact_AccountNameIsNull() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob += '"ANI","","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","","","","","客户1","","","","",""\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | } |
| | | |
| | | // csv格式错误 |
| | | static testMethod void csvRead_csvFormalError() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码","联系人备注"\n'; |
| | | strblob += '"ANI","","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","","","","","客户1","","","","",""\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | controller.csvRead(); |
| | | } |
| | | |
| | | // csv 列数不足 |
| | | static testMethod void csvRead_csvWrongNumberOfColumns() { |
| | | Basicdata(); |
| | | controller.init(); |
| | | String strblob = '"客户分野","客户/代理商名称.","客户部门名称","客户审批人","客户省","客户城市","客户地址","客户邮编","客户Sub Use","客户英文名称(IE必填)","客户来源(IE必填)","客户用户属性(IE必填)","客户类型(IE必填)","客户备注","联系人姓名","联系人地址","联系人手机","联系人邮政编码"\n'; |
| | | strblob += '"ANI","","动力试制院","王 磊","安徽","合肥","安徽省合肥市蜀山区包河经济开发区紫云路1","230000","电子部品","","","","","客户1","","","","",""\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | strblob += '"","","","","","","","","","","","","","","首行为空","首行为空","首行为空","230000","首行为空"\n'; |
| | | controller.contentFile = Blob.valueOf(strblob); |
| | | |
| | | controller.csvRead(); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class DeleteSSBatch implements Database.Batchable<sObject> { |
| | | public String query; |
| | | |
| | | |
| | | global DeleteSSBatch() { |
| | | this.query = query; |
| | | } |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext bc) { |
| | | |
| | | return Database.getQueryLocator([select Id from SS_Opportunity_detail_product__c]); |
| | | |
| | | } |
| | | |
| | | global void execute(Database.BatchableContext BC, list<Sobject> scope) { |
| | | if(scope.size() > 0){ |
| | | delete scope; |
| | | } |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | 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++; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class DeleteSSBatchTest { |
| | | static testMethod void testMethod1() { |
| | | Database.executeBatch(new DeleteSSBatch(), 200); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class DeliveryConfirmPDFController { |
| | | |
| | | //基础url |
| | | public String baseUrl { get; private set; } |
| | | public String agentName {get; private set; } |
| | | //数据List |
| | | public List<DataLineBean> dataLines {get; private set;} |
| | | //订单Id |
| | | public String laId {get; private set;} |
| | | public Map<String,DataLineBean> numMap {get; private set; } |
| | | public loaner_application__c la{get;private set;} |
| | | public laDataLineBean lab {get; private set;} |
| | | public List<UserDataLineBean> luData {get; private set;} |
| | | public Integer rowNum {get; private set;} |
| | | |
| | | public boolean isSelf{get; private set; } |
| | | public boolean isExpress{get; private set; } |
| | | public boolean isRenew{get; private set; } |
| | | public String OCM_Number{get; private set; } |
| | | |
| | | public DeliveryConfirmPDFController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | } |
| | | //初始化数据 |
| | | public PageReference init(){ |
| | | isSelf = false; |
| | | isExpress = false; |
| | | isRenew = false; |
| | | rowNum = 0; |
| | | dataLines = new List<DataLineBean>(); |
| | | numMap = new Map<String,DataLineBean>(); |
| | | luData = new List<UserDataLineBean>(); |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | //获取借用单信息 |
| | | List<loaner_application__c> laList = [select Id,Follow_Opp_text__c,Follow_Opp__r.InquiryNumber__c,Equipment_Type__c ,pickup_time__c,Loaner_Apply_Renewal_Date__c,loaner_Remark__c,Rental_End_Date__c,Loaner_Ser__c,Approval_Date__c,loaner_request_number__c,Agent__r.Name,Approver__r.Name,Rental_Start_Date__c,loaner_place__c,Demo_purpose__c,direct_shippment_address__c,Loaner_receive_staff__c,Loaner_receive_staff_phone__c,CreatorUserType__c,Applicant_department__c from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | OCM_Number = la.Follow_Opp_text__c; |
| | | agentName = la.Agent__r.Name; |
| | | if(agentName != null){ |
| | | agentName = agentName.replace('(P)', '').replace('(P)',''); |
| | | } |
| | | String dateString = String.valueOf(la.Rental_Start_Date__c) + ' 至 ' +String.valueOf(la.Rental_End_Date__c); |
| | | dateString = dateString.replace('null', ''); |
| | | if(dateString.equals( ' 至 ')){ |
| | | dateString = ''; |
| | | } |
| | | |
| | | if(la.Loaner_Apply_Renewal_Date__c != null){ |
| | | isRenew = true; |
| | | }else if(la.pickup_time__c != null){ |
| | | isSelf = true; |
| | | }else{ |
| | | isExpress = true; |
| | | } |
| | | |
| | | Integer dateNum = 0; |
| | | String dateNumString = ''; |
| | | if(la.Rental_Start_Date__c != null && la.Rental_End_Date__c != null){ |
| | | dateNum = la.Rental_Start_Date__c.daysBetween(la.Rental_End_Date__c ); |
| | | dateNumString = String.valueOf(dateNum) + '天'; |
| | | } |
| | | lab = new laDataLineBean(dateString,la,dateNumString); |
| | | List<loaner_user__c> luList = [select id,Contact__r.Phone,Follow_UP_Opp__r.InquiryNumber__c,Customer__r.Name,Customer__r.DivisionName__c,Contact__r.Name,FromThePeriod__c,EndThePeriod__c from loaner_user__c where loaner_application__c = : laId]; |
| | | List<loaner_application_detail__c> ladList = [select id,LOANER__r.Name,LOANER__r.Internal_Asset_number__c,LOANER__r.SerialNumber,LOANER__r.SerialNumber1__c,Remark__c,ECCode__c,SerialNumber__c,OTCODE__c,LOANER__c,LOANER__r.RecordType.Id,LOANER__r.RecordType.Name,LOANER__r.Description from loaner_application_detail__c where loaner_application__c = :laId]; |
| | | |
| | | for(loaner_user__c lu :luList){ |
| | | |
| | | String borrowDate = String.valueOf(lu.FromThePeriod__c) + ' 至 ' +String.valueOf(lu.EndThePeriod__c); |
| | | borrowDate = borrowDate.replace('null', ''); |
| | | if(borrowDate.equals(' 至 ')){ |
| | | borrowDate = ''; |
| | | } |
| | | String name = lu.Customer__r.Name == null?'':lu.Customer__r.Name; |
| | | rowNum = rowNum+1+(name.length()/30); |
| | | UserDataLineBean udlb = new UserDataLineBean(borrowDate,lu); |
| | | luData.add(udlb); |
| | | } |
| | | |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | |
| | | /*String typeId = lad.LOANER__r.RecordType.id; |
| | | |
| | | if( typeId.substring(0, 15) == System.label.Asset_Record_Type2){ |
| | | if(numMap.size() == 0){ |
| | | DataLineBean dataBean = new DataLineBean(lad.LOANER__r.RecordType.Name,1,lad); |
| | | numMap.put(lad.LOANER__c, dataBean); |
| | | }else{ |
| | | if(numMap.containsKey(lad.LOANER__c)){ |
| | | |
| | | DataLineBean da = numMap.get(lad.LOANER__c); |
| | | da.num = da.num+1; |
| | | }else{ |
| | | DataLineBean dataBean = new DataLineBean(lad.LOANER__r.RecordType.Name,1,lad); |
| | | numMap.put(lad.LOANER__c, dataBean); |
| | | } |
| | | } |
| | | }else{ |
| | | DataLineBean da = new DataLineBean(lad.LOANER__r.RecordType.Name,1,lad); |
| | | dataLines.add(da); |
| | | }*/ |
| | | |
| | | DataLineBean da = new DataLineBean(lad.LOANER__r.RecordType.Name,1,lad); |
| | | dataLines.add(da); |
| | | |
| | | } |
| | | if(numMap.size() > 0){ |
| | | dataLines.addAll(numMap.values()); |
| | | } |
| | | |
| | | |
| | | if(dataLines.size() < 12){ |
| | | Integer num = dataLines.size(); |
| | | for(Integer i =0; i<(12-num); i++){ |
| | | loaner_application_detail__c lac = new loaner_application_detail__c(); |
| | | DataLineBean demo = new DataLineBean(null,null,lac); |
| | | System.debug(i); |
| | | dataLines.add(demo); |
| | | } |
| | | } |
| | | rowNum = rowNum+dataLines.size(); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public class DataLineBean { |
| | | // 样机类型 |
| | | public String recordType { get;private set; } |
| | | // 数量 |
| | | public Integer num { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | public DataLineBean(String rtype,Integer in_no, loaner_application_detail__c in_lad) { |
| | | recordType = rtype; |
| | | num = in_no; |
| | | lad = in_lad; |
| | | } |
| | | } |
| | | |
| | | public class UserDataLineBean{ |
| | | //借用日期 |
| | | public String borrowDate {get;private set;} |
| | | |
| | | public loaner_user__c lu {get;private set;} |
| | | |
| | | public UserDataLineBean(String rdate,loaner_user__c in_lu){ |
| | | borrowDate = rdate; |
| | | lu = in_lu; |
| | | } |
| | | |
| | | } |
| | | |
| | | public class laDataLineBean{ |
| | | //借用日期 |
| | | public String ladate {get;private set;} |
| | | |
| | | //借用期限 |
| | | public String ladateNumS {get; private set;} |
| | | public loaner_application__c lala {get;private set;} |
| | | |
| | | public laDataLineBean(String in_ladate,loaner_application__c in_la,String in_laNum){ |
| | | ladate = in_ladate; |
| | | lala = in_la; |
| | | ladateNumS = in_laNum; |
| | | } |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class DeliveryConfirmPDFControllerTest { |
| | | |
| | | @isTest static void test_method_one() { |
| | | // Implement test code |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12}; |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner.Status__c = '部分发货'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | loaner.pickup_time__c = Date.today(); |
| | | loaner.Rental_Start_Date__c = Date.today().addDays(1); |
| | | loaner.Rental_End_Date__c = Date.today().addDays(2); |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | Loaner_Express__c le = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id, |
| | | NotReceivingNum__c = 3 |
| | | ); |
| | | |
| | | insert le; |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | detail.Loaner_Express__c = le.id; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已回寄'; |
| | | detail.Loaner_Express__c = le.id; |
| | | //detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '欠品中'; |
| | | detail.Loaner_Express__c = le.id; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | |
| | | PageReference page = new PageReference('/apex/DeliveryConfirmPDFController?Id=' + loaner.Id ); |
| | | System.Test.setCurrentPage(page); |
| | | DeliveryConfirmPDFController controller = new DeliveryConfirmPDFController(); |
| | | |
| | | |
| | | controller.init(); |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | // Implement test code |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class DeliveryTriggerHandler { |
| | | public static void setDeliveryReceiver(List<Delivery__c> newList, Map<Id, Delivery__c> newMap, List<Delivery__c > oldList, Map<Id, Delivery__c> oldMap) |
| | | { |
| | | |
| | | List<String> ordidList = new List<String>(); |
| | | Map<String,String> DeliveryToReceiver = new Map<String,String>(); |
| | | for (Delivery__c del : newList) { |
| | | ordidList.add(del.SSBD_Contract__c); |
| | | } |
| | | |
| | | List<Order> ordList = [select Id, CreatedById from Order where Id IN :ordidList]; |
| | | for (Order ord : ordList ) { |
| | | DeliveryToReceiver.put(ord.Id, ord.CreatedById ); |
| | | } |
| | | for (Delivery__c del : newList) |
| | | { |
| | | String s = DeliveryToReceiver.get(del.SSBD_Contract__c); |
| | | if (s!= del.OrderCreatedbyText__c && s!= null) |
| | | { |
| | | del.OrderCreatedbyText__c = s;} |
| | | } |
| | | } |
| | | } |
| | | |
| | | //How annoying!s-s |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>39.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class EmailComeBackListen implements Messaging.InboundEmailHandler { |
| | | global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) { |
| | | //从标题中截取出关联信息 |
| | | System.debug('SWO邮件回复监听'); |
| | | String id = ''; |
| | | String type = ''; |
| | | if(String.isNotBlank(email.subject)){ |
| | | System.debug('email.subject:'+email.subject); |
| | | List<String> str = email.subject.split('~'); |
| | | if(str!=null && str.size()!=0){ |
| | | //截取邮件关联信息,查询邮件关联对象,判断是否跳过邮件服务 |
| | | String name = str[1]; |
| | | System.debug('name:'+name); |
| | | //SWO 的邮件返回 |
| | | if(name.startsWith('S')){ |
| | | type = 'S'; |
| | | name = name.substring(name.indexOf(':')+1,name.length()); |
| | | if(String.isNotBlank(name)){ |
| | | System.debug('name:'+name); |
| | | List<SWO__c> swoList = [select Id,notSaveEmail__c,Name from SWO__c where Name=:name]; |
| | | if (swoList!=null && swoList.size()!=0) { |
| | | id = swoList[0].Id; |
| | | System.debug('回复监听id:'+id); |
| | | System.debug('SWO邮件回复监听:'+swoList[0].notSaveEmail__c); |
| | | if(swoList[0].notSaveEmail__c){ |
| | | System.debug('跳过邮件服务监听'); |
| | | swoList[0].notSaveEmail__c = false; |
| | | update swoList[0]; |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //Case 的邮件返回 |
| | | if(name.startsWith('C')){ |
| | | type = 'C'; |
| | | System.debug('Case 的邮件返回'); |
| | | name = name.substring(name.indexOf(':')+1, name.length()); |
| | | if(String.isNotBlank(name)){ |
| | | List<User_FaultInfo__c> caseList = [select Id,notSaveEmail__c,Name from User_FaultInfo__c where Name=:name]; |
| | | System.debug('caseList:'+caseList); |
| | | if(caseList!=null && caseList.size()!=0){ |
| | | id = caseList[0].Id; |
| | | System.debug('Case邮件回复监听:'+caseList[0].notSaveEmail__c); |
| | | if(caseList[0].notSaveEmail__c){ |
| | | System.debug('跳过邮件服务监听'); |
| | | caseList[0].notSaveEmail__c = false; |
| | | update caseList[0]; |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //报价的邮件返回 |
| | | if(name.startsWith('Q')){ |
| | | type = 'Q'; |
| | | name = name.substring(name.indexOf(':')+1, name.length()); |
| | | if(String.isNotBlank(name)){ |
| | | List<Quotes__c> quotesList = [select Id,notSaveEmail__c,Name from Quotes__c where Name=:name]; |
| | | if (quotesList!=null && quotesList.size()!=0) { |
| | | id = quotesList[0].Id; |
| | | System.debug('Quoteses邮件回复监听:'+quotesList[0].notSaveEmail__c); |
| | | if(quotesList[0].notSaveEmail__c){ |
| | | System.debug('跳过邮件服务监听'); |
| | | quotesList[0].notSaveEmail__c = false; |
| | | update quotesList[0]; |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (String.isNotBlank(id)) { |
| | | createEmail(email,id,type); |
| | | } |
| | | } |
| | | } |
| | | Messaging.InboundEmailResult result = new Messaging.InboundEmailresult(); |
| | | //createEmail(email,id); |
| | | //SendEmail(); |
| | | result.success = true; |
| | | return result; |
| | | } |
| | | |
| | | public void createEmail(Messaging.InboundEmail email,String id,String type){ |
| | | Mail_Merge__c mailMerge = new Mail_Merge__c(); |
| | | mailMerge.RECORD__c = id; |
| | | //邮件标题 |
| | | if(String.isNotBlank(email.subject)){ |
| | | mailMerge.SUBJECTCOPY__c = email.subject; |
| | | List<String> str = email.subject.split('~'); |
| | | if(str!=null && str.size()!=0){ |
| | | mailMerge.SUBJECT__c = str[0]; |
| | | mailMerge.Name = str[0]; |
| | | } |
| | | }else{ |
| | | mailMerge.SUBJECTCOPY__c = ''; |
| | | mailMerge.SUBJECT__c = ''; |
| | | mailMerge.Name = ''; |
| | | } |
| | | if(type == 'S'){ |
| | | mailMerge.SWO__c = id; |
| | | mailMerge.RECORD_TYPE__c = 'SWO'; |
| | | } |
| | | if(type == 'C'){ |
| | | mailMerge.CaseF__c = id; |
| | | mailMerge.RECORD_TYPE__c = 'Case'; |
| | | } |
| | | if(type == 'Q'){ |
| | | mailMerge.Quotes__c = id; |
| | | mailMerge.RECORD_TYPE__c = 'Quotes'; |
| | | } |
| | | //发件人地址 |
| | | mailMerge.FROM__c = email.fromAddress; |
| | | //收件人地址 |
| | | mailMerge.RECIPIENT__c = getAddresses(email.toAddresses); |
| | | //抄送人 |
| | | mailMerge.CC__c = getAddresses(email.ccAddresses); |
| | | |
| | | setAllMember(mailMerge,email.toAddresses,email.ccAddresses); |
| | | //邮件信息 |
| | | mailMerge.MESSAGE__c = email.plainTextBody; |
| | | //收取回复邮件时间 |
| | | mailMerge.DATE__c = Datetime.now(); |
| | | |
| | | mailMerge.TYPE__c = 'reply'; |
| | | |
| | | mailMerge.EMAIL_SENT__c = 'YES'; |
| | | |
| | | insert mailMerge; |
| | | //保存邮件附件 |
| | | saveFile(email.binaryAttachments,mailMerge.Id); |
| | | } |
| | | |
| | | public String getAddresses(List<String> addresses){ |
| | | String returnStr = ''; |
| | | if(addresses!=null && addresses.size()!=0){ |
| | | for(String str:addresses){ |
| | | returnStr += str+';'; |
| | | } |
| | | } |
| | | return returnStr; |
| | | } |
| | | public void setAllMember(Mail_Merge__c mailMerge,List<String> toAddress,List<String> ccAddresses){ |
| | | mailMerge.ALL_MEMBER__c = ''; |
| | | mailMerge.ALL_MEMBER_NAME__c = ''; |
| | | mailMerge.ALL_MEMBER_TYPE__c = ''; |
| | | if(toAddress !=null && toAddress.size()!=0){ |
| | | for(String str : toAddress){ |
| | | //邮件地址之间用“;”隔开,发送邮件页会用“;”分割字符串 |
| | | mailMerge.ALL_MEMBER__c = mailMerge.ALL_MEMBER__c + str + ';'; |
| | | //名字暂时都用“-”,邮件页面分割出“-”会用空代替 |
| | | mailMerge.ALL_MEMBER_NAME__c = mailMerge.ALL_MEMBER_NAME__c + '-;'; |
| | | mailMerge.ALL_MEMBER_TYPE__c = mailMerge.ALL_MEMBER_TYPE__c + 'to;'; |
| | | } |
| | | } |
| | | if(ccAddresses !=null && ccAddresses.size()!=0){ |
| | | for(String str : ccAddresses){ |
| | | if(str.startsWith('email@') || str.equals('') || str.equals('')){ |
| | | continue; |
| | | } |
| | | //邮件地址之间用“;”隔开,发送邮件页会用“;”分割字符串 |
| | | mailMerge.ALL_MEMBER__c = mailMerge.ALL_MEMBER__c + str + ';'; |
| | | //名字暂时都用“-”,邮件页面分割出“-”会用空代替 |
| | | mailMerge.ALL_MEMBER_NAME__c = mailMerge.ALL_MEMBER_NAME__c + '-;'; |
| | | mailMerge.ALL_MEMBER_TYPE__c = mailMerge.ALL_MEMBER_TYPE__c + 'cc;'; |
| | | } |
| | | } |
| | | } |
| | | public void saveFile(List<Messaging.InboundEmail.BinaryAttachment> binaryAttachments,String Id){ |
| | | if (binaryAttachments != null && binaryAttachments.size()!=0) { |
| | | List<Attachment> attachmentList = new List<Attachment>(); |
| | | for(Messaging.InboundEmail.BinaryAttachment emailFile : binaryAttachments){ |
| | | Attachment attachment = new Attachment(); |
| | | attachment.Name = emailFile.fileName; |
| | | attachment.Body = emailFile.body; |
| | | attachment.ParentId = Id; |
| | | attachmentList.add(attachment); |
| | | } |
| | | insert attachmentList; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class EmailComeBackListenTest { |
| | | static testMethod void testMethod1() { |
| | | |
| | | User_FaultInfo__c ca = new User_FaultInfo__c(); |
| | | ca.ORIGIN__c = 'Web'; |
| | | ca.SUBJECT__c = 'test'; |
| | | ca.OFFICE_OWNER__c = 'Beijing'; |
| | | ca.Product_Type__c = 'NDT'; |
| | | ca.TYPE__c = 'Service'; |
| | | ca.LOGISTICS_SHIPMENT_TYPE__c = 'Domestic'; |
| | | ca.STATUS__c = 'Not Started'; |
| | | ca.PRIORITY__c = 'High'; |
| | | insert ca; |
| | | User_FaultInfo__c cas = [select Name from User_FaultInfo__c where Id =: ca.Id]; |
| | | |
| | | List<String> toAddressesList = new List<String>(); |
| | | toAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | List<String> ccAddressesList = new List<String>(); |
| | | ccAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | Messaging.InboundEmail email = new Messaging.InboundEmail(); |
| | | email.fromAddress = 'dai_prectech@olympus.com.cn'; |
| | | email.toAddresses = toAddressesList; |
| | | email.ccAddresses = ccAddressesList; |
| | | email.plainTextBody = 'test'; |
| | | email.subject = 'test~Ctest:'+cas.Name; |
| | | EmailComeBackListen listen = new EmailComeBackListen(); |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | ca.notSaveEmail__c = true; |
| | | update ca; |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | } |
| | | static testMethod void testMethod2() { |
| | | |
| | | SWO__c swo = new SWO__c(); |
| | | swo.Name = 'test2'; |
| | | swo.QUANTITY__c = 22; |
| | | swo.ESTIMATED_LABOUR_HOURS__c = 22; |
| | | swo.LABOUR_RATE__c = 22; |
| | | insert swo; |
| | | |
| | | List<String> toAddressesList = new List<String>(); |
| | | toAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | List<String> ccAddressesList = new List<String>(); |
| | | ccAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | Messaging.InboundEmail email = new Messaging.InboundEmail(); |
| | | email.fromAddress = 'dai_prectech@olympus.com.cn'; |
| | | email.toAddresses = toAddressesList; |
| | | email.ccAddresses = ccAddressesList; |
| | | email.plainTextBody = 'test'; |
| | | email.subject = 'test~Stest:'+swo.Name; |
| | | EmailComeBackListen listen = new EmailComeBackListen(); |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | swo.notSaveEmail__c = true; |
| | | update swo; |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | } |
| | | static testMethod void testMethod3() { |
| | | SWO__c swo = new SWO__c(); |
| | | swo.Name = 'test3'; |
| | | swo.QUANTITY__c = 22; |
| | | swo.ESTIMATED_LABOUR_HOURS__c = 22; |
| | | swo.LABOUR_RATE__c = 22; |
| | | insert swo; |
| | | |
| | | Quotes__c quotes = new Quotes__c(); |
| | | quotes.Name = 'test4'; |
| | | quotes.SWO__c = swo.Id; |
| | | quotes.QuotesType__c = '零件报价单'; |
| | | insert quotes; |
| | | |
| | | Quotes__c quo = [select Name from Quotes__c where Id =: quotes.Id]; |
| | | |
| | | List<String> toAddressesList = new List<String>(); |
| | | toAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | List<String> ccAddressesList = new List<String>(); |
| | | ccAddressesList.add('dai_prectech@olympus.com.cn'); |
| | | Messaging.InboundEmail email = new Messaging.InboundEmail(); |
| | | email.fromAddress = 'dai_prectech@olympus.com.cn'; |
| | | email.toAddresses = toAddressesList; |
| | | email.ccAddresses = ccAddressesList; |
| | | email.plainTextBody = 'test'; |
| | | email.subject = 'test~Qtest:'+quo.Name; |
| | | EmailComeBackListen listen = new EmailComeBackListen(); |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | quotes.notSaveEmail__c = true; |
| | | update quotes; |
| | | listen.handleInboundEmail(email, new Messaging.InboundEnvelope()); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class EquipmentLoanerApplyController { |
| | | // 样机借出申请ID |
| | | private String loanerApplyId; |
| | | public Asset rec { get; set; } |
| | | public String assName { get; set; } |
| | | public String assECcode { get; set; } |
| | | |
| | | public string userType {get;private set; } |
| | | |
| | | /*****************排序用******************/ |
| | | public String sortKey { get; set; } |
| | | public String setId { get; set; } |
| | | public String preSortKey { get; private set; } |
| | | public Boolean sortOrderAsc { get; private set; } |
| | | public Boolean isManager { get; private set; } |
| | | //public Boolean isCancel { get; private set; } |
| | | public String[] sortOrder { get; private set; } |
| | | private String[] columus = new String[]{ 'SerialNumber', 'OT_Code__c', 'EC_Code__c','loaner_place__c', 'Status'}; |
| | | |
| | | public Boolean getcanSave() { |
| | | return ((loanerApply.Status__c != '草案中' && loanerApply.Status__c != '驳回' && isManager == false)); |
| | | } |
| | | public Boolean getcanSearch() { |
| | | return loanerApply.Loaner_LendOrder__c; |
| | | } |
| | | |
| | | //准备天数 |
| | | private Integer prepareDay; |
| | | private Integer dayCount = 0; |
| | | // 显示数据条数限制 |
| | | private Integer Select_Limit = 200; |
| | | private Boolean Over_Limit = false; |
| | | |
| | | /*****************画面表示Bean******************/ |
| | | public loaner_application__c loanerApply { get; set; } |
| | | //显示明细 |
| | | public List<EquipmentSetInfo> equipmentSetRecords { get; set; } |
| | | |
| | | // 样机Set |
| | | public List<EquipmentSetInfo> loanerSetRecords { get; set; } |
| | | |
| | | List<loaner_application_detail__c> del = New List<loaner_application_detail__c>(); |
| | | |
| | | // 样机Set |
| | | private List<String> ecCodeList; |
| | | |
| | | // 已选择样机 |
| | | private List<String> loanerAssetSelected = new List<String>(); |
| | | |
| | | public Integer pageRecordNo { |
| | | get { |
| | | return equipmentSetRecords == null ? 0 : equipmentSetRecords.size(); |
| | | } |
| | | } |
| | | |
| | | public Integer loanerSetNo { |
| | | get { |
| | | return loanerSetRecords == null ? 0 : loanerSetRecords.size(); |
| | | } |
| | | } |
| | | |
| | | public EquipmentLoanerApplyController() { |
| | | // 获得传入参数 |
| | | loanerApplyId = ApexPages.currentPage().getParameters().get('loid'); |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | } |
| | | |
| | | // 画面初始化 |
| | | public void init() { |
| | | userType = UserInfo.getUserType(); |
| | | // 默认排序 |
| | | this.sortKey = '0'; |
| | | this.preSortKey = '0'; |
| | | this.sortOrderAsc = true; |
| | | //this.isCancel = false; |
| | | this.sortOrder = new String[4]; |
| | | this.sortOrder = new String[]{ ' ', ' ', ' ', ' ', ' ','↑'}; |
| | | prepareDay = 0; |
| | | Over_Limit = false; |
| | | isManager = false; |
| | | List<String> profileIdList = new List<String>(); |
| | | Map<String,String> profileIdMap = new Map<String,String>(); |
| | | List<String> lend_DetName = new List<String>(); |
| | | // String profileId = UserInfo.getProfileId().subString(0, 15); |
| | | |
| | | //新的获取简档ID calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的 |
| | | String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); |
| | | |
| | | profileIdList = System.label.LoanerManager.split(','); |
| | | if(profileIdList.size() > 0){ |
| | | for(String str : profileIdList){ |
| | | profileIdMap.put(str, str); |
| | | } |
| | | } |
| | | |
| | | if(profileIdMap.containsKey(new_profileId.subString(0,15))){ |
| | | isManager = true; |
| | | } |
| | | |
| | | /*User userInfo = [SELECT Id,Is_Cancel_Jurisdiction__c FROM User WHERE Id = :UserInfo.getUserId()]; |
| | | if(userInfo.Is_Cancel_Jurisdiction__c) this.isCancel = true;*/ |
| | | |
| | | if (String.isNotBlank(loanerApplyId)) { |
| | | loanerApply = [SELECT id,Name,Demo_purpose__c,EC_Code_1__c,EC_Code_2__c,EC_Code_3__c,EC_Code_4__c, |
| | | EC_Code_5__c,EC_Code_6__c,EC_Code_7__c,EC_Code_8__c,EC_Code_9__c, |
| | | EC_Code_10__c,Prepare_Day__c,Rental_Start_Date__c,Rental_End_Date__c,EC_Code_11__c |
| | | ,EC_Code_12__c,EC_Code_13__c,EC_Code_14__c,EC_Code_15__c,EC_Code_16__c |
| | | ,EC_Code_17__c,EC_Code_18__c,EC_Code_19__c,EC_Code_20__c,Status__c,Equipment_Type__c |
| | | ,Loaner_LendFrom__c,Loaner_LendOrder__c,Manager_detail_Del__c |
| | | ,Loaner_LendFrom__r.Rental_Start_Date__c,Loaner_LendFrom__r.Rental_End_Date__c,Approval_Status__c |
| | | ,DealerOrder_From__c,Approval_Step__c,Request_shipping_Date__c,Remind_Date__c |
| | | ,Loaner_LendUser1__c,Loaner_LendUser2__c,Loaner_LendUser3__c,Loaner_LendUser4__c |
| | | ,Loaner_LendUser5__c,ProductCount19__c,ProductCount20__c,AllLead_OrderName__c |
| | | ,ProductCount1__c,ProductCount2__c,ProductCount3__c,ProductCount4__c,ProductCount5__c,ProductCount6__c |
| | | ,ProductCount7__c,ProductCount8__c,ProductCount9__c,ProductCount10__c,ProductCount11__c,ProductCount12__c |
| | | ,ProductCount13__c,ProductCount14__c,ProductCount15__c,ProductCount16__c,ProductCount17__c,ProductCount18__c |
| | | FROM loaner_application__c WHERE Id = :loanerApplyId ]; |
| | | |
| | | rec = new Asset(); |
| | | rec.Equipment_Type__c = loanerApply.Equipment_Type__c; |
| | | ecCodeList = new List<String>(); |
| | | if(String.isNotBlank(loanerApply.EC_Code_1__c)) ecCodeList.add(loanerApply.EC_Code_1__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_2__c)) ecCodeList.add(loanerApply.EC_Code_2__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_3__c)) ecCodeList.add(loanerApply.EC_Code_3__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_4__c)) ecCodeList.add(loanerApply.EC_Code_4__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_5__c)) ecCodeList.add(loanerApply.EC_Code_5__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_6__c)) ecCodeList.add(loanerApply.EC_Code_6__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_7__c)) ecCodeList.add(loanerApply.EC_Code_7__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_8__c)) ecCodeList.add(loanerApply.EC_Code_8__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_9__c)) ecCodeList.add(loanerApply.EC_Code_9__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_10__c)) ecCodeList.add(loanerApply.EC_Code_10__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_11__c)) ecCodeList.add(loanerApply.EC_Code_11__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_12__c)) ecCodeList.add(loanerApply.EC_Code_12__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_13__c)) ecCodeList.add(loanerApply.EC_Code_13__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_14__c)) ecCodeList.add(loanerApply.EC_Code_14__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_15__c)) ecCodeList.add(loanerApply.EC_Code_15__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_16__c)) ecCodeList.add(loanerApply.EC_Code_16__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_17__c)) ecCodeList.add(loanerApply.EC_Code_17__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_18__c)) ecCodeList.add(loanerApply.EC_Code_18__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_19__c)) ecCodeList.add(loanerApply.EC_Code_19__c.trim()); |
| | | if(String.isNotBlank(loanerApply.EC_Code_20__c)) ecCodeList.add(loanerApply.EC_Code_20__c.trim()); |
| | | if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ |
| | | dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | } |
| | | |
| | | // 已存在样机借出明细历史取得 |
| | | List<loaner_application_detail__c> loanerApplyDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Rental_Start_Date__c |
| | | ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c,LOANER__r.Name |
| | | ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c |
| | | ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c |
| | | ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c |
| | | ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,loanerOrder_Status__c,Remark__c,LOANER__r.Remarks2__c |
| | | ,loaner_application__r.loaner_request_number__c,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c = :loanerApplyId |
| | | order by Name]; |
| | | for(Integer i = 0; i < loanerApplyDetSelected.size(); i++){ |
| | | if (i == Select_Limit) {Over_Limit=true; break;} |
| | | EquipmentSetInfo midData = null; |
| | | if(loanerApplyDetSelected[i].LendPrimary_Name__c != null){ |
| | | lend_DetName.add(loanerApplyDetSelected[i].LendPrimary_Name__c); |
| | | midData = new EquipmentSetInfo(loanerApplyDetSelected[i]); |
| | | midData.firstDet = true; |
| | | }else{ |
| | | midData = new EquipmentSetInfo(loanerApplyDetSelected[i]); |
| | | } |
| | | loanerAssetSelected.add(loanerApplyDetSelected[i].LOANER__c); |
| | | equipmentSetRecords.add(midData); |
| | | } |
| | | |
| | | |
| | | // 样机转借数据 |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '[借出开始日]必须输入转借申请单开始和结束之间的日期。')); |
| | | if(loanerApply.Loaner_LendOrder__c && loanerApply.DealerOrder_From__c != null){ |
| | | List<loaner_application_detail__c> loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Rental_Start_Date__c |
| | | ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c,LOANER__r.Name |
| | | ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c |
| | | ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c |
| | | ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c |
| | | ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c |
| | | ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,is_distribution__c |
| | | from loaner_application_detail__c |
| | | where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) |
| | | AND Id not in : lend_DetName |
| | | AND Lend_Det__c = true |
| | | AND is_distribution__c = false |
| | | order by Name]; |
| | | system.debug('111'+loanerApplyLendDetSelected.size()); |
| | | system.debug('111'+lend_DetName); |
| | | system.debug(loanerApply.DealerOrder_From__c); |
| | | for(Integer i = 0; i < loanerApplyLendDetSelected.size(); i++){ |
| | | if (i == Select_Limit) {Over_Limit=true; break;} |
| | | loanerAssetSelected.add(loanerApplyLendDetSelected[i].LOANER__c); |
| | | EquipmentSetInfo midData = new EquipmentSetInfo(loanerApplyLendDetSelected[i]); |
| | | midData.firstDet = true; |
| | | midData.check = false; |
| | | midData.oldcheck = false; |
| | | equipmentSetRecords.add(midData); |
| | | } |
| | | system.debug(equipmentSetRecords.size()); |
| | | } |
| | | |
| | | prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); |
| | | loanerApply.Prepare_Day__c = prepareDay; |
| | | |
| | | //其他已存在的样机借出历史 |
| | | /*List<loaner_application_detail__c> others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, |
| | | loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c != :loanerApplyId |
| | | and LOANER__c in :loanerAssetSelected |
| | | AND Arrival_wh_Date__c = null |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) |
| | | or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) |
| | | AND StockUp__c = false |
| | | order by Name]; |
| | | Map<String, Date> othersMap = new Map<String,Date>(); |
| | | |
| | | for (loaner_application_detail__c other : others) { |
| | | if (othersMap.containsKey(other.LOANER__c)) { |
| | | continue; |
| | | } else { |
| | | if(other.Received_loaner_Date__c == null){ |
| | | othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | }else{ |
| | | othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; |
| | | info.Rental_End_Date = loanerApply.Rental_End_Date__c; |
| | | info.SEdayCount = dayCount; |
| | | /*if(info.aset.Status == '在库'){ |
| | | if(othersMap.containsKey(info.aset.Id)){ |
| | | info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); |
| | | }else{ |
| | | info.earliest_Lend_Date = Date.today(); |
| | | } |
| | | }*/ |
| | | } |
| | | } |
| | | this.getLoanerSet(); |
| | | if(loanerApply.Equipment_Type__c != 'BS'){ |
| | | this.getDefaultLoSet(); |
| | | } |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'equipmentSetRecords + ' + equipmentSetRecords)); |
| | | // 显示数据条数信息 |
| | | makeMessage(); |
| | | system.debug(equipmentSetRecords); |
| | | system.debug(equipmentSetRecords.size()); |
| | | |
| | | } |
| | | // 获取借出元的所有用户 |
| | | public void getleadUser() { |
| | | if(loanerApply.DealerOrder_From__c != null){ |
| | | List<user> userList = [SELECT Id |
| | | FROM user |
| | | WHERE AccountId = :loanerApply.DealerOrder_From__c |
| | | AND IsActive = true]; |
| | | Integer i = 1; |
| | | for(user us: userList){ |
| | | String column = 'Loaner_LendUser' + i + '__c'; |
| | | loanerApply.put(column,us.Id); |
| | | i++; |
| | | } |
| | | } |
| | | } |
| | | // 获取样机套装 |
| | | public void getLoanerSet() { |
| | | // 所有样机Set |
| | | loanerSetRecords = new List<EquipmentSetInfo>(); |
| | | List<loaner_Set__c> loanerSetSearch = [select Id,set_type__c, Name, Equipment_Type__c,Remarks__c,SerialNumber__c,Internal_Asset_number__c,Status__c,loaner_place__c,Reservation_information__c |
| | | from Loaner_Set__c |
| | | WHERE Equipment_Type__c = :loanerApply.Equipment_Type__c |
| | | order by Name]; |
| | | Integer line = 0; |
| | | for(loaner_Set__c ls : loanerSetSearch){ |
| | | EquipmentSetInfo li = new EquipmentSetInfo(line, ls); |
| | | loanerSetRecords.add(li); |
| | | line += 1; |
| | | } |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'loanerSetRecords' + loanerSetRecords)); |
| | | } |
| | | |
| | | // 获取申请单中默认样机 |
| | | public void getDefaultLoSet() { |
| | | system.debug('getDefaultLoSet'); |
| | | List<String> lend_DetName = new List<String>(); |
| | | //已选择个体管理样机 |
| | | List<String> loanerindividualList = new List<String>(); |
| | | //// 画面已打勾的明细保留 |
| | | List<EquipmentSetInfo> selectedloanerRecords = new List<EquipmentSetInfo>(); |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | if (info.check == true) { |
| | | selectedloanerRecords.add(info); |
| | | if(String.isNotEmpty(info.lad.LendPrimary_Name__c)){ |
| | | lend_DetName.add(info.lad.LendPrimary_Name__c); |
| | | } |
| | | if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ |
| | | loanerindividualList.add(info.aset.Id); |
| | | } |
| | | } |
| | | } |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | loanerAssetSelected = new list<String>(); |
| | | for (EquipmentSetInfo info : selectedloanerRecords) { |
| | | loanerAssetSelected.add(info.aset.Id); |
| | | } |
| | | |
| | | // 已存在明细行做成 |
| | | equipmentSetRecords.addAll(selectedloanerRecords); |
| | | // 所有ECcode样机 |
| | | |
| | | //loanerSetRecords = new List<loaner_Set__c>(); |
| | | //转借分支 |
| | | if(loanerApply.Loaner_LendOrder__c){ |
| | | List<loaner_application_detail__c> loanerApplyLendDetSelected = new List<loaner_application_detail__c>(); |
| | | if(ecCodeList.size() > 0){ |
| | | loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description,LOANER__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status |
| | | ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c |
| | | ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c |
| | | ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c |
| | | ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c |
| | | ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,LOANER__r.Name |
| | | from loaner_application_detail__c |
| | | where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) |
| | | AND Id not in : lend_DetName |
| | | AND LOANER__r.EC_Code__c in : ecCodeList |
| | | AND Lend_Det__c = true |
| | | AND is_distribution__c = false |
| | | order by Name]; |
| | | system.debug('1'); |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'loanerApplyLendDetSelected. ' + loanerApplyLendDetSelected.size())); |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'ecCodeList.' + ecCodeList.size())); |
| | | }else{ |
| | | loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Description |
| | | ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c |
| | | ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c |
| | | ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c |
| | | ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c |
| | | ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,LOANER__r.Name |
| | | from loaner_application_detail__c |
| | | where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) |
| | | AND Id not in : lend_DetName |
| | | AND Lend_Det__c = true |
| | | AND is_distribution__c = false |
| | | order by Name]; |
| | | system.debug('2'); |
| | | } |
| | | |
| | | for(Integer i = 0; i < loanerApplyLendDetSelected.size(); i++){ |
| | | if (i == Select_Limit) {Over_Limit=true; break;} |
| | | loanerAssetSelected.add(loanerApplyLendDetSelected[i].LOANER__c); |
| | | EquipmentSetInfo midData = new EquipmentSetInfo(loanerApplyLendDetSelected[i]); |
| | | midData.firstDet = true; |
| | | midData.check = false; |
| | | midData.oldcheck = false; |
| | | equipmentSetRecords.add(midData); |
| | | } |
| | | system.debug(equipmentSetRecords.size()); |
| | | }else{ |
| | | //非转借分支 |
| | | /* WLIG-C3N6BW XHL 样机分配显示其它分野的保有设备,故添加过滤条件 |
| | | AND Equipment_Type__c = :loanerApply.Equipment_Type__c |
| | | */ |
| | | |
| | | List<Asset> queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c, OT_Code__c,AssetType__c,Description, |
| | | EC_Code__c, status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c |
| | | ,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,Name__c,ProductName__c,Rental_Start_Date__c |
| | | from Asset |
| | | WHERE EC_Code__c in : ecCodeList |
| | | AND Id not in : loanerindividualList |
| | | AND Equipment_Type__c = :loanerApply.Equipment_Type__c |
| | | order by EC_Code__c]; |
| | | for (Asset query : queryList) { |
| | | loanerAssetSelected.add(query.Id); |
| | | } |
| | | system.debug(queryList); |
| | | // 新明细行做成 |
| | | Integer j = 0; |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | j++; |
| | | } |
| | | } |
| | | if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ |
| | | dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | } |
| | | prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); |
| | | loanerApply.Prepare_Day__c = prepareDay; |
| | | |
| | | //其他已存在的样机借出历史 |
| | | /*List<loaner_application_detail__c> others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, |
| | | loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c,Remark__c,LOANER__r.Remarks2__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c != :loanerApplyId |
| | | and LOANER__c in :loanerAssetSelected |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | AND Arrival_wh_Date__c = null |
| | | and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) |
| | | or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) |
| | | AND StockUp__c = false |
| | | order by Name]; |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); |
| | | Map<String, Date> othersMap = new Map<String,Date>(); |
| | | |
| | | for (loaner_application_detail__c other : others) { |
| | | if (othersMap.containsKey(other.LOANER__c)) { |
| | | continue; |
| | | } else { |
| | | if(other.Received_loaner_Date__c == null){ |
| | | othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | }else{ |
| | | othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); |
| | | } |
| | | } |
| | | }*/ |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); |
| | | |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; |
| | | info.Rental_End_Date = loanerApply.Rental_End_Date__c; |
| | | info.SEdayCount = dayCount; |
| | | /*if(info.aset.Status == '在库'){ |
| | | if(othersMap.containsKey(info.aset.Id)){ |
| | | info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); |
| | | }else{ |
| | | info.earliest_Lend_Date = Date.today(); |
| | | } |
| | | }*/ |
| | | } |
| | | system.debug('end'); |
| | | } |
| | | |
| | | // 获取样机套装 |
| | | public void getLoanerSetdet() { |
| | | //已选择个体管理样机 |
| | | List<String> loanerindividualList = new List<String>(); |
| | | //// 画面已打勾的明细保留 |
| | | List<EquipmentSetInfo> selectedloanerRecords = new List<EquipmentSetInfo>(); |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | if (info.check == true) { |
| | | selectedloanerRecords.add(info); |
| | | if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ |
| | | loanerindividualList.add(info.aset.Id); |
| | | } |
| | | } |
| | | } |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | loanerAssetSelected = new list<String>(); |
| | | for (EquipmentSetInfo info : selectedloanerRecords) { |
| | | loanerAssetSelected.add(info.aset.Id); |
| | | } |
| | | |
| | | // 已存在明细行做成 |
| | | equipmentSetRecords.addAll(selectedloanerRecords); |
| | | |
| | | // 样机set中所有样机 |
| | | List<String> loanerSetDetIDList = new List<String>(); |
| | | |
| | | for(Loaner_Set_Detail__c lSD : [SELECT Id,Asset__c FROM Loaner_Set_Detail__c WHERE Loaner_Set__c = :setId]){ |
| | | loanerSetDetIDList.add(lSD.Asset__c); |
| | | } |
| | | /* WLIG-C3N6BW XHL 样机分配显示其它分野的保有设备,故添加过滤条件 |
| | | AND Equipment_Type__c = :loanerApply.Equipment_Type__c |
| | | */ |
| | | List<Asset> queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c,Name__c,AssetType__c,Loaner__c,Rental_Start_Date__c , |
| | | OT_Code__c, EC_Code__c, status,Count_can_allocate_F__c,Description, |
| | | RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,ProductName__c |
| | | from Asset |
| | | where Id in :loanerSetDetIDList |
| | | AND Id not in : loanerindividualList |
| | | AND Equipment_Type__c = :loanerApply.Equipment_Type__c |
| | | /*AND status = '在库'*/]; |
| | | for (Asset query : queryList) { |
| | | loanerAssetSelected.add(query.Id); |
| | | } |
| | | // 新明细行做成 |
| | | Integer j = 0; |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | j++; |
| | | //} |
| | | } |
| | | if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ |
| | | dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | } |
| | | prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); |
| | | loanerApply.Prepare_Day__c = prepareDay; |
| | | |
| | | //其他已存在的样机借出历史 |
| | | /*List<loaner_application_detail__c> others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, |
| | | loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c != :loanerApplyId |
| | | and LOANER__c in :loanerAssetSelected |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | AND Arrival_wh_Date__c = null |
| | | and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) |
| | | or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) |
| | | AND StockUp__c = false |
| | | order by Name]; |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); |
| | | Map<String, Date> othersMap = new Map<String,Date>(); |
| | | |
| | | for (loaner_application_detail__c other : others) { |
| | | if (othersMap.containsKey(other.LOANER__c)) { |
| | | continue; |
| | | } else { |
| | | if(other.Received_loaner_Date__c == null){ |
| | | othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | }else{ |
| | | othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); |
| | | } |
| | | } |
| | | }*/ |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); |
| | | |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; |
| | | info.Rental_End_Date = loanerApply.Rental_End_Date__c; |
| | | info.SEdayCount = dayCount; |
| | | /*if(info.aset.Status == '在库'){ |
| | | if(othersMap.containsKey(info.aset.Id)){ |
| | | info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); |
| | | }else{ |
| | | info.earliest_Lend_Date = Date.today(); |
| | | } |
| | | }*/ |
| | | } |
| | | } |
| | | |
| | | // 检索样机 |
| | | public void searchLoanerApp() { |
| | | //已选择个体管理样机 |
| | | List<String> loanerindividualList = new List<String>(); |
| | | //// 画面已打勾的明细保留 |
| | | List<EquipmentSetInfo> selectedloanerRecords = new List<EquipmentSetInfo>(); |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | if (info.check == true) { |
| | | selectedloanerRecords.add(info); |
| | | if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ |
| | | loanerindividualList.add(info.aset.Id); |
| | | } |
| | | }else{ |
| | | if(info.oldcheck == true && info.lad != null){ |
| | | del.add(info.lad); |
| | | } |
| | | } |
| | | } |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | loanerAssetSelected = new list<String>(); |
| | | for (EquipmentSetInfo info : selectedloanerRecords) { |
| | | loanerAssetSelected.add(info.aset.Id); |
| | | } |
| | | // 已存在明细行做成 |
| | | equipmentSetRecords.addAll(selectedloanerRecords); |
| | | // 所有ECcode样机 |
| | | String ecCodeTail = '(\''; |
| | | for(Integer i = 0 ; i< ecCodeList.size();i++){ |
| | | if(i<ecCodeList.size()-1){ |
| | | ecCodeTail += ecCodeList[i]+'\',\''; |
| | | }else{ |
| | | ecCodeTail += ecCodeList[i]+'\')'; |
| | | } |
| | | } |
| | | |
| | | String loanerindTail = '(\''; |
| | | for(Integer i = 0 ; i< loanerindividualList.size();i++){ |
| | | if(i<loanerindividualList.size()-1){ |
| | | loanerindTail += loanerindividualList[i]+'\',\''; |
| | | }else{ |
| | | loanerindTail += loanerindividualList[i]+'\')'; |
| | | } |
| | | } |
| | | |
| | | String soql = 'select Id,Name, SerialNumber, Loaner__c,Internal_Asset_number__c, OT_Code__c,EC_Code__c, Name__c,ProductName__c,AssetType__c,Description,Rental_Start_Date__c,'; |
| | | soql += ' status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c from Asset WHERE Id != null '; |
| | | |
| | | |
| | | if (!String.isBlank(assName)) { |
| | | soql += ' and Name like \'%' + String.escapeSingleQuotes(assName.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(rec.OT_Code__c)) { |
| | | soql += ' and OT_Code__c like \'%' + String.escapeSingleQuotes(rec.OT_Code__c.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(assECcode)) { |
| | | soql += ' and EC_Code__c like \'%' + String.escapeSingleQuotes(assECcode.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(rec.Equipment_Type__c)) { |
| | | soql += ' and Equipment_Type__c = \'' + String.escapeSingleQuotes(rec.Equipment_Type__c) + '\''; |
| | | } |
| | | if (!String.isBlank(rec.loaner_place__c)) { |
| | | soql += ' and loaner_place__c = \'' + String.escapeSingleQuotes(rec.loaner_place__c) + '\''; |
| | | } |
| | | if (!String.isBlank(rec.Status)) { |
| | | soql += ' and status = \'' + String.escapeSingleQuotes(rec.Status) + '\''; |
| | | } |
| | | if (!String.isBlank(rec.SerialNumber)) { |
| | | soql += ' and SerialNumber like \'%' + String.escapeSingleQuotes(rec.SerialNumber.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(rec.Internal_Asset_number__c)) { |
| | | soql += ' and Internal_Asset_number__c like \'%' + String.escapeSingleQuotes(rec.Internal_Asset_number__c.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | /** |
| | | *2018/10/15 |
| | | *NDT/ANI分野修改 |
| | | */ |
| | | |
| | | if(!String.isBlank(rec.Remarks2__c)){ |
| | | soql += ' and Remarks2__c like \'%' + String.escapeSingleQuotes(rec.Remarks2__c.trim().replaceAll('%','\\%')) + '%\''; |
| | | } |
| | | |
| | | if (loanerindividualList.size() > 0) { |
| | | soql += ' and Id not in ' + loanerindTail; |
| | | } |
| | | if (ecCodeList.size() > 0) { |
| | | soql += ' and EC_Code__c in ' + ecCodeTail; |
| | | } |
| | | |
| | | system.debug(soql); |
| | | List<Asset> queryList = Database.query(soql); |
| | | /*List<Asset> queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c, OT_Code__c, |
| | | EC_Code__c, status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c |
| | | from Asset |
| | | WHERE EC_Code__c in : ecCodeList |
| | | AND Id not in : loanerindividualList |
| | | order by EC_Code__c];*/ |
| | | for (Asset query : queryList) { |
| | | loanerAssetSelected.add(query.Id); |
| | | loanerindividualList.add(query.Id); |
| | | } |
| | | system.debug(queryList); |
| | | // 新明细行做成 |
| | | Integer j = 0; |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | j++; |
| | | //} |
| | | } |
| | | |
| | | |
| | | // 所有样机 |
| | | soql = this.makeSoql(assName, rec.OT_Code__c, assECcode, rec.Equipment_Type__c, rec.loaner_place__c, rec.Status,rec.SerialNumber,rec.Internal_Asset_number__c, loanerindividualList); |
| | | soql += ' order by RecordType.Name asc limit ' + (Select_Limit + 1); |
| | | system.debug(soql); |
| | | queryList = Database.query(soql); |
| | | for (Asset query : queryList) { |
| | | loanerAssetSelected.add(query.Id); |
| | | } |
| | | system.debug(queryList); |
| | | // 新明细行做成 |
| | | j = 0; |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | j++; |
| | | //} |
| | | } |
| | | if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ |
| | | dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | } |
| | | prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); |
| | | loanerApply.Prepare_Day__c = prepareDay; |
| | | |
| | | //其他已存在的样机借出历史 |
| | | /*List<loaner_application_detail__c> others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, |
| | | loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c |
| | | ,Allocated_Det__c,LendPrimary_Name__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c != :loanerApplyId |
| | | and LOANER__c in :loanerAssetSelected |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | AND Arrival_wh_Date__c = null |
| | | and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) |
| | | or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) |
| | | AND StockUp__c = false |
| | | order by Name]; |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); |
| | | Map<String, Date> othersMap = new Map<String,Date>(); |
| | | |
| | | for (loaner_application_detail__c other : others) { |
| | | if (othersMap.containsKey(other.LOANER__c)) { |
| | | continue; |
| | | } else { |
| | | if(other.Received_loaner_Date__c == null){ |
| | | othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | }else{ |
| | | othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); |
| | | } |
| | | } |
| | | }*/ |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); |
| | | |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; |
| | | info.Rental_End_Date = loanerApply.Rental_End_Date__c; |
| | | info.SEdayCount = dayCount; |
| | | /*if(info.aset.Status == '在库'){ |
| | | if(othersMap.containsKey(info.aset.Id)){ |
| | | info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); |
| | | }else{ |
| | | info.earliest_Lend_Date = Date.today(); |
| | | } |
| | | }*/ |
| | | } |
| | | // 显示数据条数信息 |
| | | makeMessage(); |
| | | } |
| | | |
| | | public PageReference save() { |
| | | system.debug(isManager); |
| | | Boolean hasError = false; |
| | | Boolean chukuStatus = false; |
| | | String strMessage = null; |
| | | Map<String,String> asetEquipmentMap = new Map<String,String>(); |
| | | List<String> asetEquipmentList = new List<String>(); |
| | | Set<String> typeSet = new Set<String>(); |
| | | Set<String> LoanerSet = new Set<String>(); |
| | | if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Remind_Date__c != null){ |
| | | if(loanerApply.Remind_Date__c > Date.today()){ |
| | | hasError = true; |
| | | strMessage = '请提前3个工作日分配样机。'; |
| | | } |
| | | } |
| | | |
| | | Integer num = 0; |
| | | /*if(isCancel){ |
| | | hasError = true; |
| | | strMessage = '您的账户已被冻结,请联系管理员。'; |
| | | }*/ |
| | | |
| | | /*if(loanerApply.Rental_Start_Date__c == null){ |
| | | hasError = true; |
| | | strMessage = '请输入[借出开始日]'; |
| | | } |
| | | if(loanerApply.Rental_End_Date__c == null){ |
| | | hasError = true; |
| | | strMessage = '请输入[借出结束日]'; |
| | | } |
| | | if (loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null && loanerApply.Rental_Start_Date__c > loanerApply.Rental_End_Date__c) { |
| | | hasError = true; |
| | | strMessage = '[借出开始日]必须小于等于[借出结束日]'; |
| | | }*/ |
| | | for (EquipmentSetInfo ass : equipmentSetRecords) { |
| | | if(ass.check == true){ |
| | | |
| | | asetEquipmentMap.put(ass.aset.loaner_place__c, ass.aset.loaner_place__c); |
| | | asetEquipmentList.add(ass.aset.loaner_place__c); |
| | | typeSet.add(ass.aset.AssetType__c); |
| | | if(loanerApply.Equipment_Type__c == 'BS' && loanerApply.Loaner_LendOrder__c){ |
| | | LoanerSet.add(ass.lad.loaner_application__c); |
| | | num++; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if ((loanerApply.Equipment_Type__c != 'IE' && loanerApply.Equipment_Type__c != 'NDT' && loanerApply.Equipment_Type__c != 'ANI') && asetEquipmentMap.size() > 1) { |
| | | hasError = true; |
| | | strMessage = 'IE以外的申请单,只能借一个存放地的样机。'; |
| | | } |
| | | if ((loanerApply.Equipment_Type__c != 'IE' && loanerApply.Equipment_Type__c != 'NDT' && loanerApply.Equipment_Type__c != 'ANI') && loanerApply.Approval_Status__c == false && asetEquipmentMap.size() > 1) { |
| | | hasError = true; |
| | | strMessage = '只能借一个存放地的样机。'; |
| | | } |
| | | if(loanerApply.Equipment_Type__c == 'BS' && typeSet.size()>1 && typeSet.contains('维修部件') ){ |
| | | hasError = true; |
| | | strMessage = '维修产品只能单独出借。'; |
| | | } |
| | | if(loanerApply.Equipment_Type__c == 'BS' && LoanerSet.size()>1 && loanerApply.Loaner_LendOrder__c){ |
| | | hasError = true; |
| | | strMessage = '只能转借一个借用单的样机。'; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> temp = [select id from loaner_application_detail__c where loaner_application__c = :LoanerSet and Receipt_Status__c = 'OK']; |
| | | system.debug(temp.size()+'------'+num); |
| | | if(temp.size() > num && loanerApply.Equipment_Type__c == 'BS' && loanerApply.Loaner_LendOrder__c){ |
| | | hasError = true; |
| | | strMessage = '转借时请选择申请单内全部样机。'; |
| | | } |
| | | |
| | | if (hasError) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, strMessage)); |
| | | return null; |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try{ |
| | | //转借分支 |
| | | if(loanerApply.Loaner_LendOrder__c){ |
| | | Map<String,String> lendOrderName = new Map<String,String>(); |
| | | List<loaner_application_detail__c> ins = New List<loaner_application_detail__c>(); |
| | | //del = New List<loaner_application_detail__c>(); |
| | | List<String> lendPrimaryList = new List<String>(); |
| | | List<String> delendIDList = new List<String>(); |
| | | Map<String,Decimal> asetNoMap = new Map<String,Decimal>(); |
| | | List<loaner_application_detail__c> oldList = new List<loaner_application_detail__c>(); |
| | | Integer indexNum = 1; |
| | | Integer i = 1; |
| | | if (loanerApply.Loaner_LendFrom__r.Rental_Start_Date__c > loanerApply.Rental_Start_Date__c || loanerApply.Loaner_LendFrom__r.Rental_End_Date__c < loanerApply.Rental_Start_Date__c) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '[借出开始日]必须输入转借申请单开始和结束之间的日期。')); |
| | | return null; |
| | | } |
| | | for (EquipmentSetInfo ass : equipmentSetRecords) { |
| | | if(ass.check == true){ |
| | | //判断是否已经分配,借出后不计算数量 |
| | | if(ass.lad.Allocated_Det__c == true){ |
| | | |
| | | }else{ |
| | | if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | if(asetNoMap.containsKey(ass.aset.Id)){ |
| | | if(ass.deatilNo > 0){ |
| | | asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + ass.deatilNo); |
| | | }else if(ass.lad.RAESD_Status__c == '已分配'){ |
| | | asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + 1); |
| | | } |
| | | }else{ |
| | | if(ass.deatilNo > 0){ |
| | | asetNoMap.put(ass.aset.Id,ass.deatilNo); |
| | | }else if(ass.lad.RAESD_Status__c == '已分配'){ |
| | | asetNoMap.put(ass.aset.Id,1); |
| | | } |
| | | } |
| | | if(ass.aset.Count_can_allocate_F__c < asetNoMap.get(ass.aset.Id)){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '样机 ' + ass.aset.EC_Code__c + ' 借出数量超出可分配数量。')); |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | if(ass.lad.Name == null && String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1 && ass.aset.status != '在库'){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的状态是' + ass.aset.status + ',无法再分配。')); |
| | | return null; |
| | | } |
| | | if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2 && ass.aset.Count_can_allocate_F__c <= 0){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的可以分配数量是'+ ass.aset.Count_can_allocate_F__c +',无法再分配。')); |
| | | return null; |
| | | } |
| | | if (ass.firstDet == false && loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_Start_Date__c < ass.earliest_Lend_Date) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的[借出开始日]必须输入从[最早可借出日]开始起的日期。')); |
| | | return null; |
| | | } |
| | | if(ass.deatilNo > 0){ |
| | | for(Integer j = 0; j < ass.deatilNo; j++){ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotEmpty(ass.lad.Id)){ |
| | | if(ass.firstDet && ass.lad.loaner_application__c != loanerApplyId){ |
| | | lendOrderName.put(ass.lad.loaner_application__r.loaner_request_number__c, ass.lad.loaner_application__r.loaner_request_number__c); |
| | | insertDet.loanerOrder_Status__c = ass.lad.loaner_application__c +',' + ass.lad.loaner_application__r.Status__c; |
| | | insertDet.LendPrimary_Name__c = ass.lad.Id; |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | ass.lad.is_distribution__c = true; |
| | | oldList.add(ass.lad); |
| | | }else{ |
| | | insertDet.Id = ass.lad.Id; |
| | | } |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | } |
| | | //else{ |
| | | // insertDet.loaner_application__c = loanerApplyId; |
| | | // insertDet.RAESD_Status__c = '已分配'; |
| | | // insertDet.LOANER__c = ass.aset.Id; |
| | | // insertDet.Allocate_Date__c = Date.today(); |
| | | //} |
| | | if(String.isNotBlank(ass.lad.LendPrimary_Name__c)) lendPrimaryList.add(ass.lad.LendPrimary_Name__c); |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | } |
| | | } |
| | | /*else{ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotEmpty(ass.lad.Id)){ |
| | | if(ass.firstDet && ass.lad.loaner_application__c != loanerApplyId){ |
| | | lendOrderName.put(ass.lad.loaner_application__r.loaner_request_number__c, ass.lad.loaner_application__r.loaner_request_number__c); |
| | | insertDet.loanerOrder_Status__c = ass.lad.loaner_application__c +',' + ass.lad.loaner_application__r.Status__c; |
| | | insertDet.LendPrimary_Name__c = ass.lad.Id ; |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | }else{ |
| | | insertDet.Id = ass.lad.Id; |
| | | } |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | } |
| | | //else{ |
| | | // insertDet.loaner_application__c = loanerApplyId; |
| | | // insertDet.RAESD_Status__c = '已分配'; |
| | | // insertDet.Allocate_Date__c = Date.today(); |
| | | // insertDet.LOANER__c = ass.aset.Id; |
| | | //} |
| | | if(String.isNotBlank(ass.lad.LendPrimary_Name__c)) lendPrimaryList.add(ass.lad.LendPrimary_Name__c); |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | }*/ |
| | | }else if(ass.oldcheck == true && ass.firstDet == false){ |
| | | loaner_application_detail__c delDet = new loaner_application_detail__c(); |
| | | delDet.Id = ass.lad.Id; |
| | | del.add(delDet); |
| | | }else if(ass.oldcheck == true && ass.firstDet == true){ |
| | | delendIDList.add(ass.lad.Id); |
| | | |
| | | |
| | | } |
| | | indexNum += 1; |
| | | } |
| | | loanerApply.loaner_place__c = ''; |
| | | if(asetEquipmentMap.size() == 1){ |
| | | if(asetEquipmentList.size() > 0) loanerApply.loaner_place__c = asetEquipmentList[0]; |
| | | } |
| | | this.getleadUser(); |
| | | |
| | | this.moveDetail(delendIDList); |
| | | //return null; |
| | | //this.addDetail(inlendIDList); |
| | | |
| | | //删除取消的样机明细 |
| | | if (del.size()>0){ |
| | | delete del; |
| | | } |
| | | if(ins.size()>0){ |
| | | upsert ins; |
| | | } |
| | | if(oldList.size()>0){ |
| | | update oldList; |
| | | } |
| | | for(loaner_application_detail__c lad : [SELECT Id,loaner_application__r.loaner_request_number__c FROM loaner_application_detail__c WHERE Id in : lendPrimaryList]){ |
| | | lendOrderName.put(lad.loaner_application__r.loaner_request_number__c, lad.loaner_application__r.loaner_request_number__c); |
| | | } |
| | | loanerApply.AllLead_OrderName__c = ''; |
| | | if(lendOrderName.size() > 0){ |
| | | for(String lon : lendOrderName.keySet()){ |
| | | loanerApply.AllLead_OrderName__c += lon + ' \r\n '; |
| | | } |
| | | } |
| | | system.debug(typeSet); |
| | | if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('维修部件')){ |
| | | loanerApply.Is_Repair_Products__c = true; |
| | | }else{ |
| | | loanerApply.Is_Repair_Products__c = false; |
| | | } |
| | | |
| | | if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('高端样机')){ |
| | | loanerApply.Is_High_end_Products__c = true; |
| | | }else{ |
| | | loanerApply.Is_High_end_Products__c = false; |
| | | } |
| | | update loanerApply; |
| | | |
| | | |
| | | }else{ |
| | | //非转借分支 |
| | | List<loaner_application_detail__c> ins = New List<loaner_application_detail__c>(); |
| | | //del = New List<loaner_application_detail__c>(); |
| | | Map<String,Decimal> asetNoMap = new Map<String,Decimal>(); |
| | | Integer indexNum = 1; |
| | | Integer i = 1; |
| | | for (EquipmentSetInfo ass : equipmentSetRecords) { |
| | | if(ass.check == true){ |
| | | //判断是否已经分配,借出后不计算数量 |
| | | if(ass.lad.Allocated_Det__c == true){ |
| | | |
| | | }else{ |
| | | if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | if(asetNoMap.containsKey(ass.aset.Id)){ |
| | | if(ass.deatilNo > 0){ |
| | | asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + ass.deatilNo); |
| | | }else if(ass.lad.RAESD_Status__c == '已分配'){ |
| | | asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + 1); |
| | | } |
| | | }else{ |
| | | if(ass.deatilNo > 0){ |
| | | asetNoMap.put(ass.aset.Id,ass.deatilNo); |
| | | }else if(ass.lad.RAESD_Status__c == '已分配'){ |
| | | asetNoMap.put(ass.aset.Id,1); |
| | | } |
| | | } |
| | | if(ass.aset.Count_can_allocate_F__c < asetNoMap.get(ass.aset.Id)){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '样机 ' + ass.aset.EC_Code__c + ' 借出数量超出可分配数量。')); |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | if(ass.lad.Name == null && String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1 && ass.aset.status != '在库'){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的状态是' + ass.aset.status + ',无法再分配。')); |
| | | return null; |
| | | } |
| | | if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2 && ass.aset.Count_can_allocate_F__c <= 0){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的可以分配数量是'+ ass.aset.Count_can_allocate_F__c +',无法再分配。')); |
| | | return null; |
| | | } |
| | | //if (loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_Start_Date__c < ass.earliest_Lend_Date) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的[借出开始日]必须入力从[最早可借出日]开始起的日期。')); |
| | | // return null; |
| | | //} |
| | | if(!isManager){ |
| | | if(ass.deatilNo > 0){ |
| | | for(Integer j = 0; j < ass.deatilNo; j++){ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotBlank(ass.lad.Id)){ |
| | | insertDet.Id = ass.lad.Id; |
| | | if(loanerApply.Status__c == '驳回'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | } |
| | | }else{ |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | } |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | } |
| | | }else{ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotBlank(ass.lad.Id)){ |
| | | insertDet.Id = ass.lad.Id; |
| | | if(loanerApply.Status__c == '驳回'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | } |
| | | }else{ |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | } |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | } |
| | | }else{ |
| | | if(ass.deatilNo > 0){ |
| | | for(Integer j = 0; j < ass.deatilNo; j++){ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotBlank(ass.lad.Id)){ |
| | | insertDet.Id = ass.lad.Id; |
| | | if(loanerApply.Status__c == '驳回'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | } |
| | | }else{ |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | if(loanerApply.Status__c == '已批准'){ |
| | | insertDet.RAESD_Status__c = '已批准'; |
| | | }else if(loanerApply.Status__c == '申请中'){ |
| | | if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Approval_Step__c == 1){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | }else{ |
| | | insertDet.RAESD_Status__c = '申请中'; |
| | | } |
| | | }else if(loanerApply.Status__c == '草案中' || loanerApply.Status__c == '驳回' || loanerApply.Status__c == '销售担当批准'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | }else{ |
| | | insertDet.RAESD_Status__c = '已出库指示'; |
| | | chukuStatus = true; |
| | | } |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | } |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | } |
| | | }else{ |
| | | loaner_application_detail__c insertDet = new loaner_application_detail__c(); |
| | | String str = string.valueOf(i); |
| | | if(str.length() == 1){ |
| | | str = '0' + str; |
| | | } |
| | | if(String.isNotBlank(ass.lad.Id)){ |
| | | insertDet.Id = ass.lad.Id; |
| | | if(loanerApply.Status__c == '驳回'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | } |
| | | }else{ |
| | | insertDet.loaner_application__c = loanerApplyId; |
| | | if(loanerApply.Status__c == '已批准'){ |
| | | insertDet.RAESD_Status__c = '已批准'; |
| | | }else if(loanerApply.Status__c == '申请中'){ |
| | | if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Approval_Step__c == 1){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | }else{ |
| | | insertDet.RAESD_Status__c = '申请中'; |
| | | } |
| | | }else if(loanerApply.Status__c == '草案中' || loanerApply.Status__c == '驳回' || loanerApply.Status__c == '销售担当批准'){ |
| | | insertDet.RAESD_Status__c = '已分配'; |
| | | }else{ |
| | | insertDet.RAESD_Status__c = '已出库指示'; |
| | | chukuStatus = true; |
| | | } |
| | | insertDet.LOANER__c = ass.aset.Id; |
| | | } |
| | | insertDet.Name = loanerApply.Name + '-' + str; |
| | | insertDet.Allocate_Date__c = Date.today(); |
| | | insertDet.Remark__c = ass.remark; |
| | | ins.add(insertDet); |
| | | i ++; |
| | | } |
| | | } |
| | | |
| | | }else if(ass.oldcheck == true){ |
| | | loaner_application_detail__c delDet = new loaner_application_detail__c(); |
| | | delDet.Id = ass.lad.Id; |
| | | del.add(delDet); |
| | | } |
| | | indexNum += 1; |
| | | } |
| | | loanerApply.loaner_place__c = ''; |
| | | if(asetEquipmentMap.size() == 1){ |
| | | if(asetEquipmentList.size() > 0) loanerApply.loaner_place__c = asetEquipmentList[0]; |
| | | } |
| | | if(chukuStatus == true)loanerApply.Status__c = '已出库指示'; |
| | | |
| | | //删除取消的样机明细 |
| | | if(isManager && loanerApply.Manager_detail_Del__c == false){ |
| | | |
| | | }else{ |
| | | if (del.size()>0){ |
| | | delete del; |
| | | } |
| | | } |
| | | if(ins.size()>0){ |
| | | upsert ins; |
| | | } |
| | | system.debug(typeSet); |
| | | if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('维修部件')){ |
| | | loanerApply.Is_Repair_Products__c = true; |
| | | }else{ |
| | | loanerApply.Is_Repair_Products__c = false; |
| | | } |
| | | |
| | | if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('高端样机')){ |
| | | loanerApply.Is_High_end_Products__c = true; |
| | | }else{ |
| | | loanerApply.Is_High_end_Products__c = false; |
| | | } |
| | | update loanerApply; |
| | | } |
| | | }catch(Exception e){ |
| | | ApexPages.addMessages(e); |
| | | Database.rollback(sp); |
| | | return null; |
| | | } |
| | | return new Pagereference('/'+loanerApplyId); |
| | | } |
| | | // 追加转借明细 |
| | | /*public void addDetail(List<String> addlist) { |
| | | List<loaner_application_detail__c> addDetList = [select Id, Name,Receipt_Status__c,Receipt_Date__c |
| | | from loaner_application_detail__c |
| | | WHERE Id in : addlist]; |
| | | for(loaner_application_detail__c det : addDetList){ |
| | | if(det.Receipt_Status__c != 'OK' && det.Receipt_Status__c == null){ |
| | | det.Receipt_Status__c = 'OK'; |
| | | det.Receipt_Date__c = Date.today(); |
| | | } |
| | | //日期 |
| | | det.Asset_Return_Date__c = Date.today(); |
| | | det.Received_loaner_Date__c = Date.today(); |
| | | det.After_Inspection_Date__c = Date.today(); |
| | | det.Arrival_wh_Date__c = Date.today(); |
| | | det.RAESD_Status__c = '已回库'; |
| | | //上架加成 |
| | | det.StockUp__c = true; |
| | | det.Check_lost_Item__c = 'OK'; |
| | | det.Inspection_result_after__c = 'OK'; |
| | | //物流信息 |
| | | det.Return_Track_Company__c = System.label.Default_Logistics_company; |
| | | det.Return_Track_Number__c = System.label.Default_Logistics_No; |
| | | } |
| | | update addDetList; |
| | | |
| | | |
| | | }*/ |
| | | //取消转借明细 |
| | | public void moveDetail(List<String> movelist) { |
| | | |
| | | if(moveList.size() == 0 || moveList == null){ |
| | | return; |
| | | } |
| | | |
| | | |
| | | |
| | | List<loaner_application_detail__c> moveDetList = [select Id, Name,LendPrimary_Name__c,RAESD_Status__c |
| | | ,loanerOrder_Status__c |
| | | from loaner_application_detail__c |
| | | WHERE Id in : movelist]; |
| | | |
| | | List<String> idList = new List<String>(); |
| | | for(loaner_application_detail__c lad : moveDetList){ |
| | | idList.add(lad.LendPrimary_Name__c); |
| | | } |
| | | |
| | | List<loaner_application_detail__c> oldLadList = [SELECT id FROM loaner_application_detail__c WHERE id IN :idList ]; |
| | | for(loaner_application_detail__c lad : oldLadList){ |
| | | lad.is_distribution__c = false; |
| | | } |
| | | if(oldLadList.size() > 0) update oldLadList; |
| | | |
| | | if(moveDetList.size() > 0 ) delete moveDetList; |
| | | } |
| | | // 取消转借明细 |
| | | /*public void moveDetail(List<String> movelist) { |
| | | List<String> deleteList = new List<String>(); |
| | | Map<String,String> deleteMap = new Map<String,String>(); |
| | | Map<String,String> deleteNameMap = new Map<String,String>(); |
| | | Map<String,String> deleteOrderStatusMap = new Map<String,String>(); |
| | | |
| | | List<loaner_application_detail__c> moveDetList = [select Id, Name,LendPrimary_Name__c,RAESD_Status__c |
| | | ,loanerOrder_Status__c |
| | | from loaner_application_detail__c |
| | | WHERE Id in : movelist]; |
| | | Map<Id,loaner_application__c> loaner_appMap= new Map<Id,loaner_application__c>(); |
| | | for(loaner_application_detail__c det : moveDetList){ |
| | | loaner_application__c loaner_app = new loaner_application__c(); |
| | | if(String.isNotBlank(det.LendPrimary_Name__c)){ |
| | | deleteList.add(det.LendPrimary_Name__c); |
| | | if(det.loanerOrder_Status__c.contains(',')){ |
| | | loaner_app.Id = det.loanerOrder_Status__c.split(',')[0]; |
| | | loaner_app.Status__c = det.loanerOrder_Status__c.split(',')[1]; |
| | | loaner_appMap.put(loaner_app.Id, loaner_app); |
| | | } |
| | | } |
| | | } |
| | | //取原申请明细的单号ID |
| | | List<loaner_application_detail__c> movedeleteList = [select Id,Name,loaner_application__c |
| | | from loaner_application_detail__c |
| | | WHERE Id in : deleteList]; |
| | | for(loaner_application_detail__c lapp : movedeleteList){ |
| | | deleteMap.put(lapp.Id, lapp.loaner_application__c); |
| | | deleteNameMap.put(lapp.Id, lapp.Name); |
| | | } |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'deleteMap-----' + deleteMap)); |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'deleteNameMap-----' + deleteNameMap)); |
| | | System.debug('deleteMap +++++' + deleteMap); |
| | | for(loaner_application_detail__c det : moveDetList){ |
| | | if(String.isNotBlank(det.LendPrimary_Name__c)){ |
| | | deleteList.add(det.LendPrimary_Name__c); |
| | | det.Name = deleteNameMap.get(det.LendPrimary_Name__c); |
| | | det.loaner_application__c = deleteMap.get(det.LendPrimary_Name__c); |
| | | } |
| | | det.LendPrimary_Name__c = ''; |
| | | } |
| | | |
| | | System.debug('moveDetList +++++' + moveDetList); |
| | | |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'movedeleteList' + movedeleteList)); |
| | | //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'moveDetList' + moveDetList)); |
| | | //return; |
| | | if(movedeleteList.size() > 0 ) delete movedeleteList; |
| | | |
| | | update moveDetList; |
| | | if(loaner_appMap.size() > 0 ) update loaner_appMap.values(); |
| | | |
| | | }*/ |
| | | // 排序 |
| | | public void sortTable() { |
| | | //已选择个体管理样机 |
| | | List<String> loanerindividualList = new List<String>(); |
| | | //// 画面已打勾的明细保留 |
| | | String strProd = null; |
| | | List<EquipmentSetInfo> selectedloanerRecords = new List<EquipmentSetInfo>(); |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | if (info.check == true) { |
| | | selectedloanerRecords.add(info); |
| | | }else{ |
| | | if(strProd==null || strProd.length()==0){ |
| | | strProd = '\'' + String.valueOf(info.aset.Id) + '\''; |
| | | } |
| | | else{ |
| | | strProd += ',\'' + String.valueOf(info.aset.Id) + '\''; |
| | | } |
| | | } |
| | | } |
| | | equipmentSetRecords = new List<EquipmentSetInfo>(); |
| | | loanerAssetSelected = new list<String>(); |
| | | //Map<String,String> equipmentSetSelectedMap = new Map<String,String>(); |
| | | for (EquipmentSetInfo info : selectedloanerRecords) { |
| | | loanerAssetSelected.add(info.aset.Id); |
| | | //equipmentSetSelectedMap.put(info.aset.Id, info.aset.Id); |
| | | } |
| | | |
| | | // 排序 |
| | | if (this.sortKey == this.preSortKey) { |
| | | // 方向が変わるのみ |
| | | this.sortOrderAsc = !this.sortOrderAsc; |
| | | this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); |
| | | } else { |
| | | this.sortOrderAsc = true; |
| | | this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; |
| | | this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); |
| | | } |
| | | this.preSortKey = this.sortKey; |
| | | // 所有备品set |
| | | String soql = this.makeSoql(assName, rec.OT_Code__c, assECcode, rec.Equipment_Type__c, rec.loaner_place__c, rec.Status,rec.SerialNumber,rec.Internal_Asset_number__c,loanerindividualList); |
| | | soql += ' AND Id IN (' + strProd + ')'; |
| | | soql += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + (Select_Limit + 1); |
| | | List<Asset> queryList = Database.query(soql); |
| | | for (Asset query : queryList) { |
| | | loanerAssetSelected.add(query.Id); |
| | | } |
| | | |
| | | // 已存在明细行做成 |
| | | //equipmentSetRecords.addAll(selectedloanerRecords); |
| | | for (Integer i = 0; i < selectedloanerRecords.size(); i++) { |
| | | // 201を超えた場合前200のみを出す |
| | | if (i == Select_Limit) {Over_Limit=true; break;} |
| | | equipmentSetRecords.add(selectedloanerRecords[i]); |
| | | } |
| | | // 新明细行做成 |
| | | Integer j = 0; |
| | | for (Integer i = 0; i < queryList.size(); i++) { |
| | | // 201を超えた場合前200のみを出す |
| | | if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} |
| | | //if (!equipmentSetSelectedMap.containsKey(queryList[i].Id)) { |
| | | j++; |
| | | equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); |
| | | //} |
| | | } |
| | | if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ |
| | | dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | } |
| | | //Integer dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); |
| | | prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); |
| | | loanerApply.Prepare_Day__c = prepareDay; |
| | | |
| | | //其他已存在的样机借出历史 |
| | | /*List<loaner_application_detail__c> others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, |
| | | LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, |
| | | loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c |
| | | ,Allocated_Det__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c != :loanerApplyId |
| | | and LOANER__c in :loanerAssetSelected |
| | | AND Arrival_wh_Date__c = null |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) |
| | | or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) |
| | | AND StockUp__c = false |
| | | order by Name]; |
| | | Map<String, Date> othersMap = new Map<String,Date>(); |
| | | |
| | | for (loaner_application_detail__c other : others) { |
| | | if (othersMap.containsKey(other.LOANER__c)) { |
| | | continue; |
| | | } else { |
| | | //othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | if(other.Received_loaner_Date__c == null){ |
| | | othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); |
| | | }else{ |
| | | othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | for (EquipmentSetInfo info : equipmentSetRecords) { |
| | | info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; |
| | | info.Rental_End_Date = loanerApply.Rental_End_Date__c; |
| | | info.SEdayCount = dayCount; |
| | | /*if(info.aset.Status == '在库'){ |
| | | if(othersMap.containsKey(info.aset.Id)){ |
| | | info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); |
| | | }else{ |
| | | info.earliest_Lend_Date = Date.today(); |
| | | } |
| | | }*/ |
| | | } |
| | | // 显示数据条数信息 |
| | | makeMessage(); |
| | | } |
| | | |
| | | // 做成检索SQL文 |
| | | private String makeSoql(String assName, String otCode, String eCcode, String equipmentType, String loanerPlace, String status,String serialNumber,String internal_Asset_No,List<String> exId) { |
| | | String sqlTail = '(\''; |
| | | for(Integer i = 0 ; i< exId.size();i++){ |
| | | if(i<exId.size()-1){ |
| | | sqlTail += exId[i]+'\',\''; |
| | | }else{ |
| | | sqlTail += exId[i]+'\')'; |
| | | } |
| | | } |
| | | String soql = 'select Id,Description,AssetType__c,Name, Name__c,ProductName__c,SerialNumber, Internal_Asset_number__c, OT_Code__c, EC_Code__c, status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,Rental_Start_Date__c ' |
| | | + 'from Asset where Id != null '; |
| | | |
| | | if (!String.isBlank(assName)) { |
| | | soql += ' and Name like \'%' + String.escapeSingleQuotes(assName.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(otCode)) { |
| | | soql += ' and OT_Code__c like \'%' + String.escapeSingleQuotes(otCode.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(eCcode)) { |
| | | soql += ' and EC_Code__c like \'%' + String.escapeSingleQuotes(eCcode.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(equipmentType)) { |
| | | soql += ' and Equipment_Type__c = \'' + String.escapeSingleQuotes(equipmentType) + '\''; |
| | | } |
| | | if (!String.isBlank(loanerPlace)) { |
| | | soql += ' and loaner_place__c = \'' + String.escapeSingleQuotes(loanerPlace) + '\''; |
| | | } |
| | | if (!String.isBlank(status)) { |
| | | soql += ' and status = \'' + String.escapeSingleQuotes(status) + '\''; |
| | | } |
| | | if (!String.isBlank(serialNumber)) { |
| | | soql += ' and SerialNumber like \'%' + String.escapeSingleQuotes(serialNumber.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | /** |
| | | *2018/10/15 |
| | | *NDT/ANI分野修改 |
| | | */ |
| | | |
| | | if(!String.isBlank(rec.Remarks2__c)){ |
| | | soql += ' and Remarks2__c like \'%' + String.escapeSingleQuotes(rec.Remarks2__c.trim().replaceAll('%','\\%')) + '%\''; |
| | | } |
| | | if (!String.isBlank(internal_Asset_No)) { |
| | | soql += ' and Internal_Asset_number__c like \'%' + String.escapeSingleQuotes(internal_Asset_No.trim().replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | if (exId.size() > 0) { |
| | | soql += ' and Id not in ' + sqlTail; |
| | | } |
| | | system.debug(soql); |
| | | return soql; |
| | | } |
| | | |
| | | // 显示数据条数信息 |
| | | private void makeMessage() { |
| | | if (Over_Limit) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '数据超过' + Select_Limit + '件,只显示前' + Select_Limit + '件')); |
| | | Over_Limit = false; |
| | | } |
| | | } |
| | | |
| | | // 返回按钮 |
| | | public PageReference cancel() { |
| | | PageReference ref = new Pagereference('/'); |
| | | //if (String.isNotBlank(loanerApplyId)) { |
| | | // 返回样机借出申请 |
| | | ref = new Pagereference('/' + loanerApplyId); |
| | | //} |
| | | //ref.setRedirect(true); |
| | | return ref; |
| | | } |
| | | //data bean |
| | | class EquipmentSetInfo implements Comparable { |
| | | public Boolean check { get; set; } |
| | | public Boolean oldcheck { get; set; } |
| | | public loaner_application_detail__c lad { get; set; } |
| | | public Asset aset { get; set; } |
| | | public Loaner_Set__c lSet { get; set; } |
| | | public Date Rental_Start_Date { get; set; } |
| | | public Date Rental_End_Date { get; set; } |
| | | //最早可借出时间 |
| | | public Date earliest_Lend_Date { get; set; } |
| | | public Integer SEdayCount { get; set; } |
| | | public Integer deatilNo { get; set; } |
| | | public Boolean canInput { get; set; } |
| | | public Boolean showNo { get; set; } |
| | | public String remark { get; set; } |
| | | //public Date endDate {get; set; } |
| | | //转借元申请明细标记 |
| | | public Boolean firstDet { get; set; } |
| | | |
| | | // 已存产品明细 |
| | | public EquipmentSetInfo(loaner_application_detail__c e) { |
| | | check = true; |
| | | oldcheck= true; |
| | | lad = e; |
| | | aset = e.LOANER__r; |
| | | //endDate = aset.Rental_End_Date__c; |
| | | if(String.isNotBlank(lad.Remark__c)){ |
| | | remark = lad.Remark__c; |
| | | }else{ |
| | | remark = aset.Remarks2__c; |
| | | } |
| | | deatilNo = 1; |
| | | canInput = false; |
| | | firstDet = false; |
| | | if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | showNo = true; |
| | | }else{ |
| | | showNo = false; |
| | | } |
| | | } |
| | | public EquipmentSetInfo(Integer in_line, Loaner_Set__c e) { |
| | | deatilNo = in_line; |
| | | lSet = e; |
| | | |
| | | } |
| | | |
| | | public EquipmentSetInfo(Asset e) { |
| | | system.debug(e); |
| | | check = false; |
| | | oldcheck = false; |
| | | lad = new loaner_application_detail__c(); |
| | | aset = e; |
| | | remark = aset.Remarks2__c; |
| | | firstDet = false; |
| | | if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ |
| | | canInput = true; |
| | | showNo = true; |
| | | }else{ |
| | | //lad.loaner_ApplyNo__c = 1; |
| | | deatilNo = 1; |
| | | canInput = false; |
| | | showNo = false; |
| | | } |
| | | } |
| | | // 排序 |
| | | public Integer compareTo(Object compareTo) { |
| | | return null; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class EquipmentLoanerApplyControllerTest |
| | | { |
| | | static Product2 prd1; |
| | | static Product2 prd2; |
| | | static Account acc; |
| | | static Account dealer; |
| | | static Contact core; |
| | | static User testUser; |
| | | static loaner_Set__c loanerSet; |
| | | |
| | | //转借元代理商 |
| | | static Account leaddealer; |
| | | static void setupTestData01() { |
| | | OlympusCalendar__c oc0 = new OlympusCalendar__c(Date__c = Date.today(), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc0,oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | } |
| | | static void setupTestData() { |
| | | setupTestData01(); |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'IE'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'IE'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | loanerSet = new loaner_Set__c(); |
| | | loanerSet.Equipment_Type__c = 'IE'; |
| | | loanerSet.Set_No__c = 'IETEST0001'; |
| | | loanerSet.Name = 'IETEST0001'; |
| | | |
| | | insert loanerSet; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'IE'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '在库'; |
| | | assetC1.Equipment_Type__c = 'IE'; |
| | | assetC1.loaner_place__c = '北京酒仙桥'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | insert new Asset[] {asset,assetC1}; |
| | | |
| | | Loaner_Set_Detail__c lSD1 = new Loaner_Set_Detail__c(); |
| | | lSD1.Loaner_Set__c = loanerSet.Id; |
| | | lSD1.Asset__c = asset.Id; |
| | | Loaner_Set_Detail__c lSD2 = new Loaner_Set_Detail__c(); |
| | | lSD2.Loaner_Set__c = loanerSet.Id; |
| | | lSD2.Asset__c = assetC1.Id; |
| | | insert new Loaner_Set_Detail__c[] {lSD1,lSD2}; |
| | | |
| | | |
| | | //转借代理商信息 |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | leaddealer = new Account(); |
| | | leaddealer.Name = 'lead dealer'; |
| | | leaddealer.RecordTypeId = rectDealer[0].Id; |
| | | leaddealer.ProductSegment__c = 'IE'; |
| | | leaddealer.PostCode__c='000000'; |
| | | insert leaddealer; |
| | | Contact leadcore = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=leaddealer.id); |
| | | insert leadcore; |
| | | User leadUser = New User(ContactId = leadcore.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser02@prectech.com'); |
| | | insert leadUser; |
| | | |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0002'; |
| | | loanerApp.Approval_Step__c = 2; |
| | | loanerApp.Status__c = '申请者已收货'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = leadUser.Id; |
| | | insert loanerApp; |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0002-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = asset.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | } |
| | | |
| | | //IE 样机分配 |
| | | static testMethod void leadWithIE(){ |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = testUser.Id; |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | insert loanerApp; |
| | | |
| | | List<loaner_application__c> loanerAppList = [select Id from loaner_application__c where Id = :loanerApp.Id]; |
| | | System.assertEquals(1, loanerAppList.size()); |
| | | PageReference page = new PageReference('/apex/EquipmentLoanerApply?loid=' + loanerApp.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | EquipmentLoanerApplyController loanerApplyCon = new EquipmentLoanerApplyController(); |
| | | loanerApplyCon.init(); |
| | | loanerApplyCon.rec.Equipment_Type__c = 'IE'; |
| | | loanerApplyCon.rec.Status = '在库'; |
| | | loanerApplyCon.rec.SerialNumber = 'asset'; |
| | | loanerApplyCon.rec.Name = 'asset'; |
| | | loanerApplyCon.searchLoanerApp(); |
| | | System.assertEquals(2, loanerApplyCon.equipmentSetRecords.size()); |
| | | System.assertEquals('asset', loanerApplyCon.equipmentSetRecords[0].aset.Name); |
| | | loanerApplyCon.equipmentSetRecords[0].check = true; |
| | | loanerApplyCon.equipmentSetRecords[0].deatilNo = 2; |
| | | loanerApplyCon.equipmentSetRecords[1].check = true; |
| | | //loanerApplyCon.equipmentSetRecords[1].deatilNo = 2; |
| | | loanerApplyCon.save(); |
| | | |
| | | List<loaner_application_detail__c> loanerAppDetList = [select Id from loaner_application_detail__c |
| | | where loaner_application__c = :loanerApp.Id]; |
| | | System.assertEquals(3, loanerAppDetList.size()); |
| | | loanerApplyCon.sortTable(); |
| | | |
| | | |
| | | |
| | | |
| | | // When |
| | | |
| | | |
| | | // Then |
| | | |
| | | } |
| | | |
| | | //IE 样机分配 |
| | | static testMethod void IEdeatilNoTest (){ |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = testUser.Id; |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | insert loanerApp; |
| | | |
| | | List<loaner_application__c> loanerAppList = [select Id from loaner_application__c where Id = :loanerApp.Id]; |
| | | System.assertEquals(1, loanerAppList.size()); |
| | | PageReference page = new PageReference('/apex/EquipmentLoanerApply?loid=' + loanerApp.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | EquipmentLoanerApplyController loanerApplyCon = new EquipmentLoanerApplyController(); |
| | | loanerApplyCon.init(); |
| | | loanerApplyCon.rec.Equipment_Type__c = 'IE'; |
| | | loanerApplyCon.rec.Status = '在库'; |
| | | loanerApplyCon.rec.SerialNumber = 'asset'; |
| | | loanerApplyCon.rec.Name = 'asset'; |
| | | loanerApplyCon.searchLoanerApp(); |
| | | System.assertEquals(2, loanerApplyCon.equipmentSetRecords.size()); |
| | | System.assertEquals('asset', loanerApplyCon.equipmentSetRecords[0].aset.Name); |
| | | loanerApplyCon.equipmentSetRecords[0].check = true; |
| | | loanerApplyCon.equipmentSetRecords[1].check = true; |
| | | loanerApplyCon.save(); |
| | | |
| | | List<loaner_application_detail__c> loanerAppDetList = [select Id from loaner_application_detail__c |
| | | where loaner_application__c = :loanerApp.Id]; |
| | | System.assertEquals(2, loanerAppDetList.size()); |
| | | loanerApplyCon.sortTable(); |
| | | loanerApplyCon.sortTable(); |
| | | |
| | | } |
| | | //IE 样机套装 |
| | | static testMethod void loanerSetTest(){ |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = testUser.Id; |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | insert loanerApp; |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '已分配'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | List<loaner_application__c> loanerAppList = [select Id from loaner_application__c where Id = :loanerApp.Id]; |
| | | System.assertEquals(1, loanerAppList.size()); |
| | | PageReference page = new PageReference('/apex/EquipmentLoanerApply?loid=' + loanerApp.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | EquipmentLoanerApplyController loanerApplyCon = new EquipmentLoanerApplyController(); |
| | | loanerApplyCon.init(); |
| | | loanerApplyCon.rec.Equipment_Type__c = 'IE'; |
| | | loanerApplyCon.rec.Status = '在库'; |
| | | loanerApplyCon.rec.SerialNumber = 'asset'; |
| | | loanerApplyCon.rec.Name = 'asset'; |
| | | loanerApplyCon.searchLoanerApp(); |
| | | System.assertEquals(3, loanerApplyCon.equipmentSetRecords.size()); |
| | | |
| | | loanerApplyCon.setId = loanerSet.Id; |
| | | loanerApplyCon.getLoanerSetdet(); |
| | | System.assertEquals(3, loanerApplyCon.equipmentSetRecords.size()); |
| | | loanerApplyCon.sortTable(); |
| | | loanerApplyCon.getcanSave(); |
| | | loanerApplyCon.getcanSearch(); |
| | | loanerApplyCon.cancel(); |
| | | |
| | | loanerApplyCon.rec.Equipment_Type__c = 'IE'; |
| | | loanerApplyCon.rec.Status = '在库'; |
| | | loanerApplyCon.rec.SerialNumber = 'asset'; |
| | | loanerApplyCon.rec.Name = 'asset'; |
| | | loanerApplyCon.assECcode = 'test'; |
| | | loanerApplyCon.rec.loaner_place__c = 'test'; |
| | | loanerApplyCon.assName = 'test'; |
| | | loanerApplyCon.searchLoanerApp(); |
| | | } |
| | | |
| | | //IE 转借申请 |
| | | static testMethod void leadOrderTest(){ |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = testUser.Id; |
| | | loanerApp.Loaner_LendOrder__c = true; |
| | | loanerApp.Dealer_From_txt__c = 'test'; |
| | | loanerApp.DealerOrder_From__c = leaddealer.Id; |
| | | loanerApp.ProductNameNum1__c = prd2.Id; |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | insert loanerApp; |
| | | List<loaner_application__c> loanerAppList = [select Id from loaner_application__c where Id = :loanerApp.Id]; |
| | | System.assertEquals(1, loanerAppList.size()); |
| | | PageReference page = new PageReference('/apex/EquipmentLoanerApply?loid=' + loanerApp.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | EquipmentLoanerApplyController loanerApplyCon = new EquipmentLoanerApplyController(); |
| | | loanerApplyCon.init(); |
| | | System.assertEquals(1, loanerApplyCon.equipmentSetRecords.size()); |
| | | loanerApplyCon.equipmentSetRecords[0].check = true; |
| | | loanerApplyCon.save(); |
| | | } |
| | | |
| | | //IE 转借申请 |
| | | static testMethod void bSOrderTest(){ |
| | | setupTestData01(); |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'BS']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER BS(only loanerEmail)']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'BS'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'BS'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | loanerSet = new loaner_Set__c(); |
| | | loanerSet.Equipment_Type__c = 'BS'; |
| | | loanerSet.Set_No__c = 'IETEST0001'; |
| | | loanerSet.Name = 'IETEST0001'; |
| | | |
| | | insert loanerSet; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'BS'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '在库'; |
| | | assetC1.Equipment_Type__c = 'BS'; |
| | | assetC1.loaner_place__c = '广州办'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (数量管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_number[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd2.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'BS'; |
| | | assetC2.loaner_place__c = '广州办'; |
| | | assetC2.total_number__c = 20; |
| | | assetC2.Remarks2__c = 'asset'; |
| | | insert new Asset[] {asset,assetC1,assetC2}; |
| | | |
| | | Loaner_Set_Detail__c lSD1 = new Loaner_Set_Detail__c(); |
| | | lSD1.Loaner_Set__c = loanerSet.Id; |
| | | lSD1.Asset__c = asset.Id; |
| | | Loaner_Set_Detail__c lSD2 = new Loaner_Set_Detail__c(); |
| | | lSD2.Loaner_Set__c = loanerSet.Id; |
| | | lSD2.Asset__c = assetC1.Id; |
| | | insert new Loaner_Set_Detail__c[] {lSD1,lSD2}; |
| | | |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'BS'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '全国性展会'; |
| | | loanerApp.Request_shipping_Date__c = Date.today().addDays(1); |
| | | loanerApp.Request_return_Date__c = Date.today().addDays(5); |
| | | loanerApp.ownerId = testUser.Id; |
| | | loanerApp.ProductNameNum1__c = prd2.Id; |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | insert loanerApp; |
| | | List<loaner_application__c> loanerAppList = [select Id from loaner_application__c where Id = :loanerApp.Id]; |
| | | System.assertEquals(1, loanerAppList.size()); |
| | | system.runAs(testUser){ |
| | | PageReference page = new PageReference('/apex/EquipmentLoanerApply?loid=' + loanerApp.Id); |
| | | page.setRedirect(true); |
| | | System.Test.setCurrentPage(page); |
| | | EquipmentLoanerApplyController loanerApplyCon = new EquipmentLoanerApplyController(); |
| | | loanerApplyCon.init(); |
| | | System.assertEquals(false, loanerApplyCon.isManager); |
| | | loanerApplyCon.rec.Equipment_Type__c = 'BS'; |
| | | loanerApplyCon.rec.Status = '在库'; |
| | | loanerApplyCon.searchLoanerApp(); |
| | | System.assertEquals(3, loanerApplyCon.equipmentSetRecords.size()); |
| | | loanerApplyCon.equipmentSetRecords[0].check = true; |
| | | if(loanerApplyCon.equipmentSetRecords[0].aset.RecordTypeId == System.label.Asset_Record_Type1)loanerApplyCon.equipmentSetRecords[0].deatilNo = 2; |
| | | loanerApplyCon.equipmentSetRecords[1].check = true; |
| | | if(loanerApplyCon.equipmentSetRecords[1].aset.RecordTypeId == System.label.Asset_Record_Type1)loanerApplyCon.equipmentSetRecords[0].deatilNo = 2; |
| | | loanerApplyCon.equipmentSetRecords[2].check = true; |
| | | loanerApplyCon.save(); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the site forgot password functionality |
| | | */ |
| | | public with sharing class ForgotPasswordController { |
| | | public String username {get; set;} |
| | | |
| | | public ForgotPasswordController() {} |
| | | |
| | | public PageReference forgotPassword() { |
| | | boolean success = Site.forgotPassword(username); |
| | | PageReference pr = Page.ForgotPasswordConfirm; |
| | | pr.setRedirect(true); |
| | | |
| | | if (success) { |
| | | return pr; |
| | | } |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | /** |
| | | * An apex page controller that exposes the site forgot password functionality |
| | | */ |
| | | @IsTest public with sharing class ForgotPasswordControllerTest { |
| | | @IsTest(SeeAllData=true) public static void testForgotPasswordController() { |
| | | // Instantiate a new controller with all parameters in the page |
| | | ForgotPasswordController controller = new ForgotPasswordController(); |
| | | controller.username = 'test@salesforce.com'; |
| | | |
| | | System.assertEquals(controller.forgotPassword(),null); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public with sharing class IENewOpportunityController { |
| | | public boolean hasError { get; set; } |
| | | //public boolean isDealerPage { get; set; } |
| | | |
| | | public Opportunity opp { get; set; } |
| | | |
| | | public String accId { get; set; } |
| | | public String conId { get; set; } |
| | | private Account acc; |
| | | private Contact con; |
| | | |
| | | public String baseUrl { get; set; } |
| | | public String rtUrl { get; set; } |
| | | |
| | | //public String ProductSegment { get; set; } |
| | | |
| | | //public Boolean isIEDealer{get; set; } |
| | | |
| | | public IENewOpportunityController() { |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | rtUrl = System.currentPageReference().getParameters().get('retURL'); |
| | | if (rtUrl == null || rtUrl == 'null') { |
| | | rtUrl = ''; |
| | | } |
| | | } |
| | | |
| | | public PageReference init() { |
| | | hasError = false; |
| | | |
| | | accId = System.currentPageReference().getParameters().get('accid'); |
| | | conId = System.currentPageReference().getParameters().get('conId'); |
| | | |
| | | List<Account> accList = [select Id, Name, ProductSegment__c,compo_Acc__c,UserType__c from Account where Id = :accId]; |
| | | if (accList.size() > 0) { |
| | | acc = accList[0]; |
| | | } |
| | | |
| | | List<Contact> conList = [select Id, Name from Contact where Id = :conId]; |
| | | if (conList.size() > 0) { |
| | | con = conList[0]; |
| | | } |
| | | |
| | | //no.6 gwy 2021-06-03 |
| | | opp = new Opportunity(); |
| | | if(acc.ProductSegment__c == 'IE' && acc.compo_Acc__c == 'COMPO客户'){ |
| | | opp.compo_opp__c = true; |
| | | } |
| | | opp.AccountId = acc.Id; |
| | | opp.Account = acc; |
| | | opp.ProductSegment__c = acc.ProductSegment__c; |
| | | opp.Type = 'Not Traget'; |
| | | opp.SalesChannel__c = 'direct'; |
| | | opp.NewInquiryDate__c = Date.today(); |
| | | opp.StageName = 'Prospect Created'; |
| | | opp.CloseDate = Date.valueOf('1900-01-01'); |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | List<Opportunity> checkList = [select id, Name from Opportunity where AccountId = :opp.AccountId and Name = :opp.Name]; |
| | | if (checkList.size() > 0) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '该客户下有名称一样的询价,是否继续创建该询价?')); |
| | | hasError = true; |
| | | } else { |
| | | if(opp.Have_Computer__c && opp.Association_Opportunity__c == null){ |
| | | |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '请选择关联的询价')); |
| | | return null; |
| | | |
| | | }else if(opp.Have_Computer__c == false && opp.Association_Opportunity__c != null){ |
| | | ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Info, '请在包含电脑的询价中选择主机询价。')); |
| | | return null; |
| | | }else if(opp.Have_Computer__c && opp.Association_Opportunity__c != null){ |
| | | Opportunity opp1 = [select id,Have_Computer__c from Opportunity where id = :opp.Association_Opportunity__c]; |
| | | if(opp1.Have_Computer__c){ |
| | | ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Info, '选择的询价是电脑询价,请确认询价信息后再保存。')); |
| | | return null; |
| | | } |
| | | } |
| | | return saveBtnYes(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtnYes() { |
| | | system.debug('=====saveBtnYes'); |
| | | |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | |
| | | opp.RecordTypeId = '0120T0000003Ser'; |
| | | opp.SalesChannel__c = 'direct'; |
| | | insert opp; |
| | | if(opp.Have_Computer__c && opp.Association_Opportunity__c != null){ |
| | | |
| | | StaticParameter.OppChangeopp = true; |
| | | StaticParameter.OppCanChangeOpp = true; |
| | | Opportunity newopp = new Opportunity(); |
| | | newopp.Id = opp.Association_Opportunity__c; |
| | | newopp.Association_Opportunity__c = opp.Id; |
| | | system.debug(opp.Association_Opportunity__c); |
| | | update newopp; |
| | | } |
| | | OpportunityContactRole ocr = new OpportunityContactRole(); |
| | | ocr.OpportunityId = opp.Id; |
| | | ocr.ContactId = con.Id; |
| | | ocr.Role = 'End user'; |
| | | ocr.IsPrimary = true; |
| | | insert ocr; |
| | | |
| | | hasError = false; |
| | | |
| | | String url = baseUrl + '\\' + opp.Id; |
| | | return new Pagereference(url); |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, e.getMessage())); |
| | | hasError = false; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtnNo() { |
| | | system.debug('=====saveBtnNo'); |
| | | hasError = false; |
| | | |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class IENewOpportunityControllerTest { |
| | | |
| | | @isTest static void test_method_one() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account accIE = new Account( |
| | | Name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c='Customer IE', |
| | | FacilityName__c='abc', |
| | | PostCode__c = '123456', |
| | | compo_Acc__c = 'COMPO客户' |
| | | ); |
| | | insert accIE; |
| | | |
| | | Contact con = new Contact(); |
| | | con.LastName = 'test'; |
| | | con.AccountId = accIE.Id; |
| | | con.MobilePhone = 'MobilePhoneD__c'; |
| | | con.OtherPhone = 'OtherPhoneD__c'; |
| | | con.Fax = 'FaxD__c'; |
| | | con.Email = 'EmailD__c@test.com'; |
| | | con.Phone = 'PhoneD__c'; |
| | | con.Title = 'TitleD__c'; |
| | | con.Address1__c = 'Address1D__c'; |
| | | con.Address2__c = 'Address2D__c'; |
| | | con.Address3__c = 'Address3D__c'; |
| | | con.Postcode__c = '100111'; |
| | | con.ContactStatus__c = 'ContactStatusD__c'; |
| | | con.CancelReason__c = 'CancelReasonD__c'; |
| | | con.StatusD__c = 'Pass'; |
| | | |
| | | insert con; |
| | | |
| | | PriceBook2 pricebook =new PriceBook2( |
| | | Name = 'IE', |
| | | ProductSegment__c = 'IE', |
| | | TradeType__c = 'Taxation', |
| | | SalesChannel__c = 'direct', |
| | | MachineParts__c = 'Machine' |
| | | ); |
| | | insert pricebook; |
| | | |
| | | List<RecordType> rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity']; |
| | | // 有预定下单日 |
| | | Opportunity opp1 = new Opportunity( |
| | | Name = 'test opp', |
| | | AccountId = accIE.Id, |
| | | RecordTypeId = rectOpp[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | StageName = 'Phase3', |
| | | CurrencyIsoCode = 'CNY', |
| | | ProductSegment__c = 'IE', |
| | | CloseDate = Date.today(), |
| | | NewInquiryDate__c = Date.today().addDays(-2), |
| | | ExpectedOrderDate__c = Date.today().addDays(2), |
| | | SalesChannel__c = 'direct', |
| | | TradeType__c = 'Taxation' |
| | | ); |
| | | insert opp1; |
| | | |
| | | PageReference page = new PageReference('/apex/NewOpportunity?accid=' + accIE.Id + '&conId=' + con.Id); |
| | | System.Test.setCurrentPage(page); |
| | | IENewOpportunityController controller = new IENewOpportunityController(); |
| | | |
| | | controller.init(); |
| | | |
| | | controller.opp.Name = 'test opp 001'; |
| | | controller.opp.TradeType__c = 'Taxation'; |
| | | controller.opp.LeadSource = 'Others'; |
| | | controller.opp.SalesChannel__c = 'direct'; |
| | | controller.opp.Have_Computer__c = true; |
| | | controller.opp.Association_Opportunity__c = opp1.Id; |
| | | controller.saveBtn(); |
| | | //system.assertEquals(null,ApexPages.getMessages()[0].getDetail()); |
| | | |
| | | controller.saveBtnYes(); |
| | | |
| | | controller.saveBtnNo(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class IdentityContextPlugin implements Process.Plugin { |
| | | |
| | | global Process.PluginDescribeResult describe() { |
| | | Process.PluginDescribeResult result = new Process.PluginDescribeResult(); |
| | | result.Tag = 'Identity'; |
| | | result.Name = 'Identity Context Builder'; |
| | | result.description = 'Establishes Context for the current user to be used in Login Flows'; |
| | | result.inputParameters = new List<Process.PluginDescribeResult.InputParameter> { |
| | | new Process.PluginDescribeResult.InputParameter('LoginFlow_UserAgent', Process.PluginDescribeResult.ParameterType.STRING, false), |
| | | new Process.PluginDescribeResult.InputParameter('LoginFlow_LoginIpAddress', Process.PluginDescribeResult.ParameterType.STRING, false) |
| | | }; |
| | | |
| | | result.outputParameters = new List<Process.PluginDescribeResult.OutputParameter> { |
| | | new Process.PluginDescribeResult.OutputParameter('User Id', Process.PluginDescribeResult.ParameterType.String), |
| | | new Process.PluginDescribeResult.OutputParameter('User Type', Process.PluginDescribeResult.ParameterType.String), |
| | | new Process.PluginDescribeResult.OutputParameter('AuthSession Id', Process.PluginDescribeResult.ParameterType.String), |
| | | new Process.PluginDescribeResult.OutputParameter('IP Changed Since Login', Process.PluginDescribeResult.ParameterType.Boolean), |
| | | new Process.PluginDescribeResult.OutputParameter('Is Trusted IP Address', Process.PluginDescribeResult.ParameterType.Boolean), |
| | | new Process.PluginDescribeResult.OutputParameter('Has Registered Token', Process.PluginDescribeResult.ParameterType.Boolean), |
| | | new Process.PluginDescribeResult.OutputParameter('Is iPhone', Process.PluginDescribeResult.ParameterType.Boolean), |
| | | new Process.PluginDescribeResult.OutputParameter('Is iPad', Process.PluginDescribeResult.ParameterType.Boolean), |
| | | new Process.PluginDescribeResult.OutputParameter('Is Android', Process.PluginDescribeResult.ParameterType.Boolean) |
| | | }; |
| | | return result; |
| | | } |
| | | |
| | | global Process.PluginResult invoke(Process.PluginRequest request) { |
| | | |
| | | |
| | | Map<String, Object> result = new Map<String, Object>(); |
| | | Map<String,String> sessionAttributes; |
| | | |
| | | String userId = UserInfo.getUserId(); |
| | | result.put('User Id', userId); |
| | | |
| | | List<TwoFactorInfo> twoFactors = [SELECT UserId, Type FROM TwoFactorInfo where userID = :userid]; |
| | | result.put('Has Registered Token', !TwoFactors.isEmpty()); |
| | | |
| | | String userAgent = (String)request.inputParameters.get('LoginFlow_UserAgent'); |
| | | if (userAgent != null) { |
| | | if (userAgent.contains('iPhone')) { |
| | | result.put('Is iPhone', true); |
| | | } else { |
| | | result.put('Is iPhone', false); |
| | | } |
| | | if (userAgent.contains('iPad')) { |
| | | result.put('Is iPad', true); |
| | | } else { |
| | | result.put('Is iPad', false); |
| | | } |
| | | if (userAgent.contains('Android')) { |
| | | result.put('Is Android', true); |
| | | } else { |
| | | result.put('Is Android', false); |
| | | } |
| | | } |
| | | |
| | | if(!Test.isRunningTest()) |
| | | sessionAttributes = Auth.SessionManagement.getCurrentSession(); |
| | | |
| | | if(sessionAttributes == null) |
| | | return new Process.PluginResult(result); |
| | | |
| | | result.put('User Type', sessionAttributes.get('UserType')); |
| | | result.put('AuthSession Id', sessionAttributes.get('SessionId')); |
| | | String sourceIP = sessionAttributes.get('SourceIP'); |
| | | if(sourceIP != null) |
| | | { |
| | | result.put('Is Trusted IP Address', Auth.SessionManagement.inOrgNetworkRange(sourceIP)); |
| | | String loginIpAddress = (String)request.inputParameters.get('LoginFlow_LoginIpAddress'); |
| | | if ((sourceIP != null) && (loginIpAddress != null)) result.put('IP Changed Since Login', (sourceIP == loginIpAddress)); |
| | | } |
| | | |
| | | System.debug('Session Attributes: ' + sessionAttributes); |
| | | System.debug('Context Builder Results: ' + result); |
| | | |
| | | return new Process.PluginResult(result); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>32.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class IdentityContextPluginTest { |
| | | |
| | | static testMethod void inputTest() { |
| | | |
| | | IdentityContextPlugin identity = new IdentityContextPlugin(); |
| | | Map<String,Object> inputParams = new Map<String,Object>(); |
| | | Map<String,Object> outputParams = new Map<String,Object>(); |
| | | |
| | | inputParams.put('LoginFlow_UserAgent', 'iPhone'); |
| | | inputParams.put('LoginFlow_LoginIpAddress', '1.1.1.1'); |
| | | |
| | | Process.PluginRequest request = new Process.PluginRequest(inputParams); |
| | | Process.PluginResult result; |
| | | result = identity.invoke(request); |
| | | |
| | | System.AssertEquals(1,1); |
| | | |
| | | } |
| | | |
| | | static testMethod void describeTest() { |
| | | |
| | | IdentityContextPlugin identity = new IdentityContextPlugin(); |
| | | Process.PluginDescribeResult result = identity.describe(); |
| | | |
| | | System.AssertEquals(result.inputParameters.size(), 2); |
| | | System.AssertEquals(result.OutputParameters.size(), 9); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>32.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LicenseCheckUtil { |
| | | public static String LicenseCheck1(String str){ |
| | | String isOk = '1'; |
| | | List<License_Information__c> liList= [select id,IfQuantityCtrl__c,Is_Active_Formula__c,LicenseAndAccount__r.Name,LicenseType__c from License_Information__c where LicenseAndAccount__c = :str]; |
| | | Integer hasA = -1; |
| | | if(liList == null){ |
| | | isOk = '经销商无辐射证照信息'; |
| | | }else{ |
| | | for (License_Information__c li : liList ) { |
| | | if(li.LicenseType__c == '辐射安全许可证' && li.Is_Active_Formula__c == true){ |
| | | if(li.IfQuantityCtrl__c){ |
| | | hasA = 1; |
| | | }else{ |
| | | hasA = 0; |
| | | isOk = '0'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(hasA == -1){ |
| | | isOk = '经销商辐射证照无效'; |
| | | } |
| | | return isOk; |
| | | } |
| | | |
| | | |
| | | public static String LicenseCheckOly(){ |
| | | String isOk = '1'; |
| | | String str = System.label.Olympus_Id; |
| | | List<License_Information__c> liList= [select id, IfControl__c,Is_Active_Formula__c,LicenseAndAccount__r.Name,LicenseType__c from License_Information__c where LicenseAndAccount__c = :str]; |
| | | System.debug('License_Information__c'+liList); |
| | | Integer hasA = -1; |
| | | if(liList == null){ |
| | | isOk = '经销商无辐射证照信息'; |
| | | }else{ |
| | | for (License_Information__c li : liList ) { |
| | | if(li.LicenseType__c == '辐射安全许可证' && li.Is_Active_Formula__c == true){ |
| | | if(li.IfControl__c){ |
| | | hasA = 1; |
| | | }else{ |
| | | hasA = 0; |
| | | isOk = '0'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(hasA == -1){ |
| | | isOk = '经销商辐射证照无效'; |
| | | } |
| | | System.debug(isOk); |
| | | return isOk; |
| | | } |
| | | |
| | | public static Boolean AddressCheck(String str,String add){ |
| | | Boolean isOk = false; |
| | | List<License_Information__c> liList= [select id,Is_Active_Formula__c,LicenseAndAccount__r.Name,LicenseType__c,StorageAddress__c from License_Information__c where LicenseAndAccount__c = :str and LicenseType__c = '第二类医疗器械经营备案凭证' and Is_Active_Formula__c = true]; |
| | | if(liList != null && liList.size() >0 ){ |
| | | License_Information__c li = liList[0]; |
| | | //isOk = add.equals(li.StorageAddress__c); |
| | | //isOk = li.StorageAddress__c.contains(add); |
| | | List<String> addressList = new List<String>(); |
| | | addressList = li.StorageAddress__c.split(';'); |
| | | for (String str1 : addressList ) { |
| | | if(str1.equals(add)){ |
| | | isOk = true; |
| | | } |
| | | } |
| | | } |
| | | return isOk; |
| | | } |
| | | |
| | | public static String LicenseCheck(String str1){ |
| | | System.debug(str1); |
| | | String isOk = '1'; |
| | | Boolean hasA = false; |
| | | Boolean hasB = false; |
| | | List<License_Information__c> liList= [select id,Is_Active_Formula__c,LicenseAndAccount__r.Name,LicenseType__c from License_Information__c where LicenseAndAccount__c = :str1]; |
| | | System.debug('!@!@!@'+liList); |
| | | if(liList == null){ |
| | | isOk = '代理商没有证照信息'; |
| | | }else{ |
| | | for(License_Information__c li : liList){ |
| | | if(li.LicenseType__c == '营业执照' && li.Is_Active_Formula__c == true){ |
| | | hasA = true; |
| | | } |
| | | if(li.LicenseType__c == '第二类医疗器械经营备案凭证' && li.Is_Active_Formula__c == true){ |
| | | hasB = true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(hasA == false && hasB == false){ |
| | | isOk = '代理商营业执照和第二类医疗器械经营备案凭证都为无效'; |
| | | }else if(hasA == false && hasB == true){ |
| | | isOk = '代理商营业执照为无效'; |
| | | }else if(hasA == true && hasB == false){ |
| | | isOk = '代理商第二类医疗器械经营备案凭证为无效'; |
| | | } |
| | | |
| | | return isOk; |
| | | } |
| | | |
| | | //联系人是否是填写的客户下的? |
| | | /*public static Boolean CustomerContactCheck(){ |
| | | Boolean disPersed = false; |
| | | List<Order> ordList = new List<Order>(); |
| | | ordList = [select id,name,SpecialDeliveryAccount__c,SpecialDeliveryContact2__c,SpecialDeliveryAccount_D__c,SpecialDeliveryContact2_D__c from Order]; |
| | | for (Order ord : ordList) { |
| | | if(ord.SpecialDeliveryAccount__c != null && ord.SpecialDeliveryContact2__c != null && ord.SpecialDeliveryAccount__c != ord.SpecialDeliveryContact2__r.Name){ |
| | | disPersed = true; |
| | | }else if(ord.SpecialDeliveryAccount_D__c != null && ord.SpecialDeliveryContact2_D__c != null && ord.SpecialDeliveryAccount_D__c != ord.SpecialDeliveryContact2_D__r.Name){ |
| | | disPersed = true; |
| | | } |
| | | } |
| | | |
| | | return disPersed; |
| | | }*/ |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LicenseCheckUtilTest { |
| | | static testMethod void testMethod1() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456' |
| | | ); |
| | | insert acc1; |
| | | License_Information__c li = new License_Information__c( |
| | | name = 'test', |
| | | LicenseType__c = '辐射安全许可证', |
| | | ValidFrom__c = Date.today().addDays(-5), |
| | | LicenseAndAccount__c = acc1.Id, |
| | | ValidTo__c = Date.today().addDays(4) |
| | | ); |
| | | insert li; |
| | | LicenseCheckUtil.LicenseCheck1(acc1.Id); |
| | | LicenseCheckUtil.LicenseCheck1('111'); |
| | | li.ValidTo__c = Date.today().addDays(-3); |
| | | update li; |
| | | LicenseCheckUtil.LicenseCheck1(acc1.Id); |
| | | |
| | | } |
| | | |
| | | static testMethod void testMethod2() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456' |
| | | ); |
| | | insert acc1; |
| | | License_Information__c li = new License_Information__c( |
| | | name = 'test', |
| | | LicenseType__c = '第二类医疗器械经营备案凭证', |
| | | ValidFrom__c = Date.today().addDays(-5), |
| | | LicenseAndAccount__c = acc1.Id, |
| | | StorageAddress__c = '1111', |
| | | ValidTo__c = Date.today().addDays(4) |
| | | ); |
| | | insert li; |
| | | LicenseCheckUtil.AddressCheck(acc1.Id,'1111'); |
| | | LicenseCheckUtil.AddressCheck(acc1.Id,'111111'); |
| | | } |
| | | |
| | | static testMethod void testMethod3() { |
| | | List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | Account acc1 = new Account( |
| | | name = '*', |
| | | RecordTypeId = rectIE[0].Id, |
| | | OwnerId = UserInfo.getUserId(), |
| | | DivisionName__c = 'Customer IE', |
| | | FacilityName__c = 'abc', |
| | | DivisionName_D__c = 'Customer IE', |
| | | FacilityNameD__c = 'abc', |
| | | AccountStatus__c = 'Cancel', |
| | | PostCode__c = '123456' |
| | | ); |
| | | insert acc1; |
| | | License_Information__c li = new License_Information__c( |
| | | name = 'test', |
| | | LicenseType__c = '第二类医疗器械经营备案凭证', |
| | | ValidFrom__c = Date.today().addDays(-5), |
| | | LicenseAndAccount__c = acc1.Id, |
| | | StorageAddress__c = '1111', |
| | | ValidTo__c = Date.today().addDays(4) |
| | | ); |
| | | insert li; |
| | | |
| | | License_Information__c li1 = new License_Information__c( |
| | | name = 'test', |
| | | LicenseType__c = '营业执照', |
| | | ValidFrom__c = Date.today().addDays(-5), |
| | | LicenseAndAccount__c = acc1.Id, |
| | | StorageAddress__c = '1111', |
| | | ValidTo__c = Date.today().addDays(4) |
| | | ); |
| | | insert li1; |
| | | |
| | | LicenseCheckUtil.LicenseCheck(acc1.Id); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>41.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerAppDetailTriggerHandler { |
| | | public static Boolean runTrigger = true; |
| | | //废弃 |
| | | public static string upsertDiscarded(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | List<String> assetIdList = new List<String>(); |
| | | List<string> ladcIdList = new List<string>(); |
| | | loaner_application_detail__c old = null; |
| | | for(loaner_application_detail__c ladc : newList){ |
| | | old = oldMap.get(ladc.Id); |
| | | if(old.RAESD_Status__c != ladc.RAESD_Status__c && ladc.RAESD_Status__c == '废弃'){ |
| | | assetIdList.add(ladc.LOANER__c); |
| | | ladcIdList.add(ladc.id); |
| | | } |
| | | } |
| | | |
| | | if(ladcIdList.size() == 0){ |
| | | return ''; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> ladcList = [select id,Abandoned_Date__c from loaner_application_detail__c where id=:ladcIdList]; |
| | | List<Asset> assetList = [select id,RecordType.Id from Asset where id=:assetIdList]; |
| | | |
| | | for(Asset asset : assetList){ |
| | | if(asset.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | asset.Status = '废弃'; |
| | | asset.Abandoned_date__c = Date.today(); |
| | | } |
| | | } |
| | | |
| | | for(loaner_application_detail__c la : ladcList){ |
| | | la.Abandoned_Date__c = Date.today(); |
| | | } |
| | | update(ladcList); |
| | | update(assetList); |
| | | return ''; |
| | | } |
| | | //欠品确认 |
| | | public static string upsertCheckLost(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | |
| | | List<Asset> assetList = new List<Asset>(); |
| | | List<String> assetIdList = new List<string>(); |
| | | List<string> ladcIdList = new List<string>(); |
| | | Set<string> lacIdSet = new Set<string>(); |
| | | loaner_application_detail__c old = null; |
| | | //获取明细状态由'欠品中'修改为新状态的明细id |
| | | for(loaner_application_detail__c ladc : newList){ |
| | | old = oldMap.get(ladc.Id); |
| | | if(old.RAESD_Status__c != ladc.RAESD_Status__c && old.RAESD_Status__c == '欠品中'){ |
| | | ladcIdList.add(ladc.id); |
| | | } |
| | | } |
| | | //如果没有符合条件的明细,跳出 |
| | | if(ladcIdList.size() == 0){ |
| | | return ''; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> ladcList = [select id,LOANER__c,RAESD_Status__c,loaner_application__c from loaner_application_detail__c where id=:ladcIdList]; |
| | | |
| | | |
| | | for(loaner_application_detail__c la : ladcList){ |
| | | if(la.RAESD_Status__c == '丢失'){ |
| | | la.Lost_Date__c = Date.today(); |
| | | la.inTime__c = Datetime.now(); |
| | | assetIdList.add(la.LOANER__c); |
| | | |
| | | }else if(la.RAESD_Status__c == '已回收'){ |
| | | la.Received_loaner_Date__c = Date.today(); |
| | | la.inTime__c = Datetime.now(); |
| | | la.Check_lost_Item__c = 'ok'; |
| | | } |
| | | la.Lost_item_check_Date__c = Date.today(); |
| | | lacIdSet.add(la.loaner_application__c); |
| | | } |
| | | |
| | | List<Asset> allAssetList = [select id,RecordType.Id from Asset where id=:assetIdList]; |
| | | for(Asset asset : allAssetList){ |
| | | if(asset.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | asset.Status = '丢失'; |
| | | asset.Lost_date__c = Date.today(); |
| | | assetList.add(asset); |
| | | } |
| | | } |
| | | |
| | | List<loaner_application__c> lacList = [select Id,Status__c,Equipment_Type__c from loaner_application__c where Id = :lacIdSet]; |
| | | for(loaner_application__c lac: lacList){ |
| | | if(lac.Status__c != '完毕'){ |
| | | lac.Status__c = LoanerOrderState.getOrderStater(lac.Id); |
| | | if(lac.Status__c =='全部回收'){ |
| | | lac.LoanerClosedDateAll__c =Date.today(); |
| | | if(lac.Equipment_Type__c == 'NDT' || lac.Equipment_Type__c == 'ANI'){ |
| | | PrototypeToThaw.UserUnfreeze(lac.Id); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | update(assetList); |
| | | update(ladcList); |
| | | update(lacList); |
| | | return ''; |
| | | } |
| | | |
| | | //删除后状态更新 |
| | | public static void delStatusUp(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | Set<String> loanerAppSet = new Set<String>(); |
| | | Set<String> loanerSet = new Set<String>(); |
| | | for (loaner_application_detail__c local : oldList) { |
| | | loanerSet.add(local.LOANER__c); |
| | | loanerAppSet.add(local.loaner_application__c); |
| | | } |
| | | Map<String,Integer> resultsMap = new Map<String,Integer>(); |
| | | //王鹏伟 新加where条件 AND RAESD_Status_F__c != '取消' |
| | | AggregateResult[] results = [select LOANER__c,Count(Id) LOANERNo |
| | | from loaner_application_detail__c |
| | | where loaner_application__c not in :loanerAppSet |
| | | and LOANER__c in :loanerSet |
| | | and (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null AND RAESD_Status_F__c != '取消') |
| | | AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 |
| | | GROUP by LOANER__c]; |
| | | System.debug('results +++++' + results); |
| | | for(AggregateResult ar: results){ |
| | | resultsMap.put(String.valueOf(ar.get('LOANER__c')), Integer.valueOf(ar.get('LOANERNo'))); |
| | | } |
| | | List<Asset> pss = [select Id,Status from Asset where RecordTypeId = :System.label.Asset_Record_Type1 |
| | | AND Id in : loanerSet]; |
| | | List<Asset> pssexit = new List<Asset>(); |
| | | for(Asset lId : pss){ |
| | | if(!resultsMap.containsKey(lId.Id)){ |
| | | Asset p2s = new Asset(); |
| | | p2s.Id = lId.Id; |
| | | p2s.Status = '在库'; |
| | | pssexit.add(p2s); |
| | | } |
| | | } |
| | | System.debug('pss +++++' + pss); |
| | | if(pssexit.size() > 0){ |
| | | upsert pssexit; |
| | | } |
| | | } |
| | | |
| | | //插入后状态更新 |
| | | public static void insStatusUp(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | Set<String> loanerSet = new Set<String>(); |
| | | for (loaner_application_detail__c local : newList) { |
| | | if(local.RAESD_Status__c == '已出库指示' || local.RAESD_Status__c == '已批准' || local.RAESD_Status__c == '申请中'){ |
| | | loanerSet.add(local.LOANER__c); |
| | | } |
| | | } |
| | | List<Asset> tmpList = new List<Asset>(); |
| | | for(Asset ass : [select Id,Status from Asset where Id in : loanerSet AND Status = '在库' AND RecordTypeId = :System.label.Asset_Record_Type1]){ |
| | | ass.Status = '冻结'; |
| | | tmpList.add(ass); |
| | | } |
| | | List<loaner_application__c> laList = [select id,Status__c,Loaner_LendOrder__c from loaner_application__c where id = :loanerSet]; |
| | | List<loaner_application_detail__c> ladList = new List<loaner_application_detail__c>(); |
| | | for(loaner_application_detail__c local : newList){ |
| | | for(loaner_application__c temp : laList){ |
| | | if(temp.id == local.LOANER__c){ |
| | | if(temp.Status__c != '草案中' && temp.Status__c != '已提交' && temp.Status__c != '申请中' && temp.Loaner_LendOrder__c == true){ |
| | | loaner_application_detail__c lad = new loaner_application_detail__c(); |
| | | lad.RAESD_Status__c = '已批准'; |
| | | ladList.add(lad); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(ladList.size() > 0) update ladList; |
| | | if(tmpList.size() > 0) update tmpList; |
| | | } |
| | | |
| | | public static void setUser(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | List<String> ladIdList = new List<String>(); |
| | | for(loaner_application_detail__c lad : newList){ |
| | | if(lad.loaner_Manager__c == null){ |
| | | ladIdList.add(lad.Id); |
| | | } |
| | | } |
| | | |
| | | if(ladIdList.size()>0){ |
| | | List<loaner_application_detail__c> ladList = [select id,loaner_application__r.loaner_Manager__c from loaner_application_detail__c where Id= : ladIdList]; |
| | | List<loaner_application_detail__c> updateList = new List<loaner_application_detail__c>(); |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | lad.loaner_Manager__c = lad.loaner_application__r.loaner_Manager__c; |
| | | updateList.add(lad); |
| | | } |
| | | |
| | | update updateList; |
| | | } |
| | | } |
| | | |
| | | public static void notReceivingNum(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | Map<String,Integer> leIdMap = new Map<String,Integer>(); |
| | | for(loaner_application_detail__c lad : newList){ |
| | | loaner_application_detail__c old = oldMap.get(lad.id); |
| | | if(lad.RAESD_Status__c != old.RAESD_Status__c && lad.RAESD_Status__c == '申请者已收货' && lad.Loaner_Express__c != null){ |
| | | if(leIdMap.containsKey(lad.Loaner_Express__c)){ |
| | | leIdMap.put(lad.Loaner_Express__c, (leIdMap.get(lad.Loaner_Express__c)+1)); |
| | | }else{ |
| | | leIdMap.put(lad.Loaner_Express__c,1); |
| | | } |
| | | } |
| | | if(lad.RAESD_Status__c != old.RAESD_Status__c && lad.RAESD_Status__c == '已回收' && lad.Return_Express__c != null){ |
| | | if(leIdMap.containsKey(lad.Return_Express__c)){ |
| | | leIdMap.put(lad.Return_Express__c, (leIdMap.get(lad.Return_Express__c)+1)); |
| | | }else{ |
| | | leIdMap.put(lad.Return_Express__c,1); |
| | | } |
| | | } |
| | | } |
| | | System.debug(leIdMap); |
| | | if(leIdMap.size() == 0){ |
| | | return; |
| | | } |
| | | List<Loaner_Express__c> updateList = new List<Loaner_Express__c>(); |
| | | List<Loaner_Express__c> leList = [select id,NotReceivingNum__c from Loaner_Express__c where id= :leIdMap.keySet()]; |
| | | for(Loaner_Express__c le : leList){ |
| | | if(le.NotReceivingNum__c != null){ |
| | | le.NotReceivingNum__c = le.NotReceivingNum__c - leIdMap.get(le.id); |
| | | } |
| | | System.debug(le.NotReceivingNum__c); |
| | | updateList.add(le); |
| | | } |
| | | |
| | | update updateList; |
| | | } |
| | | |
| | | //明细中计算自动收货日期和收货提醒日期 |
| | | public static void emailDate(List<loaner_application_detail__c> newList, Map<Id, loaner_application_detail__c> newMap, List<loaner_application_detail__c> oldList, Map<Id, loaner_application_detail__c> oldMap){ |
| | | List<String> autoId = new List<String>(); |
| | | List<String> remindId = new List<String>(); |
| | | |
| | | for(loaner_application_detail__c lad : newList){ |
| | | loaner_application_detail__c old = oldMap.get(lad.id); |
| | | if(lad.Automatic_Received_Date__c == null && lad.Shipment_Request_Date__c != null){ |
| | | autoId.add(lad.id); |
| | | } |
| | | if(lad.Automatic_Received_Date__c != old.Automatic_Received_Date__c){ |
| | | remindId.add(lad.id); |
| | | } |
| | | } |
| | | Map<String,OlympusCalendar__c> oCalendar = calendarUtil.getCalendarMap(Date.today().addDays(-30),Date.today().addDays(240)); |
| | | System.debug(oCalendar); |
| | | if(oCalendar == null){ |
| | | return; |
| | | } |
| | | List<loaner_application_detail__c> autoList = new List<loaner_application_detail__c>(); |
| | | |
| | | List<loaner_application_detail__c> remindList = new List<loaner_application_detail__c>(); |
| | | |
| | | if(autoId.size()>0){ |
| | | autoList = [select id,Shipment_Request_Date__c,Equipment_Type__c from loaner_application_detail__c where id= :autoId]; |
| | | for(loaner_application_detail__c auto : autoList){ |
| | | if(auto.Equipment_Type__c == 'NDT' || auto.Equipment_Type__c == 'ANI'){ |
| | | auto.Automatic_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Shipment_Request_Date__c,3); |
| | | auto.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Automatic_Received_Date__c,-2); |
| | | }else{ |
| | | auto.Automatic_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Shipment_Request_Date__c,5); |
| | | auto.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Automatic_Received_Date__c,-3); |
| | | } |
| | | } |
| | | } |
| | | if(remindId.size()>0){ |
| | | remindList = [select id,Automatic_Received_Date__c from loaner_application_detail__c where id= :remindId]; |
| | | for(loaner_application_detail__c remind : remindList){ |
| | | remind.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,remind.Automatic_Received_Date__c,-3); |
| | | } |
| | | } |
| | | if(autoList.size()>0) update autoList; |
| | | if(remindList.size()>0) update remindList; |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerAppDetailTriggerHandlerTest { |
| | | |
| | | @isTest static void test_method_one() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12}; |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner.Status__c = '部分发货'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | Loaner_Express__c le = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id, |
| | | NotReceivingNum__c = 3 |
| | | ); |
| | | |
| | | insert le; |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | detail.Loaner_Express__c = le.id; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已回寄'; |
| | | detail.Loaner_Express__c = le.id; |
| | | //detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '欠品中'; |
| | | detail.Loaner_Express__c = le.id; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | In_detail[0].RAESD_Status__c = '废弃'; |
| | | |
| | | update In_detail; |
| | | |
| | | In_detail[1].RAESD_Status__c = '已出库指示'; |
| | | update In_detail; |
| | | System.Test.startTest(); |
| | | In_detail[1].RAESD_Status__c = '申请者已收货'; |
| | | update In_detail; |
| | | |
| | | In_detail[2].RAESD_Status__c = '丢失'; |
| | | |
| | | |
| | | In_detail[1].Shipment_Request_Date__c = Date.today().addDays(2); |
| | | update In_detail; |
| | | delete In_detail; |
| | | System.Test.stopTest(); |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | // Implement test code |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerApplicationFlowController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机借出申请ID |
| | | public String laId { get; private set; } |
| | | public loaner_application__c la { get; private set; } |
| | | /* 画面步骤 |
| | | * 下架:StockDown |
| | | * |
| | | */ |
| | | public String step { get; private set; } |
| | | // 明细Bean |
| | | public List<DataLineBean> dataLines { get; set; } |
| | | // 明细行数 |
| | | public Integer getDatalineSize() { |
| | | return dataLines == null ? 0 : dataLines.size(); |
| | | } |
| | | |
| | | public LoanerApplicationFlowController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | step = System.currentPageReference().getParameters().get('step'); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 明细Bean |
| | | dataLines = new List<DataLineBean>(); |
| | | |
| | | if (String.isBlank(laId) == true) { |
| | | return null; |
| | | } |
| | | if (String.isBlank(step) == true) { |
| | | return null; |
| | | } |
| | | // 样机借出申请取得 |
| | | List<loaner_application__c> laList = [select Id,Status__c from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | // 样机借出申请明细取得 |
| | | String sql_select = 'select Id, SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c '; |
| | | String sql_where = ' where loaner_application__c = :laId '; |
| | | if (step == 'StockDown') { |
| | | sql_where += ' and RAESD_Status__c = \'已出库指示\''; |
| | | } else { |
| | | return null; |
| | | } |
| | | String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; |
| | | |
| | | List<loaner_application_detail__c> lads = Database.query(sql_full); |
| | | if (lads.size() == 0) { |
| | | return null; |
| | | } |
| | | // 明细Bean作成 |
| | | Integer cnt = 0; |
| | | for (loaner_application_detail__c lad : lads) { |
| | | cnt += 1; |
| | | DataLineBean dataLine = new DataLineBean(cnt, lad); |
| | | dataLines.add(dataLine); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | // 根据step更新样机借出申请明细状态 |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | for (DataLineBean dataLine : dataLines) { |
| | | if (dataLine.checkFlag == true) { |
| | | loaner_application_detail__c lad = dataLine.lad; |
| | | if (step == 'StockDown') { |
| | | lad.StockDown__c = true; |
| | | lad.StockDown_Date__c = Date.today(); |
| | | lad.RAESD_Status__c = '已下架'; |
| | | } |
| | | updList.add(lad); |
| | | } |
| | | } |
| | | |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (updList.size() > 0) update updList; |
| | | |
| | | /*List<loaner_application_detail__c> checkList = [select id, |
| | | loaner_application__c, |
| | | loaner_application__r.Detail_count__c, |
| | | loaner_application__r.Status__c |
| | | from loaner_application_detail__c |
| | | where loaner_application__c = :laId |
| | | and StockDown__c = true]; |
| | | if (checkList.size() > 0) { |
| | | loaner_application_detail__c check = checkList[0]; |
| | | if (check.loaner_application__r.Detail_count__c == checkList.size() && |
| | | check.loaner_application__r.Status__c == '已出库指示') { |
| | | loaner_application__c upd = new loaner_application__c(); |
| | | upd.id = check.loaner_application__c; |
| | | upd.Status__c = '已下架'; |
| | | update upd; |
| | | } |
| | | }*/ |
| | | if(la.Status__c != '完毕'){ |
| | | la.Status__c = LoanerOrderState.getOrderStater(la.Id); |
| | | update la; |
| | | } |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public class DataLineBean { |
| | | // 是否选择 |
| | | public boolean checkFlag { get; set; } |
| | | // 行号 |
| | | public Integer lineNo { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | public DataLineBean(Integer in_no, loaner_application_detail__c in_lad) { |
| | | checkFlag = false; |
| | | lineNo = in_no; |
| | | lad = in_lad; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerApplicationStockUpCheckController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机借出申请ID |
| | | public String laId { get; private set; } |
| | | public loaner_application__c la { get; private set; } |
| | | /* 画面步骤 |
| | | * 下架:StockDown |
| | | * |
| | | */ |
| | | public String step { get; private set; } |
| | | // 明细Bean |
| | | public List<DataLineBean> dataLines { get; set; } |
| | | // 明细行数 |
| | | public Integer getDatalineSize() { |
| | | return dataLines == null ? 0 : dataLines.size(); |
| | | } |
| | | |
| | | public LoanerApplicationStockUpCheckController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | step = System.currentPageReference().getParameters().get('step'); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 明细Bean |
| | | dataLines = new List<DataLineBean>(); |
| | | |
| | | if (String.isBlank(laId) == true) { |
| | | return null; |
| | | } |
| | | if (String.isBlank(step) == true) { |
| | | return null; |
| | | } |
| | | // 样机借出申请取得 |
| | | List<loaner_application__c> laList = [select Id,Status__c,Equipment_Type__c from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | // 样机借出申请明细取得 |
| | | String sql_select = 'select Id,loaner_manage_place__c,StockUpRemark__c, SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c , Inspection_result_after__c,RAESD_Status__c,LOANER__c,LOANER__r.RecordType.Id,LOANER__r.Name,LOANER__r.Remarks2__c'; |
| | | String sql_where = ' where loaner_application__c = :laId '; |
| | | if (step == 'StockUpCheck') { |
| | | sql_where += ' and RAESD_Status__c in (\'已回收\',\'修理中\',\'待上架\',\'待移至报废区\')'; |
| | | |
| | | } else { |
| | | return null; |
| | | } |
| | | |
| | | String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; |
| | | |
| | | List<loaner_application_detail__c> lads = Database.query(sql_full); |
| | | if (lads.size() == 0) { |
| | | return null; |
| | | } |
| | | |
| | | // 明细Bean作成 |
| | | Integer cnt = 0; |
| | | for (loaner_application_detail__c lad : lads) { |
| | | cnt += 1; |
| | | DataLineBean dataLine = new DataLineBean(cnt, lad); |
| | | dataLines.add(dataLine); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | // 根据step更新样机借出申请明细状态 |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | List<Asset> assList = new List<Asset>(); |
| | | if(dataLines.size()>0){ |
| | | for (DataLineBean dataLine : dataLines) { |
| | | if (dataLine.checkFlag == true) { |
| | | loaner_application_detail__c lad = dataLine.lad; |
| | | Asset loa = new Asset(id = lad.LOANER__c); |
| | | if (step == 'StockUpCheck') { |
| | | lad.Inspection_result_after__c = dataLine.lad.Inspection_result_after__c; |
| | | lad.After_Inspection_Date__c = Date.today(); |
| | | if('NG-修理' == dataLine.lad.Inspection_result_after__c){ |
| | | if(lad.StockUpRemark__c == null || lad.StockUpRemark__c == ''){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写NG-修理备注')); |
| | | return null; |
| | | } |
| | | lad.RAESD_Status__c = '待修理'; |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '待修理'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ |
| | | loa.Rental_Customer__c = null; |
| | | loa.Rental_Start_Date__c = null; |
| | | loa.Rental_end_Date__c = null; |
| | | loa.Loaner__c = null; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ |
| | | loa.loaner_place__c = lad.loaner_manage_place__c; |
| | | } |
| | | } |
| | | } |
| | | }else if('NG-废弃' == dataLine.lad.Inspection_result_after__c){ |
| | | if(lad.StockUpRemark__c == null || lad.StockUpRemark__c == ''){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写NG-废弃备注')); |
| | | return null; |
| | | } |
| | | lad.StockUp__c = true; |
| | | lad.Arrival_wh_Date__c = Date.today(); |
| | | lad.RAESD_Status__c = '待废弃'; |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '待废弃'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ |
| | | loa.Rental_Customer__c = null; |
| | | loa.Rental_Start_Date__c = null; |
| | | loa.Rental_end_Date__c = null; |
| | | loa.Loaner__c = null; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ |
| | | loa.loaner_place__c = lad.loaner_manage_place__c; |
| | | } |
| | | } |
| | | } |
| | | }else if('Ok' == dataLine.lad.Inspection_result_after__c){ |
| | | lad.StockUp__c = true; |
| | | lad.Arrival_wh_Date__c = Date.today(); |
| | | lad.RAESD_Status__c = '已回库'; |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '在库'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ |
| | | loa.Rental_Customer__c = null; |
| | | loa.Rental_Start_Date__c = null; |
| | | loa.Rental_end_Date__c = null; |
| | | loa.Loaner__c = null; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ |
| | | loa.loaner_place__c = lad.loaner_manage_place__c; |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择上架检查状态')); |
| | | return null; |
| | | } |
| | | } |
| | | updList.add(lad); |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | assList.add(loa); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (updList.size() > 0) { |
| | | |
| | | if(la.Status__c != '完毕'/* && la.Status__c != '全部回收'*/){ |
| | | System.debug(la.Status__c); |
| | | la.Status__c = LoanerOrderState.getOrderStater(la.Id); |
| | | System.debug(la.Status__c); |
| | | update la; |
| | | } |
| | | |
| | | update updList; |
| | | update assList; |
| | | }else{ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择上架检查的样机')); |
| | | return null; |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | return null; |
| | | } |
| | | } |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | return null; |
| | | } |
| | | |
| | | public class DataLineBean { |
| | | // 是否选择 |
| | | public boolean checkFlag { get; set; } |
| | | // 行号 |
| | | public Integer lineNo { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | public DataLineBean(Integer in_no, loaner_application_detail__c in_lad) { |
| | | checkFlag = false; |
| | | lineNo = in_no; |
| | | lad = in_lad; |
| | | } |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerApplicationStockUpCheckCtrlTest { |
| | | static void setupTestData() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | } |
| | | @isTest static void test_method_one() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已回收'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已回收'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '已回收'; |
| | | detail.Inspection_result_after__c = 'OK'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | // |
| | | PageReference page = new PageReference('/apex/LoanerApplicationStockUpCheckController?Id=' + loaner.Id + '&step=StockUpCheck'); |
| | | System.Test.setCurrentPage(page); |
| | | LoanerApplicationStockUpCheckController controller = new LoanerApplicationStockUpCheckController(); |
| | | |
| | | |
| | | controller.init(); |
| | | |
| | | controller.dataLines[0].checkFlag = true; |
| | | controller.dataLines[0].lad.Inspection_result_after__c = 'NG-修理'; |
| | | controller.dataLines[0].lad.StockUpRemark__c = '备注'; |
| | | |
| | | controller.dataLines[1].checkFlag = true; |
| | | controller.dataLines[1].lad.Inspection_result_after__c = 'OK'; |
| | | |
| | | controller.dataLines[2].checkFlag = true; |
| | | controller.dataLines[2].lad.Inspection_result_after__c = 'NG-废弃'; |
| | | controller.dataLines[2].lad.StockUpRemark__c = '备注'; |
| | | |
| | | controller.saveBtn(); |
| | | //system.assertEquals(null,ApexPages.getMessages()[0].getDetail()); |
| | | |
| | | controller.cancelBtn(); |
| | | controller.getDatalineSize(); |
| | | |
| | | //List<loaner_application__c> laList = [select Id,Status__c from loaner_application__c where Id = :laId]; |
| | | List<loaner_application_detail__c> updList = [select name, RAESD_Status__c from loaner_application_detail__c order by name]; |
| | | system.assertEquals('待修理', updList[0].RAESD_Status__c); |
| | | system.assertEquals('已回库', updList[1].RAESD_Status__c); |
| | | system.assertEquals('待废弃', updList[2].RAESD_Status__c); |
| | | |
| | | |
| | | List<loaner_application__c> laList = [select Status__c from loaner_application__c]; |
| | | system.assertEquals('全部回收', laList[0].Status__c); |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | // Implement test code |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerApplicationStockUpController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机借出申请ID |
| | | public String laId { get; private set; } |
| | | public loaner_application__c la { get; private set; } |
| | | /* 画面步骤 |
| | | * 下架:StockDown |
| | | * |
| | | */ |
| | | public String step { get; private set; } |
| | | // 明细Bean |
| | | public List<DataLineBean> dataLines { get; set; } |
| | | // 明细行数 |
| | | public Integer getDatalineSize() { |
| | | return dataLines == null ? 0 : dataLines.size(); |
| | | } |
| | | |
| | | public LoanerApplicationStockUpController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | step = System.currentPageReference().getParameters().get('step'); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 明细Bean |
| | | dataLines = new List<DataLineBean>(); |
| | | |
| | | if (String.isBlank(laId) == true) { |
| | | return null; |
| | | } |
| | | if (String.isBlank(step) == true) { |
| | | return null; |
| | | } |
| | | // 样机借出申请取得 |
| | | List<loaner_application__c> laList = [select Id from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | // 样机借出申请明细取得 |
| | | String sql_select = 'select Id, SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c ,RAESD_Status__c,LOANER__c,LOANER__r.RecordType.Id'; |
| | | String sql_where = ' where loaner_application__c = :laId '; |
| | | if (step == 'StockUp') { |
| | | sql_where += ' and RAESD_Status__c in (\'待上架\',\'待移至报废区\')'; |
| | | } else { |
| | | return null; |
| | | } |
| | | String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; |
| | | |
| | | List<loaner_application_detail__c> lads = Database.query(sql_full); |
| | | if (lads.size() == 0) { |
| | | return null; |
| | | } |
| | | // 明细Bean作成 |
| | | Integer cnt = 0; |
| | | for (loaner_application_detail__c lad : lads) { |
| | | cnt += 1; |
| | | DataLineBean dataLine = new DataLineBean(cnt, lad); |
| | | dataLines.add(dataLine); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | // 根据step更新样机借出申请明细状态 |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | List<Asset> assList = new List<Asset>(); |
| | | if(dataLines.size() > 0 ){ |
| | | for (DataLineBean dataLine : dataLines) { |
| | | if (dataLine.checkFlag == true) { |
| | | loaner_application_detail__c lad = dataLine.lad; |
| | | Asset loa = new Asset(id = lad.LOANER__c); |
| | | if (step == 'StockUp') { |
| | | lad.StockUp__c = true; |
| | | lad.Arrival_wh_Date__c = Date.today(); |
| | | |
| | | if(lad.RAESD_Status__c == '待上架'){ |
| | | lad.RAESD_Status__c = '已回库'; |
| | | //如果是个体管理,则改变样机状态 |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '在库'; |
| | | } |
| | | }else if(lad.RAESD_Status__c == '待移至报废区'){ |
| | | lad.RAESD_Status__c = '待废弃'; |
| | | } |
| | | } |
| | | updList.add(lad); |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | assList.add(loa); |
| | | } |
| | | } |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (updList.size() > 0) { |
| | | update updList; |
| | | update assList; |
| | | /*if(){ |
| | | la.Status__c = '完毕'; |
| | | } |
| | | update la;*/ |
| | | }else{ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择需要上架的样机')); |
| | | return null; |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | } |
| | | } |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public class DataLineBean { |
| | | // 是否选择 |
| | | public boolean checkFlag { get; set; } |
| | | // 行号 |
| | | public Integer lineNo { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | public DataLineBean(Integer in_no, loaner_application_detail__c in_lad) { |
| | | checkFlag = false; |
| | | lineNo = in_no; |
| | | lad = in_lad; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | global class LoanerApplicationWebService { |
| | | |
| | | webservice static String loanIndication(String laId){ |
| | | List<loaner_application__c> laList = [select id, Status__c, Detail_count__c from loaner_application__c where id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | loaner_application__c la = laList[0]; |
| | | if (la.Status__c != '已批准') { |
| | | return '样机借出申请状态不正确,不能做出库指示。状态:' + la.Status__c; |
| | | } |
| | | if (la.Detail_count__c == 0) { |
| | | return '样机借出申请未分配样机。'; |
| | | } |
| | | |
| | | la.Status__c = '已出库指示'; |
| | | la.Bollow_Date__c = Date.today(); |
| | | |
| | | List<loaner_application_detail__c> ladList = [select id from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已批准']; |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '已出库指示'; |
| | | } |
| | | |
| | | try{ |
| | | update ladList; |
| | | update la; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | return '1'; |
| | | } |
| | | |
| | | webservice static String sendOutAll(String laId){ |
| | | List<loaner_application__c> laList = [select id, Status__c, delivery_company__c, Tracking_Number__c, Return_to_wh_staff__c,pickup_time__c,Equipment_Type__c,Agent__c,Rental_Start_Date__c,Rental_end_Date__c,Owner.Name from loaner_application__c where id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | loaner_application__c la = laList[0]; |
| | | if(la.pickup_time__c != null && la.Status__c == '出库前已检测'){ |
| | | List<loaner_application_detail__c> ladList = [select id,Receipt_Date__c,Receipt_Status__c, LOANER__c, LOANER__r.RecordType.DeveloperName from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测']; |
| | | la.Status__c = '申请者已收货'; |
| | | la.Shipping_Finished_Date__c = Date.today(); |
| | | la.Shipping_Finished_Date_All__c = Date.today(); |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '申请者已收货'; |
| | | lad.Shipment_Request_Date__c = Date.today(); |
| | | lad.Receipt_Date__c = Date.today(); |
| | | lad.outTime__c = Datetime.now(); |
| | | lad.Receipt_Status__c = 'OK'; |
| | | } |
| | | |
| | | List<Asset> astList = new List<Asset>(); |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | if (lad.LOANER__r.RecordType.DeveloperName == 'loaner_individual') { |
| | | Asset ast = new Asset(Id = lad.LOANER__c); |
| | | ast.Status = '出借'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | ast.Loaner__c = la.Owner.Name; |
| | | ast.Rental_Customer__c = la.Agent__c; |
| | | ast.Rental_Start_Date__c = la.Rental_Start_Date__c; |
| | | ast.Rental_end_Date__c = la.Rental_end_Date__c; |
| | | } |
| | | astList.add(ast); |
| | | } |
| | | } |
| | | |
| | | try{ |
| | | update ladList; |
| | | update la; |
| | | update astList; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | if (la.Status__c != '出库前已检测' && la.Status__c != '部分发货') { |
| | | return '样机借出申请状态不正确,不能做全部发货。状态:' + la.Status__c; |
| | | } |
| | | if (la.delivery_company__c == null || la.delivery_company__c == '' || |
| | | la.Tracking_Number__c == null || la.Tracking_Number__c == '' || |
| | | la.Return_to_wh_staff__c == null) { |
| | | return '发货信息不完整,请填写发货信息。'; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> ladList = [select id, LOANER__c, LOANER__r.RecordType.DeveloperName from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测']; |
| | | if (ladList.size() == 0) { |
| | | return '样机已经全部出库。'; |
| | | } |
| | | |
| | | la.Status__c = '全部发货'; |
| | | la.Shipping_Finished_Date__c = Date.today(); |
| | | la.Shipping_Finished_Date_All__c = Date.today(); |
| | | |
| | | Date temp = Date.today(); |
| | | Loaner_Express__c le = new Loaner_Express__c(); |
| | | le.loaner_application__c = laId; |
| | | le.Name = temp.day()+ '日发货物流单'; |
| | | insert le; |
| | | |
| | | Integer count =0; |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '已出库'; |
| | | lad.Shipment_Request_Date__c = Date.today(); |
| | | lad.delivery_company__c = la.delivery_company__c; |
| | | lad.Tracking_Number__c = la.Tracking_Number__c; |
| | | lad.Return_to_wh_staff__c = la.Return_to_wh_staff__c; |
| | | lad.outTime__c = Datetime.now(); |
| | | count++; |
| | | lad.Loaner_Express__c = le.id; |
| | | } |
| | | |
| | | le.Consignor_LogisticsNumber__c = la.Tracking_Number__c; |
| | | le.Consignor_LogisticsCompany__c = la.delivery_company__c; |
| | | le.consignor__c = la.Return_to_wh_staff__c; |
| | | le.Shipment_Request_Date__c = Date.today(); |
| | | le.NotReceivingNum__c = count; |
| | | |
| | | List<Asset> astList = new List<Asset>(); |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | if (lad.LOANER__r.RecordType.DeveloperName == 'loaner_individual') { |
| | | Asset ast = new Asset(Id = lad.LOANER__c); |
| | | ast.Status = '出借'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | ast.Loaner__c = la.Owner.Name; |
| | | ast.Rental_Customer__c = la.Agent__c; |
| | | ast.Rental_Start_Date__c = la.Rental_Start_Date__c; |
| | | ast.Rental_end_Date__c = la.Rental_end_Date__c; |
| | | } |
| | | astList.add(ast); |
| | | } |
| | | } |
| | | |
| | | try{ |
| | | update le; |
| | | update ladList; |
| | | update la; |
| | | update astList; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | webservice static String installConfirm(String laId){ |
| | | List<loaner_application__c> laList = [select id, Status__c from loaner_application__c where id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | loaner_application__c la = laList[0]; |
| | | if (la.Status__c != '申请者已收货') { |
| | | return '样机借出申请状态不正确,不能做装机确认。状态:' + la.Status__c; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> ladList = [select id from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '申请者已收货']; |
| | | |
| | | la.Status__c = '申请者已装机确认'; |
| | | la.HP_Received_Sign_Date__c = Date.today(); |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '申请者已装机确认'; |
| | | } |
| | | |
| | | try{ |
| | | update ladList; |
| | | update la; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | webservice static String sendBackAll(String laId){ |
| | | List<loaner_application__c> laList = [select id,loaner_request_number__c,loaner_manage_place__c,return_Number__c, Status__c, Return_Track_Company__c, Return_Track_Number__c, Return_Trake_Staff__c,Equipment_Type__c,loaner_return__c from loaner_application__c where id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | |
| | | loaner_application__c la = laList[0]; |
| | | //String.contains(String str) |
| | | //Boolean isOK = true; |
| | | List<loaner_application__c> lappList = [select id,AllLead_OrderName__c,Equipment_Type__c from loaner_application__c where Status__c = '已批准']; |
| | | if(lappList.size() > 0){ |
| | | for(loaner_application__c lapp : lappList){ |
| | | if(lapp.AllLead_OrderName__c != null){ |
| | | if(lapp.AllLead_OrderName__c.contains(la.loaner_request_number__c) && lapp.Equipment_Type__c == 'BS'){ |
| | | return '存在已批准的转借申请单,请点击 转借发货'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | /*if(lappList.size() > 0){ |
| | | return '有已批准的转借该借用单中样机的借用单,不能全部回寄'; |
| | | }*/ |
| | | |
| | | if (la.Status__c != '部分发货' && la.Status__c != '全部发货' && la.Status__c != '申请者已收货' && la.Status__c != '申请者已装机确认' && la.Status__c != '部分回寄') { |
| | | return '样机借出申请状态不正确,不能做全部回寄。状态:' + la.Status__c; |
| | | } |
| | | if((la.Equipment_Type__c == 'NDT' || la.Equipment_Type__c == 'ANI') && la.loaner_return__c == true){ |
| | | system.debug('111'); |
| | | /*if(la.Status__c != '申请者已装机确认'){ |
| | | return '必须装机确认才可以回寄样机'; |
| | | }*/ |
| | | if(la.loaner_manage_place__c == null || la.loaner_manage_place__c == ''){ |
| | | return '请填写样机管理地'; |
| | | } |
| | | if(la.Return_Trake_Staff__c == null || la.Return_Trake_Staff__c == ''){ |
| | | return '请填写返品人'; |
| | | } |
| | | if(la.return_Number__c == null || la.return_Number__c == ''){ |
| | | return '请填写返品人电话'; |
| | | } |
| | | }else{ |
| | | if(la.Equipment_Type__c == 'BS' && la.Status__c != '申请者已装机确认'){ |
| | | return '未装机确认,不能全部回寄。'; |
| | | } |
| | | if (la.Return_Track_Company__c == null || la.Return_Track_Company__c == '' || |
| | | la.Return_Track_Number__c == null || la.Return_Track_Number__c == '' || |
| | | la.Return_Trake_Staff__c == null) { |
| | | return '回寄信息不完整,请填写回寄信息。'; |
| | | } |
| | | |
| | | } |
| | | system.debug('222222222'); |
| | | List<loaner_application_detail__c> ladList = [select id, LOANER__c, LOANER__r.RecordType.DeveloperName from loaner_application_detail__c where loaner_application__c = :laId and (RAESD_Status__c = '已出库' or RAESD_Status__c = '申请者已收货' or RAESD_Status__c = '申请者收货NG' or RAESD_Status__c = '申请者已装机确认')]; |
| | | if (ladList.size() == 0) { |
| | | return '样机已经全部回寄。'; |
| | | } |
| | | Loaner_Express__c le = new Loaner_Express__c(); |
| | | system.debug(la.Equipment_Type__c+'++++++++'+la.loaner_return__c); |
| | | if((la.Equipment_Type__c != 'NDT' && la.Equipment_Type__c != 'ANI') || la.loaner_return__c == false || la.loaner_return__c == null){ |
| | | system.debug('1'); |
| | | la.Status__c = '全部回寄'; |
| | | la.Asset_Return_Date__c = Date.today(); |
| | | la.Asset_Return_Date_All__c = Date.today(); |
| | | |
| | | Date temp = Date.today(); |
| | | |
| | | le.loaner_application__c = laId; |
| | | le.Name = temp.day()+ '日回寄物流单'; |
| | | le.IsDeliveryLogistics__c = false; |
| | | insert le; |
| | | |
| | | Integer count = 0; |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.Return_Express__c = le.id; |
| | | lad.RAESD_Status__c = '已回寄'; |
| | | lad.Asset_Return_Date__c = Date.today(); |
| | | lad.loaner_manage_place__c = la.loaner_manage_place__c; |
| | | lad.Return_Track_Company__c = la.Return_Track_Company__c; |
| | | lad.Return_Track_Number__c = la.Return_Track_Number__c; |
| | | lad.Return_Trake_Staff__c = la.Return_Trake_Staff__c; |
| | | lad.return_Number__c = la.return_Number__c; |
| | | //lad.inTime__c = Datetime.now(); |
| | | count++; |
| | | } |
| | | |
| | | le.Asset_Return_Date__c = Date.today(); |
| | | le.Return_LogisticsCompany__c = la.Return_Track_Company__c; |
| | | le.Return_LogisticsNumber__c = la.Return_Track_Number__c; |
| | | le.Return_Sender__c = la.Return_Trake_Staff__c; |
| | | le.NotReceivingNum__c = count; |
| | | le.return_Number__c = la.return_Number__c; |
| | | /* List<Asset> astList = new List<Asset>(); |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | if (lad.LOANER__r.RecordType.DeveloperName == 'loaner_individual') { |
| | | Asset ast = new Asset(Id = lad.LOANER__c); |
| | | ast.Status = '在库'; |
| | | astList.add(ast); |
| | | } |
| | | }*/ |
| | | }else{ |
| | | system.debug('2'); |
| | | la.Status__c = '全部回收'; |
| | | la.Asset_Return_Date__c = Date.today(); |
| | | la.Asset_Return_Date_All__c = Date.today(); |
| | | la.LoanerClosedDateAll__c = Date.today(); |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '已回收'; |
| | | lad.Asset_Return_Date__c = Date.today(); |
| | | lad.loaner_manage_place__c = la.loaner_manage_place__c; |
| | | lad.Return_Track_Company__c = '自己送还'; |
| | | lad.Return_Track_Number__c = '自己送还'; |
| | | lad.Return_Trake_Staff__c = la.Return_Trake_Staff__c; |
| | | lad.Lost_item_check_Date__c = Date.today(); |
| | | lad.Received_loaner_Date__c = Date.today(); |
| | | lad.return_Number__c = la.return_Number__c; |
| | | //lad.inTime__c = Datetime.now(); |
| | | lad.Check_lost_Item__c = 'ok'; |
| | | } |
| | | le = null; |
| | | } |
| | | try{ |
| | | if(le != null){ |
| | | update le; |
| | | } |
| | | |
| | | if(ladList != null){ |
| | | update ladList; |
| | | } |
| | | if(la != null){ |
| | | update la; |
| | | } |
| | | //update astList; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | webservice static String splitLoanerApplication(String laId){ |
| | | test001(); |
| | | List<loaner_application__c> laCheckList = [select id, Status__c, Equipment_Type__c from loaner_application__c where id = :laId]; |
| | | if (laCheckList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | loaner_application__c laCheck = laCheckList[0]; |
| | | |
| | | if (laCheck.Equipment_Type__c == 'IE') { |
| | | if (laCheck.Status__c != '销售担当批准') { |
| | | return '样机借出申请状态不正确,不能做分割申请。状态:' + laCheck.Status__c; |
| | | } |
| | | }else if(laCheck.Equipment_Type__c == 'NDT' || laCheck.Equipment_Type__c == 'ANI'){ |
| | | if(laCheck.Status__c != '已批准'){ |
| | | return '样机借出申请状态不正确,不能做分割申请。状态:' + laCheck.Status__c; |
| | | } |
| | | }else{ |
| | | return laCheck.Equipment_Type__c + '不可以做分割申请。'; |
| | | } |
| | | |
| | | List<AggregateResult> checkList = [select LOANER__r.loaner_place__c lp |
| | | from loaner_application_detail__c |
| | | where loaner_application__c = :laId |
| | | group by LOANER__r.loaner_place__c |
| | | order by LOANER__r.loaner_place__c]; |
| | | if (checkList.size() == 0) { |
| | | return '样机借出申请没有明细,不能做分割申请。'; |
| | | } |
| | | if (checkList.size() == 1) { |
| | | return '借出样机的存放地一致,不需要做分割申请'; |
| | | } |
| | | |
| | | Schema.DescribeSobjectResult d_la = loaner_application__c.sObjectType.getDescribe(); |
| | | Map<String, Schema.SObjectField> d_la_map = d_la.fields.getMap(); |
| | | String soql_la = 'select '; |
| | | String fields_la = ''; |
| | | for (String field : d_la_map.keySet()) { |
| | | if (fields_la.length() > 0) { |
| | | fields_la += ', '; |
| | | } |
| | | fields_la += field; |
| | | } |
| | | soql_la += fields_la; |
| | | soql_la += ' from loaner_application__c where Id = \'' + laId + '\''; |
| | | List<loaner_application__c> laList = Database.query(soql_la); |
| | | |
| | | loaner_application__c la_org = laList[0]; |
| | | |
| | | Schema.DescribeSobjectResult d_lad = loaner_application_detail__c.sObjectType.getDescribe(); |
| | | Map<String, Schema.SObjectField> d_lad_map = d_lad.fields.getMap(); |
| | | String soql_lad = 'select '; |
| | | String fields_lad = ''; |
| | | for (String field : d_lad_map.keySet()) { |
| | | if (fields_lad.length() > 0) { |
| | | fields_lad += ', '; |
| | | } |
| | | fields_lad += field; |
| | | } |
| | | soql_lad += fields_lad; |
| | | soql_lad += ' from loaner_application_detail__c where loaner_application__c = \'' + laId + '\''; |
| | | soql_lad += ' order by loaner_place__c'; |
| | | List<loaner_application_detail__c> ladList = Database.query(soql_lad); |
| | | |
| | | List<String> keyList = new List<String>(); |
| | | Map<String, List<loaner_application_detail__c>> keyMap = new Map<String, List<loaner_application_detail__c>>(); |
| | | String loaner_place_back = '*start*'; |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | if (lad.loaner_place__c != loaner_place_back) { |
| | | List<loaner_application_detail__c> temp = new List<loaner_application_detail__c>(); |
| | | temp.add(lad); |
| | | |
| | | keyList.add(lad.loaner_place__c); |
| | | keyMap.put(lad.loaner_place__c, temp); |
| | | |
| | | loaner_place_back = lad.loaner_place__c; |
| | | } else { |
| | | List<loaner_application_detail__c> temp = keyMap.get(lad.loaner_place__c); |
| | | temp.add(lad); |
| | | } |
| | | } |
| | | |
| | | try { |
| | | List<loaner_application__c> insList = new List<loaner_application__c>(); |
| | | Map<String, loaner_application__c> insMap = new Map<String, loaner_application__c>(); |
| | | String otherName = ''; |
| | | |
| | | for (Integer i = 1; i < keyList.size(); i++) { |
| | | String key = keyList[i]; |
| | | loaner_application__c la_new = la_org.clone(); |
| | | la_new.Id = null; |
| | | // la_new.IsSplitLoanerApplication__c = true; |
| | | la_new.Name = la_new.Name + '-' + ('00' + i).right(2); |
| | | otherName = otherName + la_new.Name + ' \r\n '; |
| | | la_new.loaner_place__c = key; |
| | | insList.add(la_new); |
| | | insMap.put(key, la_new); |
| | | } |
| | | insert insList; |
| | | |
| | | if (keyList.size() > 0) { |
| | | la_org.loaner_place__c = keyList[0]; |
| | | la_org.IsSplitLoanerApplication__c = true; |
| | | la_org.Other_Form__c = otherName; |
| | | } |
| | | update la_org; |
| | | |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | for (Integer i = 1; i < keyList.size(); i++) { |
| | | String key = keyList[i]; |
| | | for (loaner_application_detail__c lad : keyMap.get(key)) { |
| | | lad.loaner_application__c = insMap.get(key).Id; |
| | | updList.add(lad); |
| | | } |
| | | } |
| | | update updList; |
| | | |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | |
| | | webservice static String cancelLoanerApplication(String laId){ |
| | | List<loaner_application__c> laList = [select id, Status__c, Cancel_Reason__c from loaner_application__c where id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | loaner_application__c la = laList[0]; |
| | | if (la.Status__c != '草案中' && la.Status__c != '销售担当批准' && la.Status__c != '已批准') { |
| | | return '样机借出申请状态不正确,不能做取消。状态:' + la.Status__c; |
| | | } |
| | | if (la.Cancel_Reason__c == null || la.Cancel_Reason__c == '') { |
| | | return '请输入取消理由。'; |
| | | } |
| | | |
| | | List<loaner_application_detail__c> ladList = [select id, LOANER__c, LOANER__r.RecordType.DeveloperName from loaner_application_detail__c where loaner_application__c = :laId]; |
| | | |
| | | la.Status__c = '取消'; |
| | | la.Cancel_Date__c = Date.today(); |
| | | |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | lad.RAESD_Status__c = '取消'; |
| | | lad.Cancel_Date__c = Date.today(); |
| | | } |
| | | |
| | | List<Asset> astList = new List<Asset>(); |
| | | for (loaner_application_detail__c lad : ladList) { |
| | | if (lad.LOANER__r.RecordType.DeveloperName == 'loaner_individual') { |
| | | Asset ast = new Asset(Id = lad.LOANER__c); |
| | | ast.Status = '在库'; |
| | | astList.add(ast); |
| | | } |
| | | } |
| | | |
| | | try{ |
| | | update ladList; |
| | | update la; |
| | | update astList; |
| | | } catch(Exception ex) { |
| | | return ex.getMessage() + '|Line:' + ex.getLineNumber(); |
| | | } |
| | | |
| | | return '1'; |
| | | } |
| | | /* |
| | | *检查所分配个体管理样机样机是否都在库, |
| | | *检查所分配数量管理样机是否都有足够数量用来分配。 |
| | | */ |
| | | webservice static String haveFreeze(String laId){ |
| | | if(laId == null || laId == ''){ |
| | | return '样机借出申请不存在。'; |
| | | } |
| | | |
| | | loaner_application__c la = [select id,Loaner_LendOrder__c from loaner_application__c where id =: laId]; |
| | | |
| | | if(la.Loaner_LendOrder__c == true ){ |
| | | return '1'; |
| | | } |
| | | //获取数量管理和个体管理的明细 |
| | | List<loaner_application_detail__c> ladList = [select id,LOANER__r.Status,LOANER__r.Name from loaner_application_detail__c where LOANER__r.RecordType.DeveloperName = 'loaner_individual' and loaner_application__c = :laId]; |
| | | List<AggregateResult> ladList1 = [select LOANER__c,count(Id) LoanerNO from loaner_application_detail__c where LOANER__r.RecordType.DeveloperName = 'loaner_number' and loaner_application__c = :laId GROUP by LOANER__c]; |
| | | //数量管理判断 |
| | | if(ladList1.size() > 0){ |
| | | List<String> loanerIdList = new List<String>(); |
| | | Map<String,Integer> loanerMap = new Map<String,Integer>(); |
| | | |
| | | for(AggregateResult ar:ladList1){ |
| | | loanerIdList.add(String.valueOf(ar.get('LOANER__c'))); |
| | | loanerMap.put(String.valueOf(ar.get('LOANER__c')), Integer.valueOf(ar.get('LoanerNO'))); |
| | | } |
| | | |
| | | List<Asset> assetList = [select id,Count_can_allocate_F__c,Name from Asset where Id = :loanerIdList]; |
| | | |
| | | for(Asset ass : assetList){ |
| | | //如果分配数量大于样机可分配数量则提示错误 |
| | | if(loanerMap.get(ass.Id) > ass.Count_can_allocate_F__c){ |
| | | return '您所分配的样机\''+ass.Name+'\'库存不足,现余'+ass.Count_can_allocate_F__c+'个,请调整分配后再提交.'; |
| | | } |
| | | } |
| | | |
| | | } |
| | | //个体管理判断 |
| | | if(ladList.size() > 0){ |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | //如果存在状态不是'在库'的样机则提示错误 |
| | | if(lad.LOANER__r.Status != '在库'){ |
| | | return '您所分配的样机\''+lad.LOANER__r.Name+'\'已冻结,请重新分配在库样机.'; |
| | | } |
| | | } |
| | | } |
| | | return '1'; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private static void test001(){ |
| | | 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++; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerApplicationWebServiceTest { |
| | | static Product2 prd1; |
| | | static Product2 prd2; |
| | | static Account acc; |
| | | static Account dealer; |
| | | static Contact core; |
| | | static User testUser; |
| | | static Asset asset; |
| | | static void setupTestData() { |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | |
| | | List<RecordType> dealerIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | if (dealerIE.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> olyCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'OlympusCompany']; |
| | | if (olyCompany.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_number = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_数量管理']; |
| | | if (loa_number.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | //代理商用户 |
| | | List<RecordType> rectDealer = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Dealer']; |
| | | Profile prof = [select Id from Profile where Name ='SSBG DEALER IE']; |
| | | dealer = new Account(); |
| | | dealer.Name = 'test dealer'; |
| | | dealer.RecordTypeId = rectDealer[0].Id; |
| | | dealer.ProductSegment__c = 'IE'; |
| | | dealer.PostCode__c='000000'; |
| | | insert dealer; |
| | | core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=dealer.id); |
| | | insert core; |
| | | testUser = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser01@prectech.com'); |
| | | insert testUser; |
| | | |
| | | //样机客户 |
| | | acc = new Account(); |
| | | acc.Name = 'test dealer'; |
| | | acc.RecordTypeId = olyCompany[0].Id; |
| | | acc.ProductSegment__c = 'IE'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 产品 |
| | | prd1 = new Product2(); |
| | | prd1.Product_ECCode__c = 'testSBG001'; |
| | | prd1.ProductCode = 'testSBG001'; |
| | | prd1.Name = 'testSBG001'; |
| | | prd1.IsActive = true; |
| | | |
| | | prd2 = new Product2(); |
| | | prd2.Product_ECCode__c = 'testSBG002'; |
| | | prd2.ProductCode = 'testSBG002'; |
| | | prd2.Name = 'testSBG002'; |
| | | prd2.IsActive = true; |
| | | insert new Product2[] {prd1, prd2}; |
| | | |
| | | // 保有设备 (数量管理) |
| | | asset = new Asset(); |
| | | asset.RecordTypeId = loa_number[0].Id; |
| | | asset.SerialNumber = 'asset'; |
| | | asset.Name = 'asset'; |
| | | asset.AccountId = acc.Id; |
| | | asset.Product2Id = prd2.Id; |
| | | asset.Quantity = 1; |
| | | asset.Status = '在库'; |
| | | asset.Equipment_Type__c = 'IE'; |
| | | asset.loaner_place__c = '广州办'; |
| | | asset.total_number__c = 20; |
| | | asset.Remarks2__c = 'asset'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC1 = new Asset(); |
| | | assetC1.RecordTypeId = loa_individual[0].Id; |
| | | assetC1.SerialNumber = 'assetC1'; |
| | | assetC1.Name = 'assetC1'; |
| | | assetC1.AccountId = acc.Id; |
| | | assetC1.Product2Id = prd1.Id; |
| | | assetC1.Quantity = 1; |
| | | assetC1.Status = '在库'; |
| | | assetC1.Equipment_Type__c = 'IE'; |
| | | assetC1.loaner_place__c = '北京酒仙桥'; |
| | | assetC1.Remarks2__c = 'assetC1'; |
| | | |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | insert new Asset[] {asset,assetC1}; |
| | | } |
| | | //出库指示 |
| | | @isTest static void loanIndicationTest() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | LoanerApplicationWebService.loanIndication('111111111111111'); |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.pickup_time__c = Date.today().addDays(2); |
| | | insert loanerApp; |
| | | LoanerApplicationWebService.loanIndication(loanerApp.Id); |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | update loanerApp; |
| | | LoanerApplicationWebService.loanIndication(loanerApp.Id); |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '已批准'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | LoanerApplicationWebService.loanIndication(loanerApp.Id); |
| | | } |
| | | @isTest static void sendOutAllTest01() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | System.Test.startTest(); |
| | | LoanerApplicationWebService.sendOutAll('111111111111111'); |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | insert loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '出库前已检测'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | loanerApp.Status__c = '已出库指示'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | loanerApp.Status__c = '出库前已检测'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | loanerApp.pickup_time__c = Date.today(); |
| | | update loanerApp; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | System.Test.stopTest(); |
| | | |
| | | } |
| | | @isTest static void sendOutAllTest02() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '出库前已检测'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '出库前已检测'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | LoanerApplicationWebService.sendOutAll(loanerApp.Id); |
| | | } |
| | | |
| | | @isTest static void installConfirmTest() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | LoanerApplicationWebService.installConfirm('111111111'); |
| | | LoanerApplicationWebService.installConfirm(loanerApp.Id); |
| | | loanerApp.Status__c = '申请者已收货'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.installConfirm(loanerApp.Id); |
| | | |
| | | LoanerApplicationWebService.sendBackAll(loanerApp.Id); |
| | | } |
| | | |
| | | @isTest static void sendBackAllTest() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | LoanerApplicationWebService.sendBackAll('111111111'); |
| | | LoanerApplicationWebService.sendBackAll(loanerApp.Id); |
| | | loanerApp.Status__c = '申请者已收货'; |
| | | loanerApp.Return_Track_Company__c = '11111'; |
| | | loanerApp.Return_Track_Number__c = '11111'; |
| | | loanerApp.Return_Trake_Staff__c = '11111'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.sendBackAll(loanerApp.Id); |
| | | |
| | | } |
| | | @isTest static void sendBackAllTest1() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'NDT']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'NDT'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'NDT'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '培训'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | LoanerApplicationWebService.sendBackAll('111111111'); |
| | | LoanerApplicationWebService.sendBackAll(loanerApp.Id); |
| | | loanerApp.Status__c = '申请者已收货'; |
| | | loanerApp.Return_Track_Company__c = '11111'; |
| | | loanerApp.Return_Track_Number__c = '11111'; |
| | | loanerApp.Return_Trake_Staff__c = '11111'; |
| | | loanerApp.loaner_manage_place__c = '北京酒仙桥'; |
| | | loanerApp.loaner_return__c = true; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.sendBackAll(loanerApp.Id); |
| | | |
| | | } |
| | | |
| | | @isTest static void splitLoanerApplicationTest() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '已批准'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-02'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = asset.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | System.Test.startTest(); |
| | | |
| | | LoanerApplicationWebService.splitLoanerApplication('111111111'); |
| | | loanerApp.Status__c = '申请者已收货'; |
| | | update loanerApp; |
| | | |
| | | LoanerApplicationWebService.splitLoanerApplication(loanerApp.Id); |
| | | loanerApp.Status__c = '销售担当批准'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.splitLoanerApplication(loanerApp.Id); |
| | | System.Test.stopTest(); |
| | | |
| | | } |
| | | |
| | | @isTest static void cancelLoanerApplicationTest() { |
| | | setupTestData(); |
| | | |
| | | List<RecordType> rectLapp = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | if (rectLapp.size() == 0) { |
| | | return; |
| | | } |
| | | List<RecordType> loa_individual = [select Id from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '样机_个体管理']; |
| | | if (loa_individual.size() == 0) { |
| | | return; |
| | | } |
| | | // 保有设备 (个体管理) |
| | | Asset assetC2 = new Asset(); |
| | | assetC2.RecordTypeId = loa_individual[0].Id; |
| | | assetC2.SerialNumber = 'assetC2'; |
| | | assetC2.Name = 'assetC2'; |
| | | assetC2.AccountId = acc.Id; |
| | | assetC2.Product2Id = prd1.Id; |
| | | assetC2.Quantity = 1; |
| | | assetC2.Status = '在库'; |
| | | assetC2.Equipment_Type__c = 'IE'; |
| | | assetC2.loaner_place__c = '北京酒仙桥'; |
| | | assetC2.Remarks2__c = 'assetC2'; |
| | | insert assetC2; |
| | | loaner_application__c loanerApp = new loaner_application__c(); |
| | | loanerApp.Name = 'TESTYJ0001'; |
| | | loanerApp.Approval_Step__c = 1; |
| | | loanerApp.Status__c = '申请中'; |
| | | loanerApp.Rental_Start_Date__c = Date.today(); |
| | | loanerApp.Rental_End_Date__c = Date.today(); |
| | | loanerApp.Loaner_Ser__c = 'test'; |
| | | loanerApp.Equipment_Type__c = 'IE'; |
| | | loanerApp.RecordTypeId = rectLapp[0].Id; |
| | | loanerApp.Demo_purpose__c = '演示'; |
| | | loanerApp.Request_shipping_Date__c = Date.today(); |
| | | loanerApp.Request_return_Date__c = Date.today(); |
| | | loanerApp.delivery_company__c = '111111111'; |
| | | loanerApp.Tracking_Number__c = '22222222'; |
| | | loanerApp.Return_to_wh_staff__c = testUser.Id; |
| | | loanerApp.pickup_time__c = Date.today().addDays(2); |
| | | insert loanerApp; |
| | | loaner_application_detail__c loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-01'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = assetC2.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | loanerAppDet = new loaner_application_detail__c(); |
| | | loanerAppDet.RAESD_Status__c = '申请者已收货'; |
| | | loanerAppDet.Name = 'TESTYJ0001-02'; |
| | | loanerAppDet.loaner_application__c = loanerApp.Id; |
| | | loanerAppDet.LOANER__c = asset.Id; |
| | | loanerAppDet.Allocate_Date__c = Date.today(); |
| | | insert loanerAppDet; |
| | | |
| | | LoanerApplicationWebService.cancelLoanerApplication('111111111'); |
| | | LoanerApplicationWebService.cancelLoanerApplication(loanerApp.Id); |
| | | loanerApp.Status__c = '已批准'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.cancelLoanerApplication(loanerApp.Id); |
| | | loanerApp.Cancel_Reason__c = 'test'; |
| | | update loanerApp; |
| | | LoanerApplicationWebService.cancelLoanerApplication(loanerApp.Id); |
| | | |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>34.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerExpressTriggerHandler { |
| | | |
| | | public static void updateExpress(List<Loaner_Express__c> newList, Map<Id, Loaner_Express__c> newMap, List<Loaner_Express__c> oldList, Map<Id, Loaner_Express__c> oldMap){ |
| | | List<String> expressIDList = new List<String>(); |
| | | List<String> returnIDList = new List<String>(); |
| | | List<String> lendOrderList = new List<String>(); |
| | | Loaner_Express__c old = null; |
| | | for(Loaner_Express__c express : newList){ |
| | | old = oldMap.get(express.Id); |
| | | if(old.consignor__c != express.consignor__c || old.Consignor_LogisticsCompany__c != express.Consignor_LogisticsCompany__c || old.Consignor_LogisticsNumber__c != express.Consignor_LogisticsNumber__c){ |
| | | expressIDList.add(express.Id); |
| | | } |
| | | if(old.Return_Sender__c != express.Return_Sender__c || old.Return_LogisticsCompany__c != express.Return_LogisticsCompany__c || old.Return_LogisticsNumber__c != express.Return_LogisticsNumber__c){ |
| | | returnIDList.add(express.Id); |
| | | if(express.IsLendOrder__c && express.LendOrder__c != null){ |
| | | lendOrderList.add(express.Id); |
| | | } |
| | | } |
| | | } |
| | | List<loaner_application_detail__c> updateList = new List<loaner_application_detail__c>(); |
| | | if(expressIDList.size() != 0){ |
| | | List<loaner_application_detail__c> ladList =[select id,Loaner_Express__c from loaner_application_detail__c where Loaner_Express__c = :expressIDList]; |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | Loaner_Express__c express = newMap.get(lad.Loaner_Express__c); |
| | | if(express.IsDeliveryLogistics__c){ |
| | | lad.Return_to_wh_staff__c = express.consignor__c; |
| | | lad.delivery_company__c = express.Consignor_LogisticsCompany__c; |
| | | lad.Tracking_Number__c = express.Consignor_LogisticsNumber__c; |
| | | } |
| | | updateList.add(lad); |
| | | } |
| | | } |
| | | if(returnIDList.size() != 0){ |
| | | List<loaner_application_detail__c> ladList =[select id,Return_Express__c from loaner_application_detail__c where Return_Express__c = :returnIDList]; |
| | | system.debug(ladList.size()); |
| | | for(loaner_application_detail__c lad: ladList){ |
| | | Loaner_Express__c express = newMap.get(lad.Return_Express__c); |
| | | if(!express.IsDeliveryLogistics__c){ |
| | | lad.Return_Trake_Staff__c = express.Return_Sender__c; |
| | | lad.Return_Track_Company__c = express.Return_LogisticsCompany__c; |
| | | lad.Return_Track_Number__c = express.Return_LogisticsNumber__c; |
| | | } |
| | | updateList.add(lad); |
| | | } |
| | | } |
| | | List<Loaner_Express__c> upLeList = new List<Loaner_Express__c>(); |
| | | if(lendOrderList.size()>0){ |
| | | for(String leId:lendOrderList){ |
| | | Loaner_Express__c temp = newMap.get(leId); |
| | | Loaner_Express__c le = new Loaner_Express__c(); |
| | | le.Id = temp.LendOrder__c; |
| | | le.Consignor_LogisticsCompany__c = temp.Return_LogisticsCompany__c; |
| | | le.Consignor_LogisticsNumber__c = temp.Return_LogisticsNumber__c; |
| | | upLeList.add(le); |
| | | } |
| | | } |
| | | ControllerUtil.updateExpress(upLeList); |
| | | //update upLeList; |
| | | update updateList; |
| | | } |
| | | |
| | | public static void emailDate(List<Loaner_Express__c> newList, Map<Id, Loaner_Express__c> newMap, List<Loaner_Express__c> oldList, Map<Id, Loaner_Express__c> oldMap){ |
| | | List<String> autoId = new List<String>(); |
| | | List<String> remindId = new List<String>(); |
| | | |
| | | for(Loaner_Express__c le : newList){ |
| | | Loaner_Express__c old = oldMap.get(le.id); |
| | | system.debug('leName:'+le.Name+'------'+le.Automatic_Received_Date__c+'======'+le.Shipment_Request_Date__c); |
| | | if(le.Automatic_Received_Date__c == null && le.Shipment_Request_Date__c != null){ |
| | | autoId.add(le.id); |
| | | } |
| | | if(le.Automatic_Received_Date__c != old.Automatic_Received_Date__c){ |
| | | remindId.add(le.id); |
| | | } |
| | | } |
| | | system.debug(autoId.size()); |
| | | Map<String,OlympusCalendar__c> oCalendar = calendarUtil.getCalendarMap(Date.today().addDays(-10),Date.today().addDays(240)); |
| | | List<Loaner_Express__c> autoList = new List<Loaner_Express__c>(); |
| | | List<Loaner_Express__c> remindList = new List<Loaner_Express__c>(); |
| | | List<loaner_application_detail__c> ladList = new List<loaner_application_detail__c>(); |
| | | if(autoId.size()>0){ |
| | | autoList = [select id,Shipment_Request_Date__c,Loaner_type__c from Loaner_Express__c where id= :autoId]; |
| | | for(Loaner_Express__c auto : autoList){ |
| | | if(auto.Loaner_type__c == 'NDT' || auto.Loaner_type__c == 'ANI'){ |
| | | auto.Automatic_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Shipment_Request_Date__c,3); |
| | | auto.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Automatic_Received_Date__c,-2); |
| | | }else{ |
| | | auto.Automatic_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Shipment_Request_Date__c,5); |
| | | auto.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,auto.Automatic_Received_Date__c,-3); |
| | | } |
| | | |
| | | } |
| | | } |
| | | system.debug(autoList); |
| | | if(remindId.size()>0){ |
| | | remindList = [select id,Automatic_Received_Date__c,Loaner_type__c from Loaner_Express__c where id= :remindId]; |
| | | |
| | | for(Loaner_Express__c remind : remindList){ |
| | | if(remind.Loaner_type__c == 'NDT' || remind.Loaner_type__c == 'ANI'){ |
| | | remind.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,remind.Automatic_Received_Date__c,-2); |
| | | }else{ |
| | | remind.Remind_Received_Date__c = calendarUtil.getCorrespondingDate(oCalendar,remind.Automatic_Received_Date__c,-3); |
| | | } |
| | | } |
| | | for(loaner_application_detail__c lad : [select id,Loaner_Express__c from loaner_application_detail__c where Loaner_Express__c= :remindId]){ |
| | | lad.Automatic_Received_Date__c = newMap.get(lad.Loaner_Express__c).Automatic_Received_Date__c; |
| | | |
| | | ladList.add(lad); |
| | | } |
| | | } |
| | | if(autoList.size()>0) update autoList; |
| | | if(remindList.size()>0) { |
| | | update remindList; |
| | | update ladList; |
| | | } |
| | | } |
| | | |
| | | public static void getApprover(List<Loaner_Express__c> newList, Map<Id, Loaner_Express__c> newMap, List<Loaner_Express__c> oldList, Map<Id, Loaner_Express__c> oldMap){ |
| | | List<Loaner_Express__c> leIdList = new List<Loaner_Express__c>(); |
| | | for(Loaner_Express__c le : newList){ |
| | | if(le.Approver__c == null){ |
| | | leIdList.add(le); |
| | | } |
| | | } |
| | | |
| | | if(leIdList.size() >0){ |
| | | List<Loaner_Express__c> leList = new List<Loaner_Express__c>(); |
| | | for(Loaner_Express__c le : [select id,loaner_application__r.loaner_Manager__c,loaner_application__r.Approver__c,loaner_application__r.OwnerId from Loaner_Express__c where id=:leIdList]){ |
| | | le.Approver__c = le.loaner_application__r.loaner_Manager__c; |
| | | le.sales_User__c = le.loaner_application__r.Approver__c; |
| | | le.Loaner_Agent__c = le.loaner_application__r.OwnerId; |
| | | leList.add(le); |
| | | } |
| | | if(leList.size()>0){ |
| | | update leList; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void updateName(List<Loaner_Express__c> newList, Map<Id, Loaner_Express__c> newMap, List<Loaner_Express__c> oldList, Map<Id, Loaner_Express__c> oldMap){ |
| | | List<String> leList1 = new List<String>(); |
| | | List<String> leList2 = new List<String>(); |
| | | List<Loaner_Express__c> updateList = new List<Loaner_Express__c>(); |
| | | for(Loaner_Express__c le : newList){ |
| | | Loaner_Express__c old = oldMap.get(le.id); |
| | | if((le.Return_LogisticsNumber__c != old.Return_LogisticsNumber__c ||le.Return_LogisticsCompany__c != old.Return_LogisticsCompany__c) && le.IsDeliveryLogistics__c == false ){ |
| | | leList1.add(le.id); |
| | | } |
| | | |
| | | if(( le.Consignor_LogisticsNumber__c != old.Consignor_LogisticsNumber__c || le.Consignor_LogisticsCompany__c != old.Consignor_LogisticsCompany__c) && le.IsDeliveryLogistics__c == true){ |
| | | leList2.add(le.id); |
| | | |
| | | } |
| | | } |
| | | if(leList1.size()>0){ |
| | | for(Loaner_Express__c le : [select id,Asset_Return_Date__c,Return_LogisticsNumber__c,IsLendOrder__c,LendOrder__c,Return_LogisticsCompany__c from Loaner_Express__c where id=:leList1]){ |
| | | le.Name =le.Asset_Return_Date__c.day()+'日回寄物流单-'+ le.Return_LogisticsCompany__c+le.Return_LogisticsNumber__c; |
| | | updateList.add(le); |
| | | if(le.IsLendOrder__c && le.LendOrder__c != null){ |
| | | Loaner_Express__c temp = new Loaner_Express__c(); |
| | | temp.id = le.LendOrder__c; |
| | | temp.Name = le.Asset_Return_Date__c.day()+'日发货流单-'+ le.Return_LogisticsCompany__c+le.Return_LogisticsNumber__c; |
| | | updateList.add(temp); |
| | | } |
| | | } |
| | | } |
| | | if(leList2.size()>0){ |
| | | for(Loaner_Express__c le : [select id,Shipment_Request_Date__c,Consignor_LogisticsNumber__c,Consignor_LogisticsCompany__c from Loaner_Express__c where id=:leList2]){ |
| | | le.Name = le.Shipment_Request_Date__c.day()+'日发货物流单-'+le.Consignor_LogisticsCompany__c+le.Consignor_LogisticsNumber__c; |
| | | updateList.add(le); |
| | | } |
| | | |
| | | } |
| | | if(updateList.size()>0) ControllerUtil.updateExpress(updateList); |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerExpressTriggerHandlerTest { |
| | | |
| | | @isTest static void test_method_one() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12}; |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today().addDays(10); |
| | | loaner.Request_return_Date__c = Date.today().addDays(10); |
| | | loaner.Status__c = '部分发货'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已出库'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已回寄'; |
| | | //detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '出库前已检测'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | Loaner_Express__c le = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id |
| | | ); |
| | | |
| | | insert le; |
| | | In_detail[2].Loaner_Express__c = le.Id; |
| | | le.Consignor_LogisticsNumber__c ='test123123'; |
| | | le.Consignor_LogisticsCompany__c = 'testCompany'; |
| | | le.Shipment_Request_Date__c = Date.today().addDays(3); |
| | | le.NotReceivingNum__c = 1; |
| | | update le; |
| | | update In_detail; |
| | | |
| | | le.Consignor_LogisticsNumber__c = '3232323'; |
| | | update le; |
| | | |
| | | Loaner_Express__c le1 = new Loaner_Express__c( |
| | | Name = 'test01', |
| | | loaner_application__c = loaner.Id |
| | | ); |
| | | |
| | | insert le1; |
| | | |
| | | In_detail[1].Return_Express__c = le1.Id; |
| | | update In_detail; |
| | | le1.Return_LogisticsNumber__c ='test123123'; |
| | | le1.Return_LogisticsCompany__c = 'testCompany'; |
| | | le1.Asset_Return_Date__c = Date.today().addDays(3); |
| | | le1.NotReceivingNum__c = 1; |
| | | le1.IsDeliveryLogistics__c = false; |
| | | update le1; |
| | | |
| | | |
| | | le.Return_LogisticsNumber__c = '3232323'; |
| | | update le; |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | // Implement test code |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerLendDeliverController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机借出申请ID |
| | | public String laId { get; private set; } |
| | | public loaner_application__c lac {get;private set;} |
| | | public loaner_application__c la { get; private set; } |
| | | |
| | | public Set<String> laSet {get; private set;} |
| | | /* 画面步骤 |
| | | * 下架:StockDown |
| | | * |
| | | */ |
| | | public String step { get; private set; } |
| | | // 明细Bean |
| | | public List<DataLineBean> dataLines { get; set; } |
| | | public List<loaner_application_detail__c> lad1s {get; private set;} |
| | | // 明细行数 |
| | | public Integer getDatalineSize() { |
| | | return dataLines == null ? 0 : dataLines.size(); |
| | | } |
| | | |
| | | public LoanerLendDeliverController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | step = System.currentPageReference().getParameters().get('step'); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 明细Bean |
| | | dataLines = new List<DataLineBean>(); |
| | | |
| | | if (String.isBlank(laId) == true) { |
| | | return null; |
| | | } |
| | | if (String.isBlank(step) == true) { |
| | | return null; |
| | | } |
| | | |
| | | // 样机借出申请取得 |
| | | List<loaner_application__c> laList = [select Id,Return_Trake_Staff__c,Return_Track_Company__c,Return_Track_Number__c,Status__c,Equipment_Type__c from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | lac = new loaner_application__c(); |
| | | User temp = [select id,Name from User where id = :UserInfo.getUserId()]; |
| | | lac.Return_Trake_Staff__c = temp.Name; |
| | | |
| | | List<String> benId = new List<String>(); |
| | | |
| | | |
| | | // 样机借出申请明细取得 |
| | | String sql_select = 'select Id,loaner_application__c, SerialNumber__c, Receipt_Status__c,Internal_Asset_number__c, OTCODE__c, ECCode__c,LOANER__c,LOANER__r.RecordType.Id,loaner_application__r.Loaner_AgreementPDF__c,LOANER__r.Name,LOANER__r.Remarks2__c'; |
| | | String sql_where = ' where loaner_application__c = :laId '; |
| | | if (step == 'LoanerLend') { |
| | | sql_where += ' and RAESD_Status__c in (\'申请者已收货\',\'申请者已装机确认\')'; |
| | | } else { |
| | | return null; |
| | | } |
| | | String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; |
| | | List<loaner_application_detail__c> lads = Database.query(sql_full); |
| | | System.debug('========1========'+lads); |
| | | if (lads.size() == 0) { |
| | | return null; |
| | | }else{ |
| | | for(loaner_application_detail__c loan : lads){ |
| | | benId.add(loan.id); |
| | | } |
| | | } |
| | | //获取记录该信息的明细 |
| | | lad1s = [select Id,loaner_Agent__c,loaner_application__r.loaner_request_number__c ,loaner_application__r.Owner.Name,LendPrimary_Name__c,SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c,LOANER__c,loaner_application__c,LOANER__r.RecordType.Id,loaner_application__r.Loaner_AgreementPDF__c,loaner_application__r.pickup_time__c,loaner_application__r.Agent__c,loaner_application__r.Rental_Start_Date__c,loaner_application__r.Rental_end_Date__c from loaner_application_detail__c where LendPrimary_Name__c = :benId and RAESD_Status__c = '已批准']; |
| | | List<loaner_application_detail__c> lad2s = new List<loaner_application_detail__c>(); |
| | | System.debug('==========2======='+lad1s); |
| | | if(lad1s.size() == 0){ |
| | | |
| | | return null; |
| | | } |
| | | Integer cnt = 0; |
| | | for(loaner_application_detail__c i : lad1s){ |
| | | for(loaner_application_detail__c j : lads){ |
| | | if(j.id == i.LendPrimary_Name__c){ |
| | | System.debug('==============3========='+i.LendPrimary_Name__c); |
| | | lad2s.add(j); |
| | | cnt += 1; |
| | | System.debug('转借代理商:'+i.loaner_Agent__c); |
| | | //DataLineBean dataLine = new DataLineBean(cnt, j,i.loaner_application__r.Loaner_AgreementPDF__c == true ? '已上传' : '未上传'); |
| | | DataLineBean dataLine = new DataLineBean(cnt, j,i.loaner_application__r.Loaner_AgreementPDF__c,i.loaner_Agent__c,i.loaner_application__r.loaner_request_number__c); |
| | | dataLines.add(dataLine); |
| | | } |
| | | } |
| | | } |
| | | // 明细Bean作成 |
| | | /* Integer cnt = 0; |
| | | for (loaner_application_detail__c lad : lad2s) { |
| | | cnt += 1; |
| | | DataLineBean dataLine = new DataLineBean(cnt, lad); |
| | | dataLines.add(dataLine); |
| | | } */ |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, String.valueOf(lad1s))); |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | laSet = new Set<String>(); |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | List<Asset> assList = new List<Asset>(); |
| | | Integer count = 0; |
| | | boolean pickupFalg = false; |
| | | if(dataLines.size() >0){ |
| | | Loaner_Express__c le = this.createExpress('发货'); |
| | | Loaner_Express__c rle = this.createExpress('回寄'); |
| | | for (DataLineBean dataLine : dataLines) { |
| | | if (dataLine.checkFlag == true) { |
| | | if(dataLine.PDFflag == false){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '借用方未上传借用协议,不能进行转借发货。')); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | return null; |
| | | } |
| | | loaner_application_detail__c lad = dataLine.lad; |
| | | |
| | | if(lad.Receipt_Status__c != 'OK' && lad.Receipt_Status__c == null){ |
| | | lad.Receipt_Status__c = 'OK'; |
| | | lad.Receipt_Date__c = Date.today(); |
| | | } |
| | | //发货方明细 |
| | | //日期 |
| | | lad.Asset_Return_Date__c = Date.today(); |
| | | lad.Received_loaner_Date__c = Date.today(); |
| | | lad.After_Inspection_Date__c = Date.today(); |
| | | lad.Arrival_wh_Date__c = Date.today(); |
| | | lad.inTime__c = Datetime.now(); |
| | | lad.RAESD_Status__c = '已回库'; |
| | | //上架检查 |
| | | lad.StockUp__c = true; |
| | | lad.Check_lost_Item__c = 'OK'; |
| | | lad.Inspection_result_after__c = 'OK'; |
| | | |
| | | |
| | | for(loaner_application_detail__c temp : lad1s){ |
| | | if(temp.LendPrimary_Name__c == lad.id){ |
| | | //收货方明细 |
| | | temp.StockDown__c = true; |
| | | temp.outTime__c = Datetime.now(); |
| | | temp.StockDown_Date__c = Date.today(); |
| | | temp.Shipment_Request_Date__c = Date.today(); |
| | | temp.Pre_inspection_Date__c = Date.today(); |
| | | |
| | | |
| | | temp.Inspection_result__c ='OK'; |
| | | |
| | | if(temp.loaner_application__r.pickup_time__c == null){ |
| | | if(lac.Return_Track_Company__c == null || lac.Return_Track_Company__c == ''){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写物流公司')); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | return null; |
| | | } |
| | | if(lac.Return_Trake_Staff__c == null || lac.Return_Trake_Staff__c == '' ){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写发货人')); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | temp.Loaner_Express__c = le.id; |
| | | temp.delivery_company__c = lac.Return_Track_Company__c; |
| | | temp.Tracking_Number__c = lac.Return_Track_Number__c; |
| | | temp.RAESD_Status__c = '已出库'; |
| | | //发货方明细回寄物流信息 |
| | | lad.Return_Trake_Staff__c = lac.Return_Trake_Staff__c; |
| | | lad.Return_Track_Number__c = lac.Return_Track_Number__c; |
| | | lad.Return_Track_Company__c = lac.Return_Track_Company__c; |
| | | lad.Return_Express__c = rle.id; |
| | | if(temp.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | Asset loa = new Asset(id = lad.LOANER__c); |
| | | loa.Loaner__c = temp.loaner_application__r.Owner.Name; |
| | | loa.Rental_Customer__c = temp.loaner_application__r.Agent__c; |
| | | loa.Rental_Start_Date__c = temp.loaner_application__r.Rental_Start_Date__c; |
| | | loa.Rental_end_Date__c = temp.loaner_application__r.Rental_end_Date__c; |
| | | assList.add(loa); |
| | | } |
| | | } |
| | | if(laSet.size()>1){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '您选择的样机不只属于一个转借单')); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | return null; |
| | | } |
| | | updList.add(temp); |
| | | updList.add(lad); |
| | | laSet.add(temp.loaner_application__c); |
| | | count++; |
| | | }else{ |
| | | |
| | | lad.Return_Trake_Staff__c = lac.Return_Trake_Staff__c; |
| | | temp.Receipt_Status__c = 'OK'; |
| | | temp.Receipt_Date__c = Date.today(); |
| | | temp.RAESD_Status__c = '申请者已收货'; |
| | | |
| | | if(temp.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | Asset loa = new Asset(id = lad.LOANER__c); |
| | | loa.Rental_Customer__c = temp.loaner_application__r.Agent__c; |
| | | loa.Rental_Start_Date__c = temp.loaner_application__r.Rental_Start_Date__c; |
| | | loa.Rental_end_Date__c = temp.loaner_application__r.Rental_end_Date__c; |
| | | assList.add(loa); |
| | | } |
| | | } |
| | | if(laSet.size()>1){ |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '您选择的样机不只属于一个转借单')); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | return null; |
| | | } |
| | | pickupFalg = true; |
| | | updList.add(temp); |
| | | updList.add(lad); |
| | | laSet.add(temp.loaner_application__c); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | if(!pickupFalg){ |
| | | User temp = [select id,Name from User where id = :UserInfo.getUserId()]; |
| | | rle.Return_Sender__c = lac.Return_Trake_Staff__c; |
| | | rle.Asset_Return_Date__c = Date.today(); |
| | | rle.Return_LogisticsCompany__c = lac.Return_Track_Company__c; |
| | | rle.Return_LogisticsNumber__c = lac.Return_Track_Number__c; |
| | | rle.LendOrder__c = le.id; |
| | | rle.IsLendOrder__c = true; |
| | | rle.loaner_application__c = dataLines[0].lad.loaner_application__c; |
| | | |
| | | le.Consignor_LogisticsNumber__c = lac.Return_Track_Number__c; |
| | | le.Consignor_LogisticsCompany__c =lac.Return_Track_Company__c; |
| | | le.consignor__c = temp.id; |
| | | le.Shipment_Request_Date__c = Date.today(); |
| | | le.NotReceivingNum__c = count; |
| | | le.IsLendOrder__c = true; |
| | | le.loaner_application__c = lad1s[0].loaner_application__c; |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (updList.size() > 0) { |
| | | update updList; |
| | | if(la.Status__c != '完毕'){ |
| | | la.Status__c = LoanerOrderState.getOrderStater(la.Id); |
| | | if(la.Status__c == '全部回寄') la.Asset_Return_Date_All__c = Date.today(); |
| | | if(la.Status__c == '全部回收'){ |
| | | la.Asset_Return_Date_All__c = Date.today(); |
| | | la.LoanerClosedDateAll__c = Date.today(); |
| | | |
| | | if (la.Equipment_Type__c == 'NDT' || la.Equipment_Type__c == 'ANI') { |
| | | PrototypeToThaw.UserUnfreeze(la.Id); |
| | | } |
| | | |
| | | } |
| | | la.Asset_Return_Date_All__c = Date.today(); |
| | | update la; |
| | | } |
| | | |
| | | List<loaner_application__c> templa = new List<loaner_application__c>(); |
| | | |
| | | for(String loanerId : laSet){ |
| | | loaner_application__c newla = new loaner_application__c(); |
| | | newla.id = loanerId; |
| | | newla.Status__c = LoanerOrderState.getOrderStater(loanerId); |
| | | if(newla.Status__c == '部分发货') newla.Shipping_Finished_Date__c = Date.today(); |
| | | if(newla.Status__c == ' 全部发货' || newla.Status__c == '申请者已收货'){ |
| | | newla.Shipping_Finished_Date__c = Date.today(); |
| | | newla.Shipping_Finished_Date_All__c = Date.today(); |
| | | } |
| | | templa.add(newla); |
| | | } |
| | | update templa; |
| | | if(!pickupFalg){ |
| | | update le; |
| | | update rle; |
| | | } |
| | | if(assList.size()>0){ |
| | | update assList; |
| | | } |
| | | |
| | | }else{ |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择出库的样机')); |
| | | return null; |
| | | } |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | if(le != null ){ |
| | | delete le; |
| | | le = null; |
| | | } |
| | | if(rle != null){ |
| | | delete rle; |
| | | rle = null; |
| | | } |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | return null; |
| | | } |
| | | } |
| | | //return null; |
| | | // 返回样机借出申请画面 |
| | | |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public Loaner_Express__c createExpress(String str){ |
| | | Date temp = Date.today(); |
| | | Loaner_Express__c le = new Loaner_Express__c(); |
| | | le.loaner_application__c = laId; |
| | | le.Name = temp.day()+ '日'+str+'物流单'; |
| | | if(str.equals('回寄')) le.IsDeliveryLogistics__c = false; |
| | | try{ |
| | | insert le; |
| | | }catch(Exception ex){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | } |
| | | |
| | | return le; |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public class DataLineBean { |
| | | //转借单号 |
| | | public String num{get;set;} |
| | | //转借代理商 |
| | | public String ltc{get;set;} |
| | | // public String PDFflag {get; set;} |
| | | public boolean PDFflag{get; set;} |
| | | // 是否选择 |
| | | public boolean checkFlag { get; set; } |
| | | // 行号 |
| | | public Integer lineNo { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | //public DataLineBean(Integer in_no, loaner_application_detail__c in_lad,String in_PDFflag) { |
| | | public DataLineBean(Integer in_no, loaner_application_detail__c in_lad,boolean in_PDFflag,String in_ltc,String in_num) { |
| | | PDFflag = in_PDFflag; |
| | | checkFlag = false; |
| | | lineNo = in_no; |
| | | lad = in_lad; |
| | | ltc = in_ltc; |
| | | num = in_num; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public PageReference sos() { |
| | | Integer i=1; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | i++; |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerLendDeliverControllerTest { |
| | | |
| | | |
| | | @isTest static void test_method_one() { |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'ANI']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer ANI']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '培训'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = 'Test'; |
| | | loaner.Return_Trake_Staff__c = 'Test1'; |
| | | loaner.pickup_time__c = Date.today(); |
| | | loaner.Equipment_Type__c = 'ANI'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | loaner_application_detail__c detail1 = new loaner_application_detail__c(); |
| | | detail1 = new loaner_application_detail__c(); |
| | | detail1.loaner_application__c = loaner.Id; |
| | | detail1.loaner__c = In_asset[2].id; |
| | | detail1.name = '222'; |
| | | detail1.RAESD_Status__c = '已批准'; |
| | | detail1.LendPrimary_Name__c = detail.Id; |
| | | insert detail1; |
| | | PageReference page = new PageReference('/apex/LoanerLendDeliver?step=LoanerLend&id=' + loaner.Id ); |
| | | System.Test.setCurrentPage(page); |
| | | LoanerLendDeliverController controller = new LoanerLendDeliverController(); |
| | | |
| | | controller.init(); |
| | | controller.dataLines[0].checkFlag = true; |
| | | controller.dataLines[0].PDFflag = true; |
| | | controller.saveBtn(); |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'ANI']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer ANI']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '培训'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.Return_Track_Company__c = 'Test'; |
| | | loaner.Return_Trake_Staff__c = 'Test1'; |
| | | //loaner.pickup_time__c = Date.today(); |
| | | loaner.Equipment_Type__c = 'ANI'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | detail.Shipment_Request_Date__c = Date.today(); |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_Status__c = '申请者已收货'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | loaner_application_detail__c detail1 = new loaner_application_detail__c(); |
| | | detail1 = new loaner_application_detail__c(); |
| | | detail1.loaner_application__c = loaner.Id; |
| | | detail1.loaner__c = In_asset[2].id; |
| | | detail1.name = '222'; |
| | | detail1.RAESD_Status__c = '已批准'; |
| | | detail1.LendPrimary_Name__c = detail.Id; |
| | | insert detail1; |
| | | PageReference page = new PageReference('/apex/LoanerLendDeliver?step=LoanerLend&id=' + loaner.Id ); |
| | | System.Test.setCurrentPage(page); |
| | | LoanerLendDeliverController controller = new LoanerLendDeliverController(); |
| | | |
| | | controller.init(); |
| | | controller.dataLines[0].checkFlag = true; |
| | | controller.dataLines[0].PDFflag = true; |
| | | controller.saveBtn(); |
| | | controller.sos(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerOrderState { |
| | | |
| | | public static String getOrderStater(String laId){ |
| | | |
| | | Integer ngNum = [select count() from loaner_application_detail__c where loaner_application__c = :laId and Receipt_Status__c = 'NG' and Asset_Return_Date__c != null ]; |
| | | loaner_application__c la = [select id,Count_ApplicantReceived__c,Count_Received__c,Count_NG_SendBack__c,Detail_count__c,Count_NG__c from loaner_application__c where id = :laId]; |
| | | if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已批准'] > 0){ |
| | | return '已批准'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已出库指示'] > 0){ |
| | | return '已出库指示'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已下架'] > 0){ |
| | | return '已下架'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测'] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Shipment_Request_Date__c != null] == 0){ |
| | | return '出库前已检测'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测'] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Shipment_Request_Date__c != null] > 0){ |
| | | return '部分发货'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已出库'] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){ |
| | | return '全部发货'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '申请者已收货'] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){ |
| | | return '申请者已收货'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '申请者已装机确认'] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){ |
| | | return '申请者已装机确认'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c in ('申请者已装机确认','申请者收货NG','已出库','申请者已收货')] > 0 |
| | | && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] > 0){ |
| | | return '部分回寄'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已回寄'] > 0){ |
| | | return '全部回寄'; |
| | | }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '欠品中'] > 0){ |
| | | return '欠品确认中'; |
| | | }else{ |
| | | system.debug(la); |
| | | system.debug(ngNum); |
| | | if(la.Detail_count__c == la.Count_NG__c){ |
| | | if(la.Count_Received__c == la.Detail_count__c){ |
| | | |
| | | }else if(la.Count_NG_SendBack__c == la.Detail_count__c){ |
| | | return '全部回寄'; |
| | | }else if(la.Count_ApplicantReceived__c == la.Detail_count__c && la.Count_NG_SendBack__c > 0){ |
| | | return '部分回寄'; |
| | | }else { |
| | | return '申请者已收货'; |
| | | } |
| | | } |
| | | return '全部回收'; |
| | | } |
| | | } |
| | | |
| | | public static Map<String ,String> getOrderStater1(List<String> laIdList){ |
| | | Map<String,List<loaner_application_detail__c>> laDatailMap = new Map<String,List<loaner_application_detail__c>>(); |
| | | Map<String,String> laStatuMap = new Map<String,String>(); |
| | | |
| | | List<loaner_application_detail__c> allLadList = [select id,loaner_application__c,RAESD_Status__c,Shipment_Request_Date__c,Asset_Return_Date__c,Receipt_Status__c from loaner_application_detail__c where loaner_application__c = :laIdList]; |
| | | |
| | | for(String laId : laIdList){ |
| | | List<loaner_application_detail__c> ladList = new List<loaner_application_detail__c>(); |
| | | for(loaner_application_detail__c lad : allLadList){ |
| | | if(lad.loaner_application__c == laId){ |
| | | ladList.add(lad); |
| | | } |
| | | } |
| | | laDatailMap.put(laId, ladList); |
| | | } |
| | | |
| | | for(String laId : laIdList){ |
| | | List<loaner_application_detail__c> ladList = laDatailMap.get(laId); |
| | | Integer returnNgNum = 0; //收货ng且回寄 |
| | | Integer requestDateNum = 0; //出库日期 |
| | | Integer returnDateNum = 0; //回寄日期 |
| | | |
| | | Integer indicateNum = 0; //出库指示 |
| | | Integer stockDownNum = 0; //下架 |
| | | Integer inspectionNum = 0; //下架检查 |
| | | Integer shipmentNum = 0; //出库 |
| | | Integer receiptNum = 0; //收货 |
| | | Integer receiptNgNum =0; //收货Ng |
| | | Integer confirmNum = 0; //装机确认 |
| | | Integer returnNum = 0; //回寄 |
| | | Integer lostNum = 0; //欠品 |
| | | |
| | | for(loaner_application_detail__c lad : ladList){ |
| | | if(lad.RAESD_Status__c == '已出库指示'){ |
| | | indicateNum++; |
| | | }else if(lad.RAESD_Status__c == '已下架'){ |
| | | stockDownNum++; |
| | | }else if(lad.RAESD_Status__c == '出库前已检测'){ |
| | | inspectionNum++; |
| | | }else if(lad.RAESD_Status__c == '已出库'){ |
| | | shipmentNum++; |
| | | }else if(lad.RAESD_Status__c == '申请者已收货'){ |
| | | receiptNum++; |
| | | }else if(lad.RAESD_Status__c == '申请者收货NG'){ |
| | | receiptNgNum++; |
| | | }else if(lad.RAESD_Status__c == '申请者已装机确认'){ |
| | | confirmNum++; |
| | | }else if(lad.RAESD_Status__c == '已回寄'){ |
| | | returnNum++; |
| | | }else if(lad.RAESD_Status__c == '欠品中'){ |
| | | lostNum++; |
| | | } |
| | | |
| | | if(lad.Shipment_Request_Date__c != null ){ |
| | | requestDateNum++; |
| | | } |
| | | |
| | | if(lad.Asset_Return_Date__c != null ){ |
| | | returnDateNum++; |
| | | if(lad.Receipt_Status__c == 'NG'){ |
| | | returnNgNum++; |
| | | } |
| | | } |
| | | } |
| | | if(indicateNum> 0){ |
| | | laStatuMap.put(laId,'已出库指示'); |
| | | }else if(stockDownNum > 0){ |
| | | laStatuMap.put(laId, '已下架'); |
| | | }else if(inspectionNum > 0 && requestDateNum == 0){ |
| | | laStatuMap.put(laId, '出库前已检测') ; |
| | | }else if(inspectionNum > 0 && requestDateNum > 0){ |
| | | laStatuMap.put(laId, '部分发货'); |
| | | }else if(shipmentNum > 0 && returnDateNum == returnNgNum){ |
| | | laStatuMap.put(laId, '全部发货'); |
| | | }else if(receiptNum > 0 && returnDateNum == returnNgNum){ |
| | | laStatuMap.put(laId, '申请者已收货'); |
| | | }else if(confirmNum > 0 && returnDateNum == returnNgNum){ |
| | | laStatuMap.put(laId, '申请者已装机确认'); |
| | | }else if((confirmNum+receiptNgNum+shipmentNum+receiptNum) > 0 && returnDateNum > 0){ |
| | | laStatuMap.put(laId, '部分回寄'); |
| | | }else if(returnNum > 0){ |
| | | laStatuMap.put(laId, '全部回寄'); |
| | | }else if(lostNum > 0){ |
| | | laStatuMap.put(laId, '欠品确认中'); |
| | | }else{ |
| | | laStatuMap.put(laId, '全部回收'); |
| | | } |
| | | |
| | | } |
| | | system.debug(laStatuMap); |
| | | return laStatuMap; |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerOrderStateTest { |
| | | static void setupTestData() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | } |
| | | @isTest static void test_method_one() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已批准'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | detail.Inspection_result_after__c = 'OK'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已出库指示'; |
| | | In_detail[1].RAESD_STATUS__C = '已出库指示'; |
| | | In_detail[2].RAESD_STATUS__C = '已出库指示'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已下架'; |
| | | In_detail[1].RAESD_STATUS__C = '已下架'; |
| | | In_detail[2].RAESD_STATUS__C = '已下架'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '出库前已检测'; |
| | | In_detail[1].RAESD_STATUS__C = '出库前已检测'; |
| | | In_detail[2].RAESD_STATUS__C = '出库前已检测'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已出库'; |
| | | In_detail[1].RAESD_STATUS__C = '已出库'; |
| | | In_detail[2].RAESD_STATUS__C = '已出库'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '申请者已收货'; |
| | | In_detail[1].RAESD_STATUS__C = '申请者已收货'; |
| | | In_detail[2].RAESD_STATUS__C = '申请者已收货'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | system.debug('213123'+loaner.Status__c); |
| | | Test.startTest(); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '申请者已装机确认'; |
| | | In_detail[1].RAESD_STATUS__C = '申请者已装机确认'; |
| | | In_detail[2].RAESD_STATUS__C = '申请者已装机确认'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已回寄'; |
| | | In_detail[1].RAESD_STATUS__C = '已回寄'; |
| | | In_detail[2].RAESD_STATUS__C = '已回寄'; |
| | | update In_detail; |
| | | loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '欠品中'; |
| | | In_detail[1].RAESD_STATUS__C = '欠品中'; |
| | | In_detail[2].RAESD_STATUS__C = '欠品中'; |
| | | update In_detail; |
| | | Test.stopTest(); |
| | | //loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | //In_detail[0].RAESD_STATUS__C = '已回收'; |
| | | // In_detail[1].RAESD_STATUS__C = '已回收'; |
| | | // In_detail[2].RAESD_STATUS__C = '已回收'; |
| | | // update In_detail; |
| | | //loaner.Status__c = LoanerOrderState.getOrderStater(loaner.Id); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | setupTestData(); |
| | | // Implement test code |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已批准'; |
| | | loaner.Return_Track_Company__c = '物流公司'; |
| | | //loaner.Return_Trake_Staff__c = '返品人'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器2'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | asset = new Asset(); |
| | | asset.Name = 'テスト機器3'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[1].id; |
| | | detail.name = '111'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | In_detail.add(detail); |
| | | |
| | | detail = new loaner_application_detail__c(); |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[2].id; |
| | | detail.name = '222'; |
| | | detail.RAESD_STATUS__C = '已批准'; |
| | | detail.Inspection_result_after__c = 'OK'; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | List<String> loanerId = new List<String>(); |
| | | loanerId.add(loaner.Id); |
| | | Map<String,String> statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已出库指示'; |
| | | In_detail[1].RAESD_STATUS__C = '已出库指示'; |
| | | In_detail[2].RAESD_STATUS__C = '已出库指示'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已下架'; |
| | | In_detail[1].RAESD_STATUS__C = '已下架'; |
| | | In_detail[2].RAESD_STATUS__C = '已下架'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '出库前已检测'; |
| | | In_detail[1].RAESD_STATUS__C = '出库前已检测'; |
| | | In_detail[2].RAESD_STATUS__C = '出库前已检测'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已出库'; |
| | | In_detail[1].RAESD_STATUS__C = '已出库'; |
| | | In_detail[2].RAESD_STATUS__C = '已出库'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '申请者已收货'; |
| | | In_detail[1].RAESD_STATUS__C = '申请者已收货'; |
| | | In_detail[2].RAESD_STATUS__C = '已回寄'; |
| | | In_detail[2].Asset_Return_Date__c = Date.today(); |
| | | In_detail[2].Receipt_Status__c = 'NG'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '申请者已装机确认'; |
| | | In_detail[1].RAESD_STATUS__C = '申请者已装机确认'; |
| | | In_detail[2].RAESD_STATUS__C = '申请者已装机确认'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug('===='+loaner.Status__c); |
| | | |
| | | In_detail[0].RAESD_STATUS__C = '已回寄'; |
| | | In_detail[1].RAESD_STATUS__C = '已回寄'; |
| | | In_detail[2].RAESD_STATUS__C = '已回寄'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | In_detail[0].RAESD_STATUS__C = '欠品中'; |
| | | In_detail[1].RAESD_STATUS__C = '欠品中'; |
| | | In_detail[2].RAESD_STATUS__C = '欠品中'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | In_detail[0].RAESD_STATUS__C = '已回收'; |
| | | In_detail[1].RAESD_STATUS__C = '已回收'; |
| | | In_detail[2].RAESD_STATUS__C = '已回收'; |
| | | update In_detail; |
| | | statu =LoanerOrderState.getOrderStater1(loanerId); |
| | | loaner.Status__c =statu.get(loaner.Id); |
| | | system.debug(loaner.Status__c); |
| | | } |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | public without sharing class LoanerPortionDeliverController { |
| | | // 基础Url |
| | | public String baseUrl { get; private set; } |
| | | // 样机借出申请ID |
| | | public String laId { get; private set; } |
| | | public loaner_application__c lac {get;private set;} |
| | | public loaner_application__c la { get; private set; } |
| | | /* 画面步骤 |
| | | * 下架:StockDown |
| | | * |
| | | */ |
| | | public String step { get; private set; } |
| | | // 明细Bean |
| | | public List<DataLineBean> dataLines { get; set; } |
| | | // 明细行数 |
| | | public Integer getDatalineSize() { |
| | | return dataLines == null ? 0 : dataLines.size(); |
| | | } |
| | | |
| | | public LoanerPortionDeliverController() { |
| | | laId = System.currentPageReference().getParameters().get('id'); |
| | | step = System.currentPageReference().getParameters().get('step'); |
| | | } |
| | | |
| | | public PageReference init() { |
| | | // 基础Url |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | String path = URL.getCurrentRequestUrl().getPath(); |
| | | if (path.indexOf('/apex') > 0) { |
| | | baseUrl += path.substring(0,path.indexOf('/apex')); |
| | | } else if (path.indexOf('production/') > 0) { |
| | | baseUrl += '/production'; |
| | | } |
| | | // 明细Bean |
| | | dataLines = new List<DataLineBean>(); |
| | | |
| | | if (String.isBlank(laId) == true) { |
| | | return null; |
| | | } |
| | | if (String.isBlank(step) == true) { |
| | | return null; |
| | | } |
| | | |
| | | // 样机借出申请取得 |
| | | List<loaner_application__c> laList = [select Id,pickup_time__c,delivery_company__c,Return_to_wh_staff__c,Tracking_Number__c,Status__c,Agent__r.Name,Agent__c,Rental_Start_Date__c,Rental_End_Date__c,Equipment_Type__c,Owner.Name from loaner_application__c where Id = :laId]; |
| | | if (laList.size() == 0) { |
| | | return null; |
| | | } |
| | | la = laList[0]; |
| | | System.debug(la.Owner.Name); |
| | | lac = new loaner_application__c(); |
| | | lac.delivery_company__c = la.delivery_company__c; |
| | | lac.Tracking_Number__c = la.Tracking_Number__c; |
| | | if(la.Return_to_wh_staff__c != null){ |
| | | lac.Return_to_wh_staff__c = la.Return_to_wh_staff__c; |
| | | }else{ |
| | | lac.Return_to_wh_staff__c = UserInfo.getUserId(); |
| | | } |
| | | |
| | | |
| | | // 样机借出申请明细取得 |
| | | String sql_select = 'select Id, SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c,LOANER__c,LOANER__r.RecordType.Id,LOANER__r.Name,LOANER__r.Remarks2__c '; |
| | | String sql_where = ' where loaner_application__c = :laId '; |
| | | if (step == 'LPortionDeliver') { |
| | | sql_where += ' and RAESD_Status__c = \'出库前已检测\''; |
| | | } else { |
| | | return null; |
| | | } |
| | | String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; |
| | | |
| | | List<loaner_application_detail__c> lads = Database.query(sql_full); |
| | | if (lads.size() == 0) { |
| | | return null; |
| | | } |
| | | |
| | | // 明细Bean作成 |
| | | Integer cnt = 0; |
| | | for (loaner_application_detail__c lad : lads) { |
| | | cnt += 1; |
| | | DataLineBean dataLine = new DataLineBean(cnt, lad); |
| | | dataLines.add(dataLine); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public PageReference saveBtn() { |
| | | // 根据step更新样机借出申请明细状态 |
| | | List<loaner_application_detail__c> updList = new List<loaner_application_detail__c>(); |
| | | List<Asset> assList = new List<Asset>(); |
| | | |
| | | if(dataLines.size() >0){ |
| | | Loaner_Express__c le = this.createExpress(); |
| | | Integer count = 0; |
| | | for (DataLineBean dataLine : dataLines) { |
| | | if (dataLine.checkFlag == true) { |
| | | loaner_application_detail__c lad = dataLine.lad; |
| | | Asset loa = new Asset(id = lad.LOANER__c); |
| | | if(la.pickup_time__c == null){ |
| | | if(lac.delivery_company__c == null || lac.delivery_company__c == ''){ |
| | | delete le; |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写物流公司')); |
| | | return null; |
| | | } |
| | | if(lac.Return_to_wh_staff__c == null ){ |
| | | delete le; |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写发货人')); |
| | | return null; |
| | | } |
| | | lad.Shipment_Request_Date__c = Date.today(); |
| | | lad.outTime__c = Datetime.now(); |
| | | lad.RAESD_Status__c = '已出库'; |
| | | //如果是个体管理,则改变样机状态 |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '出借'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | loa.Loaner__c = la.Owner.Name; |
| | | loa.Rental_Customer__c = la.Agent__c; |
| | | loa.Rental_Start_Date__c = la.Rental_Start_Date__c; |
| | | loa.Rental_end_Date__c = la.Rental_end_Date__c; |
| | | } |
| | | } |
| | | lad.Loaner_Express__c = le.id; |
| | | lad.Return_to_wh_staff__c = lac.Return_to_wh_staff__c; |
| | | lad.delivery_company__c = lac.delivery_company__c; |
| | | lad.Tracking_Number__c = lac.Tracking_Number__c; |
| | | updList.add(lad); |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | assList.add(loa); |
| | | } |
| | | count++; |
| | | }else{ |
| | | lad.Shipment_Request_Date__c = Date.today(); |
| | | lad.outTime__c = Datetime.now(); |
| | | lad.Receipt_Date__c = Date.today(); |
| | | lad.Receipt_Status__c = 'OK'; |
| | | lad.RAESD_Status__c = '申请者已收货'; |
| | | //如果是个体管理,则改变样机状态 |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | loa.status = '出借'; |
| | | if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ |
| | | loa.Loaner__c = la.Owner.Name; |
| | | loa.Rental_Customer__c = la.Agent__c; |
| | | loa.Rental_Start_Date__c = la.Rental_Start_Date__c; |
| | | loa.Rental_end_Date__c = la.Rental_end_Date__c; |
| | | } |
| | | } |
| | | updList.add(lad); |
| | | if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ |
| | | assList.add(loa); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(la.pickup_time__c == null){ |
| | | le.Consignor_LogisticsNumber__c = lac.Tracking_Number__c; |
| | | le.Consignor_LogisticsCompany__c = lac.delivery_company__c; |
| | | le.consignor__c =lac.Return_to_wh_staff__c; |
| | | le.Shipment_Request_Date__c = Date.today(); |
| | | le.NotReceivingNum__c = count; |
| | | }else{ |
| | | delete le; |
| | | } |
| | | |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (updList.size() > 0) { |
| | | if(la.pickup_time__c == null){ |
| | | update le; |
| | | } |
| | | update updList; |
| | | update assList; |
| | | if(la.Status__c != '完毕'){ |
| | | la.Status__c = LoanerOrderState.getOrderStater(la.Id); |
| | | if(la.Status__c == '全部发货') la.Shipping_Finished_Date_All__c = Date.today(); |
| | | la.Shipping_Finished_Date__c = Date.today(); |
| | | update la; |
| | | } |
| | | }else{ |
| | | delete le; |
| | | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择出库的样机')); |
| | | return null; |
| | | } |
| | | } catch (Exception ex) { |
| | | Database.rollback(sp); |
| | | delete le; |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | return null; |
| | | } |
| | | } |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public Loaner_Express__c createExpress(){ |
| | | Date temp = Date.today(); |
| | | Loaner_Express__c le = new Loaner_Express__c(); |
| | | le.loaner_application__c = laId; |
| | | le.Name = temp.day()+ '日发货物流单'; |
| | | try{ |
| | | insert le; |
| | | }catch(Exception ex){ |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); |
| | | } |
| | | |
| | | return le; |
| | | } |
| | | |
| | | public PageReference cancelBtn() { |
| | | // 返回样机借出申请画面 |
| | | String url = baseUrl; |
| | | url += '\\' + laId; |
| | | return new Pagereference(url); |
| | | } |
| | | |
| | | public class DataLineBean { |
| | | // 是否选择 |
| | | public boolean checkFlag { get; set; } |
| | | // 行号 |
| | | public Integer lineNo { get; private set; } |
| | | // 样机借出申请明细 |
| | | public loaner_application_detail__c lad { get; set; } |
| | | |
| | | public DataLineBean(Integer in_no, loaner_application_detail__c in_lad) { |
| | | checkFlag = false; |
| | | lineNo = in_no; |
| | | lad = in_lad; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public PageReference sos(){ |
| | | 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++; |
| | | return null; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> |
| | | <apiVersion>36.0</apiVersion> |
| | | <status>Active</status> |
| | | </ApexClass> |
| New file |
| | |
| | | @isTest |
| | | private class LoanerPortionDeliverControllerTest { |
| | | static void setupTestData() { |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc13 = new OlympusCalendar__c(Date__c = Date.today().addDays(-1), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc14 = new OlympusCalendar__c(Date__c = Date.today().addDays(-2), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc15 = new OlympusCalendar__c(Date__c = Date.today().addDays(-3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc16 = new OlympusCalendar__c(Date__c = Date.today().addDays(-4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc17 = new OlympusCalendar__c(Date__c = Date.today().addDays(-5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12,oc13,oc14,oc15,oc16,oc17}; |
| | | } |
| | | @isTest static void test_method_one() { |
| | | setupTestData(); |
| | | List<RecordType> rectLo = [select Id from RecordType where IsActive = true and SobjectType = 'loaner_application__c' and Name = 'IE']; |
| | | |
| | | List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; |
| | | |
| | | //用户 |
| | | User user = new User(); |
| | | user.LastName = 'test'; |
| | | user.FirstName = 'test'; |
| | | user.Alias = 'test'; |
| | | user.Email = 'test@test.com'; |
| | | user.Username = 'test111@test222.com'; |
| | | user.CommunityNickname = 'test'; |
| | | user.IsActive = true; |
| | | user.EmailEncodingKey = 'ISO-2022-JP'; |
| | | user.TimeZoneSidKey = 'Asia/Tokyo'; |
| | | user.LocaleSidKey = 'ja_JP'; |
| | | user.LanguageLocaleKey = 'ja'; |
| | | user.ProfileId = System.Label.SystemAdmin; |
| | | insert user; |
| | | |
| | | // 新建备品借出申请 |
| | | loaner_application__c loaner = new loaner_application__c(); |
| | | loaner.Name = 'TEST'; |
| | | loaner.RecordTypeId = rectLo[0].id; |
| | | loaner.EC_CODE_1__C = 'DV2-CAMELEONS-CUBE'; |
| | | loaner.DEMO_PURPOSE__C = '演示'; |
| | | loaner.Request_shipping_Date__c = Date.today(); |
| | | loaner.Request_return_Date__c = Date.today(); |
| | | loaner.Status__c = '已出库指示'; |
| | | loaner.delivery_company__c = '物流公司'; |
| | | loaner.Tracking_Number__c = '1234567'; |
| | | insert loaner; |
| | | |
| | | // 新建 客户 |
| | | Account acc = new Account(); |
| | | acc.RecordTypeId = rectCo[0].Id; |
| | | acc.Name = '客户テスト1'; |
| | | acc.DivisionName__c = 'DivisionName__c'; |
| | | acc.FacilityName__c = 'FacilityName__c'; |
| | | acc.PostCode__c='000000'; |
| | | insert acc; |
| | | |
| | | // 新建 资产 |
| | | List<Asset> In_asset = new List<Asset>(); |
| | | Asset asset = new Asset(); |
| | | asset.Name = 'テスト機器1'; |
| | | asset.AccountId = acc.Id; |
| | | asset.SerialNumber = 'testserial'; |
| | | |
| | | In_asset.add(asset); |
| | | |
| | | insert In_asset; |
| | | |
| | | // 新建 借出明细 |
| | | List<loaner_application_detail__c> In_detail = new List<loaner_application_detail__c>(); |
| | | loaner_application_detail__c detail = new loaner_application_detail__c(); |
| | | |
| | | detail.loaner_application__c = loaner.Id; |
| | | detail.loaner__c = In_asset[0].id; |
| | | detail.name = '000'; |
| | | detail.RAESD_STATUS__C = '出库前已检测'; |
| | | detail.Return_to_wh_staff__c = user.id; |
| | | In_detail.add(detail); |
| | | |
| | | insert In_detail; |
| | | |
| | | OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false); |
| | | OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true); |
| | | |
| | | insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12}; |
| | | |
| | | PageReference page = new PageReference('/apex/LoanerPortionDeliverController?Id=' + loaner.Id + '&step=LPortionDeliver'); |
| | | System.Test.setCurrentPage(page); |
| | | LoanerPortionDeliverController controller = new LoanerPortionDeliverController(); |
| | | |
| | | controller.init(); |
| | | controller.cancelBtn(); |
| | | controller.getDatalineSize(); |
| | | controller.dataLines[0].checkFlag = true; |
| | | controller.saveBtn(); |
| | | controller.sos(); |
| | | |
| | | |
| | | //system.assertEquals(null,ApexPages.getMessages()[0].getDetail()); |
| | | |
| | | // 物流信息 |
| | | List<Loaner_Express__c> leList = [select name, Consignor_LogisticsNumber__c, Consignor_LogisticsCompany__c, consignor__r.name, Shipment_Request_Date__c, NotReceivingNum__c from Loaner_Express__c]; |
| | | //system.assertEquals('1234567', leList[0].Consignor_LogisticsNumber__c); |
| | | //system.assertEquals('物流公司', leList[0].Consignor_LogisticsCompany__c); |
| | | //system.assertEquals('test', leList[0].consignor__r.name); |
| | | //system.assertEquals(Date.today(), leList[0].Shipment_Request_Date__c); |
| | | //system.assertEquals(1, leList[0].NotReceivingNum__c); |
| | | |
| | | List<loaner_application__c> laList = [select Return_to_wh_staff__c, Status__c, Shipping_Finished_Date_All__c, Shipping_Finished_Date__c from loaner_application__c]; |
| | | //system.assertEquals('全部发货', laList[0].Status__c); |
| | | //system.assertEquals(Date.today(), laList[0].Shipping_Finished_Date_All__c); |
| | | //system.assertEquals(Date.today(), laList[0].Shipping_Finished_Date__c); |
| | | |
| | | List<loaner_application_detail__c> updList = [select RAESD_Status__c, Shipment_Request_Date__c, Return_to_wh_staff__c, delivery_company__c, Tracking_Number__c from loaner_application_detail__c order by name]; |
| | | //system.assertEquals(Date.today(), updList[0].Shipment_Request_Date__c); |
| | | //system.assertEquals('已出库', updList[0].RAESD_Status__c); |
| | | //system.assertEquals(laList[0].Return_to_wh_staff__c, updList[0].Return_to_wh_staff__c); |
| | | //system.assertEquals('123', updList[0].Return_to_wh_staff__c); |
| | | //system.assertEquals('物流公司', updList[0].delivery_company__c); |
| | | //system.assertEquals('1234567', updList[0].Tracking_Number__c); |
| | | |
| | | List<Asset> assList = [select status from Asset order by name]; |
| | | //system.assertEquals('出借', assList[0].status); |
| | | |
| | | |
| | | } |
| | | |
| | | @isTest static void test_method_two() { |
| | | // Implement test code |
| | | } |
| | | |
| | | } |
| scr/classes/LoanerPortionDeliverControllerTest.cls-meta.xml
scr/classes/LoanerPortionReturnController.cls
scr/classes/LoanerPortionReturnController.cls-meta.xml
scr/classes/LoanerPortionReturnControllerTest.cls
scr/classes/LoanerPortionReturnControllerTest.cls-meta.xml
scr/classes/LoanerReceiveGoodsController.cls
scr/classes/LoanerReceiveGoodsController.cls-meta.xml
scr/classes/LoanerReceiveGoodsControllerTest.cls
scr/classes/LoanerReceiveGoodsControllerTest.cls-meta.xml
scr/classes/LoanerStockDownCheckController.cls
scr/classes/LoanerStockDownCheckController.cls-meta.xml
scr/classes/LoanerStockDownCheckControllerTest.cls
scr/classes/LoanerStockDownCheckControllerTest.cls-meta.xml
scr/classes/LoanerTakeBackController.cls
scr/classes/LoanerTakeBackController.cls-meta.xml
scr/classes/LoanerTakeBackControllerTest.cls
scr/classes/LoanerTakeBackControllerTest.cls-meta.xml
scr/classes/LogAutoSendBatch.cls
scr/classes/LogAutoSendBatch.cls-meta.xml
scr/classes/LogAutoSendBatchProduct.cls
scr/classes/LogAutoSendBatchProduct.cls-meta.xml
scr/classes/LogAutoSendBatchProductTest.cls
scr/classes/LogAutoSendBatchProductTest.cls-meta.xml
scr/classes/LogAutoSendBatchTest.cls
scr/classes/LogAutoSendBatchTest.cls-meta.xml
scr/classes/LogAutoSendSchedule.cls
scr/classes/LogAutoSendSchedule.cls-meta.xml
scr/classes/LogAutoSendScheduleProduct.cls
scr/classes/LogAutoSendScheduleProduct.cls-meta.xml
scr/classes/LogAutoSendScheduleProductTest.cls
scr/classes/LogAutoSendScheduleProductTest.cls-meta.xml
scr/classes/LogAutoSendScheduleTest.cls
scr/classes/LogAutoSendScheduleTest.cls-meta.xml
scr/classes/MessageBoardController.cls
scr/classes/MessageBoardController.cls-meta.xml
scr/classes/MessageBoardControllerTest.cls
scr/classes/MessageBoardControllerTest.cls-meta.xml
scr/classes/MicrobatchSelfRegController.cls
scr/classes/MicrobatchSelfRegController.cls-meta.xml
scr/classes/MicrobatchSelfRegControllerTest.cls
scr/classes/MicrobatchSelfRegControllerTest.cls-meta.xml
scr/classes/MyProfilePageController.cls
scr/classes/MyProfilePageController.cls-meta.xml
scr/classes/MyProfilePageControllerTest.cls
scr/classes/MyProfilePageControllerTest.cls-meta.xml
scr/classes/NEWCreateSWOQuoteController.cls
scr/classes/NEWCreateSWOQuoteController.cls-meta.xml
scr/classes/NEWCreateSWOQuoteControllerTest.cls
scr/classes/NEWCreateSWOQuoteControllerTest.cls-meta.xml
scr/classes/NFMHttpCalloutMock.cls
scr/classes/NFMHttpCalloutMock.cls-meta.xml
scr/classes/NFMUtil.cls
scr/classes/NFMUtil.cls-meta.xml
scr/classes/NFMUtilTest.cls
scr/classes/NFMUtilTest.cls-meta.xml
scr/classes/NetworkAccess.cls
scr/classes/NetworkAccess.cls-meta.xml
scr/classes/NetworkAccessTest.cls
scr/classes/NetworkAccessTest.cls-meta.xml
scr/classes/NewCrossHighOpportunityController.cls
scr/classes/NewCrossHighOpportunityController.cls-meta.xml
scr/classes/NewCrossRegionalControllerText.cls
scr/classes/NewCrossRegionalControllerText.cls-meta.xml
scr/classes/NewCrossRegionalSalesController.cls
scr/classes/NewCrossRegionalSalesController.cls-meta.xml
scr/classes/NewDiagnosisPartController.cls
scr/classes/NewDiagnosisPartController.cls-meta.xml
scr/classes/NewDiagnosisPartControllerTest.cls
scr/classes/NewDiagnosisPartControllerTest.cls-meta.xml
scr/classes/NewHighProductsOppController.cls
scr/classes/NewHighProductsOppController.cls-meta.xml
scr/classes/NewHighProductsOppControllerTest.cls
scr/classes/NewHighProductsOppControllerTest.cls-meta.xml
scr/classes/NewLoanerApplicationController.cls
scr/classes/NewLoanerApplicationController.cls-meta.xml
scr/classes/NewLoanerApplicationControllerTest.cls
scr/classes/NewLoanerApplicationControllerTest.cls-meta.xml
scr/classes/NewLoanerUserController.cls
scr/classes/NewLoanerUserController.cls-meta.xml
scr/classes/NewLoanerUserControllerTest.cls
scr/classes/NewLoanerUserControllerTest.cls-meta.xml
scr/classes/NewOpportunityController.cls
scr/classes/NewOpportunityController.cls-meta.xml
scr/classes/NewOpportunityControllerTest.cls
scr/classes/NewOpportunityControllerTest.cls-meta.xml
scr/classes/NewOrderController.cls
scr/classes/NewOrderController.cls-meta.xml
scr/classes/NewOrderControllerTest.cls
scr/classes/NewOrderControllerTest.cls-meta.xml
scr/classes/NewQuoteDevideController.cls
scr/classes/NewQuoteDevideController.cls-meta.xml
scr/classes/NewQuoteDevideControllerTest.cls
scr/classes/NewQuoteDevideControllerTest.cls-meta.xml
scr/classes/NewQuoteEntryController.cls
scr/classes/NewQuoteEntryController.cls-meta.xml
scr/classes/NewQuoteEntryControllerTest.cls
scr/classes/NewQuoteEntryControllerTest.cls-meta.xml
scr/classes/NewQuoteEntryWebService.cls
scr/classes/NewQuoteEntryWebService.cls-meta.xml
scr/classes/NewQuoteEntryWebServiceTest.cls
scr/classes/NewQuoteEntryWebServiceTest.cls-meta.xml
scr/classes/NewRepairPartsController.cls
scr/classes/NewRepairPartsController.cls-meta.xml
scr/classes/NewRepairPartsControllerTest.cls
scr/classes/NewRepairPartsControllerTest.cls-meta.xml
scr/classes/NewReplacementOpportunityController.cls
scr/classes/NewReplacementOpportunityController.cls-meta.xml
scr/classes/NewSearchProductController.cls
scr/classes/NewSearchProductController.cls-meta.xml
scr/classes/OlympusCoJpCommonMessage.cls
scr/classes/OlympusCoJpCommonMessage.cls-meta.xml
scr/classes/OppInternalMessageController.cls
scr/classes/OppInternalMessageController.cls-meta.xml
scr/classes/OppInternalMessageControllerTest.cls
scr/classes/OppInternalMessageControllerTest.cls-meta.xml
scr/classes/OppTestController.cls
scr/classes/OppTestController.cls-meta.xml
scr/classes/OpportunityAAdvancedController.cls
scr/classes/OpportunityAAdvancedController.cls-meta.xml
scr/classes/OpportunityAAdvancedControllerTest.cls
scr/classes/OpportunityAAdvancedControllerTest.cls-meta.xml
scr/classes/OpportunityLineItemTriggerHandler.cls
scr/classes/OpportunityLineItemTriggerHandler.cls-meta.xml
scr/classes/OpportunityMessageController.cls
scr/classes/OpportunityMessageController.cls-meta.xml
scr/classes/OpportunityMessageControllerTest.cls
scr/classes/OpportunityMessageControllerTest.cls-meta.xml
scr/classes/OpportunityProductController.cls
scr/classes/OpportunityProductController.cls-meta.xml
scr/classes/OpportunityProductControllerTest.cls
scr/classes/OpportunityProductControllerTest.cls-meta.xml
scr/classes/OpportunityStageProgressBarUpdate.cls
scr/classes/OpportunityStageProgressBarUpdate.cls-meta.xml
scr/classes/OpportunityStockAnswer.cls
scr/classes/OpportunityStockAnswer.cls-meta.xml
scr/classes/OpportunityTriggerHandler.cls
scr/classes/OpportunityTriggerHandler.cls-meta.xml
scr/classes/OpportunityTriggerTest.cls
scr/classes/OpportunityTriggerTest.cls-meta.xml
scr/classes/OpportunityUpdateSendEmailBatch.cls
scr/classes/OpportunityUpdateSendEmailBatch.cls-meta.xml
scr/classes/OpportunityUpdateSendEmailBatchTest.cls
scr/classes/OpportunityUpdateSendEmailBatchTest.cls-meta.xml
scr/classes/OpportunityUpdateSendEmailSTest.cls
scr/classes/OpportunityUpdateSendEmailSTest.cls-meta.xml
scr/classes/OpportunityUpdateSendEmailSchedulable.cls
scr/classes/OpportunityUpdateSendEmailSchedulable.cls-meta.xml
scr/classes/OpportunityVisitNotesController.cls
scr/classes/OpportunityVisitNotesController.cls-meta.xml
scr/classes/OpportunityVisitNotesControllerTest.cls
scr/classes/OpportunityVisitNotesControllerTest.cls-meta.xml
scr/classes/OpportunityWebService.cls
scr/classes/OpportunityWebService.cls-meta.xml
scr/classes/OpportunityWebServiceTest.cls
scr/classes/OpportunityWebServiceTest.cls-meta.xml
scr/classes/OrderDivisionController.cls
scr/classes/OrderDivisionController.cls-meta.xml
scr/classes/OrderDivisionControllerTest.cls
scr/classes/OrderDivisionControllerTest.cls-meta.xml
scr/classes/OrderInternalMessageController.cls
scr/classes/OrderInternalMessageController.cls-meta.xml
scr/classes/OrderItemTriggerHandler.cls
scr/classes/OrderItemTriggerHandler.cls-meta.xml
scr/classes/OrderMessageController.cls
scr/classes/OrderMessageController.cls-meta.xml
scr/classes/OrderMessageControllerTest.cls
scr/classes/OrderMessageControllerTest.cls-meta.xml
scr/classes/OrderPdf2Controller.cls
scr/classes/OrderPdf2Controller.cls-meta.xml
scr/classes/OrderPdf2ControllerTest.cls
scr/classes/OrderPdf2ControllerTest.cls-meta.xml
scr/classes/OrderPdfController.cls
scr/classes/OrderPdfController.cls-meta.xml
scr/classes/OrderPdfControllerTest.cls
scr/classes/OrderPdfControllerTest.cls-meta.xml
scr/classes/OrderShippingNotificationController.cls
scr/classes/OrderShippingNotificationController.cls-meta.xml
scr/classes/OrderShippingNotificationControllerTest.cls
scr/classes/OrderShippingNotificationControllerTest.cls-meta.xml
scr/classes/OrderSplitRatioController.cls
scr/classes/OrderSplitRatioController.cls-meta.xml
scr/classes/OrderSplitRatioControllerTest.cls
scr/classes/OrderSplitRatioControllerTest.cls-meta.xml
scr/classes/OrderTriggerHandler.cls
scr/classes/OrderTriggerHandler.cls-meta.xml
scr/classes/OrderTriggerTest.cls
scr/classes/OrderTriggerTest.cls-meta.xml
scr/classes/OrderWebService.cls
scr/classes/OrderWebService.cls-meta.xml
scr/classes/OrderWebServiceTest.cls
scr/classes/OrderWebServiceTest.cls-meta.xml
scr/classes/OrdertoZhaoEmailBatch.cls
scr/classes/OrdertoZhaoEmailBatch.cls-meta.xml
scr/classes/OrdertoZhaoEmailBatchTest.cls
scr/classes/OrdertoZhaoEmailBatchTest.cls-meta.xml
scr/classes/OrdertoZhaoEmailSchedulable.cls
scr/classes/OrdertoZhaoEmailSchedulable.cls-meta.xml
scr/classes/OrdertoZhaoEmailSchedulableTest.cls
scr/classes/OrdertoZhaoEmailSchedulableTest.cls-meta.xml
scr/classes/PDFWbrController.cls
scr/classes/PDFWbrController.cls-meta.xml
scr/classes/PDFWbrControllerTest.cls
scr/classes/PDFWbrControllerTest.cls-meta.xml
scr/classes/PartnerSoapSforceCom.cls
scr/classes/PartnerSoapSforceCom.cls-meta.xml
scr/classes/PersonalProcessInstanceController.cls
scr/classes/PersonalProcessInstanceController.cls-meta.xml
scr/classes/PersonalProcessInstanceControllerTest.cls
scr/classes/PersonalProcessInstanceControllerTest.cls-meta.xml
scr/classes/ProRegisterBatch.cls
scr/classes/ProRegisterBatch.cls-meta.xml
scr/classes/ProRegisterBatchSchedulable.cls
scr/classes/ProRegisterBatchSchedulable.cls-meta.xml
scr/classes/ProRegisterBatchSchedulableTest.cls
scr/classes/ProRegisterBatchSchedulableTest.cls-meta.xml
scr/classes/ProRegisterBatchTest.cls
scr/classes/ProRegisterBatchTest.cls-meta.xml
scr/classes/ProRegisterHandler.cls
scr/classes/ProRegisterHandler.cls-meta.xml
scr/classes/ProRegisterHandlerTest.cls
scr/classes/ProRegisterHandlerTest.cls-meta.xml
scr/classes/ProRegisterLinkHandler.cls
scr/classes/ProRegisterLinkHandler.cls-meta.xml
scr/classes/ProRegisterLinkHandlerTest.cls
scr/classes/ProRegisterLinkHandlerTest.cls-meta.xml
scr/classes/Product2TriggerHandler.cls
scr/classes/Product2TriggerHandler.cls-meta.xml
scr/classes/Product2TriggerHandlerTest.cls
scr/classes/Product2TriggerHandlerTest.cls-meta.xml
scr/classes/PrototypeToThaw.cls
scr/classes/PrototypeToThaw.cls-meta.xml
scr/classes/QuoteLineItemTriggerHandler.cls
scr/classes/QuoteLineItemTriggerHandler.cls-meta.xml
scr/classes/QuotePDFController.cls
scr/classes/QuotePDFController.cls-meta.xml
scr/classes/QuotePDFControllerTest.cls
scr/classes/QuotePDFControllerTest.cls-meta.xml
scr/classes/QuoteTriggerHandler.cls
scr/classes/QuoteTriggerHandler.cls-meta.xml
scr/classes/QuoteTriggerTest.cls
scr/classes/QuoteTriggerTest.cls-meta.xml
scr/classes/QuotesPDFController.cls
scr/classes/QuotesPDFController.cls-meta.xml
scr/classes/QuotesPDFControllerTest.cls
scr/classes/QuotesPDFControllerTest.cls-meta.xml
scr/classes/QuotesesEmailComeBackListen.cls
scr/classes/QuotesesEmailComeBackListen.cls-meta.xml
scr/classes/RadiationUtil.cls
scr/classes/RadiationUtil.cls-meta.xml
scr/classes/RadiationUtilTest.cls
scr/classes/RadiationUtilTest.cls-meta.xml
scr/classes/RepairDetailsTriggerHandler.cls
scr/classes/RepairDetailsTriggerHandler.cls-meta.xml
scr/classes/RepairDetailsTriggerTest.cls
scr/classes/RepairDetailsTriggerTest.cls-meta.xml
scr/classes/RepairTriggerHandler.cls
scr/classes/RepairTriggerHandler.cls-meta.xml
scr/classes/RepairTriggerHandlerTest.cls
scr/classes/RepairTriggerHandlerTest.cls-meta.xml
scr/classes/SBG001TriggerHandler.cls
scr/classes/SBG001TriggerHandler.cls-meta.xml
scr/classes/SBG001TriggerHandlerTest.cls
scr/classes/SBG001TriggerHandlerTest.cls-meta.xml
scr/classes/SBG004Rest.cls
scr/classes/SBG004Rest.cls-meta.xml
scr/classes/SBG004RestTest.cls
scr/classes/SBG004RestTest.cls-meta.xml
scr/classes/SBG004WebService.cls
scr/classes/SBG004WebService.cls-meta.xml
scr/classes/SBG004WebServiceTest.cls
scr/classes/SBG004WebServiceTest.cls-meta.xml
scr/classes/SBG005Rest.cls
scr/classes/SBG005Rest.cls-meta.xml
scr/classes/SBG005RestTest.cls
scr/classes/SBG005RestTest.cls-meta.xml
scr/classes/SBG005WebService.cls
scr/classes/SBG005WebService.cls-meta.xml
scr/classes/SBG005WebServiceTest.cls
scr/classes/SBG005WebServiceTest.cls-meta.xml
scr/classes/SBG007TriggerHandler.cls
scr/classes/SBG007TriggerHandler.cls-meta.xml
scr/classes/SBG007TriggerHandlerTest.cls
scr/classes/SBG007TriggerHandlerTest.cls-meta.xml
scr/classes/SBG010Rest.cls
scr/classes/SBG010Rest.cls-meta.xml
scr/classes/SBG010TRestTest.cls
scr/classes/SBG010TRestTest.cls-meta.xml
scr/classes/SBG010WebService.cls
scr/classes/SBG010WebService.cls-meta.xml
scr/classes/SBG010WebServiceTest.cls
scr/classes/SBG010WebServiceTest.cls-meta.xml
scr/classes/SBG017Rest.cls
scr/classes/SBG017Rest.cls-meta.xml
scr/classes/SBG017RestTest.cls
scr/classes/SBG017RestTest.cls-meta.xml
scr/classes/SBG017WebService.cls
scr/classes/SBG017WebService.cls-meta.xml
scr/classes/SBG017WebServiceTest.cls
scr/classes/SBG017WebServiceTest.cls-meta.xml
scr/classes/SBG018Rest.cls
scr/classes/SBG018Rest.cls-meta.xml
scr/classes/SBG018RestTest.cls
scr/classes/SBG018RestTest.cls-meta.xml
scr/classes/SBG019Rest.cls
scr/classes/SBG019Rest.cls-meta.xml
scr/classes/SBG019RestTest.cls
scr/classes/SBG019RestTest.cls-meta.xml
scr/classes/SBG027Controller.cls
scr/classes/SBG027Controller.cls-meta.xml
scr/classes/SBG027TriggerHandleTest.cls
scr/classes/SBG027TriggerHandleTest.cls-meta.xml
scr/classes/SBG027TriggerHandler.cls
scr/classes/SBG027TriggerHandler.cls-meta.xml
scr/classes/SBG200Rest.cls
scr/classes/SBG200Rest.cls-meta.xml
scr/classes/SBG200RestTest.cls
scr/classes/SBG200RestTest.cls-meta.xml
scr/classes/SBG203Rest.cls
scr/classes/SBG203Rest.cls-meta.xml
scr/classes/SBG203RestTest.cls
scr/classes/SBG203RestTest.cls-meta.xml
scr/classes/SBG204Rest.cls
scr/classes/SBG204Rest.cls-meta.xml
scr/classes/SBG204RestExecute.cls
scr/classes/SBG204RestExecute.cls-meta.xml
scr/classes/SBG204RestTest.cls
scr/classes/SBG204RestTest.cls-meta.xml
scr/classes/SBGCallLogRest.cls
scr/classes/SBGCallLogRest.cls-meta.xml
scr/classes/SBGITMRest.cls
scr/classes/SBGITMRest.cls-meta.xml
scr/classes/SBGITMRestNew.cls
scr/classes/SBGITMRestNew.cls-meta.xml
scr/classes/SBGITMRestNewTest.cls
scr/classes/SBGITMRestNewTest.cls-meta.xml
scr/classes/SBGITMRestTest.cls
scr/classes/SBGITMRestTest.cls-meta.xml
scr/classes/SBGITMWebService.cls
scr/classes/SBGITMWebService.cls-meta.xml
scr/classes/SBGITMWebServiceTest.cls
scr/classes/SBGITMWebServiceTest.cls-meta.xml
scr/classes/SSOpporToSSBDallRepBatch.cls
scr/classes/SSOpporToSSBDallRepBatch.cls-meta.xml
scr/classes/SSOpportunityBatch.cls
scr/classes/SSOpportunityBatch.cls-meta.xml
scr/classes/SSOpportunitySchedule.cls
scr/classes/SSOpportunitySchedule.cls-meta.xml
scr/classes/SWOController.cls
scr/classes/SWOController.cls-meta.xml
scr/classes/SWOControllerTest.cls
scr/classes/SWOControllerTest.cls-meta.xml
scr/classes/SWOSearchProductContaroller.cls
scr/classes/SWOSearchProductContaroller.cls-meta.xml
scr/classes/SWOSearchProductContarollerTest.cls
scr/classes/SWOSearchProductContarollerTest.cls-meta.xml
scr/classes/SWOTriggerHandler.cls
scr/classes/SWOTriggerHandler.cls-meta.xml
scr/classes/SWOTriggerHandlerTest.cls
scr/classes/SWOTriggerHandlerTest.cls-meta.xml
scr/classes/SWOUtil.cls
scr/classes/SWOUtil.cls-meta.xml
scr/classes/Sbg001Sync.cls
scr/classes/Sbg001Sync.cls-meta.xml
scr/classes/Sbg007Sync.cls
scr/classes/Sbg007Sync.cls-meta.xml
scr/classes/Sbg027Sync.cls
scr/classes/Sbg027Sync.cls-meta.xml
scr/classes/SearchManagementController.cls
scr/classes/SearchManagementController.cls-meta.xml
scr/classes/SearchManagementControllerTest.cls
scr/classes/SearchManagementControllerTest.cls-meta.xml
scr/classes/SearchMemberPageController.cls
scr/classes/SearchMemberPageController.cls-meta.xml
scr/classes/SearchMemberPageControllerTest.cls
scr/classes/SearchMemberPageControllerTest.cls-meta.xml
scr/classes/SearchProductController.cls
scr/classes/SearchProductController.cls-meta.xml
scr/classes/SearchProductControllerTest.cls
scr/classes/SearchProductControllerTest.cls-meta.xml
scr/classes/SearchSetProductController.cls
scr/classes/SearchSetProductController.cls-meta.xml
scr/classes/SearchSetProductControllerTest.cls
scr/classes/SearchSetProductControllerTest.cls-meta.xml
scr/classes/SendEmailController.cls
scr/classes/SendEmailController.cls-meta.xml
scr/classes/SendEmailControllerTest.cls
scr/classes/SendEmailControllerTest.cls-meta.xml
scr/classes/ServiceSummaryHandler.cls
scr/classes/ServiceSummaryHandler.cls-meta.xml
scr/classes/SiteLoginController.cls
scr/classes/SiteLoginController.cls-meta.xml
scr/classes/SiteLoginControllerTest.cls
scr/classes/SiteLoginControllerTest.cls-meta.xml
scr/classes/SiteRegisterController.cls
scr/classes/SiteRegisterController.cls-meta.xml
scr/classes/SiteRegisterControllerTest.cls
scr/classes/SiteRegisterControllerTest.cls-meta.xml
scr/classes/SoapApi.cls
scr/classes/SoapApi.cls-meta.xml
scr/classes/SoapApiTest.cls
scr/classes/SoapApiTest.cls-meta.xml
scr/classes/SoftphoneConsoleController.cls
scr/classes/SoftphoneConsoleController.cls-meta.xml
scr/classes/StageProgressBarExtension.cls
scr/classes/StageProgressBarExtension.cls-meta.xml
scr/classes/StaticParameter.cls
scr/classes/StaticParameter.cls-meta.xml
scr/classes/StaticParameterTest.cls
scr/classes/StaticParameterTest.cls-meta.xml
scr/classes/TOTPPlugin.cls
scr/classes/TOTPPlugin.cls-meta.xml
scr/classes/TOTPPluginTest.cls
scr/classes/TOTPPluginTest.cls-meta.xml
scr/classes/TSRepairController.cls
scr/classes/TSRepairController.cls-meta.xml
scr/classes/TSRepairControllerTest.cls
scr/classes/TSRepairControllerTest.cls-meta.xml
scr/classes/TSRepairUtil.cls
scr/classes/TSRepairUtil.cls-meta.xml
scr/classes/TS_SearchAccountController.cls
scr/classes/TS_SearchAccountController.cls-meta.xml
scr/classes/TS_SearchAccountControllerTest.cls
scr/classes/TS_SearchAccountControllerTest.cls-meta.xml
scr/classes/TaskTriggerHandler.cls
scr/classes/TaskTriggerHandler.cls-meta.xml
scr/classes/TradeCustomerManagerController.cls
scr/classes/TradeCustomerManagerController.cls-meta.xml
scr/classes/TradeCustomerManagerControllerTest.cls
scr/classes/TradeCustomerManagerControllerTest.cls-meta.xml
scr/classes/TradeCustomerManagerSearchOppController.cls
scr/classes/TradeCustomerManagerSearchOppController.cls-meta.xml
scr/classes/TradeCustomerManagerSearchOppTest.cls
scr/classes/TradeCustomerManagerSearchOppTest.cls-meta.xml
scr/classes/TrialCustomerPortalHomePageController.cls
scr/classes/TrialCustomerPortalHomePageController.cls-meta.xml
scr/classes/TydelikeACController.cls
scr/classes/TydelikeACController.cls-meta.xml
scr/classes/TydelikeACControllerTest.cls
scr/classes/TydelikeACControllerTest.cls-meta.xml
scr/classes/TydelikeAccController.cls
scr/classes/TydelikeAccController.cls-meta.xml
scr/classes/TydelikeAccControllerTest.cls
scr/classes/TydelikeAccControllerTest.cls-meta.xml
scr/classes/TydelikeConController.cls
scr/classes/TydelikeConController.cls-meta.xml
scr/classes/TydelikeConControllerTest.cls
scr/classes/TydelikeConControllerTest.cls-meta.xml
scr/classes/UpdateTotalCostPriceSchedule.cls
scr/classes/UpdateTotalCostPriceSchedule.cls-meta.xml
scr/classes/UpdateTotalCostPriceSetTextBatch.cls
scr/classes/UpdateTotalCostPriceSetTextBatch.cls-meta.xml
scr/classes/UpdateTotalCostPriceSetTextBatchTest.cls
scr/classes/UpdateTotalCostPriceSetTextBatchTest.cls-meta.xml
scr/classes/UpdateTotalCostPriceSetTextInquiryBatch.cls
scr/classes/UpdateTotalCostPriceSetTextInquiryBatch.cls-meta.xml
scr/classes/UpdateTotalCostPriceSetTextInquiryTest.cls
scr/classes/UpdateTotalCostPriceSetTextInquiryTest.cls-meta.xml
scr/classes/UserFaultInfoHandler.cls
scr/classes/UserFaultInfoHandler.cls-meta.xml
scr/classes/UserFaultInfoHandlerTest.cls
scr/classes/UserFaultInfoHandlerTest.cls-meta.xml
scr/classes/UserViolationsTriggerHandler.cls
scr/classes/UserViolationsTriggerHandler.cls-meta.xml
scr/classes/UserViolationsTriggerTest.cls
scr/classes/UserViolationsTriggerTest.cls-meta.xml
scr/classes/calendarUtil.cls
scr/classes/calendarUtil.cls-meta.xml
scr/classes/calendarUtilTest.cls
scr/classes/calendarUtilTest.cls-meta.xml
scr/classes/loanerAppTriggerHandler.cls
scr/classes/loanerAppTriggerHandler.cls-meta.xml
scr/classes/loanerAppTriggerHandlerTest.cls
scr/classes/loanerAppTriggerHandlerTest.cls-meta.xml
scr/classes/loanerChangeRecordTriggerHandler.cls
scr/classes/loanerChangeRecordTriggerHandler.cls-meta.xml
scr/classes/loanerChangeRecordTriggerHandlerTest.cls
scr/classes/loanerChangeRecordTriggerHandlerTest.cls-meta.xml
scr/classes/oppbatch.cls
scr/classes/oppbatch.cls-meta.xml
scr/classes/oppbatchTest.cls
scr/classes/oppbatchTest.cls-meta.xml
scr/classes/setOrderShareBatch.cls
scr/classes/setOrderShareBatch.cls-meta.xml
scr/classes/setOrderShareBatchSchedule.cls
scr/classes/setOrderShareBatchSchedule.cls-meta.xml
scr/classes/setOrderShareBatchTest.cls
scr/classes/setOrderShareBatchTest.cls-meta.xml
scr/classes/superSort.cls
scr/classes/superSort.cls-meta.xml
scr/classes/test001Controller.cls
scr/classes/test001Controller.cls-meta.xml
scr/components/PDFWbr.component
scr/components/PDFWbr.component-meta.xml
scr/components/SiteFooter.component
scr/components/SiteFooter.component-meta.xml
scr/components/SiteHeader.component
scr/components/SiteHeader.component-meta.xml
scr/components/SiteLogin.component
scr/components/SiteLogin.component-meta.xml
scr/components/SitePoweredBy.component
scr/components/SitePoweredBy.component-meta.xml
scr/pages/AccountOpenAlert.page
scr/pages/AccountOpenAlert.page-meta.xml
scr/pages/AllAsset.page
scr/pages/AllAsset.page-meta.xml
scr/pages/AnswersHome.page
scr/pages/AnswersHome.page-meta.xml
scr/pages/ApplicationMessage.page
scr/pages/ApplicationMessage.page-meta.xml
scr/pages/ApplicationMessagePopUp.page
scr/pages/ApplicationMessagePopUp.page-meta.xml
scr/pages/AssetNumberChange.page
scr/pages/AssetNumberChange.page-meta.xml
scr/pages/BandwidthExceeded.page
scr/pages/BandwidthExceeded.page-meta.xml
scr/pages/CTITest.page
scr/pages/CTITest.page-meta.xml
scr/pages/CampaignRelationship.page
scr/pages/CampaignRelationship.page-meta.xml
scr/pages/CanNotDeleteCase.page
scr/pages/CanNotDeleteCase.page-meta.xml
scr/pages/CanNotEditOrDelete.page
scr/pages/CanNotEditOrDelete.page-meta.xml
scr/pages/ChangePassword.page
scr/pages/ChangePassword.page-meta.xml
scr/pages/ChatterAnswersAgentView.page
scr/pages/ChatterAnswersAgentView.page-meta.xml
scr/pages/ChatterAnswersChangePassword.page
scr/pages/ChatterAnswersChangePassword.page-meta.xml
scr/pages/ChatterAnswersForgotPassword.page
scr/pages/ChatterAnswersForgotPassword.page-meta.xml
scr/pages/ChatterAnswersForgotPasswordConfirm.page
scr/pages/ChatterAnswersForgotPasswordConfirm.page-meta.xml
scr/pages/ChatterAnswersHelp.page
scr/pages/ChatterAnswersHelp.page-meta.xml
scr/pages/ChatterAnswersLogin.page
scr/pages/ChatterAnswersLogin.page-meta.xml
scr/pages/ChatterAnswersRegistration.page
scr/pages/ChatterAnswersRegistration.page-meta.xml
scr/pages/CommunitiesLanding.page
scr/pages/CommunitiesLanding.page-meta.xml
scr/pages/CommunitiesLogin.page
scr/pages/CommunitiesLogin.page-meta.xml
scr/pages/CommunitiesSelfReg.page
scr/pages/CommunitiesSelfReg.page-meta.xml
scr/pages/CommunitiesSelfRegConfirm.page
scr/pages/CommunitiesSelfRegConfirm.page-meta.xml
scr/pages/CommunitiesTemplate.page
scr/pages/CommunitiesTemplate.page-meta.xml
scr/pages/ContactOpenAlert.page
scr/pages/ContactOpenAlert.page-meta.xml
scr/pages/CustContPage.page
scr/pages/CustContPage.page-meta.xml
scr/pages/DataLoadAccount.page
scr/pages/DataLoadAccount.page-meta.xml
scr/pages/DeliveryConfirmPDF.page
scr/pages/DeliveryConfirmPDF.page-meta.xml
scr/pages/EquipmentLoanerApply.page
scr/pages/EquipmentLoanerApply.page-meta.xml
scr/pages/Exception.page
scr/pages/Exception.page-meta.xml
scr/pages/FileNotFound.page
scr/pages/FileNotFound.page-meta.xml
scr/pages/ForgotPassword.page
scr/pages/ForgotPassword.page-meta.xml
scr/pages/ForgotPasswordConfirm.page
scr/pages/ForgotPasswordConfirm.page-meta.xml
scr/pages/IENewOpportunity.page
scr/pages/IENewOpportunity.page-meta.xml
scr/pages/IdeasHome.page
scr/pages/IdeasHome.page-meta.xml
scr/pages/InMaintenance.page
scr/pages/InMaintenance.page-meta.xml
scr/pages/LoanerApplicationPortionDeliver.page
scr/pages/LoanerApplicationPortionDeliver.page-meta.xml
scr/pages/LoanerApplicationStockDown.page
scr/pages/LoanerApplicationStockDown.page-meta.xml
scr/pages/LoanerApplicationStockDownCheck.page
scr/pages/LoanerApplicationStockDownCheck.page-meta.xml
scr/pages/LoanerApplicationStockUp.page
scr/pages/LoanerApplicationStockUp.page-meta.xml
scr/pages/LoanerApplicationStockUpCheck.page
scr/pages/LoanerApplicationStockUpCheck.page-meta.xml
scr/pages/LoanerLendDeliver.page
scr/pages/LoanerLendDeliver.page-meta.xml
scr/pages/LoanerPortionReturn.page
scr/pages/LoanerPortionReturn.page-meta.xml
scr/pages/LoanerReceiveGoods.page
scr/pages/LoanerReceiveGoods.page-meta.xml
scr/pages/LoanerTakeBack.page
scr/pages/LoanerTakeBack.page-meta.xml
scr/pages/MessageBoard.page
scr/pages/MessageBoard.page-meta.xml
scr/pages/MessageBoardPoPuP.page
scr/pages/MessageBoardPoPuP.page-meta.xml
scr/pages/MicrobatchSelfReg.page
scr/pages/MicrobatchSelfReg.page-meta.xml
scr/pages/MyProfilePage.page
scr/pages/MyProfilePage.page-meta.xml
scr/pages/NEWCreateSWOQuote.page
scr/pages/NEWCreateSWOQuote.page-meta.xml
scr/pages/NEWCreateSWOQuoteReadOnly.page
scr/pages/NEWCreateSWOQuoteReadOnly.page-meta.xml
scr/pages/NewCrossHighOpportunity.page
scr/pages/NewCrossHighOpportunity.page-meta.xml
scr/pages/NewCrossRegionalSalesOpportunity.page
scr/pages/NewCrossRegionalSalesOpportunity.page-meta.xml
scr/pages/NewDiagnosisPart.page
scr/pages/NewDiagnosisPart.page-meta.xml
scr/pages/NewHighProductsOpp.page
scr/pages/NewHighProductsOpp.page-meta.xml
scr/pages/NewLoanerApplication.page
scr/pages/NewLoanerApplication.page-meta.xml
scr/pages/NewLoanerUser.page
scr/pages/NewLoanerUser.page-meta.xml
scr/pages/NewOpportunity.page
scr/pages/NewOpportunity.page-meta.xml
scr/pages/NewOrder.page
scr/pages/NewOrder.page-meta.xml
scr/pages/NewQuoteDevide.page
scr/pages/NewQuoteDevide.page-meta.xml
scr/pages/NewQuoteEntry.page
scr/pages/NewQuoteEntry.page-meta.xml
scr/pages/NewQuoteService.page
scr/pages/NewQuoteService.page-meta.xml
scr/pages/NewRepairParts.page
scr/pages/NewRepairParts.page-meta.xml
scr/pages/NewRepairPartsRead.page
scr/pages/NewRepairPartsRead.page-meta.xml
scr/pages/NewReplacementOpportunity.page
scr/pages/NewReplacementOpportunity.page-meta.xml
scr/pages/NewSearchProductPage.page
scr/pages/NewSearchProductPage.page-meta.xml
scr/pages/OppInternalMessage.page
scr/pages/OppInternalMessage.page-meta.xml
scr/pages/OppInternalMessagePopup.page
scr/pages/OppInternalMessagePopup.page-meta.xml
scr/pages/OppTestPage.page
scr/pages/OppTestPage.page-meta.xml
scr/pages/OpportunityAAdvanced.page
scr/pages/OpportunityAAdvanced.page-meta.xml
scr/pages/OpportunityCSVExport.page
scr/pages/OpportunityCSVExport.page-meta.xml
scr/pages/OpportunityMessage.page
scr/pages/OpportunityMessage.page-meta.xml
scr/pages/OpportunityMessagePopUp.page
scr/pages/OpportunityMessagePopUp.page-meta.xml
scr/pages/OpportunityOpenAlert.page
scr/pages/OpportunityOpenAlert.page-meta.xml
scr/pages/OpportunityPage.page
scr/pages/OpportunityPage.page-meta.xml
scr/pages/OpportunityProduct.page
scr/pages/OpportunityProduct.page-meta.xml
scr/pages/OpportunityVisitNotes.page
scr/pages/OpportunityVisitNotes.page-meta.xml
scr/pages/OpportunityVisitNotesPopUp.page
scr/pages/OpportunityVisitNotesPopUp.page-meta.xml
scr/pages/OrderApproveAlert.page
scr/pages/OrderApproveAlert.page-meta.xml
scr/pages/OrderApproveAlert2.page
scr/pages/OrderApproveAlert2.page-meta.xml
scr/pages/OrderCSVExport.page
scr/pages/OrderCSVExport.page-meta.xml
scr/pages/OrderContract.page
scr/pages/OrderContract.page-meta.xml
scr/pages/OrderContract2.page
scr/pages/OrderContract2.page-meta.xml
scr/pages/OrderDivision.page
scr/pages/OrderDivision.page-meta.xml
scr/pages/OrderInternalMessage.page
scr/pages/OrderInternalMessage.page-meta.xml
scr/pages/OrderInternalMessagePopup.page
scr/pages/OrderInternalMessagePopup.page-meta.xml
scr/pages/OrderMessage.page
scr/pages/OrderMessage.page-meta.xml
scr/pages/OrderMessagePopUp.page
scr/pages/OrderMessagePopUp.page-meta.xml
scr/pages/OrderOpenAlert.page
scr/pages/OrderOpenAlert.page-meta.xml
scr/pages/OrderPDF.page
scr/pages/OrderPDF.page-meta.xml
scr/pages/OrderPdf2.page
scr/pages/OrderPdf2.page-meta.xml
scr/pages/OrderPdf3.page
scr/pages/OrderPdf3.page-meta.xml
scr/pages/OrderShippingNotification.page
scr/pages/OrderShippingNotification.page-meta.xml
scr/pages/OrderSplitRatio.page
scr/pages/OrderSplitRatio.page-meta.xml
scr/pages/OrderSplitRatioPopUp.page
scr/pages/OrderSplitRatioPopUp.page-meta.xml
scr/pages/PersonalProcessInstance.page
scr/pages/PersonalProcessInstance.page-meta.xml
scr/pages/QuoteCSVExport.page
scr/pages/QuoteCSVExport.page-meta.xml
scr/pages/QuoteExcelImport.page
scr/pages/QuoteExcelImport.page-meta.xml
scr/pages/QuotePDF.page
scr/pages/QuotePDF.page-meta.xml
scr/pages/QuotesPDF.page
scr/pages/QuotesPDF.page-meta.xml
scr/pages/SWOPage.page
scr/pages/SWOPage.page-meta.xml
scr/pages/SWOPageRead.page
scr/pages/SWOPageRead.page-meta.xml
scr/pages/SWOSearchProduct.page
scr/pages/SWOSearchProduct.page-meta.xml
scr/pages/SearchManagementCode.page
scr/pages/SearchManagementCode.page-meta.xml
scr/pages/SearchMemberPage.page
scr/pages/SearchMemberPage.page-meta.xml
scr/pages/SearchProduct.page
scr/pages/SearchProduct.page-meta.xml
scr/pages/SearchSetProduct.page
scr/pages/SearchSetProduct.page-meta.xml
scr/pages/SendEmail.page
scr/pages/SendEmail.page-meta.xml
scr/pages/SiteLogin.page
scr/pages/SiteLogin.page-meta.xml
scr/pages/SiteRegister.page
scr/pages/SiteRegister.page-meta.xml
scr/pages/SiteRegisterConfirm.page
scr/pages/SiteRegisterConfirm.page-meta.xml
scr/pages/SiteTemplate.page
scr/pages/SiteTemplate.page-meta.xml
scr/pages/SoftphoneConsole.page
scr/pages/SoftphoneConsole.page-meta.xml
scr/pages/SoftwarePhoneInformation.page
scr/pages/SoftwarePhoneInformation.page-meta.xml
scr/pages/StageProgressBar.page
scr/pages/StageProgressBar.page-meta.xml
scr/pages/StdExceptionTemplate.page
scr/pages/StdExceptionTemplate.page-meta.xml
scr/pages/TSRepair.page
scr/pages/TSRepair.page-meta.xml
scr/pages/TS_SearchAccount.page
scr/pages/TS_SearchAccount.page-meta.xml
scr/pages/TradeCustomerManager.page
scr/pages/TradeCustomerManager.page-meta.xml
scr/pages/TradeCustomerManagerSearchOpp.page
scr/pages/TradeCustomerManagerSearchOpp.page-meta.xml
scr/pages/TrialCustomerPortalHomePage.page
scr/pages/TrialCustomerPortalHomePage.page-meta.xml
scr/pages/Trial_Tour.page
scr/pages/Trial_Tour.page-meta.xml
scr/pages/TydelikeAC.page
scr/pages/TydelikeAC.page-meta.xml
scr/pages/TydelikeAcc.page
scr/pages/TydelikeAcc.page-meta.xml
scr/pages/TydelikeCon.page
scr/pages/TydelikeCon.page-meta.xml
scr/pages/Unauthorized.page
scr/pages/Unauthorized.page-meta.xml
scr/pages/UnderConstruction.page
scr/pages/UnderConstruction.page-meta.xml
scr/pages/ca_tour_main.page
scr/pages/ca_tour_main.page-meta.xml
scr/pages/ca_tour_style.page
scr/pages/ca_tour_style.page-meta.xml
scr/pages/orderPage.page
scr/pages/orderPage.page-meta.xml
scr/pages/scc_tour_main.page
scr/pages/scc_tour_main.page-meta.xml
scr/pages/scc_tour_style.page
scr/pages/scc_tour_style.page-meta.xml
scr/pages/test001.page
scr/pages/test001.page-meta.xml
scr/staticresources/CommonUtilJs.js
scr/staticresources/CommonUtilJs.resource-meta.xml
scr/staticresources/NewQuoteEntryJS.bin
scr/staticresources/NewQuoteEntryJS.resource-meta.xml
scr/staticresources/PleaseWaitDialog.bin
scr/staticresources/PleaseWaitDialog.resource-meta.xml
scr/staticresources/SWO.jpeg
scr/staticresources/SWO.resource-meta.xml
scr/staticresources/SWOJS.js
scr/staticresources/SWOJS.resource-meta.xml
scr/staticresources/ServiceCloudLogo.png
scr/staticresources/ServiceCloudLogo.resource-meta.xml
scr/staticresources/SiteSamples.resource-meta.xml
scr/staticresources/SiteSamples/SiteStyles.css
scr/staticresources/SiteSamples/img/clock.png
scr/staticresources/SiteSamples/img/construction.png
scr/staticresources/SiteSamples/img/force_logo.png
scr/staticresources/SiteSamples/img/maintenance.png
scr/staticresources/SiteSamples/img/poweredby.png
scr/staticresources/SiteSamples/img/tools.png
scr/staticresources/SiteSamples/img/unauthorized.png
scr/staticresources/SiteSamples/img/warning.png
scr/staticresources/StageMapJs.js
scr/staticresources/StageMapJs.resource-meta.xml
scr/staticresources/StageMapJsNew.js
scr/staticresources/StageMapJsNew.resource-meta.xml
scr/staticresources/StageMapJsNew1.js
scr/staticresources/StageMapJsNew1.resource-meta.xml
scr/staticresources/StageProgressBarCss.css
scr/staticresources/StageProgressBarCss.resource-meta.xml
scr/staticresources/TrialPortalBanner.png
scr/staticresources/TrialPortalBanner.resource-meta.xml
scr/staticresources/apex20.js
scr/staticresources/apex20.resource-meta.xml
scr/staticresources/blockUIcss.css
scr/staticresources/blockUIcss.resource-meta.xml
scr/staticresources/connection20.js
scr/staticresources/connection20.resource-meta.xml
scr/staticresources/cti.js
scr/staticresources/cti.resource-meta.xml
scr/staticresources/jquery183minjs.resource-meta.xml
scr/staticresources/jquery183minjs.txt
scr/staticresources/jquerysuggestcss.js
scr/staticresources/jquerysuggestcss.resource-meta.xml
scr/staticresources/jquerysuggestjs.js
scr/staticresources/jquerysuggestjs.resource-meta.xml
scr/staticresources/pdfSign.gif
scr/staticresources/pdfSign.resource-meta.xml
scr/staticresources/scc_tour_images.resource-meta.xml
scr/staticresources/scc_tour_images/Tour_Images/bg_tour.png
scr/staticresources/scc_tour_images/Tour_Images/chatter-answers-950.png
scr/staticresources/scc_tour_images/Tour_Images/console-950.png
scr/staticresources/scc_tour_images/Tour_Images/icon_sprite_serviceSupport.png
scr/staticresources/scc_tour_images/Tour_Images/tourArrows.png
scr/staticresources/tests.js
scr/staticresources/tests.resource-meta.xml
scr/triggers/AccountTrigger.trigger
scr/triggers/AccountTrigger.trigger-meta.xml
scr/triggers/AssetTrigger.trigger
scr/triggers/AssetTrigger.trigger-meta.xml
scr/triggers/AttachmentTrigger.trigger
scr/triggers/AttachmentTrigger.trigger-meta.xml
scr/triggers/BusinessActivityTrigger.trigger
scr/triggers/BusinessActivityTrigger.trigger-meta.xml
scr/triggers/CertificationDetailTrigger.trigger
scr/triggers/CertificationDetailTrigger.trigger-meta.xml
scr/triggers/ContactTrigger.trigger
scr/triggers/ContactTrigger.trigger-meta.xml
scr/triggers/DeliveryTrigger.trigger
scr/triggers/DeliveryTrigger.trigger-meta.xml
scr/triggers/OpportunityLineItemTrigger.trigger
scr/triggers/OpportunityLineItemTrigger.trigger-meta.xml
scr/triggers/OpportunityProgressBarTrgiger.trigger
scr/triggers/OpportunityProgressBarTrgiger.trigger-meta.xml
scr/triggers/OpportunityTrigger.trigger
scr/triggers/OpportunityTrigger.trigger-meta.xml
scr/triggers/OrderItemTrigger.trigger
scr/triggers/OrderItemTrigger.trigger-meta.xml
scr/triggers/OrderTrigger.trigger
scr/triggers/OrderTrigger.trigger-meta.xml
scr/triggers/ProRegister.trigger
scr/triggers/ProRegister.trigger-meta.xml
scr/triggers/ProRegisterLink.trigger
scr/triggers/ProRegisterLink.trigger-meta.xml
scr/triggers/Product2Triggrt.trigger
scr/triggers/Product2Triggrt.trigger-meta.xml
scr/triggers/QuoteLineItemTrigger.trigger
scr/triggers/QuoteLineItemTrigger.trigger-meta.xml
scr/triggers/QuoteTrigger.trigger
scr/triggers/QuoteTrigger.trigger-meta.xml
scr/triggers/RepairDetailsTrigger.trigger
scr/triggers/RepairDetailsTrigger.trigger-meta.xml
scr/triggers/RepairTrigger.trigger
scr/triggers/RepairTrigger.trigger-meta.xml
scr/triggers/SWOTrigger.trigger
scr/triggers/SWOTrigger.trigger-meta.xml
scr/triggers/ServiceSummaryTrigger.trigger
scr/triggers/ServiceSummaryTrigger.trigger-meta.xml
scr/triggers/TaskTrigger.trigger
scr/triggers/TaskTrigger.trigger-meta.xml
scr/triggers/UpdateLogisticsInformation.trigger
scr/triggers/UpdateLogisticsInformation.trigger-meta.xml
scr/triggers/UserFaultInfoTrigger.trigger
scr/triggers/UserFaultInfoTrigger.trigger-meta.xml
scr/triggers/User_Violations.trigger
scr/triggers/User_Violations.trigger-meta.xml
scr/triggers/chatter_answers_question_escalation_to_case_trigger.trigger
scr/triggers/chatter_answers_question_escalation_to_case_trigger.trigger-meta.xml
scr/triggers/loanerAppDetStatusUp.trigger
scr/triggers/loanerAppDetStatusUp.trigger-meta.xml
scr/triggers/loanerAppStatusUp.trigger
scr/triggers/loanerAppStatusUp.trigger-meta.xml
scr/triggers/loanerchangerecord.trigger
scr/triggers/loanerchangerecord.trigger-meta.xml |