move agent_custid next to custnum, #36889
[freeside.git] / FS / FS / tax_rate.pm
index ab1a69e..de60cff 100644 (file)
@@ -575,9 +575,11 @@ sub taxline {
 
       } elsif ( $self->unittype == 2 ) {
 
+        my $locationnum = $cust_bill_pkg->tax_locationnum
+                       || $cust_main->ship_locationnum;
         # per account
-        $units = 1 unless $seen{$cust_bill_pkg->tax_locationnum};
-        $seen{$cust_bill_pkg->tax_locationnum} = 1;
+        $units = 1 unless $seen{$locationnum};
+        $seen{$locationnum} = 1;
 
       } else {
         # Unittype 19 is used for prepaid wireless E911 charges in many states.
@@ -594,6 +596,7 @@ sub taxline {
           'locationtaxid'         => $self->location,
           'taxable_cust_bill_pkg' => $cust_bill_pkg,
           'taxratelocationnum'    => $taxratelocationnum,
+          'taxclass'              => $class,
       });
       push @tax_locations, $tax_location;
 
@@ -645,6 +648,9 @@ sub taxline {
         'edate'         => '',
         'itemdesc'      => $name,
         'cust_bill_pkg_tax_rate_location' => [ $_ ],
+        # Make the charge class easily accessible; we need it for tax-on-tax
+        # applicability. RT#36830.
+        '_class'        => $_->taxclass,
     });
     $_->set('tax_cust_bill_pkg' => $tax_item);
     push @tax_items, $tax_item;