diff options
author | Mark Wells <mark@freeside.biz> | 2014-08-13 19:19:18 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2014-08-13 19:19:18 -0700 |
commit | e5770f1c578ba47f730488df7fb5a03307ac71ab (patch) | |
tree | 8462127e16f1d4502532a3cad60e5f311b755196 /FS/FS/cust_pkg/Search.pm | |
parent | 847c27d7683856f420ed5306cb0ca395f1a6eb60 (diff) |
avoid counting location-changed packages in total canceled packages
Diffstat (limited to 'FS/FS/cust_pkg/Search.pm')
-rw-r--r-- | FS/FS/cust_pkg/Search.pm | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/FS/FS/cust_pkg/Search.pm b/FS/FS/cust_pkg/Search.pm index 543ef1a..1a9132d 100644 --- a/FS/FS/cust_pkg/Search.pm +++ b/FS/FS/cust_pkg/Search.pm @@ -17,13 +17,15 @@ Valid parameters are =item agentnum -=item magic +=item status -on hold, active, inactive (or one-time charge), suspended, cancel (or cancelled) +on hold, active, inactive (or one-time charge), suspended, canceled (or cancelled) -=item status +=item magic -on hold, active, inactive (or one-time charge), suspended, cancel (or cancelled) +Equivalent to "status", except that "canceled"/"cancelled" will exclude +packages that were changed into a new package with the same pkgpart (i.e. +location or quantity changes). =item custom @@ -208,6 +210,19 @@ sub search { push @where, FS::cust_pkg->cancelled_sql(); } + + ### special case: "magic" is used in detail links from browse/part_pkg, + # where "cancelled" has the restriction "and not replaced with a package + # of the same pkgpart". Be consistent with that. + ### + + if ( $params->{'magic'} =~ /^cancell?ed$/ ) { + my $new_pkgpart = "SELECT pkgpart FROM cust_pkg AS cust_pkg_next ". + "WHERE cust_pkg_next.change_pkgnum = cust_pkg.pkgnum"; + # ...may not exist, if this was just canceled and not changed; in that + # case give it a "new pkgpart" that never equals the old pkgpart + push @where, "COALESCE(($new_pkgpart), 0) != cust_pkg.pkgpart"; + } ### # parse package class |