use FS::agent;
use FS::sales;
use FS::cust_credit_void;
+use FS::cust_bill_pkg;
use FS::upgrade_journal;
$me = '[ FS::cust_credit ]';
=cut
#maybe i should just be an insert with extra args instead of a class method
-use FS::cust_bill_pkg;
sub credit_lineitems {
my( $class, %arg ) = @_;
my $curuser = $FS::CurrentUser::CurrentUser;
# recalculate taxes with new amounts
$taxlisthash{$invnum} ||= {};
- my $part_pkg = $cust_bill_pkg->part_pkg;
- $cust_main->_handle_taxes( $part_pkg,
- $taxlisthash{$invnum},
- $cust_bill_pkg,
- $cust_bill_pkg->cust_pkg,
- $cust_bill_pkg->cust_bill->_date, #invoice time
- $cust_bill_pkg->cust_pkg->pkgpart,
- );
+ if ( $cust_bill_pkg->pkgnum or $cust_bill_pkg->feepart ) {
+ $cust_main->_handle_taxes( $taxlisthash{$invnum}, $cust_bill_pkg );
+ } # otherwise the item itself is a tax, and assume the caller knows
+ # what they're doing
}
###
# we still have to deal with the possibility that the tax links don't
# cover the whole amount of tax because of an incomplete upgrade...
- if ($amount > 0) {
+ if ($amount > 0.005) {
$cust_credit_bill{$invnum} += $amount;
push @{ $cust_credit_bill_pkg{$invnum} },
new FS::cust_credit_bill_pkg {
'billpkgnum' => $tax_item->billpkgnum,
- 'amount' => $amount,
+ 'amount' => sprintf('%.2f', $amount),
'setuprecur' => 'setup',
};