don't generate invoices for COMP customers
[freeside.git] / FS / FS / nas.pm
index 53e0fbc..2d17df8 100644 (file)
@@ -3,7 +3,7 @@ package FS::nas;
 use strict;
 use vars qw( @ISA );
 use FS::Record qw(qsearchs); #qsearch);
-use FS::UID qw( dbh ); #to lock the tables for heartbeat; ugh, MySQL-specific
+use FS::UID qw( dbh );
 
 @ISA = qw(FS::Record);
 
@@ -114,10 +114,12 @@ sub check {
     || $self->ut_text('nas')
     || $self->ut_ip('nasip')
     || $self->ut_domain('nasfqdn')
-    || $self->ut_numbern('last');
+    || $self->ut_numbern('last')
+    || $self->SUPER::check
+    ;
 }
 
-=sub heartbeat TIMESTAMP
+=item heartbeat TIMESTAMP
 
 Updates the timestamp for this nas
 
@@ -126,30 +128,21 @@ Updates the timestamp for this nas
 sub heartbeat {
   my($self, $timestamp) = @_;
   my $dbh = dbh;
-  my $sth = $dbh->prepare("LOCK TABLES nas WRITE");
-  $sth->execute or die $sth->errstr; #die?
-  my $lock_self = qsearchs('nas', { 'nasnum' => $self->nasnum } )
-    or die "can't find own record for $self nasnum ". $self->nasnum;
-  if ( $timestamp > $lock_self->last ) {
-    my $new_self = new FS::nas ( { $lock_self->hash } );
-    $new_self->last($timestamp);
-    #is there a reason to? #$self->last($timestamp);
-    $new_self->replace($lock_self);
-  };
-  $sth = $dbh->prepare("UNLOCK TABLES");
-  $sth->execute or die $sth->errstr; #die?
+  my $sth =
+    $dbh->prepare("UPDATE nas SET last = ? WHERE nasnum = ? AND last < ?");
+  $sth->execute($timestamp, $self->nasnum, $timestamp) or die $sth->errstr;
+  $self->last($timestamp);
 }
 
 =back
 
 =head1 VERSION
 
-$Id: nas.pm,v 1.3 2000-12-03 20:25:20 ivan Exp $
+$Id: nas.pm,v 1.7 2003-08-05 00:20:43 khoff Exp $
 
 =head1 BUGS
 
-The B<heartbeat> method is MySQL-specific.  Yuck.  It's also not quite
-perfectly subclassable, which is much less yuck.
+heartbeat method uses SQL directly and doesn't update history tables.
 
 =head1 SEE ALSO