RT# 32917 - Added ability for taxes to be charged prior to applying the discount
authorChristopher Burger <burgerc@freeside.biz>
Fri, 28 Dec 2018 20:52:02 +0000 (15:52 -0500)
committerChristopher Burger <burgerc@freeside.biz>
Wed, 2 Jan 2019 16:47:57 +0000 (11:47 -0500)
FS/FS/Schema.pm
FS/FS/TaxEngine/internal.pm
httemplate/edit/cust_main_county.html

index 04b374f..b9df650 100644 (file)
@@ -2289,6 +2289,7 @@ sub tables_hashref {
         'setuptax',    'char', 'NULL',       1, '', '', # Y = setup tax exempt
         'recurtax',    'char', 'NULL',       1, '', '', # Y = recur tax exempt
         'source',   'varchar', 'NULL', $char_d, '', '',
+        'charge_prediscount', 'char', 'NULL', 1, '', '', # Y = charge this tax pre discount
       ],
       'primary_key' => 'taxnum',
       'unique' => [],
index 5f5d229..6fb1ca7 100644 (file)
@@ -105,6 +105,15 @@ sub taxline {
     my $taxable_charged = $cust_bill_pkg->setup + $cust_bill_pkg->recur
       or next; # don't create zero-amount exemptions
 
+    ## re-add the discounted amount if the tax needs to be charged pre discount
+    if ($tax_object->charge_prediscount) {
+      my $discount_amount = 0;
+      foreach my $discount (@{$cust_bill_pkg->discounts}) {
+        $discount_amount += $discount->amount;
+      }
+      $taxable_charged += $discount_amount;
+    }
+
     # XXX the following procedure should probably be in cust_bill_pkg
 
     if ( $exempt_cust ) {
index 9cc5131..b082309 100644 (file)
@@ -14,6 +14,7 @@
                    'setuptax' => 'This tax not applicable to setup fees',
                    'recurtax' => 'This tax not applicable to recurring fees',
                    'exempt_amount' => 'Monthly exemption per customer ($25 "Texas tax")',
+                   'charge_prediscount' => 'Charge this tax prior to any discounts',
                  },
      'fields' => \@fields,
    )
@@ -60,6 +61,9 @@ push @fields,
   'taxname',
   { field=>'tax',      type=>'percentage', },
 
+  { type=>'tablebreak-tr-title', value=>'Charging options' },
+  { field=>'charge_prediscount', type=>'checkbox', value=>'Y', },
+
   { type=>'tablebreak-tr-title', value=>'Exemptions' },
   { field=>'setuptax', type=>'checkbox', value=>'Y', },
   { field=>'recurtax', type=>'checkbox', value=>'Y', },