self-service improvements, RT10883
[freeside.git] / httemplate / browse / tax_class.html
1 <% include( 'elements/browse.html',
2      'title'             => "Tax classes $title",
3      'name_singular'     => 'tax class',
4      'menubar'           => \@menubar,
5      'html_init'         => $html_init,
6      'query'             => {
7                               'table'     => 'tax_class',
8                               'hashref'   => $hashref,
9                               'extra_sql' => $where,
10                               'order_by'  => 'ORDER BY taxclass',
11                             },
12      'count_query'       => $count_query,
13      'header'            => \@header,
14      'fields'            => \@fields,
15      'align'             => $align,
16      'links'             => \@links,
17      'link_onclicks'     => \@link_onclicks,
18      'disable_maxselect' => 1,
19      'disable_total'     => 1,
20   )
21 %>
22 <%once>
23
24 my $conf = new FS::Conf;
25
26 </%once>
27 <%init>
28
29 die "access denied"
30   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
31
32 my $title = '';
33 my @menubar = ();
34 my $html_init = '';
35 my $hashref = {};
36 my @where = ();
37 my $onclick = 'return true;';
38
39 my $omit = '';
40 if ( $cgi->param('magic') eq 'omit' ) {
41   $cgi->param('omit') =~ /^([,\d]+)$/;
42   $omit = $1;
43   $title .= " unselected";
44   push @where, map { "taxclassnum != $_" } grep {$_} split( /,/, $omit );
45   $onclick = sub{ 'parent.doSelect('. shift->taxclassnum. '); return false;' } 
46 }
47 $cgi->delete('omit');
48
49 my $data_vendor = '';
50 if ( $cgi->param('datavendor') =~ /^([\w]+)$/ ) {
51   $data_vendor = $1;
52   $title .= " for data vendor $1";
53   push @where, 'data_vendor = '. dbh->quote($data_vendor);
54 }
55 $cgi->delete('data_vendor');
56
57 my $selected = '';
58 if (    $cgi->param('magic') eq 'select')
59 {
60   $cgi->param('selected') =~ /^([,\d]*)$/;
61   $selected = $1;
62   $title = " selected";
63   my @clauses =  map { "taxclassnum = $_" } grep {$_} split( /,/, $selected );
64   @where =  scalar(@clauses) ? '( '. join(' OR ', @clauses) .')' : '1=0';
65   $onclick = sub{ 'parent.doUnselect('. shift->taxclassnum. '); return false;' } ;
66 }
67 $cgi->delete('selected');
68
69
70 if ( $data_vendor ) {
71   push @menubar, 'View all tax classes' => $p.'browse/tax_class.html';
72 }
73
74 $cgi->param('dummy', 1);
75
76 #restore this so pagination works
77 $cgi->param('omit', $omit ) if $omit;
78 $cgi->param('selected', $selected ) if $selected;
79 $cgi->param('data_vendor', $data_vendor ) if $data_vendor;
80
81 my $where = scalar(@where) ? 'WHERE '. join( ' AND ', @where ) : '';
82 my $count_query = 'SELECT COUNT(*) FROM tax_class '. $where;
83
84 my $link = [ 'javascript:void(0);', sub{ ''; } ];
85
86 my @header        = ( '', '', '' );
87 my @links         = ( $link, $link, $link );
88 my @link_onclicks = ( $onclick, $onclick, $onclick );
89 my $align = 'lll';
90 my @fields = ( 'data_vendor', 'taxclass', 'description' );
91
92 </%init>