From d9f0a98539cd8dd957ea9a4b5d77fbb739d43d2e Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Wed, 9 Mar 2016 11:17:03 -0800 Subject: [PATCH] package filters in a large package list, RT#39822 --- httemplate/elements/select-cust_location.html | 65 ++++++++++++++++ httemplate/elements/select-table.html | 2 +- httemplate/elements/tr-select-cust_location.html | 35 ++------- httemplate/view/cust_main/packages.html | 94 ++++++++++++++++++++++-- 4 files changed, 163 insertions(+), 33 deletions(-) create mode 100644 httemplate/elements/select-cust_location.html diff --git a/httemplate/elements/select-cust_location.html b/httemplate/elements/select-cust_location.html new file mode 100644 index 000000000..29563c50e --- /dev/null +++ b/httemplate/elements/select-cust_location.html @@ -0,0 +1,65 @@ + +<%init> + +my $conf = new FS::Conf; +my $countrydefault = $conf->config('countrydefault') || 'US'; + +my %opt = @_; +my $cust_main = $opt{'cust_main'}; +my $locationnum = $opt{'curr_value'}; + +$opt{'cust_location'} ||= [ $cust_main ? $cust_main->cust_location : () ]; + +my $addnew = exists($opt{addnew}) ? $opt{addnew} + : $cust_main ? 1 : ( $locationnum>0 ? 0 : 1 ); + + diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html index d7ec015f3..6fb6b388b 100644 --- a/httemplate/elements/select-table.html +++ b/httemplate/elements/select-table.html @@ -159,7 +159,7 @@ my $key = $opt{'value_col'} || $dbdef_table->primary_key; my $name_col = $opt{'name_col'}; -my $value = $opt{'curr_value'} || $opt{'value'}; +my $value = exists($opt{'curr_value'}) ? $opt{'curr_value'} : $opt{'value'}; $value = [ split(/\s*,\s*/, $value) ] if $opt{'multiple'} && $value =~ /,/; #my $addl_from = $opt{'addl_from'} || ''; diff --git a/httemplate/elements/tr-select-cust_location.html b/httemplate/elements/tr-select-cust_location.html index 7a5b43bb8..3078f2cbe 100644 --- a/httemplate/elements/tr-select-cust_location.html +++ b/httemplate/elements/tr-select-cust_location.html @@ -183,33 +183,14 @@ Example: <<%$th%> ALIGN="right"><% $opt{'label'} || emt('Service location') %>> - + + <& /elements/select-cust_location.html, + %opt, + 'curr_value' => $locationnum, + 'cust_location' => \@cust_location, + 'onchange' => 'locationnum_changed(this);', + &> + diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html index ddd92b3b0..9add4b2ad 100755 --- a/httemplate/view/cust_main/packages.html +++ b/httemplate/view/cust_main/packages.html @@ -44,6 +44,7 @@ table.hiddenrows { } + % # activate rolldown buttons for hidden package blocks +
+% my $br = 0; + +% if ( $total_pkgs > $maxrecords ) { + +% if ( 1 ) { #FS::pkg_class->num_pkg_class ) { + <% $br++ ? ' | ' : '' %> + Class: <& /elements/select-cust-pkg_class.html, + curr_value => scalar($cgi->param('classnum')), + onchange => 'classnum_changed(this);', + pre_options => [ '-1' => 'all', + '0' => '(none)', + ], + &> +% } + + <% $br++ ? ' | ' : '' %> + Status: <& /elements/select-cust_pkg-status.html, + curr_value => scalar($cgi->param('status')), + onchange => 'status_changed(this);', + &> + +% if ( 1 ) { #$cust_main->num_cust_location ) { + <% $br++ ? ' | ' : '' %> + Location: <& /elements/select-cust_location.html, + cust_main => $cust_main, + curr_value => scalar($cgi->param('locationnum')), + addnew => 0, + onchange => 'locationnum_changed(this);', + pre_options => [ '-1' => 'all', ], + &> +% } + + + +% } + +<% $br++ ? ' | ' : '' %> % if ( $cust_main->num_cancelled_pkgs ) { % if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me % || ( $conf->exists('hidecancelledpackages') @@ -92,24 +154,25 @@ if ( el ) el.scrollIntoView(true); % { % my $prev = $cgi->param('showcancelledpackages'); % $cgi->param('showcancelledpackages', 1); - ( <% mt('show') |h %> + <% mt('show') |h %> % $cgi->param('showcancelledpackages', $prev); % } else { % $cgi->param('showcancelledpackages', 0); - ( <% mt('hide') |h %> + <% mt('hide') |h %> % $cgi->param('showcancelledpackages', 1); % } - <% mt('cancelled packages') |h %> ) + <% mt('cancelled packages') |h %> % } +<% $br++ ? ' | ' : '' %> % if ( $cgi->param('showoldpackages') ) { % $cgi->param('showoldpackages', 0); - ( <% mt('hide old packages') |h %> ) + <% mt('hide old packages') |h %> % $cgi->param('showoldpackages', 1); % } else { % $cgi->param('showoldpackages', 1); - ( <% mt('show old packages') |h %> ) + <% mt('show old packages') |h %> % $cgi->param('showoldpackages', 0); % } @@ -218,6 +281,27 @@ unless ( $cgi->param('showoldpackages') ) { )"; } +if ( $cgi->param('classnum') =~ /^(\d+)$/ ) { + my $classnum = $1; + if ( $classnum == 0 ) { + $extra_sql .= " AND part_pkg.classnum IS NULL "; + } else { + $extra_sql .= " AND part_pkg.classnum = $classnum "; + } +} + +if ( $cgi->param('status') =~ /^([\w ]+)$/ ) { + my $status = $1; + $extra_sql .= ' AND '. FS::cust_pkg->status_sql. " = '$status' "; +} + +if ( $cgi->param('locationnum') =~ /^(\d+)$/ ) { + my $locationnum = $1; + $extra_sql .= " AND cust_pkg.locationnum = $locationnum "; +} + +my $total_pkgs = $cust_main->all_pkgs; + my $num_method = $hide_cancelled ? 'ncancelled_pkgs' : 'all_pkgs'; my $num_pkgs = $cust_main->$num_method({ 'addl_from' => $addl_from, -- 2.11.0