X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fagent.pm;h=0a0e4f7ba849a310c3e38afedb72ac90ae01fd82;hb=6ed5d51b3a72e2935dd5d084c9e24567150b03ca;hp=fc1d1a93e414fcc41f17f7a5cfee3635f9d3e2e9;hpb=05d94720d26ca009b06f21534b06d1650d9f2915;p=freeside.git diff --git a/FS/FS/agent.pm b/FS/FS/agent.pm index fc1d1a93e..0a0e4f7ba 100644 --- a/FS/FS/agent.pm +++ b/FS/FS/agent.pm @@ -4,6 +4,7 @@ use strict; use vars qw( @ISA ); 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; @@ -179,10 +180,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]; } @@ -266,6 +266,46 @@ 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_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