X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_bill_event.pm;h=4e7aa52f2358c484a7dac079db5d68e8c46b1a10;hb=72deba42ac5847c2a6bdeea20157035b8f9df7ae;hp=3f49d292fa33ac194f4e861d33d095ecc63d0f51;hpb=52281cbeaf8d4e02345eca3c1aa0500133823558;p=freeside.git diff --git a/FS/FS/part_bill_event.pm b/FS/FS/part_bill_event.pm index 3f49d292f..4e7aa52f2 100644 --- a/FS/FS/part_bill_event.pm +++ b/FS/FS/part_bill_event.pm @@ -2,8 +2,11 @@ package FS::part_bill_event; use strict; use vars qw( @ISA $DEBUG @EXPORT_OK ); +use Carp qw(cluck confess); use FS::Record qw( dbh qsearch qsearchs ); use FS::Conf; +use FS::cust_main; +use FS::cust_bill; @ISA = qw( FS::Record ); @EXPORT_OK = qw( due_events ); @@ -37,10 +40,10 @@ FS::part_bill_event - Object methods for part_bill_event records =head1 DESCRIPTION -An FS::part_bill_event object represents an invoice event definition - -a callback which is triggered when an invoice is a certain amount of time -overdue. FS::part_bill_event inherits from -FS::Record. The following fields are currently supported: +An FS::part_bill_event object represents a deprecated, old-style invoice event +definition - a callback which is triggered when an invoice is a certain amount +of time overdue. FS::part_bill_event inherits from FS::Record. The following +fields are currently supported: =over 4 @@ -66,6 +69,11 @@ FS::Record. The following fields are currently supported: =back +=head1 NOTE + +Old-style invoice events are only useful for legacy migrations - if you are +looking for current events see L. + =head1 METHODS =over 4 @@ -133,13 +141,16 @@ sub check { my $c = $self->eventcode; + #yay, these regexen will go away with the event refactor + $c =~ /^\s*\$cust_main\->(suspend|cancel|invoicing_list_addpost|bill|collect)\(\);\s*("";)?\s*$/ or $c =~ /^\s*\$cust_bill\->(comp|realtime_(card|ach|lec)|batch_card|send)\((%options)*\);\s*$/ or $c =~ /^\s*\$cust_bill\->send(_if_newest)?\(\'[\w\-\s]+\'\s*(,\s*(\d+|\[\s*\d+(,\s*\d+)*\s*\])\s*,\s*'[\w\@\.\-\+]*'\s*)?\);\s*$/ - or $c =~ /^\s*\$cust_main\->apply_payments; \$cust_main->apply_credits; "";\s*$/ +# or $c =~ /^\s*\$cust_main\->apply_payments; \$cust_main->apply_credits; "";\s*$/ + or $c =~ /^\s*\$cust_main\->apply_payments_and_credits; "";\s*$/ or $c =~ /^\s*\$cust_main\->charge\( \s*\d*\.?\d*\s*,\s*\'[\w \!\@\#\$\%\&\(\)\-\+\;\:\"\,\.\?\/]*\'\s*\);\s*$/ @@ -187,8 +198,10 @@ sub check { } } - my $reasonr = qsearchs('reason', {'reasonnum' => $self->reason}); - return "Unknown reason" unless $reasonr; + if ($self->reason){ + my $reasonr = qsearchs('reason', {'reasonnum' => $self->reason}); + return "Unknown reason" unless $reasonr; + } $self->SUPER::check; } @@ -221,6 +234,10 @@ Requires record and payby, but event_time and extra_sql are optional. sub due_events { my ($record, $payby, $event_time, $extra_sql) = @_; + + #cluck "DEPRECATED: FS::part_bill_event::due_events called on $record"; + confess "DEPRECATED: FS::part_bill_event::due_events called on $record"; + my $interval = 0; if ($record->_date){ $event_time = time unless $event_time; @@ -229,6 +246,9 @@ sub due_events { sort { $a->seconds <=> $b->seconds || $a->weight <=> $b->weight || $a->eventpart <=> $b->eventpart } + grep { ref($record) ne 'FS::cust_bill' || $_->eventcode !~ /honor_dundate/ + || $event_time > $record->cust_main->dundate + } grep { $_->seconds <= ( $interval ) && ! qsearch( 'cust_bill_event', { 'invnum' => $record->get($record->dbdef_table->primary_key), @@ -256,6 +276,10 @@ Should only be performed inside a transaction. sub do_event { my ($self, $object, %options) = @_; + + #cluck "DEPRECATED: FS::part_bill_event::do_event called on $self"; + confess "DEPRECATED: FS::part_bill_event::do_event called on $self"; + warn " calling event (". $self->eventcode. ") for " . $object->table . " " , $object->get($object->dbdef_table->primary_key) . "\n" if $DEBUG > 1; my $oldAutoCommit = $FS::UID::AutoCommit;