diff options
author | Mark Wells <mark@freeside.biz> | 2016-09-21 14:03:08 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-09-21 14:03:27 -0700 |
commit | ad78be45d49a6933879e07e7d6f7c53b883249a5 (patch) | |
tree | 1bf149f86041ff00610b4e2cd5c4d44b43377574 /FS/t | |
parent | 07a2a31a569a6ea8c2ab91e4b13eb9a00d570bed (diff) |
be more selective when unapplying payments for a line item credit, #42729
Diffstat (limited to 'FS/t')
-rwxr-xr-x | FS/t/suite/09-sales_tax_credit_change.t | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/FS/t/suite/09-sales_tax_credit_change.t b/FS/t/suite/09-sales_tax_credit_change.t index 58d9968d8..80a05c610 100755 --- a/FS/t/suite/09-sales_tax_credit_change.t +++ b/FS/t/suite/09-sales_tax_credit_change.t @@ -13,7 +13,7 @@ Correct: The credit amount will be $11.00. =cut use strict; -use Test::More tests => 2; +use Test::More tests => 3; use FS::Test; use Date::Parse 'str2time'; use Date::Format 'time2str'; @@ -78,18 +78,19 @@ ok ( $tax_item && $tax_item->setup == 3.00, "Tax charged = 3.00" ); # sync $pkg = $pkg->replace_old; -# Pay the bill +# Pay the bill in two parts set_fixed_time(str2time('2016-04-02 00:00')); -my $cust_pay = FS::cust_pay->new({ - custnum => $cust->custnum, - invnum => $cust_bill->invnum, - _date => time, - paid => $cust_bill->owed, - payby => 'CASH', -}); -$error = $cust_pay->insert; -BAIL_OUT("can't record payment: $error") if $error; - +foreach my $paid (10.00, 23.00) { + my $cust_pay = FS::cust_pay->new({ + custnum => $cust->custnum, + invnum => $cust_bill->invnum, + _date => time, + paid => $paid, + payby => 'CASH', + }); + $error = $cust_pay->insert; + BAIL_OUT("can't record payment: $error") if $error; +} # Now cancel with 1/3 of the period left set_fixed_time(str2time('2016-04-21 00:00')); $error = $pkg->cancel(); @@ -100,3 +101,8 @@ my ($credit) = $cust->cust_credit or BAIL_OUT("no credit was created"); ok ( $credit->amount == 11.00, "Credited 1/3 of package charge with tax" ) or diag("is ". $credit->amount ); + +# the invoice should also be fully paid after that +ok ( $cust_bill->owed == 0, "Invoice balance is zero" ) + or diag("is ". $cust_bill->owed); + |