This commit was generated by cvs2svn to compensate for changes in r11022,
[freeside.git] / FS / FS / cust_main / Packages.pm
index 2912863..4b44fdd 100644 (file)
@@ -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<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
@@ -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