diff options
author | ivan <ivan> | 2011-01-30 06:33:41 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-01-30 06:33:41 +0000 |
commit | 40b466a6f51f20313f902be0935c0b08653bf1dd (patch) | |
tree | c78fb381e2cf7f1654469d9ebc920fa0caf61ccb /httemplate/edit | |
parent | 6877b0f1447c211f1a992487eeaf9bda787c4b71 (diff) |
improve tax edit UI: add more counties & remove individual counties, RT#11144
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-x | httemplate/edit/cust_main_county-add.cgi | 50 | ||||
-rwxr-xr-x | httemplate/edit/process/cust_main_county-add.cgi | 48 | ||||
-rwxr-xr-x | httemplate/edit/process/cust_main_county-collapse.cgi | 15 | ||||
-rwxr-xr-x | httemplate/edit/process/cust_main_county-remove.cgi | 48 |
4 files changed, 157 insertions, 4 deletions
diff --git a/httemplate/edit/cust_main_county-add.cgi b/httemplate/edit/cust_main_county-add.cgi new file mode 100755 index 000000000..7821bd8d2 --- /dev/null +++ b/httemplate/edit/cust_main_county-add.cgi @@ -0,0 +1,50 @@ +<% include('/elements/header-popup.html', "Enter additional $title") %> + +<% include('/elements/error.html') %> + +<FORM ACTION="<% $p1 %>process/cust_main_county-add.cgi" METHOD=POST> + +<INPUT TYPE="hidden" NAME="taxnum" VALUE="<% $taxnum %>"> +<INPUT TYPE="hidden" NAME="what" VALUE="<% $what %>"> + +<TEXTAREA NAME="expansion" COLS="50" ROWS="16"><% $expansion |h %></TEXTAREA> + +<BR> +<INPUT TYPE="submit" VALUE="Add <% $title %>"> + +</FORM> +</BODY> +</HTML> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('taxnum') =~ /^(\d+)$/ or die "Illegal taxnum"; +my $taxnum = $1; + +my $expansion = ''; +if ( $cgi->param('error') ) { + $expansion = $cgi->param('expansion'); +} + +my $cust_main_county = qsearchs('cust_main_county',{'taxnum'=>$taxnum}) + or die "cust_main_county.taxnum $taxnum not found"; + +$cgi->param('what') =~ /^(\w+)$/ or die "Illegal what"; +my $what = $1; + +my $title; +if ( $what eq 'city' ) { + $title = 'Cities'; +} elsif ( $what eq 'county' ) { + $title = 'Counties'; +} else { #??? + die "unknown what $what"; + #$title = 'States/Provinces'; +} + +my $p1 = popurl(1); + +</%init> diff --git a/httemplate/edit/process/cust_main_county-add.cgi b/httemplate/edit/process/cust_main_county-add.cgi new file mode 100755 index 000000000..352c6127c --- /dev/null +++ b/httemplate/edit/process/cust_main_county-add.cgi @@ -0,0 +1,48 @@ +<% include('/elements/header-popup.html', 'Addition successful' ) %> + +<SCRIPT TYPE="text/javascript"> + window.top.location.reload(); +</SCRIPT> + +</BODY> +</HTML> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('taxnum') =~ /^(\d+)$/ or die "Illegal taxnum!"; +my $taxnum = $1; +my $cust_main_county = qsearchs('cust_main_county',{'taxnum'=>$taxnum}) + or die ("Unknown taxnum!"); + +my @expansion = split /[\n\r]{1,2}/, $cgi->param('expansion'); + +@expansion=map { + unless ( /^\s*([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=\[\]]+)\s*$/ ) { + $cgi->param('error', "Illegal item in expansion: $_"); + print $cgi->redirect(popurl(2). "cust_main_county-expand.cgi?". $cgi->query_string ); + myexit(); + } + $1; +} @expansion; + +foreach ( @expansion ) { + my(%hash)=$cust_main_county->hash; + my($new)=new FS::cust_main_county \%hash; + $new->setfield('taxnum',''); + if ( $cgi->param('what') eq 'state' ) { #?? + $new->setfield('state',$_); + } elsif ( $cgi->param('what') eq 'county' ) { + $new->setfield('county',$_); + } elsif ( $cgi->param('what') eq 'city' ) { + #uppercase cities in the US to try and agree with USPS validation + $new->setfield('city', $new->country eq 'US' ? uc($_) : $_ ); + } else { #??? + die 'unknown what '. $cgi->param('what'); + } + my $error = $new->insert; + die $error if $error; +} + +</%init> diff --git a/httemplate/edit/process/cust_main_county-collapse.cgi b/httemplate/edit/process/cust_main_county-collapse.cgi index 9608fc919..710e692fe 100755 --- a/httemplate/edit/process/cust_main_county-collapse.cgi +++ b/httemplate/edit/process/cust_main_county-collapse.cgi @@ -1,11 +1,15 @@ -<% $cgi->redirect(popurl(3). "browse/cust_main_county.cgi") %> +<% $cgi->redirect(popurl(3). "browse/cust_main_county.cgi?". + "country=". uri_escape($cgi->param('country')).";". + 'state='. uri_escape($cgi->param('state')). ';'. + 'county='. uri_escape($cgi->param('county')) + ) +%> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); -my($query) = $cgi->keywords; -$query =~ /^(\d+)$/ or die "Illegal taxnum!"; +$cgi->param('taxnum') =~ /^(\d+)$/ or die "Illegal taxnum!"; my $taxnum = $1; my $cust_main_county = qsearchs('cust_main_county', { 'taxnum' => $taxnum } ) or die "Unknown taxnum $taxnum"; @@ -37,9 +41,12 @@ foreach my $delete ( qsearch('cust_main_county', \%search) ) { $cust_main_county->taxnum(''); if ( $cust_main_county->city ) { $cust_main_county->city(''); -} else { +} elsif ( $cust_main_county->county ) { $cust_main_county->county(''); +} else { + die "can't collapse that"; } + my $error = $cust_main_county->insert; die $error if $error; diff --git a/httemplate/edit/process/cust_main_county-remove.cgi b/httemplate/edit/process/cust_main_county-remove.cgi new file mode 100755 index 000000000..f018e6d65 --- /dev/null +++ b/httemplate/edit/process/cust_main_county-remove.cgi @@ -0,0 +1,48 @@ +<% $cgi->redirect(popurl(3). "browse/cust_main_county.cgi?". + "country=". uri_escape($cgi->param('country')).";". + 'state='. uri_escape($cgi->param('state')). ';'. + 'county='. uri_escape($cgi->param('county')) + ) +%> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +$cgi->param('taxnum') =~ /^(\d+)$/ or die "Illegal taxnum!"; +my $taxnum = $1; +my $cust_main_county = qsearchs('cust_main_county', { 'taxnum' => $taxnum } ) + or die "Unknown taxnum $taxnum"; + +#really should do this in a .pm & start transaction + +my %search = ( + 'country' => $cust_main_county->country, + 'state' => $cust_main_county->state, + ); + +$search{'county'} = $cust_main_county->county + if $cust_main_county->city; + +my $error = $cust_main_county->delete; +die $error if $error; + +unless ( qsearch('cust_main_county', \%search) ) { + + #if we're the last, clear our (state?)/county/city and reinsert + + $cust_main_county->taxnum(''); + if ( $cust_main_county->city ) { + $cust_main_county->city(''); + } elsif ( $cust_main_county->county ) { + $cust_main_county->county(''); + } else { + die "can't remove that"; + } + + my $error = $cust_main_county->insert; + die $error if $error; + +} + +</%init> |