summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
authorivan <ivan>2011-01-30 06:33:41 +0000
committerivan <ivan>2011-01-30 06:33:41 +0000
commit40b466a6f51f20313f902be0935c0b08653bf1dd (patch)
treec78fb381e2cf7f1654469d9ebc920fa0caf61ccb /httemplate/edit
parent6877b0f1447c211f1a992487eeaf9bda787c4b71 (diff)
improve tax edit UI: add more counties & remove individual counties, RT#11144
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-xhttemplate/edit/cust_main_county-add.cgi50
-rwxr-xr-xhttemplate/edit/process/cust_main_county-add.cgi48
-rwxr-xr-xhttemplate/edit/process/cust_main_county-collapse.cgi15
-rwxr-xr-xhttemplate/edit/process/cust_main_county-remove.cgi48
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>