scalar cgi param
[freeside.git] / httemplate / browse / part_pkg_taxproduct / billsoft.html
1 <& /elements/header-popup.html, $title &>
2 <& /browse/elements/browse.html,
3   'name_singular'  => 'tax product',
4   'html_form'      => include('.form', $service_code, $trans_code),
5   'query'          => {
6                         'table'     => 'part_pkg_taxproduct',
7                         'hashref'   => $hashref,
8                         'order_by'  => 'ORDER BY taxproduct',
9                       },
10   'count_query'    => $count_query,
11   'header'         => \@header,
12   'fields'         => \@fields,
13   'align'          => $align,
14   'links'          => [],
15   'link_onclicks'  => \@link_onclicks,
16   'nohtmlheader'   => 1,
17 &>
18 <%shared>
19 # populate dropdowns
20
21 # taxproduct is 12 digits.  First half is the service type code, second
22 # half is the transaction code.  Description is also two parts, corresponding
23 # to those codes, separated with a :.
24
25 my (@service_codes, @trans_codes, %service_labels, %trans_labels);
26 foreach my $row ( qsearch({
27   table   => 'part_pkg_taxproduct',
28   select  => 'DISTINCT substr(taxproduct, 1, 6) AS code, '.
29              "substring(description from '(.*):') AS label",
30   }))
31 {
32   $service_labels{$row->get('code')} =
33     sprintf('%02d %s', $row->get('code'), $row->get('label'));
34 }
35 foreach my $row ( qsearch({
36   table   => 'part_pkg_taxproduct',
37   select  => 'DISTINCT substr(taxproduct, 7, 6) AS code, '.
38              "substring(description from ':(.*)') AS label",
39   }))
40 {
41   $trans_labels{$row->get('code')} =
42     sprintf('%02d %s', $row->get('code'), $row->get('label'));
43 }
44 $service_labels{''} = $trans_labels{''} = '';
45
46 @service_codes = sort {$a <=> $b} keys %service_labels;
47 @trans_codes = sort {$a <=> $b} keys %trans_labels;
48
49 </%shared>
50 <%def .form>
51 % my ($service_code, $trans_code) = @_;
52 <FORM ACTION="<% $cgi->url %>" METHOD="GET">
53 <& /elements/select.html,
54   field       => 'service_code',
55   options     => \@service_codes,
56   labels      => \%service_labels,
57   curr_value  => $service_code,
58   onchange    => 'this.form.submit()',
59 &>
60 &nbsp;
61 <& /elements/select.html,
62   field       => 'trans_code',
63   options     => \@trans_codes,
64   labels      => \%trans_labels,
65   curr_value  => $trans_code,
66   onchange    => 'this.form.submit()',
67 &>
68 <& /elements/hidden.html,
69   field       => 'id',
70   curr_value  => scalar($cgi->param('id')),
71 &>
72 </%def>
73 <%init>
74
75 die "access denied"
76   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
77
78 $cgi->param('id') =~ /^\w+$/ or die "missing id parameter";
79 my $id = $cgi->param('id');
80
81 my $select_onclick = sub {
82   my $row = shift;
83   my $taxnum = $row->taxproductnum;
84   my $desc = $row->description;
85   "parent.document.getElementById('$id').value = $taxnum;".
86   "parent.document.getElementById('${id}_description').value = '$desc';".
87   "parent.cClick();";
88 }
89   if $id;
90
91 my @menubar;
92 my $title = 'Tax Products';
93
94 my $hashref = { data_vendor => 'billsoft' };
95
96 my ($service_code, $trans_code, $taxproduct);
97 if ( $cgi->param('service_code') =~ /^(\d+)$/ ) {
98   $service_code = $1;
99   $taxproduct = sprintf('%06d', $service_code);
100 } else {
101   $taxproduct = '%';
102 }
103
104 if ( $cgi->param('trans_code') =~ /^(\d+)$/ ) {
105   $trans_code = $1;
106   $taxproduct .= sprintf('%06d', $trans_code);
107 } elsif ( $service_code ) {
108   $taxproduct .= '%';
109 }
110
111 $hashref->{taxproduct} = { op => 'LIKE', value => $taxproduct };
112
113 my $count_query = "SELECT COUNT(*) FROM part_pkg_taxproduct ".
114                   "WHERE data_vendor = 'billsoft' AND ".
115                   "taxproduct LIKE '$taxproduct'";
116
117 my $sub_service_desc = sub {
118   my $ppt = shift; #part_pkg_taxproduct
119   my @codes = ($ppt->taxproduct =~ /(\d{6})(\d{6})/);
120   my @descs = split(':', $ppt->description);
121   $ppt->set('service_desc' => sprintf('%02d %s', $codes[0], $descs[0]));
122   $ppt->set('trans_desc'   => sprintf('%02d %s', $codes[1], $descs[1]));
123   $ppt->service_desc;
124 };
125
126 my $sub_trans_desc = sub {
127   my $ppt = shift;
128   $ppt->trans_desc;
129 };
130
131 my @fields = (
132   $sub_service_desc,
133   $sub_trans_desc,
134   'note'
135 );
136   
137 my @header = (
138   'Service Type',
139   'Transaction',
140   '',
141 );
142
143 my $align = 'lll';
144 my @link_onclicks = ( $select_onclick, $select_onclick );
145
146 </%init>