Back

Maica Client Care V.0.42

You can download the full release notes as a PDF above for detailed information on all updates and fixes included in this version.

If there are any post-install steps required, they will be listed below.

Post Installation Steps & Scripts
If you require assistance with installing or running these scripts, please contact Maica Support for guidance.
OEM-710 Post Install Script

View Code

List<maica_cc__Invoice_Line_Item__c> items = [SELECT Id, maica_cc__Support_Item__c, maica_cc__Agreement_Item__c, maica_cc__Budget_Type__c FROM maica_cc__Invoice_Line_Item__c WHERE maica_cc__Funding_Item__c = NULL AND maica_cc__Agreement_Item__c != NULL AND Id = 'a0VWU00000HAFX32AP']; Set<Id> productIds = new Set<Id>(); Set<Id> agreementItemIds = new Set<Id>(); for(maica_cc__Invoice_Line_Item__c item : items){ productIds.add(item.maica_cc__Support_Item__c); agreementItemIds.add(item.maica_cc__Agreement_Item__c); } if (agreementItemIds.isEmpty()) return; Map<Id, maica_cc__Support_Item__c> products2Map = new Map<Id, maica_cc__Support_Item__c>([ SELECT Id, maica_cc__Budget_Type__c FROM maica_cc__Support_Item__c WHERE Id IN :productIds ]); Map<Id, maica_cc__Agreement_Item__c> agreementItemMap = new Map<Id, maica_cc__Agreement_Item__c>([ SELECT Id, maica_cc__Service_Agreement__c, maica_cc__Service_Agreement__r.maica_cc__Funding__c FROM maica_cc__Agreement_Item__c WHERE Id IN :agreementItemIds ]); Set<Id> planIds = new Set<Id>(); for(maica_cc__Agreement_Item__c agreementItem : agreementItemMap.values()){ if(String.isNotBlank(agreementItem.maica_cc__Service_Agreement__r?.maica_cc__Funding__c)){ planIds.add(agreementItem.maica_cc__Service_Agreement__r.maica_cc__Funding__c); } } if (planIds.isEmpty()) return; List<maica_cc__Funding_Item__c> planBudgets = [ SELECT Id, maica_cc__Funding__c, maica_cc__Active__c, maica_cc__Budget_Type__c FROM maica_cc__Funding_Item__c WHERE maica_cc__Funding__c IN :planIds AND maica_cc__Active__c = TRUE ]; Map<String, List<maica_cc__Funding_Item__c>> planBudgetMap = new Map<String, List<maica_cc__Funding_Item__c>>(); for (maica_cc__Funding_Item__c pb : planBudgets) { String key = pb.maica_cc__Funding__c + ':' + pb.maica_cc__Budget_Type__c; if (!planBudgetMap.containsKey(key)) { planBudgetMap.put(key, new List<maica_cc__Funding_Item__c>()); } planBudgetMap.get(key).add(pb); } for (maica_cc__Invoice_Line_Item__c ili : (List<maica_cc__Invoice_Line_Item__c>) items) { System.debug(ili.maica_cc__Agreement_Item__c); if (String.isBlank(ili.maica_cc__Agreement_Item__c)) continue; maica_cc__Agreement_Item__c ai = agreementItemMap.get(ili.maica_cc__Agreement_Item__c); if (ai == null || ai.maica_cc__Service_Agreement__r == null || String.isBlank(ai.maica_cc__Service_Agreement__r.maica_cc__Funding__c)) continue; String planId = ai.maica_cc__Service_Agreement__r.maica_cc__Funding__c; System.debug(planId); List<String> budgetTypes = new List<String>(); if (!String.isBlank(ili.maica_cc__Budget_Type__c)) { budgetTypes.add(ili.maica_cc__Budget_Type__c); } else { maica_cc__Support_Item__c prod = products2Map.get(ili.maica_cc__Support_Item__c); if (prod != null && !String.isBlank((String)prod.maica_cc__Budget_Type__c)) { for (String bt : String.valueOf(prod.maica_cc__Budget_Type__c).split(';')) { String v = String.isNotBlank(bt) ? bt.trim() : null; if (String.isNotBlank(v)) budgetTypes.add(v); } } } if (budgetTypes.isEmpty()) continue; System.debug(budgetTypes); for (String budgetType : budgetTypes) { List<maica_cc__Funding_Item__c> budgets = planBudgetMap.get(planId + ':' + budgetType); if (budgets != null && !budgets.isEmpty()) { maica_cc__Funding_Item__c budget = budgets[0]; ili.maica_cc__Funding_Item__c = budget.Id; if (String.isBlank(ili.maica_cc__Budget_Type__c)) { ili.maica_cc__Budget_Type__c = budget.maica_cc__Budget_Type__c; } break; } } } update items;

View Code

View Code