X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FPackages.pm;h=4b44fdd5db004ad04524fdfa260e87b25feddf5c;hb=b5c4237a34aef94976bc343c8d9e138664fc3984;hp=2912863e9d7a1172d9b562eeaa78840ff44d76e0;hpb=da122d33411802d26d34033a1ca68cae29125259;p=freeside.git diff --git a/FS/FS/cust_main/Packages.pm b/FS/FS/cust_main/Packages.pm index 2912863e9..4b44fdd5d 100644 --- a/FS/FS/cust_main/Packages.pm +++ b/FS/FS/cust_main/Packages.pm @@ -69,6 +69,8 @@ sub order_pkg { my $self = shift; my $opt = ref($_[0]) ? shift : { @_ }; + 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" if $DEBUG; @@ -140,7 +142,6 @@ sub order_pkg { } -#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 @@ -183,9 +184,9 @@ values of the prepaid card.` 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; warn "$me order_pkgs called with options ". join(', ', map { "$_: $options{$_}" } keys %options ). "\n" @@ -209,10 +210,8 @@ sub order_pkgs { 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; @@ -267,6 +266,8 @@ sub ncancelled_pkgs { my $self = shift; my $extra_qsearch = ref($_[0]) ? shift : {}; + local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG; + return $self->num_ncancelled_pkgs unless wantarray; my @cust_pkg = (); @@ -379,6 +380,21 @@ sub unsuspended_pkgs { grep { ! $_->susp } $self->ncancelled_pkgs; } +=item active_pkgs + +Returns all unsuspended (and uncancelled) packages (see L) 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 @@ -388,7 +404,7 @@ undef if no active package has a next bill date. 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