summaryrefslogtreecommitdiff
path: root/FS/FS/cust_bill_ApplicationCommon.pm
diff options
context:
space:
mode:
Diffstat (limited to 'FS/FS/cust_bill_ApplicationCommon.pm')
-rw-r--r--FS/FS/cust_bill_ApplicationCommon.pm17
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;