X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg.pm;fp=FS%2FFS%2Fcust_bill_pkg.pm;h=2aa2a6fabe150b2afedefab28faffd60726a5d6c;hb=428a33ad6d0e01621717840d2db4861f4bee6c21;hp=13f027b0732212038b560aceb5ef2abb79bc19fa;hpb=76a1482705a98e2bbec4ed1e44a50ab01dee8b03;p=freeside.git diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index 13f027b07..2aa2a6fab 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -954,6 +954,7 @@ sub disintegrate { my $usage_total; foreach my $classnum ($self->usage_classes) { + next if $classnum eq ''; # null-class usage is included in 'recur' my $amount = $self->usage($classnum); next if $amount == 0; # though if so we shouldn't be here my $usage_item = FS::cust_bill_pkg->new({ @@ -1013,7 +1014,11 @@ sub usage { my $sql = 'SELECT SUM(COALESCE(amount,0)) FROM cust_bill_pkg_detail '. ' WHERE billpkgnum = '. $self->billpkgnum; - $sql .= " AND classnum = $classnum" if defined($classnum); + if ($classnum =~ /^(\d+)$/) { + $sql .= " AND classnum = $1"; + } elsif (defined($classnum) and $classnum eq '') { + $sql .= " AND classnum IS NULL"; + } my $sth = dbh->prepare($sql) or die dbh->errstr; $sth->execute or die $sth->errstr; @@ -1128,7 +1133,7 @@ sub tax_locationnum { my $self = shift; if ( $self->pkgnum ) { # normal sales return $self->cust_pkg->tax_locationnum; - } elsif ( $self->feepart ) { # fees + } elsif ( $self->feepart and $self->invnum ) { # fees return $self->cust_bill->cust_main->ship_locationnum; } else { # taxes return ''; @@ -1139,7 +1144,7 @@ sub tax_location { my $self = shift; if ( $self->pkgnum ) { # normal sales return $self->cust_pkg->tax_location; - } elsif ( $self->feepart ) { # fees + } elsif ( $self->feepart and $self->invnum ) { # fees return $self->cust_bill->cust_main->ship_location; } else { # taxes return;