summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/TaxEngine/internal.pm9
-rw-r--r--httemplate/edit/cust_main_county.html4
3 files changed, 14 insertions, 0 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 04b374f..b9df650 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -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' => [],
diff --git a/FS/FS/TaxEngine/internal.pm b/FS/FS/TaxEngine/internal.pm
index 5f5d229..6fb1ca7 100644
--- a/FS/FS/TaxEngine/internal.pm
+++ b/FS/FS/TaxEngine/internal.pm
@@ -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 ) {
diff --git a/httemplate/edit/cust_main_county.html b/httemplate/edit/cust_main_county.html
index 9cc5131..b082309 100644
--- a/httemplate/edit/cust_main_county.html
+++ b/httemplate/edit/cust_main_county.html
@@ -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', },