X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fagent.pm;h=e40ef09dbf25d14855e6358a87810554fd7b5d8d;hb=a0732f52fdcc2bca7c399d1249ccceb191de51cd;hp=3d8e67739f04d864e6fb6747fca71e763497f57e;hpb=55a68e4aabe10db4d9c3ab1bb8befd2f9f4b9008;p=freeside.git diff --git a/FS/FS/agent.pm b/FS/FS/agent.pm index 3d8e67739..e40ef09db 100644 --- a/FS/FS/agent.pm +++ b/FS/FS/agent.pm @@ -2,11 +2,13 @@ package FS::agent; 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 ); @@ -166,6 +168,18 @@ sub pkgpart_hashref { $self->agent_type->pkgpart_hashref; } +=item ticketing_queue + +Returns the queue name corresponding with the id from the I +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 @@ -179,10 +193,9 @@ sub num_prospect_cust_main { sub num_sql { my( $self, $sql ) = @_; - my $sth = dbh->prepare( - "SELECT COUNT(*) FROM cust_main WHERE agentnum = ? AND $sql" - ) or die dbh->errstr; - $sth->execute($self->agentnum) or die $sth->errstr; + 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->fetchrow_arrayref->[0]; } @@ -208,7 +221,8 @@ sub cust_main_sql { =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 @@ -226,6 +240,28 @@ sub active_cust_main { 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. @@ -266,6 +302,57 @@ sub cancel_cust_main { shift->cust_main_sql(FS::cust_main->cancel_sql); } +=item num_active_cust_pkg + +Returns the number of active customer packages for this agent. + +=cut + +sub num_active_cust_pkg { + shift->num_pkg_sql(FS::cust_pkg->active_sql); +} + +sub num_pkg_sql { + my( $self, $sql ) = @_; + my $statement = + "SELECT COUNT(*) FROM cust_pkg LEFT JOIN cust_main USING ( custnum )". + " 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->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. + +=cut + +sub num_susp_cust_pkg { + shift->num_pkg_sql(FS::cust_pkg->susp_sql); +} + +=item num_cancel_cust_pkg + +Returns the number of cancelled customer packages for this agent. + +=cut + +sub num_cancel_cust_pkg { + shift->num_pkg_sql(FS::cust_pkg->cancel_sql); +} + =item generate_reg_codes NUM PKGPART_ARRAYREF Generates the specified number of registration codes, allowing purchase of the @@ -274,6 +361,7 @@ generated codes, or a scalar error message. =cut +#false laziness w/prepay_credit::generate sub generate_reg_codes { my( $self, $num, $pkgparts ) = @_; @@ -325,6 +413,22 @@ sub num_reg_code { $sth->fetchrow_arrayref->[0]; } +=item num_prepay_credit + +Returns the number of unused prepaid cards for this agent. + +=cut + +sub num_prepay_credit { + my $self = shift; + my $sth = dbh->prepare( + "SELECT COUNT(*) FROM prepay_credit WHERE agentnum = ?" + ) or die dbh->errstr; + $sth->execute($self->agentnum) or die $sth->errstr; + $sth->fetchrow_arrayref->[0]; +} + + =back =head1 BUGS