1.4.1rc5
[freeside.git] / FS / FS / cust_svc.pm
index 7516be5..68734a6 100644 (file)
@@ -9,6 +9,7 @@ use FS::part_pkg;
 use FS::part_svc;
 use FS::pkg_svc;
 use FS::svc_acct;
+use FS::svc_acct_sm;
 use FS::svc_domain;
 use FS::svc_forward;
 use FS::domain_record;
@@ -220,6 +221,7 @@ sub check {
     # or new FS::pkg_svc ( { 'pkgpart'  => $cust_pkg->pkgpart,
     #                        'svcpart'  => $self->svcpart,
     #                        'quantity' => 0                   } );
+    my $quantity = $pkg_svc ? $pkg_svc->quantity : 0;
 
     my @cust_svc = qsearch('cust_svc', {
       'pkgnum'  => $self->pkgnum,
@@ -227,7 +229,7 @@ sub check {
     });
     return "Already ". scalar(@cust_svc). " ". $part_svc->svc.
            " services for pkgnum ". $self->pkgnum
-      if scalar(@cust_svc) >= $pkg_svc->quantity;
+      if scalar(@cust_svc) >= $quantity;
   }
 
   ''; #no error
@@ -276,6 +278,11 @@ sub label {
   my $tag;
   if ( $svcdb eq 'svc_acct' ) {
     $tag = $svc_x->email;
+  } elsif ( $svcdb eq 'svc_acct_sm' ) {
+    my $domuser = $svc_x->domuser eq '*' ? '(anything)' : $svc_x->domuser;
+    my $svc_domain = qsearchs ( 'svc_domain', { 'svcnum' => $svc_x->domsvc } );
+    my $domain = $svc_domain->domain;
+    $tag = "$domuser\@$domain";
   } elsif ( $svcdb eq 'svc_forward' ) {
     my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $svc_x->srcsvc } );
     $tag = $svc_acct->email. '->';
@@ -289,9 +296,7 @@ sub label {
     $tag = $svc_x->getfield('domain');
   } elsif ( $svcdb eq 'svc_www' ) {
     my $domain = qsearchs( 'domain_record', { 'recnum' => $svc_x->recnum } );
-    $tag = $domain->reczone;
-  } elsif ( $svcdb eq 'svc_broadband' ) {
-    $tag = $svc_x->ip_addr . '/' . $svc_x->ip_netmask;
+    $tag = $domain->zone;
   } else {
     cluck "warning: asked for label of unsupported svcdb; using svcnum";
     $tag = $svc_x->getfield('svcnum');
@@ -393,11 +398,12 @@ sub seconds_since_sqlradacct {
                 FROM radacct
                 WHERE UserName = ?
                   AND $str2time AcctStartTime ) >= ?
+                  AND $str2time AcctStartTime ) <  ?
                   AND ( ? - $str2time AcctStartTime ) ) < 86400
                   AND (    $str2time AcctStopTime ) = 0
                                     OR AcctStopTime IS NULL )";
     $sth = $dbh->prepare($query) or die $dbh->errstr;
-    $sth->execute($end, $username, $start, $end)
+    $sth->execute($end, $username, $start, $end, $end)
       or die $sth->errstr. " executing query $query";
     my $start_during = $sth->fetchrow_arrayref->[0];