fix regionselector for CR in region names for some reason
[freeside.git] / FS / FS / cust_main_county.pm
index 56d29da..4ea2199 100644 (file)
@@ -57,6 +57,14 @@ currently supported:
 
 =item tax - percentage
 
+=item taxclass
+
+=item exempt_amount
+
+=item setuptax - if 'Y', this tax does not apply to setup fees
+
+=item recurtax - if 'Y', this tax does not apply to recurring fees
+
 =back
 
 =head1 METHODS
@@ -97,15 +105,49 @@ methods.
 sub check {
   my $self = shift;
 
+  $self->exempt_amount(0) unless $self->exempt_amount;
+
   $self->ut_numbern('taxnum')
-    || $self->ut_textn('state')
+    || $self->ut_anything('state')
     || $self->ut_textn('county')
     || $self->ut_text('country')
     || $self->ut_float('tax')
+    || $self->ut_textn('taxclass') # ...
+    || $self->ut_money('exempt_amount')
+    || $self->ut_textn('taxname')
+    || $self->ut_enum('setuptax', [ '', 'Y' ] )
+    || $self->ut_enum('recurtax', [ '', 'Y' ] )
   ;
 
 }
 
+sub taxname {
+  my $self = shift;
+  if ( $self->dbdef_table->column('taxname') ) {
+    return $self->setfield('taxname', $_[0]) if @_;
+    return $self->getfield('taxname');
+  }  
+  return '';
+}
+
+sub setuptax {
+  my $self = shift;
+  if ( $self->dbdef_table->column('setuptax') ) {
+    return $self->setfield('setuptax', $_[0]) if @_;
+    return $self->getfield('setuptax');
+  }  
+  return '';
+}
+
+sub recurtax {
+  my $self = shift;
+  if ( $self->dbdef_table->column('recurtax') ) {
+    return $self->setfield('recurtax', $_[0]) if @_;
+    return $self->getfield('recurtax');
+  }  
+  return '';
+}
+
 =back
 
 =head1 SUBROUTINES
@@ -120,13 +162,16 @@ sub regionselector {
   my ( $selected_county, $selected_state, $selected_country,
        $prefix, $onchange ) = @_;
 
+  $prefix = '' unless defined $prefix;
+
   $countyflag = 0;
 
 #  unless ( @cust_main_county ) { #cache 
     @cust_main_county = qsearch('cust_main_county', {} );
     foreach my $c ( @cust_main_county ) {
       $countyflag=1 if $c->county;
-      push @{$cust_main_county{$c->country}{$c->state}}, $c->county;
+      #push @{$cust_main_county{$c->country}{$c->state}}, $c->county;
+      $cust_main_county{$c->country}{$c->state}{$c->county} = 1;
     }
 #  }
   $countyflag=1 if $selected_county;
@@ -148,8 +193,9 @@ END
   foreach my $country ( sort keys %cust_main_county ) {
     $script_html .= "\nif ( country == \"$country\" ) {\n";
     foreach my $state ( sort keys %{$cust_main_county{$country}} ) {
-      my $text = $state || '(n/a)';
-      $script_html .= qq!opt(what.form.${prefix}state, "$state", "$text");\n!;
+      my( $dstate = $state ) =~ s/\n//g;
+      my $text = $dstate || '(n/a)';
+      $script_html .= qq!opt(what.form.${prefix}state, "$dstate", "$text");\n!;
     }
     $script_html .= "}\n";
   }
@@ -171,7 +217,8 @@ END
       $script_html .= "\nif ( country == \"$country\" ) {\n";
       foreach my $state ( sort keys %{$cust_main_county{$country}} ) {
         $script_html .= "\nif ( state == \"$state\" ) {\n";
-          foreach my $county ( sort @{$cust_main_county{$country}{$state}} ) {
+          #foreach my $county ( sort @{$cust_main_county{$country}{$state}} ) {
+          foreach my $county ( sort keys %{$cust_main_county{$country}{$state}} ) {
             my $text = $county || '(n/a)';
             $script_html .=
               qq!opt(what.form.${prefix}county, "$county", "$text");\n!;