add skip_dcontext_suffix to skip CDRs with dcontext ending in a definable string...
[freeside.git] / FS / FS / agent.pm
index 0bb7561..4ad878d 100644 (file)
@@ -1,5 +1,5 @@
 package FS::agent;
-use base qw( FS::m2m_Common FS::m2name_Common FS::Record );
+use base qw( FS::Commission_Mixin FS::m2m_Common FS::m2name_Common FS::Record );
 
 use strict;
 use vars qw( @ISA );
@@ -44,27 +44,49 @@ from FS::Record.  The following fields are currently supported:
 
 =over 4
 
-=item agentnum - primary key (assigned automatically for new agents)
+=item agentnum
 
-=item agent - Text name of this agent
+primary key (assigned automatically for new agents)
 
-=item typenum - Agent type (see L<FS::agent_type>)
+=item agent
 
-=item ticketing_queueid - Ticketing Queue
+Text name of this agent
 
-=item invoice_template - Invoice template name
+=item typenum
 
-=item agent_custnum - Optional agent customer (see L<FS::cust_main>)
+Agent type (see L<FS::agent_type>)
 
-=item disabled - Disabled flag, empty or 'Y'
+=item ticketing_queueid
 
-=item prog - Deprecated (never used)
+Ticketing Queue
 
-=item freq - Deprecated (never used)
+=item invoice_template
 
-=item username - (Deprecated) Username for the Agent interface
+Invoice template name
 
-=item _password - (Deprecated) Password for the Agent interface
+=item agent_custnum
+
+Optional agent customer (see L<FS::cust_main>)
+
+=item disabled
+
+Disabled flag, empty or 'Y'
+
+=item prog
+
+Deprecated (never used)
+
+=item freq
+
+Deprecated (never used)
+
+=item username
+
+(Deprecated) Username for the Agent interface
+
+=item _password
+
+(Deprecated) Password for the Agent interface
 
 =back
 
@@ -125,6 +147,7 @@ sub check {
       || $self->ut_textn('prog')
       || $self->ut_textn('invoice_template')
       || $self->ut_foreign_keyn('agent_custnum', 'cust_main', 'custnum' )
+      || $self->ut_numbern('ticketing_queueid')
   ;
   return $error if $error;
 
@@ -209,7 +232,7 @@ field, or the empty string.
 sub ticketing_queue {
   my $self = shift;
   FS::TicketSystem->queue($self->ticketing_queueid);
-};
+}
 
 =item payment_gateway [ OPTION => VALUE, ... ]
 
@@ -595,6 +618,28 @@ sub num_cancel_cust_pkg {
   shift->num_pkg_sql(FS::cust_pkg->cancel_sql);
 }
 
+=item num_on_hold_cust_pkg
+
+Returns the number of inactive customer packages (one-time packages otherwise
+unsuspended/uncancelled) for this agent.
+
+=cut
+
+sub num_on_hold_cust_pkg {
+  shift->num_pkg_sql(FS::cust_pkg->on_hold_sql);
+}
+
+=item num_not_yet_billed_cust_pkg
+
+Returns the number of inactive customer packages (one-time packages otherwise
+unsuspended/uncancelled) for this agent.
+
+=cut
+
+sub num_not_yet_billed_cust_pkg {
+  shift->num_pkg_sql(FS::cust_pkg->not_yet_billed_sql);
+}
+
 =item generate_reg_codes NUM PKGPART_ARRAYREF
 
 Generates the specified number of registration codes, allowing purchase of the
@@ -686,6 +731,16 @@ sub num_sales {
   $sth->fetchrow_arrayref->[0];
 }
 
+sub commission_where {
+  my $self = shift;
+  'cust_credit.commission_agentnum = ' . $self->agentnum;
+}
+
+sub sales_where {
+  my $self = shift;
+  'cust_main.agentnum = ' . $self->agentnum;
+}
+
 =back
 
 =head1 BUGS