diff options
author | Ivan Kohler <ivan@freeside.biz> | 2016-12-22 15:30:56 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2016-12-22 15:30:56 -0800 |
commit | 399013698f9ba6ff2c9861a839f424da9609825e (patch) | |
tree | 69b3b1340b39062b2eacf484ee926f9630108f0e /FS | |
parent | 36b5fc9c511af4fdf1f09530129352b3d7f2685e (diff) |
package search on null dates, RT#73715
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_pkg.pm | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index b2e64002c..c1039b59f 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -5533,29 +5533,38 @@ sub search { foreach my $field (qw( setup last_bill bill adjourn susp expire contract_end change_date cancel )) { - next unless exists($params->{$field}); + if ( $params->{$field.'_null'} ) { - my($beginning, $ending) = @{$params->{$field}}; + push @where, "cust_pkg.$field IS NULL"; + # this should surely be obsoleted by now: OR cust_pkg.$field == 0 - next if $beginning == 0 && $ending == 4294967295; + } else { - push @where, - "cust_pkg.$field IS NOT NULL", - "cust_pkg.$field >= $beginning", - "cust_pkg.$field <= $ending"; - - $orderby ||= "ORDER BY cust_pkg.$field"; - - if ( $field eq 'setup' ) { - $exclude_change_from = 1; - } elsif ( $field eq 'cancel' ) { - $exclude_change_to = 1; - } elsif ( $field eq 'change_date' ) { - # if we are given setup and change_date ranges, and the setup date - # falls in _both_ ranges, then include the package whether it was - # a change or not - $exclude_change_from = 0; + next unless exists($params->{$field}); + + my($beginning, $ending) = @{$params->{$field}}; + + next if $beginning == 0 && $ending == 4294967295; + + push @where, + "cust_pkg.$field IS NOT NULL", + "cust_pkg.$field >= $beginning", + "cust_pkg.$field <= $ending"; + + $orderby ||= "ORDER BY cust_pkg.$field"; + + if ( $field eq 'setup' ) { + $exclude_change_from = 1; + } elsif ( $field eq 'cancel' ) { + $exclude_change_to = 1; + } elsif ( $field eq 'change_date' ) { + # if we are given setup and change_date ranges, and the setup date + # falls in _both_ ranges, then include the package whether it was + # a change or not + $exclude_change_from = 0; + } } + } if ($exclude_change_from) { @@ -5568,6 +5577,7 @@ sub search { WHERE cust_pkg.pkgnum = changed_to_pkg.change_pkgnum )"; } + } $orderby ||= 'ORDER BY bill'; |