my $self = shift;
my $opt = ref($_[0]) ? shift : { @_ };
- local($DEBUG) = $cust_main::DEBUG if $cust_main::DEBUG > $DEBUG;
+ local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG;
warn "$me order_pkg called with options ".
join(', ', map { "$_: $opt->{$_}" } keys %$opt ). "\n"
my %options = @_;
$seconds_ref ||= $options{'seconds_ref'};
- local($DEBUG) = $cust_main::DEBUG if $cust_main::DEBUG > $DEBUG;
+ local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG;
warn "$me order_pkgs called with options ".
join(', ', map { "$_: $options{$_}" } keys %options ). "\n"
my $self = shift;
my $extra_qsearch = ref($_[0]) ? shift : {};
- local($DEBUG) = $cust_main::DEBUG if $cust_main::DEBUG > $DEBUG;
+ local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG;
return $self->num_ncancelled_pkgs unless wantarray;
grep { ! $_->susp } $self->ncancelled_pkgs;
}
+=item active_pkgs
+
+Returns all unsuspended (and uncancelled) packages (see L<FS::cust_pkg>) for
+this customer that are active (recurring).
+
+=cut
+
+sub active_pkgs {
+ my $self = shift;
+ grep { my $part_pkg = $_->part_pkg;
+ $part_pkg->freq ne '' && $part_pkg->freq ne '0';
+ }
+ $self->unsuspended_pkgs;
+}
+
=item next_bill_date
Returns the next date this customer will be billed, as a UNIX timestamp, or
sub next_bill_date {
my $self = shift;
- min( map $_->get('bill'), grep $_->get('bill'), $self->unsuspended_pkgs );
+ min( map $_->get('bill'), grep $_->get('bill'), $self->active_pkgs );
}
=item num_cancelled_pkgs