- debug => 1,
- });
- warn "initialize: ".(scalar @objects) ." $eventtable objects found\n"
- if $DEBUG;
- my $error = '';
- foreach my $object ( @objects ) {
- # test conditions
+ };
+}
+
+
+=item initialize PARAMS
+
+Identify all objects eligible for this event and create L<FS::cust_event>
+records for each of them, as of the present time, with status "initial". When
+combined with conditions that prevent an event from running more than once
+(at all or within some period), this will exclude any objects that met the
+conditions before the event was created.
+
+If an L<FS::part_event> object needs to be initialized, it should be created
+in a disabled state to avoid running the event prematurely for any existing
+objects. C<initialize> will enable it once all the cust_event records
+have been created.
+
+This may take some time, so it should be run from the job queue.
+
+=cut
+
+sub initialize {
+ my $self = shift;
+ my $error;
+
+ my $time = time;
+
+ local $FS::UID::AutoCommit = 1;
+ my $cursor = FS::Cursor->new( $self->_target_query('time' => $time) );
+ while (my $object = $cursor->fetch) {
+