- $hashref->{country} |
-END
+my $county = '';
+if ( $country && $state &&
+ $cgi->param('county') =~
+ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=\[\]]+)$/
+ )
+{
+ $county = $1;
+ if ( $county eq '__NONE__' ) {
+ $title = "No county, $title";
+ } else {
+ $title = "$county county, $title";
+ }
+}
+$cgi->delete('county');
- my $j;
- if ( $sup ) {
- $sup--;
+my $city = '';
+if ( $country && $state && $county &&
+ $cgi->param('city') =~
+ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=\[\]]+)$/
+ )
+{
+ $city = $1;
+ if ( $city eq '__NONE__' ) {
+ $title = "No city, $title";
} else {
+ $title = "$city city, $title";
+ }
+}
+$cgi->delete('city');
- #lookahead
- for ( $j=1; $i+$j<@regions; $j++ ) {
- last if $hashref->{country} ne $regions[$i+$j]->country
- || $hashref->{state} ne $regions[$i+$j]->state
- || $hashref->{tax} != $regions[$i+$j]->tax
- || $hashref->{exempt_amount} != $regions[$i+$j]->exempt_amount;
- }
+$title = " for $title" if $title;
- my $newsup=0;
- if ( $j>1 && $i+$j+1 < @regions
- && ( $hashref->{state} ne $regions[$i+$j+1]->state
- || $hashref->{country} ne $regions[$i+$j+1]->country
- )
- && ( ! $i
- || $hashref->{state} ne $regions[$i-1]->state
- || $hashref->{country} ne $regions[$i-1]->country
- )
- ) {
- $sup = $j-1;
- } else {
- $j = 1;
- }
+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';
+}
- print "{state}
- ? ' BGCOLOR="#ffffff">'. $hashref->{state}
- : qq! BGCOLOR="#cccccc">(ALL) !.
- qq!expand country!;
+$cgi->param('dummy', 1);
- print qq! collapse state! if $j>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 )";
- print " | ";
- }
+$filter_change .= " +';city=' + encodeURIComponent( document.getElementById('city').options[document.getElementById('city').selectedIndex].value )"
+ if $conf->exists('enable_taxclasses');
-# $sup=$newsup;
+$filter_change .= ";";
- print "{county} ) {
- print ' BGCOLOR="#ffffff">'. $hashref->{county};
+#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('city', $city ) if $city;
+$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 .=
+ '';
+}
+
+if ( $conf->exists('enable_taxclasses') ) {
+ my @cities = ( $country && $state && $county ) ? cities($county, $state, $country) : ();
+ if ( scalar(@cities) > 1 ) {
+ $html_posttotal .=
+ ' show city: '.
+ include('/elements/select-city.html',
+ 'country' => $country,
+ 'state' => $state,
+ 'county' => $county,
+ 'city' => $city,
+ 'onchange' => $filter_change,
+ 'empty_label' => '(all)',
+ 'empty_data_label' => '(none)',
+ 'empty_data_value' => '__NONE__',
+ 'disable_empty' => 0,
+ 'disable_cityupdate' => 1,
+ );
} else {
- print ' BGCOLOR="#cccccc">(ALL)';
- if ( $hashref->{state} ) {
- print qq!!.
- qq!expand state!;
+ $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 "$hashref->{tax}% | ".
- '$'.
- sprintf("%.2f", $hashref->{exempt_amount} || 0). ' | '.
- '';
+
+
+select all |
+unselect all |
+toggle all
+
+Add new tax to selected
+|
+Bulk edit selected
+|
+Bulk edit rate only 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 {
+ $hashref->{'county'} = $county;
+ $count_query .= ' AND county = '. dbh->quote($county);
+ }
+}
+if ( $city ) {
+ if ( $city eq '__NONE__' ) {
+ $hashref->{'city'} = '';
+ $count_query .= " AND ( city = '' OR city IS NULL ) ";
+ } else {
+ $hashref->{'city'} = $city;
+ $count_query .= ' AND city = '. dbh->quote($city);
+ }
+}
+if ( $taxclass ) {
+ $hashref->{'taxclass'} = $taxclass;
+ $count_query .= ( $count_query =~ /WHERE/i ? ' AND ' : ' WHERE ' ).
+ ' taxclass = '. dbh->quote($taxclass);
}
-print <
- |