X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fbrowse%2Fcust_main_county.cgi;h=2a21da1505aacbcafb9a14c65350c98e292a7ab9;hb=da86d5a8af2f915a340a74f6c97772451a1e23ef;hp=04d1ae5bbae07c80869bdebd27c89658d83e4875;hpb=a2731c37ba06eddee353f7f26442de87dd3134b2;p=freeside.git diff --git a/httemplate/browse/cust_main_county.cgi b/httemplate/browse/cust_main_county.cgi index 04d1ae5bb..2a21da150 100755 --- a/httemplate/browse/cust_main_county.cgi +++ b/httemplate/browse/cust_main_county.cgi @@ -10,7 +10,7 @@ 'table' => 'cust_main_county', 'hashref' => $hashref, 'order_by' => - 'ORDER BY country, state, county, taxclass', + 'ORDER BY country, state, county, city, taxclass', }, 'count_query' => $count_query, 'header' => \@header, @@ -46,18 +46,19 @@ my $exempt_sub = sub { }; my $cs_oldrow; -my $cell_style; +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:1px solid #000000'; + $cell_style = 'border-top:2px solid #000000'; } elsif ( $cs_oldrow->state ne $row->state ) { - $cell_style = 'border-top:1px solid #cccccc'; #default? - } elsif ( $cs_oldrow->state eq $row->state ) { - #$cell_style = 'border-top:dashed 1px dark gray'; - $cell_style = 'border-top:1px dashed #cccccc'; + $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; @@ -105,37 +106,85 @@ sub expand_link { ''; } +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"; + + ''. + include( '/elements/popup_link.html', + 'label' => $param{'label'}, + 'action' => $url, + 'actionlabel' => $param{'desc'}, + 'height' => 420, + #default# 'width' => 540, + #default# 'color' => '#333399', + ). + ''; +} + sub collapse_link { my %param = @_; my $row = $param{'row'}; my $col = $param{'col'}; - return '' - if $col eq 'county' and $row->city - || qsearch({ - 'table' => 'cust_main_county', - 'hashref' => { - 'country' => $row->country, - 'state' => $row->state, - 'city' => { op=>'!=', value=>'' }, - }, - 'order_by' => 'LIMIT 1', - }); - - my %above = ( 'city' => 'county', - 'county' => 'state', +# 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"; - $url = "javascript:collapse_areyousure('$url', '$col', '$above{$col}')"; + 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')"; qq($param{'label'}); } +sub remove_link { + my %param = @_; + + my $row = $param{'row'}; + my $col = $param{'col'}; + + my $taxnum = $param{'row'}->taxnum; + my $url = "${p}edit/process/cust_main_county-remove.cgi?taxnum=$taxnum;". + 'country='. uri_escape($cgi->param('country')). ';'. + 'state='. uri_escape($cgi->param('state')). ';'. + 'county='. uri_escape($cgi->param('county')); + $url = "javascript:remove_areyousure('$url', '$col')"; + + qq($param{'label'}); + +} sub separate_taxclasses_link { my( $row ) = @_; @@ -165,11 +214,11 @@ my $html_init = < - - 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." @@ -397,41 +446,97 @@ my @links = ( '', '', '', '', ); my @link_onclicks = ( '', '', '', '', ); my $align = 'llll'; +my %seen_country = (); +my %seen_state = (); +my %seen_county = (); + my @fields = ( sub { my $country = shift->country; - code2country($country). " ($country)"; + return '' if $seen_country{$country}++; + code2country($country). " ($country)"; }, - sub { state_label($_[0]->state, $_[0]->country). - ( $_[0]->state - ? '' - : ' '. expand_link( desc => 'Add States', - row => $_[0], - label => 'add states', - ) - ) + + sub { my $label = $seen_state{$_[0]->country}->{$_[0]->state}++ + ? '' : state_label($_[0]->state, $_[0]->country); + + my $countylinks = ( $_[0]->county && $label ) + ? ' '. add_link( + desc => 'Add more counties', + col => 'state', + label=> 'add more counties', + row => $_[0], + cgi => $cgi, + ). + ' '. collapse_link( + col => 'state', + label=> 'remove all counties', + row => $_[0], + cgi => $cgi, + ) + : ''; + + my $addlink = + ( $_[0]->state + ? '' + : ' '. expand_link( desc => 'Add States', + row => $_[0], + label => 'add states', + cgi => $cgi, + ) + ); + + $label.$countylinks.$addlink; }, - sub { $_[0]->county - ? $_[0]->county. ' '. - collapse_link( col => 'county', - label=> 'remove counties', - row => $_[0], - ) - : '(all) '. + + sub { my $label = + $seen_county{$_[0]->country}->{$_[0]->state}->{$_[0]->county}++ + ? '' : $_[0]->county; + + my $citylinks = ''; + if ( $label ) { + $citylinks = $_[0]->city + ? ' '. add_link( + desc => 'Add more cities', + col => 'county', + label=> 'add more cities', + row => $_[0], + cgi => $cgi, + ). + ' '. collapse_link( + col => 'county', + label=> 'remove all cities', + row => $_[0], + cgi => $cgi, + ) + : ' '. remove_link( col => 'county', + label=> 'remove county', + row => $_[0], + cgi => $cgi, + ); + } + + $_[0]->county + ? $label.$citylinks + : '(all) '. expand_link( desc => 'Add Counties', row => $_[0], label => 'add counties', + cgi => $cgi, ); }, + sub { $_[0]->city - ? $_[0]->city. ' '. - collapse_link( col => 'city', - label=> 'remove cities', - row => $_[0], - ) - : '(all) '. + ? $_[0]->city. ' '. + remove_link( col => 'city', + label=> 'remove city', + row => $_[0], + cgi => $cgi, + ) + : '(all) '. expand_link( desc => 'Add Cities', row => $_[0], label => 'add cities', + cgi => $cgi, ); }, ); @@ -446,7 +551,7 @@ my @color = ( if ( $conf->exists('enable_taxclasses') ) { push @header, qq!Tax class (add new)!; push @header2, '(per-package classification)'; - push @fields, sub { $_[0]->taxclass || '(all) '. + push @fields, sub { $_[0]->taxclass || '(all) '. separate_taxclasses_link($_[0], 'Separate Taxclasses'). 'separate taxclasses' };