String serviceName = 'IntegrationProcedure_DaVinciIntegrations_VAS1';
List<Attivit_di_processo__c> Attivita_di_Processo = new list<Attivit_di_processo__c>();
Map<String, List<String>> ordersToProducts = new Map<String, List<String>>(); //EXAMPLE
ordersToProducts.put('00168868', new List<String>{'VALVCONV'});
ordersToProducts.put('00169089', new List<String>{'CALAVTERC'});
ordersToProducts.put('00168912', new List<String>{'CALAVTERC', 'VALVCONV'});
ordersToProducts.put('00169227', new List<String>{'CALAVTERC', 'VALVCONV'});
ordersToProducts.put('00169239', new List<String>{'VALVCONV'});
ordersToProducts.put('00169077', new List<String>{'CALAVTERC', 'VALVCONV'});
List<Order> orders = [SELECT ID, OrderNumber, Main_Case__c, (SELECT ID, Cod_Voce_Fatturabile__c, Product2.ProductCode FROM OrderItems) FROM Order WHERE OrderNumber IN :ordersToProducts.keySet()];
system.debug('----> ORDER LIST: ' + orders.size());
system.debug('----> ORDER LIST: ' + orders);
Map<String, String> orderToCase = new Map<String, String>();
for(Order ord : orders) {
orderToCase.put(ord.ID, ord.Main_Case__c);
}
Map<String, Case> caseToChildCase = new Map<String, Case>();
List<Case> childCases = [SELECT ID, ParentId, (SELECT ID, CreatedDate FROM Attivita_di_processo__r WHERE Name = 'Sincronizzazione Billing' LIMIT 1) FROM Case Where ParentId IN :orderToCase.values()];
system.debug('----> CHILD CASE LIST: ' + childCases.size());
system.debug('----> CHILD CASE LIST: ' + childCases);
for(Case caso : childCases) {
caseToChildCase.put(caso.ParentId, caso);
}
for(Order ord : orders) {
List<String> targetProds = ordersToProducts.get(ord.OrderNumber);
for(OrderItem oi : ord.OrderItems) {
if(targetProds.contains(oi.Cod_Voce_Fatturabile__c)) {
DateTime attivitaCreatedDate;
if(caseToChildCase.get(orderToCase.get(ord.ID)).Attivita_di_processo__r.size() > 0)
attivitaCreatedDate = caseToChildCase.get(orderToCase.get(ord.ID)).Attivita_di_processo__r[0].CreatedDate;
Attivit_di_processo__c adp = new Attivit_di_processo__c(
Stato__c = 'Aperta',
RecordtypeID = Schema.SObjectType.Attivit_di_processo__c.getRecordTypeInfosByName().get('Billing Adp').getRecordTypeId(),
Order__c = ord.ID,
Order_Item__c = oi.ID,
Cod_Voce_Fatturabile__c = oi.Cod_Voce_Fatturabile__c,
Case__c = caseToChildCase.get(orderToCase.get(ord.ID)).ID,
Tipo__c = 'Order Component',
Importo_fisso__c = 0,
Importo_rata__c = 0,
Name = 'Sincronizzazione Billing',
Importo_fatturato__c = 0,
inizio_periodo_fattura__c = attivitaCreatedDate != null ? Date.Today().addDays(Date.Today().daysBetween(attivitaCreatedDate.date())) : Date.Today(),
fine_periodo_fatturazione__c = attivitaCreatedDate != null ? Date.Today().addDays(Date.Today().daysBetween(attivitaCreatedDate.date())) : Date.Today(),
prezzo__c = 0,
Service_Name__c = serviceName
);
Attivita_di_Processo.add(adp);
}
}
}
system.debug('-------> ADP LIST: ' + Attivita_di_Processo.size());
system.debug('-------> ADP LIST: ' + Attivita_di_Processo);
insert Attivita_di_Processo;
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter