You need to sign in to do that
Don't have an account?
First exception on row 40; first error: FIELD_INTEGRITY_EXCEPTION, Event duration cannot be negative
Hi,
i have a class which reads through all appointments from my custom object appointment__c and creates an event in SF. Things work fine on the sandbox and when i move it to production i get the below error.
Failure Message: "System.DmlException: Insert failed. First exception on row 40; first error: FIELD_INTEGRITY_EXCEPTION, Event duration cannot be negative: [DurationInMinutes]", Failure Stack Trace: "Class.SyncWithEvents.transfer: line 31, column 7 Class.TestSyncWithEvents.TestappSyncWithEvents: line 25, column 6 External entry ...
Public Class SyncWithEvents { List<Appointment__c> app= new List<appointment__c>(); public Integer no_of_appts {get;set;} List <Event> LstEvent= new List<Event>(); public SyncWithEvents() { } public void transfer() { app=[select StartDateTime__c,EndDateTime__c,Status__c,Client__c,OwnerId from Appointment__c where Sync_with_events__c=false]; System.debug('No of records+++++++++++++++++++++'+app.size()); for (integer i=0;i<app.size();i++) // for(List<Appointment__c> app:[select StartDateTime__c,EndDateTime__c,Status__c,Client__c,OwnerId from Appointment__c // where Sync_with_events__c=false]) { Event e = new Event(); e.StartDateTime = app[i].StartDateTime__c; e.EndDateTime = app[i].EndDateTime__c; e.Subject = 'Appt - '+app[i].Status__c; e.WhoId=app[i].Client__c; e.OwnerId=app[i].OwnerId ; app[i].Sync_with_events__c=true; LstEvent.add(e); } insert LstEvent; update app; no_of_appts=LstEvent.size(); } }
Here is the test class
public with sharing class TestSyncWithEvents { static testMethod void TestappSyncWithEvents() { /*appointment__c a = new appointment__c(); string year = '2011'; string month = '12'; string day = '27'; string hour = '09'; string minute = '30'; string second = '00'; string stringDate = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; Datetime myDate = datetime.valueOf(stringDate); a.Name='Test Name'; a.Appointment_Type__c='Call'; a.Start_Date__c=date.parse('12/27/2011'); a.Start_Time__c='09:30 AM'; a.StartDateTime__c=myDate; a.EndDateTime__c=myDate.addMinutes(30); a.status__c='Tentative'; a.Sync_with_events__c=false; insert a;*/ SyncWithEvents sw= new SyncWithEvents(); sw.transfer(); } }
Any ideas on what could be causing the problem
well it seems the start datetime and the end datetime you are inserting for appointment is getting in conflict and hence end datetime is supposedly earlier than start datetime making the duration negative . so the error
try something like
Sometime the error happens due to the conflict with GMT
hope that helps.
Sam
In your production organization, you may not have the correct appoinment data. Better to have validation rule for both the fields that is start date and time should be less than end date and time.
i am setting the start and end date as below;
Time strtTime=Time.newInstance(0,0,0,0);
Time endTime=Time.newInstance(0,0,0,0);
as i need to make it a full day event.
Still i get an error:
NUMBER_OUTSIDE_VALID_RANGE, Event duration cannot be negative: [DurationInMinutes]
Please help
Thanks