[freeside-commits] freeside/FS/FS cust_pkg.pm, 1.58, 1.59 cust_svc.pm, 1.56, 1.57 agent.pm, 1.10, 1.11

Ivan,,, ivan at wavetail.420.am
Sat Aug 6 17:40:04 PDT 2005


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail:/tmp/cvs-serv11217/FS/FS

Modified Files:
	cust_pkg.pm cust_svc.pm agent.pm 
Log Message:
move cust_pkg search to new template, add active/suspended/cancelled customer packages to agent browse

Index: agent.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/agent.pm,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- agent.pm	12 Mar 2005 14:31:47 -0000	1.10
+++ agent.pm	7 Aug 2005 00:40:02 -0000	1.11
@@ -4,6 +4,7 @@
 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_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 @@
   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

Index: cust_pkg.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_pkg.pm,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- cust_pkg.pm	21 Mar 2005 22:13:36 -0000	1.58
+++ cust_pkg.pm	7 Aug 2005 00:40:02 -0000	1.59
@@ -3,8 +3,9 @@
 use strict;
 use vars qw(@ISA $disable_agentcheck @SVCDB_CANCEL_SEQ $DEBUG);
 use FS::UID qw( getotaker dbh );
-use FS::Record qw( qsearch qsearchs );
 use FS::Misc qw( send_email );
+use FS::Record qw( qsearch qsearchs );
+use FS::cust_main_Mixin;
 use FS::cust_svc;
 use FS::part_pkg;
 use FS::cust_main;
@@ -25,7 +26,7 @@
 # for sending cancel emails in sub cancel
 use FS::Conf;
 
- at ISA = qw( FS::Record );
+ at ISA = qw( FS::cust_main_Mixin FS::Record );
 
 $DEBUG = 0;
 
@@ -141,6 +142,12 @@
 =cut
 
 sub table { 'cust_pkg'; }
+sub cust_linked { $_[0]->cust_main_custnum; } 
+sub cust_unlinked_msg {
+  my $self = shift;
+  "WARNING: can't find cust_main.custnum ". $self->custnum.
+  ' (cust_pkg.pkgnum '. $self->pkgnum. ')';
+}
 
 =item insert [ OPTION => VALUE ... ]
 
@@ -748,6 +755,54 @@
       $self->part_pkg->pkg_svc;
 }
 
+=item status
+
+Returns a short status string for this package, currently:
+
+=over 4
+
+=item not yet billed
+
+=item one-time charge
+
+=item active
+
+=item suspended
+
+=item cancelled
+
+=back
+
+=cut
+
+sub status {
+  my $self = shift;
+
+  return 'cancelled' if $self->get('cancel');
+  return 'suspended' if $self->susp;
+  return 'not yet billed' unless $self->setup;
+  return 'one-time charge' if $self->part_pkg->freq =~ /^(0|$)/;
+  return 'active';
+}
+
+=item statuscolor
+
+Returns a hex triplet color string for this package's status.
+
+=cut
+
+my %statuscolor = (
+  'not yet billed'  => '000000',
+  'one-time charge' => '000000',
+  'active'          => '00CC00',
+  'suspended'       => 'FF9900',
+  'cancelled'       => 'FF0000',
+);
+sub statuscolor {
+  my $self = shift;
+  $statuscolor{$self->status};
+}
+
 =item labels
 
 Returns a list of lists, calling the label method for all services
@@ -1062,6 +1117,60 @@
 
 =back
 
+=head1 CLASS METHOD
+
+=over 4
+
+=item recurring_sql
+
+Returns an SQL expression identifying recurring packages.
+
+=cut
+
+sub recurring_sql { "
+  '0' != ( select freq from part_pkg
+             where cust_pkg.pkgpart = part_pkg.pkgpart )
+"; }
+
+=item active_sql
+
+Returns an SQL expression identifying active packages.
+
+=cut
+
+sub active_sql { "
+  ". $_[0]->recurring_sql(). "
+  AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
+  AND ( cust_pkg.susp   IS NULL OR cust_pkg.susp   = 0 )
+"; }
+
+=item susp_sql
+=item suspended_sql
+
+Returns an SQL expression identifying suspended packages.
+
+=cut
+
+sub suspended_sql { susp_sql(@_); }
+sub susp_sql { "
+  ". $_[0]->recurring_sql(). "
+  AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
+  AND cust_pkg.susp IS NOT NULL AND cust_pkg.susp != 0
+"; }
+
+=item cancel_sql
+=item cancelled_sql
+
+Returns an SQL exprression identifying cancelled packages.
+
+=cut
+
+sub cancelled_sql { cancel_sql(@_); }
+sub cancel_sql { "
+  ". $_[0]->recurring_sql(). "
+  AND cust_pkg.cancel IS NOT NULL AND cust_pkg.cancel != 0
+"; }
+
 =head1 SUBROUTINES
 
 =over 4

Index: cust_svc.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_svc.pm,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- cust_svc.pm	9 Jun 2005 20:16:58 -0000	1.56
+++ cust_svc.pm	7 Aug 2005 00:40:02 -0000	1.57
@@ -274,6 +274,7 @@
 - The name of this service (from part_svc)
 - A meaningful identifier (username, domain, or mail alias)
 - The table name (i.e. svc_domain) for this service
+- svcnum
 
 =cut
 
@@ -326,7 +327,7 @@
     $tag = $svc_x->getfield('svcnum');
   }
 
-  $self->part_svc->svc, $tag, $svcdb;
+  $self->part_svc->svc, $tag, $svcdb, $self->svcnum;
 
 }
 



More information about the freeside-commits mailing list