so Search.tsf and Search.rdf work
[freeside.git] / FS / FS / cust_main_county.pm
index 56d29da..e44f919 100644 (file)
@@ -57,6 +57,16 @@ currently supported:
 
 =item tax - percentage
 
+=item taxclass
+
+=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
@@ -97,13 +107,48 @@ 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' ] )
+    || $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
@@ -112,13 +157,15 @@ sub check {
 
 =over 4
 
-=item regionselector [ COUNTY STATE COUNTRY [ PREFIX [ ONCHANGE ] ] ]
+=item regionselector [ COUNTY STATE COUNTRY [ PREFIX [ ONCHANGE [ DISABLED ] ] ] ]
 
 =cut
 
 sub regionselector {
   my ( $selected_county, $selected_state, $selected_country,
-       $prefix, $onchange ) = @_;
+       $prefix, $onchange, $disabled ) = @_;
+
+  $prefix = '' unless defined $prefix;
 
   $countyflag = 0;
 
@@ -126,7 +173,8 @@ sub regionselector {
     @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 +196,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\r]//g;
+      my $text = $dstate || '(n/a)';
+      $script_html .= qq!opt(what.form.${prefix}state, "$dstate", "$text");\n!;
     }
     $script_html .= "}\n";
   }
@@ -171,7 +220,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!;
@@ -189,7 +239,7 @@ END
 
   my $county_html = $script_html;
   if ( $countyflag ) {
-    $county_html .= qq!<SELECT NAME="${prefix}county" onChange="$onchange">!;
+    $county_html .= qq!<SELECT NAME="${prefix}county" onChange="$onchange" $disabled>!;
     $county_html .= '</SELECT>';
   } else {
     $county_html .=
@@ -197,7 +247,7 @@ END
   }
 
   my $state_html = qq!<SELECT NAME="${prefix}state" !.
-                   qq!onChange="${prefix}state_changed(this); $onchange">!;
+                   qq!onChange="${prefix}state_changed(this); $onchange" $disabled>!;
   foreach my $state ( sort keys %{ $cust_main_county{$selected_country} } ) {
     my $text = $state || '(n/a)';
     my $selected = $state eq $selected_state ? 'SELECTED' : '';
@@ -208,7 +258,7 @@ END
   $state_html .= '</SELECT>';
 
   my $country_html = qq!<SELECT NAME="${prefix}country" !.
-                     qq!onChange="${prefix}country_changed(this); $onchange">!;
+                     qq!onChange="${prefix}country_changed(this); $onchange" $disabled>!;
   my $countrydefault = $conf->config('countrydefault') || 'US';
   foreach my $country (
     sort { ($b eq $countrydefault) <=> ($a eq $countrydefault) or $a cmp $b }