diff options
author | ivan <ivan> | 2007-02-14 08:48:36 +0000 |
---|---|---|
committer | ivan <ivan> | 2007-02-14 08:48:36 +0000 |
commit | ab9e07a6507647e1aaf59df75edc54b40a745643 (patch) | |
tree | 5dab2799798284496a30c04aebcaf71c6858325f /httemplate/search | |
parent | b270bdf15e7ac5e9c47a127f82625da25ff16436 (diff) |
add more options to advanced package reporting
Diffstat (limited to 'httemplate/search')
-rwxr-xr-x | httemplate/search/cust_pkg.cgi | 87 | ||||
-rwxr-xr-x | httemplate/search/report_cust_pkg.html | 106 |
2 files changed, 147 insertions, 46 deletions
diff --git a/httemplate/search/cust_pkg.cgi b/httemplate/search/cust_pkg.cgi index bb2307641..84b083a3d 100755 --- a/httemplate/search/cust_pkg.cgi +++ b/httemplate/search/cust_pkg.cgi @@ -202,55 +202,70 @@ my $pkgpart = join (' OR pkgpart=', push @where, '(pkgpart=' . $pkgpart . ')' if $pkgpart; ### -# parse magic, legacy, etc. +# parse dates ### -my $orderby; -if ( $cgi->param('magic') && $cgi->param('magic') eq 'bill' ) { - $orderby = 'ORDER BY bill'; +my $orderby = ''; + +#false laziness w/report_cust_pkg.html +my %disable = ( + 'all' => {}, + 'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, }, + 'active' => { 'susp'=>1, 'cancel'=>1 }, + 'suspended' => { 'cancel' => 1 }, + 'cancelled' => {}, + '' => {}, +); + +foreach my $field (qw( setup last_bill bill susp expire cancel )) { + + my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, $field); + + next if $beginning == 0 && $ending == 4294967295 + or $disable{$cgi->param('status')}->{$field}; - my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); push @where, - #"bill >= $beginning ", - #"bill <= $ending", - "CASE WHEN bill IS NULL THEN 0 ELSE bill END >= $beginning ", - "CASE WHEN bill IS NULL THEN 0 ELSE bill END <= $ending", - #'( cancel IS NULL OR cancel = 0 )' - ; + "$field IS NOT NULL", + "$field >= $beginning", + "$field <= $ending"; -} else { + $orderby ||= "ORDER BY $field"; - if ( $cgi->param('magic') && - $cgi->param('magic') =~ /^(active|inactive|suspended|cancell?ed)$/ - ) { +} - $orderby = 'ORDER BY pkgnum'; +$orderby ||= 'ORDER BY bill'; - if ( $cgi->param('pkgpart') =~ /^(\d+)$/ ) { - push @where, "pkgpart = $1"; - } +### +# parse magic, legacy, etc. +### - } elsif ( $query eq 'pkgnum' ) { +if ( $cgi->param('magic') && + $cgi->param('magic') =~ /^(active|inactive|suspended|cancell?ed)$/ +) { - $orderby = 'ORDER BY pkgnum'; + $orderby = 'ORDER BY pkgnum'; - } elsif ( $query eq 'APKG_pkgnum' ) { - - $orderby = 'ORDER BY pkgnum'; - - push @where, '0 < ( - SELECT count(*) FROM pkg_svc - WHERE pkg_svc.pkgpart = cust_pkg.pkgpart - AND pkg_svc.quantity > ( SELECT count(*) FROM cust_svc - WHERE cust_svc.pkgnum = cust_pkg.pkgnum - AND cust_svc.svcpart = pkg_svc.svcpart - ) - )'; - - } else { - die "Empty or unknown QUERY_STRING!"; + if ( $cgi->param('pkgpart') =~ /^(\d+)$/ ) { + push @where, "pkgpart = $1"; } +} elsif ( $query eq 'pkgnum' ) { + + $orderby = 'ORDER BY pkgnum'; + +} elsif ( $query eq 'APKG_pkgnum' ) { + + $orderby = 'ORDER BY pkgnum'; + + push @where, '0 < ( + SELECT count(*) FROM pkg_svc + WHERE pkg_svc.pkgpart = cust_pkg.pkgpart + AND pkg_svc.quantity > ( SELECT count(*) FROM cust_svc + WHERE cust_svc.pkgnum = cust_pkg.pkgnum + AND cust_svc.svcpart = pkg_svc.svcpart + ) + )'; + } ## diff --git a/httemplate/search/report_cust_pkg.html b/httemplate/search/report_cust_pkg.html index 92138b507..a2316e257 100755 --- a/httemplate/search/report_cust_pkg.html +++ b/httemplate/search/report_cust_pkg.html @@ -12,23 +12,77 @@ $cgi->param('agentnum'), ) %> - <% include( '/elements/tr-select-cust_pkg-status.html' ) %> + + <% include( '/elements/tr-select-cust_pkg-status.html', '', + 'onchange' => 'status_changed(this);', + ) + %> + + <SCRIPT TYPE="text/javascript"> + + function status_changed(what) { + +% foreach my $status ( '', FS::cust_pkg->statuses() ) { + + if ( what.options[what.selectedIndex].value == '<% $status %>' ) { + +% foreach my $field (qw( setup last_bill bill susp expire cancel )) { +% if ( $disable{$status}->{$field} ) { + + what.form.<% $field %>_beginning_text.disabled = true; + what.form.<% $field %>_ending_text.disabled = true; + + what.form.<% $field %>_beginning_button.style.display = 'none'; + what.form.<% $field %>_ending_button.style.display = 'none'; + what.form.<% $field %>_beginning_disabled.style.display = ''; + what.form.<% $field %>_ending_disabled.style.display = ''; + +% } else { + + what.form.<% $field %>_beginning_text.disabled = false; + what.form.<% $field %>_ending_text.disabled = false; + + what.form.<% $field %>_beginning_button.style.display = ''; + what.form.<% $field %>_ending_button.style.display = ''; + what.form.<% $field %>_beginning_disabled.style.display = 'none'; + what.form.<% $field %>_ending_disabled.style.display = 'none'; + +% } +% } + + } + +% } + + } + + </SCRIPT> + <% include( '/elements/tr-select-pkg_class.html', '', 'pre_options' => [ '0' => 'all' ], 'empty_label' => '(empty class)', ) %> - <% include( '/elements/tr-selectmultiple-part_pkg.html' ) %> - <TR> - <TD ALIGN="right" VALIGN="center">Next bill date</TD> - <TD> - <TABLE> - <% include( '/elements/tr-input-beginning_ending.html' ) %> - </TABLE> - </TD> - </TR> +% foreach my $field (qw( setup last_bill bill susp expire cancel )) { + + <TR> + <TD ALIGN="right" VALIGN="center"><% $label{$field} %></TD> + <TD> + <TABLE> + <% include( '/elements/tr-input-beginning_ending.html', + prefix => $field, + layout => 'horiz', + ) + %> + </TABLE> + </TD> + </TR> + +% } + <% include( '/elements/tr-selectmultiple-part_pkg.html' ) %> + <TR> <TH BGCOLOR="#e8e8e8" COLSPAN=2> </TH> </TR> @@ -52,3 +106,35 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('List packages'); </%init> +<%once> + +my %label = ( + 'setup' => 'Setup', + 'last_bill' => 'Last bill', + 'bill' => 'Next bill', + 'susp' => 'Suspended', + 'expire' => 'Expires', + 'cancel' => 'Cancelled', +); + +#false laziness w/cust_pkg.cgi +my %disable = ( + 'all' => {}, + 'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, }, + 'active' => { 'susp'=>1, 'cancel'=>1 }, + 'suspended' => { 'cancel' => 1 }, + 'cancelled' => {}, + '' => {}, +); + +#hmm? +my %checkbox = ( + 'setup' => 0, + 'last_bill' => 0, + 'bill' => 0, + 'susp' => 1, + 'expire' => 1, + 'cancel' => 1, +); + +</%once> |