X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fbrowse%2Fcust_main_county.cgi;h=736d7fdbe19ad67a220b8bfb967736cc86a01e3e;hb=04a69f9d197efee6fa396bd35d04ae553e669978;hp=12bdeb333b486612064984db4bf8abcd1ff459ac;hpb=1d920e3661c29398763d05c82bbe3a493a19fbae;p=freeside.git diff --git a/httemplate/browse/cust_main_county.cgi b/httemplate/browse/cust_main_county.cgi index 12bdeb333..736d7fdbe 100755 --- a/httemplate/browse/cust_main_county.cgi +++ b/httemplate/browse/cust_main_county.cgi @@ -4,6 +4,8 @@ 'menubar' => \@menubar, 'html_init' => $html_init, 'html_posttotal' => $html_posttotal, + 'html_form' => '
', + 'html_foot' => $html_foot, 'query' => { 'table' => 'cust_main_county', 'hashref' => $hashref, @@ -30,18 +32,6 @@ my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; -my @manual_countries = ( 'US', 'CA', 'AU', 'NZ', 'GB' ); #some manual ordering -my @all_countries = ( @manual_countries, - grep { my $c = $_; ! grep { $c eq $_ } @manual_countries } - map { $_->country } - qsearch({ - 'select' => 'country', - 'table' => 'cust_main_county', - 'hashref' => {}, - 'extra_sql' => 'GROUP BY country', - }) - ); - my $exempt_sub = sub { my $cust_main_county = shift; @@ -85,17 +75,31 @@ my $edit_link = [ 'javascript:void(0);', sub { ''; } ]; my $edit_onclick = sub { my $row = shift; my $taxnum = $row->taxnum; - my $color = '#333399'; - qq!overlib( OLiframeContent('${p}edit/cust_main_county.html?$taxnum', 540, 420, 'edit_cust_main_county_popup' ), CAPTION, 'Edit tax rate', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '$color', CGCOLOR, '$color' ); return false;!; + 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', + ); }; sub expand_link { - my( $row, $desc ) = @_; - my $taxnum = $row->taxnum; + my %param = @_; + + my $taxnum = $param{'row'}->taxnum; my $url = "${p}edit/cust_main_county-expand.cgi?$taxnum"; - my $color = '#333399'; - qq!!; + ''. + include( '/elements/popup_link.html', + 'label' => $param{'label'}, + 'action' => $url, + 'actionlabel' => $param{'desc'}, + 'height' => 420, + #default# 'width' => 540, + #default# 'color' => '#333399', + ). + ''; } sub separate_taxclasses_link { @@ -125,12 +129,7 @@ $html_init .= "
Click on separate taxclasses to specify taxes per taxc if $enable_taxclasses; $html_init .= '

'; -$html_init .= qq( - - - - -); +$html_init .= include('/elements/init_overlib.html'); my $title = ''; @@ -142,16 +141,24 @@ if ( $cgi->param('country') =~ /^(\w\w)$/ ) { $cgi->delete('country'); my $state = ''; -if ( $cgi->param('state') =~ /^([\w \-\'\[\]]+)$/ ) { +if ( $country && $cgi->param('state') =~ /^([\w \-\'\[\]]+)$/ ) { $state = $1; $title = "$state, $title"; } $cgi->delete('state'); my $county = ''; -if ( $cgi->param('county') =~ /^([\w \-\'\[\]]+)$/ ) { +if ( $country && $state && + $cgi->param('county') =~ + /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=\[\]]+)$/ + ) +{ $county = $1; - $title = "$county county, $title"; + if ( $county eq '__NONE__' ) { + $title = "No county, $title"; + } else { + $title = "$county county, $title"; + } } $cgi->delete('county'); @@ -170,9 +177,11 @@ if ( $country || $taxclass ) { $cgi->param('dummy', 1); -my $country_filter_change = - "window.location = '". - $cgi->self_url. ";country=' + this.options[this.selectedIndex].value;"; +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; @@ -181,15 +190,128 @@ $cgi->param('county', $county ) if $county; $cgi->param('taxclass', $county ) if $taxclass; my $html_posttotal = - '(show country: '. - qq()'; + '
( 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_countyupdate' => 1, + ); +} else { + $html_posttotal .= + ''; +} + +$html_posttotal .= ' )'; + +my $bulk_popup_link = + include( '/elements/popup_link_onclick.html', + 'action' => "${p}edit/bulk-cust_main_county.html?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 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); + } + + + +
+
select all | +unselect all | +toggle all +

+Add new tax to selected + +END my $hashref = {}; my $count_query = 'SELECT COUNT(*) FROM cust_main_county'; @@ -199,11 +321,16 @@ if ( $country ) { } if ( $state ) { $hashref->{'state'} = $state; - $count_query .= ' AND state = '. dbh->quote($state); + $count_query .= ' AND state = '. dbh->quote($state); } if ( $county ) { - $hashref->{'country'} = $country; - $count_query .= ' AND county = '. dbh->quote($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 ( $taxclass ) { $hashref->{'taxclass'} = $taxclass; @@ -227,13 +354,17 @@ my @fields = ( sub { state_label($_[0]->state, $_[0]->country). ( $_[0]->state ? '' - : ' '. expand_link($_[0], 'Add States'). - 'add states
' + : ' '. expand_link( desc => 'Add States', + row => $_[0], + label => 'add states', + ) ) }, sub { $_[0]->county || '(all) '. - expand_link($_[0], 'Add Counties'). - 'add counties' + expand_link( desc => 'Add Counties', + row => $_[0], + label => 'add counties', + ) }, ); @@ -256,33 +387,68 @@ if ( $conf->exists('enable_taxclasses') ) { $align .= 'l'; } -push @header, 'Tax name', +push @header, + '', #checkbox column + 'Tax name', 'Rate', #'Tax', 'Exemptions', ; -push @header2, '(printed on invoices)', +push @header2, + '', + '(printed on invoices)', '', '', ; +my $newregion = 1; +my $cb_oldrow = ''; +my $cb_sub = sub { + my $cust_main_county = shift; + + if ( $cb_oldrow ) { + if ( $cb_oldrow->country ne $cust_main_county->country + || $cb_oldrow->state ne $cust_main_county->state + || $cb_oldrow->county ne $cust_main_county->county + || $cb_oldrow->taxclass ne $cust_main_county->taxclass ) + { + $newregion = 1; + } else { + $newregion = 0; + } + + } else { + $newregion = 1; + } + $cb_oldrow = $cust_main_county; + + if ( $newregion ) { + my $taxnum = $cust_main_county->taxnum; + qq!!; + } else { + ''; + } +}; + push @fields, + $cb_sub, sub { shift->taxname || 'Tax' }, sub { shift->tax. '% (edit)' }, $exempt_sub, ; push @color, + '000000', sub { shift->taxname ? '000000' : '666666' }, sub { shift->tax ? '000000' : '666666' }, '000000', ; -$align .= 'lrl'; +$align .= 'clrl'; my @cell_style = map $cell_style_sub, (1..scalar(@header)); -push @links, '', $edit_link, ''; -push @link_onclicks, '', $edit_onclick, ''; +push @links, '', '', $edit_link, ''; +push @link_onclicks, '', '', $edit_onclick, '';