+ function collapse_areyousure(href,col,above) {
+ if (confirm('Are you sure you want to remove all ' + col + ' tax rates for this ' + above + '?') == true)
+ window.location.href = href;
+ }
+
+
+ Click on add states to specify a country's tax rates by state or province.
+
Click on add counties to specify a state's tax rates by county, or remove counties to remove per-county tax rates.
+
Click on add cities to specify a county's tax rates by city, or remove cities to remove per-city tax rates.
+END
+
+$html_init .= "
Click on separate taxclasses to specify taxes per taxclass."
+ if $enable_taxclasses;
+$html_init .= '
';
- print "{county} ) {
- print ' BGCOLOR="#ffffff">'. $hashref->{county};
+$html_init .= include('/elements/init_overlib.html');
+
+my $title = '';
+
+my $country = '';
+if ( $cgi->param('country') =~ /^(\w\w)$/ ) {
+ $country = $1;
+ $title = $country;
+}
+$cgi->delete('country');
+
+my $state = '';
+if ( $country && $cgi->param('state') =~ /^([\w \-\'\[\]]+)$/ ) {
+ $state = $1;
+ $title = "$state, $title";
+}
+$cgi->delete('state');
+
+my $county = '';
+if ( $country && $state &&
+ $cgi->param('county') =~
+ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=\[\]]+)$/
+ )
+{
+ $county = $1;
+ if ( $county eq '__NONE__' ) {
+ $title = "No county, $title";
} else {
- print ' BGCOLOR="#cccccc">(ALL)';
- if ( $hashref->{state} ) {
- print qq!!.
- qq!expand state!;
+ $title = "$county county, $title";
+ }
+}
+$cgi->delete('county');
+
+$title = " for $title" if $title;
+
+my $taxclass = '';
+if ( $cgi->param('taxclass') =~ /^([\w \-]+)$/ ) {
+ $taxclass = $1;
+ $title .= " for $taxclass tax class";
+}
+$cgi->delete('taxclass');
+
+if ( $country || $taxclass ) {
+ push @menubar, 'View all tax rates' => $p.'browse/cust_main_county.cgi';
+}
+
+$cgi->param('dummy', 1);
+
+my $filter_change =
+ "window.location = '". $cgi->self_url.
+ ";country=' + encodeURIComponent( document.getElementById('country').options[document.getElementById('country').selectedIndex].value ) + ".
+ "';state=' + encodeURIComponent( document.getElementById('state').options[document.getElementById('state').selectedIndex].value ) +".
+ "';county=' + encodeURIComponent( document.getElementById('county').options[document.getElementById('county').selectedIndex].value );";
+
+#restore this so pagination works
+$cgi->param('country', $country) if $country;
+$cgi->param('state', $state ) if $state;
+$cgi->param('county', $county ) if $county;
+$cgi->param('taxclass', $county ) if $taxclass;
+
+my $html_posttotal =
+ ' ( show country: '.
+ include('/elements/select-country.html',
+ 'country' => $country,
+ 'onchange' => $filter_change,
+ 'empty_label' => '(all)',
+ 'disable_empty' => 0,
+ 'disable_stateupdate' => 1,
+ );
+
+my %states_hash = $country ? states_hash($country) : ();
+if ( scalar(keys(%states_hash)) > 1 ) {
+ $html_posttotal .=
+ ' show state: '.
+ include('/elements/select-state.html',
+ 'country' => $country,
+ 'state' => $state,
+ 'onchange' => $filter_change,
+ 'empty_label' => '(all)',
+ 'disable_empty' => 0,
+ 'disable_countyupdate' => 1,
+ );
+} else {
+ $html_posttotal .=
+ '';
+}
+
+my @counties = ( $country && $state ) ? counties($state, $country) : ();
+if ( scalar(@counties) > 1 ) {
+ $html_posttotal .=
+ ' show county: '.
+ include('/elements/select-county.html',
+ 'country' => $country,
+ 'state' => $state,
+ 'county' => $county,
+ 'onchange' => $filter_change,
+ 'empty_label' => '(all)',
+ 'empty_data_label' => '(none)',
+ 'empty_data_value' => '__NONE__',
+ 'disable_empty' => 0,
+ 'disable_cityupdate' => 1,
+ );
+} else {
+ $html_posttotal .=
+ '';
+}
+
+$html_posttotal .= ' )';
+
+my $bulk_popup_link =
+ include( '/elements/popup_link_onclick.html',
+ 'action' => "${p}edit/bulk-cust_main_county.html?taxnum=MAGIC_taxnum_MAGIC",
+ 'actionlabel' => 'Bulk add new tax',
+ 'nofalse' => 1,
+ 'height' => 420,
+ #default# 'width' => 540,
+ #default# 'color' => '#333399',
+ );
+
+my $html_foot = <
+
+ function setAll(setTo) {
+ theForm = document.taxesForm;
+ for (i=0,n=theForm.elements.length;i";
- print "{taxclass} ) {
- print ' BGCOLOR="#ffffff">'. $hashref->{taxclass};
- } else {
- print ' BGCOLOR="#cccccc">(ALL)';
- if ( $enable_taxclasses ) {
- print qq!!.
- qq!expand taxclasses!;
+ function toggleAll() {
+ theForm = document.taxesForm;
+ for (i=0,n=theForm.elements.length;i 1920 ) { // IE 2083 URL limit
+ alert('Too many selections'); // should do some session thing...
+ return false;
+ }
+ bulk_popup_link = bulk_popup_link.replace(/MAGIC_taxnum_MAGIC/, bulkstring);
+ eval(bulk_popup_link);
}
- print " | ";
- print "{taxname} ) {
- print ' BGCOLOR="#ffffff">'. $hashref->{taxname};
+
+
+
+select all |
+unselect all |
+toggle all
+
+Add new tax to selected
+|
+Bulk edit selected
+
+END
+
+my $hashref = {};
+my $count_query = 'SELECT COUNT(*) FROM cust_main_county';
+if ( $country ) {
+ $hashref->{'country'} = $country;
+ $count_query .= ' WHERE country = '. dbh->quote($country);
+}
+if ( $state ) {
+ $hashref->{'state'} = $state;
+ $count_query .= ' AND state = '. dbh->quote($state);
+}
+if ( $county ) {
+ if ( $county eq '__NONE__' ) {
+ $hashref->{'county'} = '';
+ $count_query .= " AND ( county = '' OR county IS NULL ) ";
} else {
- print ' BGCOLOR="#cccccc">Tax';
+ $hashref->{'county'} = $county;
+ $count_query .= ' AND county = '. dbh->quote($county);
}
- print " | ";
+}
+if ( $taxclass ) {
+ $hashref->{'taxclass'} = $taxclass;
+ $count_query .= ( $count_query =~ /WHERE/i ? ' AND ' : ' WHERE ' ).
+ ' taxclass = '. dbh->quote($taxclass);
+}
+
+
+$cell_style = '';
+
+my @header = ( 'Country', 'State/Province', 'County', 'City' );
+my @header2 = ( '', '', '', '', );
+my @links = ( '', '', '', '', );
+my @link_onclicks = ( '', '', '', '', );
+my $align = 'llll';
- print "$hashref->{tax}% | ".
- '$'.
- sprintf("%.2f", $hashref->{exempt_amount} || 0). ' | '.
- '';
+my @fields = (
+ sub { my $country = shift->country;
+ code2country($country). " ($country)";
+ },
+ sub { state_label($_[0]->state, $_[0]->country).
+ ( $_[0]->state
+ ? ''
+ : ' '. expand_link( desc => 'Add States',
+ row => $_[0],
+ label => 'add states',
+ )
+ )
+ },
+ sub { $_[0]->county
+ ? $_[0]->county. ' '.
+ collapse_link( col => 'county',
+ label=> 'remove counties',
+ row => $_[0],
+ )
+ : '(all) '.
+ expand_link( desc => 'Add Counties',
+ row => $_[0],
+ label => 'add counties',
+ );
+ },
+ sub { $_[0]->city
+ ? $_[0]->city. ' '.
+ collapse_link( col => 'city',
+ label=> 'remove cities',
+ row => $_[0],
+ )
+ : '(all) '.
+ expand_link( desc => 'Add Cities',
+ row => $_[0],
+ label => 'add cities',
+ );
+ },
+);
+my @color = (
+ '000000',
+ sub { shift->state ? '000000' : '999999' },
+ sub { shift->county ? '000000' : '999999' },
+ sub { shift->city ? '000000' : '999999' },
+);
+
+if ( $conf->exists('enable_taxclasses') ) {
+ push @header, qq!Tax class (add new)!;
+ push @header2, '(per-package classification)';
+ push @fields, sub { $_[0]->taxclass || '(all) '.
+ separate_taxclasses_link($_[0], 'Separate Taxclasses').
+ 'separate taxclasses'
+ };
+ push @color, sub { shift->taxclass ? '000000' : '999999' };
+ push @links, '';
+ push @link_onclicks, '';
+ $align .= 'l';
}
-print <
- |