projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't barf displaying invoices for location-less customers, RT#79312
[freeside.git]
/
FS
/
FS
/
cust_credit.pm
diff --git
a/FS/FS/cust_credit.pm
b/FS/FS/cust_credit.pm
index
aebf259
..
ddf407b
100644
(file)
--- a/
FS/FS/cust_credit.pm
+++ b/
FS/FS/cust_credit.pm
@@
-167,6
+167,10
@@
sub insert {
my $dbh = dbh;
my $cust_main = qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
my $dbh = dbh;
my $cust_main = qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
+ unless ( $cust_main ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "Unknown custnum ". $self->custnum;
+ }
my $old_balance = $cust_main->balance;
if (!$self->reasonnum) {
my $old_balance = $cust_main->balance;
if (!$self->reasonnum) {
@@
-728,10
+732,12
@@
sub calculate_tax_adjustment {
if ($recur) {
$recur -= $cust_bill_pkg->credited('', '', setuprecur => 'recur') || 0;
}
if ($recur) {
$recur -= $cust_bill_pkg->credited('', '', setuprecur => 'recur') || 0;
}
+ # Skip line items that have been completely credited.
+ next if ($setup + $recur) == 0;
my $setup_ratio = $setup / ($setup + $recur);
my $setup_ratio = $setup / ($setup + $recur);
- # Calculate the fraction of tax to credit: it's the fraction of this
charge
- # (either setup or recur) that's being credited.
+ # Calculate the fraction of tax to credit: it's the fraction of this
+ #
charge
(either setup or recur) that's being credited.
my $charged = ($setuprecur eq 'setup') ? $setup : $recur;
next if $charged == 0; # shouldn't happen, but still...
my $charged = ($setuprecur eq 'setup') ? $setup : $recur;
next if $charged == 0; # shouldn't happen, but still...
@@
-900,7
+906,7
@@
sub credit_lineitems {
my $invnum = $cust_bill_pkg->invnum;
$need_to_unapply -= $cust_bill_pkg->owed($setuprecur);
my $invnum = $cust_bill_pkg->invnum;
$need_to_unapply -= $cust_bill_pkg->owed($setuprecur);
-
next
if $need_to_unapply < 0.005;
+
return
if $need_to_unapply < 0.005;
my $error;
# then unapply payments one at a time (partially if need be) until the
my $error;
# then unapply payments one at a time (partially if need be) until the