fix big in RADIUS session viewing when using an ignored-accounting export
[freeside.git] / FS / FS / cust_main_county.pm
index a9a4a85..ef2793a 100644 (file)
@@ -61,6 +61,12 @@ currently supported:
 
 =item exempt_amount
 
+=item taxname - if defined, printed on invoices instead of "Tax"
+
+=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
@@ -101,19 +107,50 @@ methods.
 sub check {
   my $self = shift;
 
-  $self->amount(0) unless $self->amount;
+  $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('amount')
-  ;
+    || $self->ut_money('exempt_amount')
+    || $self->ut_textn('taxname')
+    || $self->ut_enum('setuptax', [ '', 'Y' ] )
+    || $self->ut_enum('recurtax', [ '', 'Y' ] )
+    || $self->SUPER::check
+    ;
 
 }
 
+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
@@ -128,13 +165,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;
@@ -179,7 +219,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!;