import torrus 1.0.9
[freeside.git] / FS / FS / cust_main / Packages.pm
index 2912863..ab7bde3 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;
@@ -187,6 +189,8 @@ sub order_pkgs {
   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"
     if $DEBUG;
@@ -267,6 +271,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 +385,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 +409,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