public without sharing class AccountToTMSInfoTrigger { public static void createTms(List newList, Map newMap, List oldList, Map oldMap) { if (Trigger.isInsert || Trigger.isUpdate) { Map dcList = new Map(); Map dcList2 = new Map(); List keys = new List(); Integer year = Date.today().year(); for (Account acc : newList) { keys.add(acc.Agent_Ref__c+'-'+acc.Contact_Type__c+'-'+'FY'+year+'-'+acc.OCM_man_province_HP__c); } List dcHas = [select id,TMS_Key__c from Dealer_ConsumableManage__c where TMS_Key__c in :keys]; System.debug('dcHas='+dcHas); String myUserID = UserInfo.getUserId(); User userinfo = [SELECT id,profileId FROM User WHERE id = :myUserID LIMIT 1]; String userpid = userinfo.profileId; String OLYid = System.Label.OlympusSystem_ID; String ProfileId = System.Label.ProfileId_SystemAdmin; if ((myUserID.substring(0,15) == OLYid.substring(0,15) || (userpid == ProfileId))) { if (dcHas.size()==0) { for (Account acc : newList) { if (Trigger.isInsert || Trigger.isUpdate) { if (acc.Acc_Record_Type__c == '契約' && acc.Is_Active_Formula__c == '有效' &&(acc.Contact_Type__c == 'ET' || acc.Contact_Type__c == 'ENG')) { Dealer_ConsumableManage__c dc = new Dealer_ConsumableManage__c(); Decimal amount = 0; if (acc.Aim_Price__c != null) { amount = (acc.Aim_Price__c/12).setScale(0); } System.debug('acc.ET_SP_Dealer__c='+acc.ET_SP_Dealer__c); if (acc.ET_SP_Dealer__c == true){ dc.Category2__c = 'ET耗材'; dc.ET_ENG__c = 'ET'; dc.Dealer_Name__c = acc.Agent_Ref__c; dc.Dealer_Name_Account__c = acc.id; dc.FY__c = 'FY'+year; dc.FY_P_1__c = amount; dc.FY_P_10__c = amount; dc.FY_P_11__c = amount; dc.FY_P_12__c = amount; dc.FY_P_2__c = amount; dc.FY_P_3__c = amount; dc.FY_P_4__c = amount; dc.FY_P_5__c = amount; dc.FY_P_6__c = amount; dc.FY_P_7__c = amount; dc.FY_P_8__c = amount; dc.FY_P_9__c = amount; dc.TMS_Key__c = acc.Agent_Ref__c+'-'+'ET'+'-'+'FY'+year+'-'+acc.OCM_man_province_HP__c; }else if (acc.ENG_Dealer__c == true){ dc.Category2__c = '外科耗材'; dc.ET_ENG__c = 'ENG'; dc.Dealer_Name__c = acc.Agent_Ref__c; dc.Dealer_Name_Account__c = acc.id; dc.FY__c = 'FY'+year; dc.FY_P_1__c = amount; dc.FY_P_10__c = amount; dc.FY_P_11__c = amount; dc.FY_P_12__c = amount; dc.FY_P_2__c = amount; dc.FY_P_3__c = amount; dc.FY_P_4__c = amount; dc.FY_P_5__c = amount; dc.FY_P_6__c = amount; dc.FY_P_7__c = amount; dc.FY_P_8__c = amount; dc.FY_P_9__c = amount; dc.TMS_Key__c = acc.Agent_Ref__c+'-'+'ENG'+'-'+'FY'+year+'-'+acc.OCM_man_province_HP__c; } if (dc.TMS_Key__c !=null && !dcList.containskey(dc.id)) { dcList.put(dc.id,dc); } } } } } if (dcHas.size()!=0) { for (Account acc : newList) { if (acc.Acc_Record_Type__c == '契約' && acc.Is_Active_Formula__c == '有效' &&(acc.Contact_Type__c == 'ET' || acc.Contact_Type__c == 'ENG')) { String tmskey = acc.Agent_Ref__c+'-'+acc.Contact_Type__c+'-'+'FY'+year+'-'+acc.OCM_man_province_HP__c; Decimal amount = 0; if (acc.Aim_Price__c != null) { amount = (acc.Aim_Price__c/12).setScale(0); } Dealer_ConsumableManage__c dc = new Dealer_ConsumableManage__c(); if (Trigger.isInsert || Trigger.isUpdate) { for (Dealer_ConsumableManage__c dcm : dcHas) { if (tmskey == dcm.TMS_Key__c) { dc.id = dcm.id; dc.FY_P_1__c = amount; dc.FY_P_10__c = amount; dc.FY_P_11__c = amount; dc.FY_P_12__c = amount; dc.FY_P_2__c = amount; dc.FY_P_3__c = amount; dc.FY_P_4__c = amount; dc.FY_P_5__c = amount; dc.FY_P_6__c = amount; dc.FY_P_7__c = amount; dc.FY_P_8__c = amount; dc.FY_P_9__c = amount; if (!dcList2.containsKey(dc.id)) { dcList2.put(dc.id,dc); } } } } } } } } system.debug('dcList=='+dcList.values()); if (dcList.size()>0) { insert dcList.values(); } if (dcList2.size()>0) { update dcList2.values(); } } } }