Я написал класс Apex для обновления записи учетной записи на основе информации из пользовательского типа метаданных. У меня есть обработчик триггера, который я использую для вызова кода (фрагмент ниже). Код берет старую карту и новую карту. Я хочу иметь возможность использовать код не только для обновления, но и для вставки, и у меня возникают проблемы с тем, как я могу отредактировать его, чтобы он мог просто принять новую карту для вставки.
//Run Apex class to update tier field on child accounts
if( UpdateChildAccountTierControl != null && UpdateChildAccountTierControl.Enabled__c ) {
MatchAccountCountrytoRegion mtch = new MatchAccountCountrytoRegion (Trigger.oldMap, Trigger.newMap);
mtch.MatchAcctCtryRegion();
}
}
public class MatchAccountCountrytoRegion {
Map<Id, Account> oldAccts;
Map<Id, Account> newAccts;
public MatchAccountCountrytoRegion (
Map<Id, Account>oldTriggerAccts,
Map<Id, Account>newTriggerAccts) {
oldAccts = oldTriggerAccts;
newAccts = newTriggerAccts; }
public void MatchAcctCtryRegion() {
Set<Id> acctIds = new Set <Id>();
Set<string> acctCtry = new Set <string>();
for (Account a : newAccts.values()) {
if (oldAccts.isEmpty()) {
if (a.ShippingCountry != null) {
acctIds.add(a.Id);
acctCtry.add(a.ShippingCountry);
}
}
}
List<CountryMapping__mdt> metalist = [SELECT Country__c, Region__c FROM CountryMapping__mdt WHERE Country__c =: acctCtry];
Map<String, String> metadatamap = new Map<String, String>();
for (CountryMapping__mdt cm: metalist) {
metadatamap.put(cm.Country__c, cm.Region__c);}
for (Account a : newAccts.values()) {
String region = metadatamap.get(a.ShippingCountry);
if ( region != null ) {
a.Account_Region__c = region;
}
}
}}