I am writing a trigger to roll up a formula field, Elapsed_Time_days__c, in a detail object, NEW_KIND_Ticket_timer__c, and have it display in a number field, Total_Time_Case_Elapsed_Days__c, on master object Case. This is to occur after every update for Case.
I have written the below, and it saves, and when I run unit test classes from developer console, it passes. However, in real life, when I actually edit a case, and then save, I get error:
Error: Invalid Data. Review all error messages below to correct your data. Apex trigger trigCaseElapsedTime caused an unexpected exception, contact your administrator: trigCaseElapsedTime: execution of AfterUpdate caused by: System.TypeException: Invalid id: 21.29: Trigger.trigCaseElapsedTime: line 16, column 1
The trigger is:
trigger trigCaseElapsedTime on Case (after update) {
map<id,Case> CaseMap = new map<id,Case> ([
SELECT
Total_Time_Case_Elapsed_Days__c
FROM
Case
WHERE
id in (SELECT RelatedCase__c FROM NEW_KIND_Ticket_timer__c)]);
for ( sObject caserec : [ SELECT SUM(Elapsed_Time_days__c) TotalElapsedtimeDays
FROM NEW_KIND_Ticket_timer__c
WHERE RelatedCase__c in :CaseMap.keyset()
]) {
case updatecaserecord = CaseMap.get((id)caserec.get('TotalElapsedtimeDays'));
updatecaserecord.Total_Time_Case_Elapsed_Days__c = double.valueOf(caserec.get('TotalElapsedtimeDays'));
CaseMap.put((id)caserec.get('TotalElapsedtimeDays'), updatecaserecord);
}
upsert CaseMap.values();
}
I am not sure where I have gone wrong.