hopefully fix self-service when not using real-time gateway
[freeside.git] / FS / FS / cust_bill_ApplicationCommon.pm
index af7e087..d4627c0 100644 (file)
@@ -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
@@ -113,8 +115,12 @@ Auto-applies this invoice application to specific line items, if possible.
 sub apply_to_lineitems {
   my $self = shift;
 
+  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 +133,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;