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),
6 'table' => 'part_pkg_taxproduct',
8 'order_by' => 'ORDER BY taxproduct',
10 'count_query' => $count_query,
15 'link_onclicks' => \@link_onclicks,
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 :.
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",
32 $service_labels{$row->get('code')} =
33 sprintf('%02d %s', $row->get('code'), $row->get('label'));
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",
41 $trans_labels{$row->get('code')} =
42 sprintf('%02d %s', $row->get('code'), $row->get('label'));
44 $service_labels{''} = $trans_labels{''} = '';
46 @service_codes = sort {$a <=> $b} keys %service_labels;
47 @trans_codes = sort {$a <=> $b} keys %trans_labels;
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()',
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()',
68 <& /elements/hidden.html,
70 curr_value => $cgi->param('id'),
76 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
78 $cgi->param('id') =~ /^\w+$/ or die "missing id parameter";
79 my $id = $cgi->param('id');
81 my $select_onclick = sub {
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';".
92 my $title = 'Tax Products';
94 my $hashref = { data_vendor => 'billsoft' };
96 my ($service_code, $trans_code, $taxproduct);
97 if ( $cgi->param('service_code') =~ /^(\d+)$/ ) {
99 $taxproduct = sprintf('%06d', $service_code);
104 if ( $cgi->param('trans_code') =~ /^(\d+)$/ ) {
106 $taxproduct .= sprintf('%06d', $trans_code);
107 } elsif ( $service_code ) {
111 $hashref->{taxproduct} = { op => 'LIKE', value => $taxproduct };
113 my $count_query = "SELECT COUNT(*) FROM part_pkg_taxproduct ".
114 "WHERE data_vendor = 'billsoft' AND ".
115 "taxproduct LIKE '$taxproduct'";
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]));
126 my $sub_trans_desc = sub {
144 my @link_onclicks = ( $select_onclick, $select_onclick );