diff options
Diffstat (limited to 'FS/FS/cust_bill_ApplicationCommon.pm')
-rw-r--r-- | FS/FS/cust_bill_ApplicationCommon.pm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/FS/FS/cust_bill_ApplicationCommon.pm b/FS/FS/cust_bill_ApplicationCommon.pm index af7e087..7449679 100644 --- a/FS/FS/cust_bill_ApplicationCommon.pm +++ b/FS/FS/cust_bill_ApplicationCommon.pm @@ -1,7 +1,7 @@ package FS::cust_bill_ApplicationCommon; use strict; -use vars qw( @ISA $DEBUG $me ); +use vars qw( @ISA $DEBUG $me $skip_apply_to_lineitems_hack ); use List::Util qw(min); use FS::Schema qw( dbdef ); use FS::Record qw( qsearch qsearchs dbh ); @@ -11,6 +11,8 @@ use FS::Record qw( qsearch qsearchs dbh ); $DEBUG = 0; $me = '[FS::cust_bill_ApplicationCommon]'; +$skip_apply_to_lineitems_hack = 0; + =head1 NAME FS::cust_bill_ApplicationCommon - Base class for bill application classes @@ -54,7 +56,7 @@ sub insert { my $dbh = dbh; my $error = $self->SUPER::insert(@_) - || $self->apply_to_lineitems; + || $self->apply_to_lineitems(@_); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -111,10 +113,15 @@ Auto-applies this invoice application to specific line items, if possible. =cut sub apply_to_lineitems { - my $self = shift; + #my $self = shift; + my( $self, %options ) = @_; + + return '' if $skip_apply_to_lineitems_hack; my @apply = (); + my $conf = new FS::Conf; + local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; local $SIG{QUIT} = 'IGNORE'; @@ -127,6 +134,8 @@ sub apply_to_lineitems { my $dbh = dbh; my @open = $self->cust_bill->open_cust_bill_pkg; #FOR UPDATE...? + @open = grep { $_->pkgnum == $self->pkgnum } @open + if $conf->exists('pkg-balances') && $self->pkgnum; warn "$me ". scalar(@open). " open line items for invoice ". $self->cust_bill->invnum. ": ". join(', ', @open). "\n" if $DEBUG; @@ -314,7 +323,7 @@ sub apply_to_lineitems { 'sdate' => $cust_bill_pkg->sdate, 'edate' => $cust_bill_pkg->edate, }); - my $error = $application->insert; + my $error = $application->insert(%options); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; |