}
-#deprecated #=item order_pkgs HASHREF [ , SECONDSREF ] [ , OPTION => VALUE ... ]
=item order_pkgs HASHREF [ , OPTION => VALUE ... ]
Like the insert method on an existing record, this method orders multiple
sub order_pkgs {
my $self = shift;
my $cust_pkgs = shift;
- my $seconds_ref = ref($_[0]) ? shift : ''; #deprecated
my %options = @_;
- $seconds_ref ||= $options{'seconds_ref'};
local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG;
my $error = $self->order_pkg(
'cust_pkg' => $cust_pkg,
'svcs' => $cust_pkgs->{$cust_pkg},
- 'seconds_ref' => $seconds_ref,
- map { $_ => $options{$_} } qw( upbytes_ref downbytes_ref totalbytes_ref
- depend_jobnum
- )
+ map { $_ => $options{$_} }
+ qw( seconds_ref upbytes_ref downbytes_ref totalbytes_ref depend_jobnum )
);
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
$self->unsuspended_pkgs;
}
+=item billing_pkgs
+
+Returns active packages, and also any suspended packages which are set to
+continue billing while suspended.
+
+=cut
+
+sub billing_pkgs {
+ my $self = shift;
+ grep { my $part_pkg = $_->part_pkg;
+ $part_pkg->freq ne '' && $part_pkg->freq ne '0'
+ && ( ! $_->susp || $part_pkg->option('suspend_bill', 1) );
+ }
+ $self->ncancelled_pkgs;
+}
+
=item next_bill_date
Returns the next date this customer will be billed, as a UNIX timestamp, or
-undef if no active package has a next bill date.
+undef if no billing package has a next bill date.
=cut
sub next_bill_date {
my $self = shift;
- min( map $_->get('bill'), grep $_->get('bill'), $self->active_pkgs );
+ min( map $_->get('bill'), grep $_->get('bill'), $self->billing_pkgs );
}
=item num_cancelled_pkgs