You need to sign in to do that
Don't have an account?
Perspectiva Negócios Digitais
Schedule Batch INVALID_FIELD_FOR_INSERT_UPDATE, cannot specify Id in an insert call: [Id]
Hello everyone I'm having the following problem as you can see in the title of the post, when I made the code tried only with one account in my scope and worked perfectly, but with two accounts is returning this error, I think the problem is in the for but I can't solve it.
My Code:
Debug Log with error , in the line 113
Full Log:
RawLog Link (https://pastebin.com/XEg5XMyX)
My Code:
global class CancerDeColonBatch implements Schedulable, Database.Batchable<sObject> { global Database.QueryLocator start(Database.BatchableContext BC) { return Database.getQueryLocator([SELECT Id, PersonContactId FROM Account WHERE RecordTypeId IN (SELECT Id FROM RecordType WHERE Name = 'Paciente' AND SObjectType = 'Account') AND Detecta__pc = TRUE AND Idade__pc >= 50 AND Idade__pc <= 74]); } global void execute(Database.BatchableContext BC, List<sObject> scope) { List<Account> accounts = (List<Account>) scope; Set<Id> accountIds = new Set<Id>(); Set<Id> personAccountsIds = new Set<Id>(); for(Account c : accounts){ accountIds.add(c.Id); personAccountsIds.add(c.PersonContactId); } system.debug(accountIds); system.debug(personAccountsIds); List<AggregateResult> procedimentos = [SELECT C_digo_do_Procedimento__r.Name exame, Nome_do_Paciente__c conta, MAX(Data_de_Processamento__c) dataExame FROM Dados_Utiliza_o__c WHERE C_digo_do_Procedimento__r.Name IN ('40303250', '40202690', '40202720', '40202739', '40202666', '40201082', '41001265', '40201090', '40201350', '40202135') AND Nome_do_Paciente__c IN :accountIds GROUP BY Nome_do_Paciente__c, C_digo_do_Procedimento__r.Name]; Map<Id, Boolean> criarCase = new Map<Id, Boolean>(); for(AggregateResult ex : procedimentos){ Date dataExame = (Date) ex.get('dataExame'); Date todayDate = Date.today(); Integer difCalc = dataExame.daysBetween(todayDate); if((ex.get('exame') == '40303250') && (difCalc >= 365)){ criarCase.put((Id) ex.get('conta'), true); system.debug('if1'); } else if(((ex.get('exame') == '40202690') || (ex.get('exame') == '40202720') || (ex.get('exame') == '40202739')) && (difCalc >= 1825)){ criarCase.put((Id) ex.get('conta'), true); system.debug('if2'); } else if(((ex.get('exame') == '40202666') || (ex.get('exame') == '40201082') || (ex.get('exame') == '41001265') || (ex.get('exame') == '40201090') || (ex.get('exame') == '40201350') || (ex.get('exame') == '40202135')) && difCalc >= 3650){ criarCase.put((Id) ex.get('conta'), true); system.debug('if3'); } } List<Account> semProcedimentos = new List<Account>([SELECT Id FROM Account WHERE Id NOT IN (SELECT Nome_do_Paciente__c FROM Dados_Utiliza_o__c WHERE C_digo_do_Procedimento__r.Name IN ('40303250', '40202690', '40202720', '40202739', '40202666', '40201082', '41001265', '40201090', '40201350', '40202135')) AND Detecta__pc = TRUE AND Idade__pc >= 50 AND Idade__pc <= 74]); for(Account sp : semProcedimentos){ system.debug('entrou sem procedimentos'); criarCase.put((Id) sp.Id, true); } String CaseDescription; CaseDescription = 'Exames pendentes: Sangue oculto nas fezes, pesquisa imunológica (40303250), '; CaseDescription += 'Retossigmoidoscopia flexível com biópsia e/ou citologia (40202690), '; CaseDescription += 'Retossigmoidoscopia rígida com biópsia e/ou citologia (40202720), '; CaseDescription += 'Retossigmoidoscopia rígida com polipectomia (40202739), '; CaseDescription += 'Colonoscopia com biópsia e/ou citologia (40202666), '; CaseDescription += 'Colonoscopia (inclui a retossigmoidoscopia) (40201082), '; CaseDescription += 'TC - Colonoscopia virtual (41001265), '; CaseDescription += 'Colonoscopia com magnificação (40201090), '; CaseDescription += 'Colonoscopia com cromoscopia (40201350), '; CaseDescription += 'Colonoscopia com magnificação e tatuagem (40202135)'; RecordType carePlantRecordType = [SELECT Id FROM RecordType WHERE Name = 'CarePlan' AND SObjectType = 'Case']; List<Case> newCases = new List<Case>(); List<CaseTeamMember> newteamMembers = new List<CaseTeamMember>(); List<HealthCloudGA__CarePlanProblem__c> newProblem = new List<HealthCloudGA__CarePlanProblem__c>(); List<HealthCloudGA__CarePlanGoal__c> newGoal = new List<HealthCloudGA__CarePlanGoal__c>(); HealthCloudGA__CarePlanProblem__c problemaCriado; HealthCloudGA__CarePlanGoal__c metaCriada; List<Task> newtask = new List<Task>(); for(Id pId : personAccountsIds){ for(Id cId : accountIds){ if(criarCase.keySet().contains(cId)){ Case newCase = new Case( Subject = 'Câncer de Cólon - Exames Pendentes', RecordType = carePlantRecordType, AccountId = cId, ContactId = pId, Description = CaseDescription ); newCases.add(newCase); try{ system.debug('Entrou no insert'); insert newCases; system.debug(newCases); } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } CaseTeamMember newCareCoordinator = new CaseTeamMember( ParentId = newCase.Id, MemberId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda TeamRoleId = '0B7360000004asLCAQ' //fixo Care Coordinator, producao ou sandbox o ID não muda ); newteamMembers.add(newCareCoordinator); CaseTeamMember newPatient = new CaseTeamMember( ParentId = newCase.Id, MemberId = pId, //fixo conta da perspectiva, producao ou sandbox o ID não muda TeamRoleId = '0B7360000004asQCAQ' //fixo Patient producao ou sandbox o ID não muda ); newteamMembers.add(newPatient); try{ insert newteamMembers; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } HealthCloudGA__CarePlanProblem__c newColon = new HealthCloudGA__CarePlanProblem__c( HealthCloudGA__CarePlan__c = newCase.Id, Name = 'Câncer de Cólon' ); newProblem.add(newColon); try{ insert newProblem; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } try{ problemaCriado = [SELECT Id FROM HealthCloudGA__CarePlanProblem__c WHERE HealthCloudGA__CarePlan__c = :newCase.Id]; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } HealthCloudGA__CarePlanGoal__c newMeta = new HealthCloudGA__CarePlanGoal__c( HealthCloudGA__CarePlan__c = newCase.Id, HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, Name = 'Realizar exames relacionados ao Câncer de Cólon' ); newGoal.add(newMeta); try{ insert newGoal; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } try{ metaCriada = [SELECT Id FROM HealthCloudGA__CarePlanGoal__c WHERE HealthCloudGA__CarePlan__c = :newCase.Id]; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } Task newExamOne = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Retossigmoidoscopia flexível com biópsia e/ou citologia (40202690)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamOne); Task newExamTwo = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Retossigmoidoscopia rígida com biópsia e/ou citologia (40202720)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamTwo); Task newExamThree = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Retossigmoidoscopia rígida com polipectomia (40202739)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamThree); Task newExamFour = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Colonoscopia com biópsia e/ou citologia (40202666)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamFour); Task newExamFive = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Colonoscopia (inclui a retossigmoidoscopia) (40201082', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamFive); Task newExamSix = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'TC - Colonoscopia virtual (41001265)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamSix); Task newExamSeven = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Colonoscopia com magnificação (40201090)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamSeven); Task newExamEight = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Colonoscopia com cromoscopia (40201350)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamEight); Task newExamNine = new Task( WhatId = newCase.Id, OwnerId = '0053600000141fOAAQ', //fixo conta da perspectiva, producao ou sandbox o ID não muda WhoId = pId, Subject = 'Colonoscopia com magnificação e tatuagem (40202135)', Status = 'Aberta', Priority = 'Normal', HealthCloudGA__CarePlanProblem__c = problemaCriado.Id, HealthCloudGA__CarePlanGoal__c = metaCriada.Id ); newTask.add(newExamNine); try{ insert newTask; } catch(Exception e){ system.debug('Erro: ' + e.getMessage()); } } } } } global void execute(SchedulableContext sc) { CancerDeColonBatch b = new CancerDeColonBatch(); DataBase.executebatch(b); } global void finish(Database.BatchableContext BC) { } }
Debug Log with error , in the line 113
Full Log:
RawLog Link (https://pastebin.com/XEg5XMyX)