import torrus 1.0.9
[freeside.git] / FS / FS / cust_main_county.pm
index edf57ab..e84fa98 100644 (file)
@@ -2,7 +2,7 @@ package FS::cust_main_county;
 
 use strict;
 use vars qw( @ISA @EXPORT_OK $conf
-             @cust_main_county %cust_main_county $countyflag );
+             @cust_main_county %cust_main_county $countyflag ); # $cityflag );
 use Exporter;
 use FS::Record qw( qsearch dbh );
 use FS::cust_bill_pkg;
@@ -17,6 +17,7 @@ use FS::cust_tax_exempt_pkg;
 
 @cust_main_county = ();
 $countyflag = '';
+#$cityflag = '';
 
 #ask FS::UID to run this stuff for us later
 $FS::UID::callback{'FS::cust_main_county'} = sub { 
@@ -55,10 +56,12 @@ currently supported:
 
 =item taxnum - primary key (assigned automatically for new tax rates)
 
-=item state
+=item city
 
 =item county
 
+=item state
+
 =item country
 
 =item tax - percentage
@@ -116,8 +119,9 @@ sub check {
   $self->exempt_amount(0) unless $self->exempt_amount;
 
   $self->ut_numbern('taxnum')
-    || $self->ut_anything('state')
+    || $self->ut_textn('city')
     || $self->ut_textn('county')
+    || $self->ut_anything('state')
     || $self->ut_text('country')
     || $self->ut_float('tax')
     || $self->ut_textn('taxclass') # ...
@@ -198,29 +202,18 @@ sub _list_sql {
   map $_->[0], @{ $sth->fetchall_arrayref };
 }
 
-=item taxline TAXABLES, [ OPTIONSHASH ]
+=item taxline TAXABLES_ARRAYREF, [ OPTION => VALUE ... ]
 
 Returns a listref of a name and an amount of tax calculated for the list of
-packages or amounts referenced by TAXABLES.  Returns a scalar error message
-on error.  
+packages or amounts referenced by TAXABLES_ARRAYREF.  Returns a scalar error
+message on error.  
 
-OPTIONSHASH includes custnum and invoice_date and are hints to this method
+Options include custnum and invoice_date and are hints to this method
 
 =cut
 
 sub taxline {
-  my $self = shift;
-
-  my $taxables;
-  my %opt = ();
-
-  if (ref($_[0]) eq 'ARRAY') {
-    $taxables = shift;
-    %opt = @_;
-  }else{
-    $taxables = [ @_ ];
-    # exemptions broken in this case
-  }
+  my( $self, $taxables, %opt ) = @_;
 
   my @exemptions = ();
   push @exemptions, @{ $_->_cust_tax_exempt_pkg }
@@ -263,7 +256,10 @@ sub taxline {
       my ($mon,$year) =
         (localtime( $cust_bill_pkg->sdate || $invoice_date ) )[4,5];
       $mon++;
-      my $freq = $part_pkg->freq || 1;
+      my $freq = $cust_bill_pkg->freq;
+      unless ($freq) {
+        $freq = $part_pkg->freq || 1;  # less trustworthy fallback
+      }
       if ( $freq !~ /(\d+)$/ ) {
         $dbh->rollback if $oldAutoCommit;
         return "daily/weekly package definitions not (yet?)".
@@ -362,7 +358,12 @@ sub taxline {
   }
 
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
-  return [ $name, $amount ]
+
+  return {
+    'name'   => $name,
+    'amount' => $amount,
+  };
+
 }
 
 =back