-<%
-#
-# $Id: cust_main_county.cgi,v 1.1 2001-07-30 07:36:03 ivan Exp $
-#
-# ivan@sisd.com 97-dec-13
-#
-# Changes to allow page to work at a relative position in server
-# bmccane@maxbaud.net 98-apr-3
-#
-# lose background, FS::CGI ivan@sisd.com 98-sep-2
-#
-# $Log: cust_main_county.cgi,v $
-# Revision 1.1 2001-07-30 07:36:03 ivan
-# templates!!!
-#
-# Revision 1.7 1999/04/09 04:22:34 ivan
-# also table()
-#
-# Revision 1.6 1999/04/09 03:52:55 ivan
-# explicit & for table/itable/ntable
-#
-# Revision 1.5 1999/01/19 05:13:26 ivan
-# for mod_perl: no more top-level my() variables; use vars instead
-# also the last s/create/new/;
-#
-# Revision 1.4 1999/01/18 09:41:16 ivan
-# all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl
-# (good idea anyway)
-#
-# Revision 1.3 1998/12/17 05:25:18 ivan
-# fix visual and other bugs
-#
-# Revision 1.2 1998/11/18 09:01:34 ivan
-# i18n! i18n!
-#
-
-use strict;
-use vars qw( $cgi $p $cust_main_county );
-use CGI;
-use CGI::Carp qw(fatalsToBrowser);
-use FS::UID qw(cgisuidsetup swapuid);
-use FS::Record qw(qsearch qsearchs);
-use FS::CGI qw(header menubar popurl table);
-use FS::cust_main_county;
-
-$cgi = new CGI;
-
-&cgisuidsetup($cgi);
-
-$p = popurl(2);
-
-print $cgi->header( '-expires' => 'now' ), header("Tax Rate Listing", menubar(
- 'Main Menu' => $p,
- 'Edit tax rates' => $p. "edit/cust_main_county.cgi",
-)),<<END;
- Click on <u>expand country</u> to specify a country's tax rates by state.
- <BR>Click on <u>expand state</u> to specify a state's tax rates by county.
- <BR><BR>
-END
-print &table(), <<END;
- <TR>
- <TH><FONT SIZE=-1>Country</FONT></TH>
- <TH><FONT SIZE=-1>State</FONT></TH>
- <TH>County</TH>
- <TH><FONT SIZE=-1>Tax</FONT></TH>
- </TR>
-END
+<% include( 'elements/browse.html',
+ 'title' => "Tax Rates $title",
+ 'name_singular' => 'tax rate',
+ 'menubar' => \@menubar,
+ 'html_init' => $html_init,
+ 'html_posttotal' => $html_posttotal,
+ 'html_form' => '<FORM NAME="taxesForm">',
+ 'html_foot' => $html_foot,
+ 'query' => {
+ 'table' => 'cust_main_county',
+ 'hashref' => $hashref,
+ 'order_by' =>
+ 'ORDER BY country, state, county, city, '.
+ 'district, taxclass, '.
+ "COALESCE(taxname, '')",
+ },
+ 'count_query' => $count_query,
+ 'header' => \@header,
+ 'header2' => \@header2,
+ 'fields' => \@fields,
+ 'align' => $align,
+ 'color' => \@color,
+ 'cell_style' => \@cell_style,
+ 'links' => \@links,
+ 'link_onclicks' => \@link_onclicks,
+ )
+%>
+<%once>
+
+my $conf = new FS::Conf;
+my $money_char = $conf->config('money_char') || '$';
+
+my $exempt_sub = sub {
+ my $cust_main_county = shift;
+
+ my @exempt = ();
+ push @exempt,
+ sprintf("$money_char%.2f per month", $cust_main_county->exempt_amount )
+ if $cust_main_county->exempt_amount > 0;
+
+ push @exempt, 'Setup fee'
+ if $cust_main_county->setuptax =~ /^Y$/i;
+
+ push @exempt, 'Recurring fee'
+ if $cust_main_county->recurtax =~ /^Y$/i;
+
+ [ map [ {'data'=>$_} ], @exempt ];
+};
+
+my $cs_oldrow;
+my $cell_style = '';
+my $cell_style_sub = sub {
+ my $row = shift;
+ if ( $cs_oldrow ne $row ) {
+ if ( $cs_oldrow ) {
+ if ( $cs_oldrow->country ne $row->country ) {
+ $cell_style = 'border-top:2px solid #000000';
+ } elsif ( $cs_oldrow->state ne $row->state ) {
+ $cell_style = 'border-top:1px solid #888888';
+ } elsif ( $cs_oldrow->county ne $row->county ) {
+ $cell_style = 'border-top:1px solid #cccccc';
+ } else {
+ $cell_style = '';
+ }
+ }
+ $cs_oldrow = $row;
+ }
+ return $cell_style;
+};
+
+#my $edit_link = [ "${p}edit/cust_main_county.html", 'taxnum' ];
+my $edit_link = [ 'javascript:void(0);', sub { ''; } ];
+
+my $edit_onclick = sub {
+ my $row = shift;
+ my $taxnum = $row->taxnum;
+ include( '/elements/popup_link_onclick.html',
+ 'action' => "${p}edit/cust_main_county.html?$taxnum",
+ 'actionlabel' => 'Edit tax rate',
+ 'height' => 420,
+ #default# 'width' => 540,
+ #default# 'color' => '#333399',
+ );
+};
+
+my $ex_oldrow;
+sub expand_link {
+ my %param = @_;
+
+ if ( $ex_oldrow eq $param{'row'} ) {
+ return '';
+ } else {
+ $ex_oldrow = $param{'row'};
+ }
+
+ my $taxnum = $param{'row'}->taxnum;
+ my $url = "${p}edit/cust_main_county-expand.cgi?$taxnum";
+
+ '<FONT SIZE="-1">'.
+ include( '/elements/popup_link.html',
+ 'label' => $param{'label'},
+ 'action' => $url,
+ 'actionlabel' => $param{'desc'},
+ 'height' => 420,
+ #default# 'width' => 540,
+ #default# 'color' => '#333399',
+ ).
+ '</FONT>';
+}
+
+sub add_link {
+ my %param = @_;
+
+ #if ( $ex_oldrow eq $param{'row'} ) {
+ # return '';
+ #} else {
+ # $ex_oldrow = $param{'row'};
+ #}
+
+ my %below = ( 'county' => 'city',
+ 'state' => 'county',
+ );
+ my $what = $below{ $param{'col' } };
+
+ my $taxnum = $param{'row'}->taxnum;
+ my $url = "${p}edit/cust_main_county-add.cgi?taxnum=$taxnum;what=$what";
+
+ '<FONT SIZE="-1">'.
+ include( '/elements/popup_link.html',
+ 'label' => $param{'label'},
+ 'action' => $url,
+ 'actionlabel' => $param{'desc'},
+ 'height' => 420,
+ #default# 'width' => 540,
+ #default# 'color' => '#333399',
+ ).
+ '</FONT>';
+}
+
+sub collapse_link {
+ my %param = @_;
+
+ my $row = $param{'row'};
+ my $col = $param{'col'};
+# return ''
+# if $col eq 'state' and $row->city
+# || qsearch({
+# 'table' => 'cust_main_county',
+# 'hashref' => {
+# 'country' => $row->country,
+# 'state' => $row->state,
+# 'city' => { op=>'!=', value=>'' },
+# },
+# 'order_by' => 'LIMIT 1',
+# });
+
+ my %below = ( 'county' => 'city',
+ 'state' => 'county',
+ );
+
+ #XXX can still show the link when you have some counties broken down into
+ #cities and others not :/
+
+ my $taxnum = $param{'row'}->taxnum;
+ my $url = "${p}edit/process/cust_main_county-collapse.cgi?taxnum=$taxnum;".
+ 'country='. uri_escape($cgi->param('country')). ';'.
+ 'state='. uri_escape($cgi->param('state')). ';'.
+ 'county='. uri_escape($cgi->param('county'));
+ $url = "javascript:collapse_areyousure('$url', '$below{$col}', '$col')";