use strict;
use vars qw( @ISA );
+#use Crypt::YAPassGen;
use FS::Record qw( dbh qsearch qsearchs );
use FS::cust_main;
use FS::cust_pkg;
use FS::agent_type;
use FS::reg_code;
-#use Crypt::YAPassGen;
+use FS::TicketSystem;
-@ISA = qw( FS::Record );
+@ISA = qw( FS::m2m_Common FS::Record );
=head1 NAME
=item agent - Text name of this agent
-=item typenum - Agent type. See L<FS::agent_type>
+=item typenum - Agent type (see L<FS::agent_type>)
+
+=item ticketing_queueid - Ticketing Queue
-=item prog - For future use.
+=item invoice_template - Invoice template name
-=item freq - For future use.
+=item agent_custnum - Optional agent customer (see L<FS::cust_main>)
=item disabled - Disabled flag, empty or 'Y'
-=item username - Username for the Agent interface
+=item prog - Deprecated (never used)
+
+=item freq - Deprecated (never used)
+
+=item username - (Deprecated) Username for the Agent interface
-=item _password - Password for the Agent interface
+=item _password - (Deprecated) Password for the Agent interface
=back
|| $self->ut_number('typenum')
|| $self->ut_numbern('freq')
|| $self->ut_textn('prog')
+ || $self->ut_textn('invoice_template')
+ || $self->ut_foreign_keyn('agent_custnum', 'cust_main', 'custnum' )
;
return $error if $error;
qsearchs( 'agent_type', { 'typenum' => $self->typenum } );
}
+=item agent_cust_main
+
+Returns the FS::cust_main object (see L<FS::cust_main>), if any, for this
+agent.
+
+=cut
+
+sub agent_cust_main {
+ my $self = shift;
+ qsearchs( 'cust_main', { 'custnum' => $self->agent_custnum } );
+}
+
=item pkgpart_hashref
Returns a hash reference. The keys of the hash are pkgparts. The value is
$self->agent_type->pkgpart_hashref;
}
+=item ticketing_queue
+
+Returns the queue name corresponding with the id from the I<ticketing_queueid>
+field, or the empty string.
+
+=cut
+
+sub ticketing_queue {
+ my $self = shift;
+ FS::TicketSystem->queue($self->ticketing_queueid);
+};
+
=item num_prospect_cust_main
Returns the number of prospects (customers with no packages ever ordered) for
my( $self, $sql ) = @_;
my $statement = "SELECT COUNT(*) FROM cust_main WHERE agentnum = ? AND $sql";
my $sth = dbh->prepare($statement) or die dbh->errstr." preparing $statement";
- $sth->execute($self->agentnum) or die $sth->errstr. "executing $statement";
+ $sth->execute($self->agentnum) or die $sth->errstr. " executing $statement";
$sth->fetchrow_arrayref->[0];
}
=item num_active_cust_main
-Returns the number of active customers for this agent.
+Returns the number of active customers for this agent (customers with active
+recurring packages).
=cut
shift->cust_main_sql(FS::cust_main->active_sql);
}
+=item num_inactive_cust_main
+
+Returns the number of inactive customers for this agent (customers with no
+active recurring packages, but otherwise unsuspended/uncancelled).
+
+=cut
+
+sub num_inactive_cust_main {
+ shift->num_sql(FS::cust_main->inactive_sql);
+}
+
+=item inactive_cust_main
+
+Returns the inactive customers for this agent, as cust_main objects.
+
+=cut
+
+sub inactive_cust_main {
+ shift->cust_main_sql(FS::cust_main->inactive_sql);
+}
+
+
=item num_susp_cust_main
Returns the number of suspended customers for this agent.
$sth->fetchrow_arrayref->[0];
}
+=item num_inactive_cust_pkg
+
+Returns the number of inactive customer packages (one-time packages otherwise
+unsuspended/uncancelled) for this agent.
+
+=cut
+
+sub num_inactive_cust_pkg {
+ shift->num_pkg_sql(FS::cust_pkg->inactive_sql);
+}
+
=item num_susp_cust_pkg
Returns the number of suspended customer packages for this agent.