add LEC billing
[freeside.git] / FS / FS / part_pkg.pm
index 420ffcb..99d88d5 100644 (file)
@@ -2,7 +2,7 @@ package FS::part_pkg;
 
 use strict;
 use vars qw( @ISA );
-use FS::Record qw( qsearch qsearchs dbh );
+use FS::Record qw( qsearch dbh );
 use FS::pkg_svc;
 use FS::agent_type;
 use FS::type_pkgs;
@@ -218,6 +218,8 @@ sub check {
 
       or $r =~ /^my \$min = \$cust_pkg\->seconds_since\(\$cust_pkg\->bill \|\| 0\) \/ 60 \- \s*\d*\.?\d*\s*; \$min = 0 if \$min < 0; \s*\d*\.?\d*\s* \+ \s*\d*\.?\d*\s* \* \$min;\s*$/
 
+      or $r =~ /^my \$last_bill = \$cust_pkg\->last_bill; my \$hours = \$cust_pkg\->seconds_since_sqlradacct\(\$last_bill, \$sdate \) \/ 3600 - \s*\d\.?\d*\s*; \$hours = 0 if \$hours < 0; my \$input = \$cust_pkg\->attribute_since_sqlradacct\(\$last_bill, \$sdate, "AcctInputOctets" \) \/ 1048576; my \$output = \$cust_pkg\->attribute_since_sqlradacct\(\$last_bill, \$sdate, "AcctOutputOctets" \) \/ 1048576; my \$total = \$input \+ \$output \- \s*\d\.?\d*\s*; \$total = 0 if \$total < 0; my \$input = \$input - \s*\d\.?\d*\s*; \$input = 0 if \$input < 0; my \$output = \$output - \s*\d\.?\d*\s*; \$output = 0 if \$output < 0; \s*\d\.?\d*\s* \+ \s*\d\.?\d*\s* \* \$hours \+ \s*\d\.?\d*\s* \* \$input \+ \s*\d\.?\d*\s* \* \$output \+ \s*\d\.?\d*\s* \* \$total *;\s*$/
+
       or do {
         #log!
         return "illegal recur: $r";
@@ -225,12 +227,6 @@ sub check {
 
   }
 
-  if ($self->def_svcpart and my @pkg_svc = $self->pkg_svc) {
-    unless (grep { $_->svcpart == $self->def_svcpart } @pkg_svc) {
-      return "no svcparts for this package match def_svcpart ".$self->def_svcpart;
-    }
-  }
-
     $self->ut_numbern('pkgpart')
       || $self->ut_text('pkg')
       || $self->ut_text('comment')
@@ -265,23 +261,11 @@ associated with this billing item definition (see L<FS::pkg_svc>).  Returns
 false if there not exactly one service definition with quantity 1, or if 
 SVCDB is specified and does not match the svcdb of the service definition, 
 
-If the part_pkg has a nonzero def_svcpart, it takes precedence, even if it has 
-quantity > 1 and/or there are other service definitions, UNLESS SVCDB is specified 
-and doesn't match the svcdb of the def_svcpart.
-
 =cut
 
 sub svcpart {
   my $self = shift;
   my $svcdb = shift;
-
-  if ($self->def_svcpart) {
-    if ((not $svcdb) or qsearchs('part_svc', { svcpart => $self->def_svcpart,
-                                               svcdb   => $svcdb })) {
-      return $self->def_svcpart;
-    }
-  }
-
   my @pkg_svc = $self->pkg_svc;
   return '' if scalar(@pkg_svc) != 1
                || $pkg_svc[0]->quantity != 1
@@ -298,6 +282,8 @@ following logic instead;
 If the package has B<0> setup and B<0> recur, the single item B<BILL> is
 returned, otherwise, the single item B<CARD> is returned.
 
+(CHEK?  LEC?  Probably shouldn't accept those by default, prone to abuse)
+
 =cut
 
 sub payby {
@@ -313,10 +299,6 @@ sub payby {
 
 =back
 
-=head1 VERSION
-
-$Id: part_pkg.pm,v 1.15 2002-06-08 07:48:36 khoff Exp $
-
 =head1 BUGS
 
 The delete method is unimplemented.