X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FPackages.pm;h=50da8b219cd6b54e8a3b8193fc0ac9f8dfa7fcad;hb=ab42a6d76c5a5905d223d214e409f0527b2c5b9e;hp=4201cf8690c1840d74a0f329ff42dc5bde381b05;hpb=7164a8b3fa123301ecc797fb1798af92e4652c22;p=freeside.git diff --git a/FS/FS/cust_main/Packages.pm b/FS/FS/cust_main/Packages.pm index 4201cf869..50da8b219 100644 --- a/FS/FS/cust_main/Packages.pm +++ b/FS/FS/cust_main/Packages.pm @@ -545,16 +545,32 @@ sub sort_packages { } -=item suspended_pkgs +=item suspended_pkgs OPTION => VALUE ... Returns all suspended packages (see L) for this customer. +Currently supports one option, I, which if set to a typenum, +limits the results to packages which were suspended for reasons of this type. +(Does not currently work in scalar context; i.e. when just asking for a count.) + =cut sub suspended_pkgs { my $self = shift; - return $self->num_suspended_pkgs unless wantarray; - grep { $_->susp } $self->ncancelled_pkgs; + my %opt = @_; + + return $self->num_suspended_pkgs unless wantarray; #XXX opt in scalar context + + my @pkgs = grep { $_->susp } $self->ncancelled_pkgs; + + if ( $opt{reason_type} ) { + @pkgs = grep { my $r = $_->last_reason('susp'); + $r && $r->reason_type == $opt{reason_type}; + } + @pkgs; + } + + @pkgs; } ### This appears to be unused, will be going away @@ -593,6 +609,8 @@ this customer that are active (recurring). =cut +#recurring_pkgs? different from cust_pkg idea of "active" which has +# a setup vs not_yet_billed which doesn't sub active_pkgs { my $self = shift; grep { my $part_pkg = $_->part_pkg; @@ -608,6 +626,8 @@ are active (recurring). =cut +#ncancelled_recurring_pkgs? different from cust_pkg idea of "active" which has +# a setup vs not_yet_billed which doesn't sub ncancelled_active_pkgs { my $self = shift; grep { my $part_pkg = $_->part_pkg; @@ -807,7 +827,7 @@ sub display_recurring { my $discount = $cust_pkg_discount->discount; #and only one of these for each $pkg_amount -= $discount->amount; - $pkg_amount -= $amount * $discount->percent/100; + $pkg_amount -= $pkg_amount * $discount->percent/100; } $pkg_amount *= ( $cust_pkg->quantity || 1 );