summaryrefslogtreecommitdiff
path: root/FS/FS/cust_pkg/Search.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-08-13 19:19:18 -0700
committerMark Wells <mark@freeside.biz>2014-08-13 19:19:18 -0700
commite5770f1c578ba47f730488df7fb5a03307ac71ab (patch)
tree8462127e16f1d4502532a3cad60e5f311b755196 /FS/FS/cust_pkg/Search.pm
parent847c27d7683856f420ed5306cb0ca395f1a6eb60 (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.pm23
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