default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / part_referral.pm
index c94c57e..2df8a75 100644 (file)
@@ -1,9 +1,9 @@
 package FS::part_referral;
+use base qw(FS::Record);
 
 use strict;
 use vars qw( @ISA $setup_hack );
-use FS::Record qw( qsearch qsearchs dbh );
-use FS::agent;
+use FS::Record qw( dbh qsearch ); #qsearchs );
 
 @ISA = qw( FS::Record );
 $setup_hack = 0;
@@ -44,6 +44,9 @@ The following fields are currently supported:
 
 =item agentnum - Optional agentnum (see L<FS::agent>)
 
+=item title - an optional external string that identifies this
+referral source, such as an advertising campaign code.
+
 =back
 
 =head1 NOTE
@@ -101,6 +104,7 @@ sub check {
     || $self->ut_text('referral')
     || $self->ut_enum('disabled', [ '', 'Y' ] )
     #|| $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum')
+    || $self->ut_textn('title')
     || ( $setup_hack
            ? $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum' )
            : $self->ut_agentnum_acl('agentnum', 'Edit global advertising sources')
@@ -115,13 +119,6 @@ sub check {
 
 Returns the associated agent for this referral, if any, as an FS::agent object.
 
-=cut
-
-sub agent {
-  my $self = shift;
-  qsearchs('agent', { 'agentnum' => $self->agentnum } );
-}
-
 =back
 
 =head1 CLASS METHODS
@@ -163,10 +160,16 @@ simply using rather than editing advertising sources).
 
 sub all_part_referral {
   my $self = shift;
+  my $global = @_ ? shift : '';
+  my $disabled = @_ ? shift : '';
+
+  my $hashref = $disabled ? {} : { 'disabled' => '' };
+  my $and = $disabled ? ' WHERE ' : ' AND ';
 
   qsearch({
     'table'     => 'part_referral',
-    'extra_sql' => ' WHERE '. $self->acl_agentnum_sql(@_). ' ORDER BY refnum ',
+    'hashref'   => $hashref,
+    'extra_sql' => $and. $self->acl_agentnum_sql($global). ' ORDER BY refnum ',
   });
 
 }