status labels
authorIvan Kohler <ivan@freeside.biz>
Thu, 13 Nov 2014 22:26:08 +0000 (14:26 -0800)
committerIvan Kohler <ivan@freeside.biz>
Thu, 13 Nov 2014 22:26:08 +0000 (14:26 -0800)
18 files changed:
FS/FS/ClientAPI/Agent.pm
FS/FS/ClientAPI/MyAccount.pm
FS/FS/UI/Web.pm
FS/FS/UI/Web/small_custview.pm
FS/FS/Upgrade.pm
FS/FS/cust_main.pm
FS/FS/cust_main/Status.pm
FS/FS/cust_main_Mixin.pm
FS/FS/msg_template.pm
fs_selfservice/FS-SelfService/cgi/list_customers.html
fs_selfservice/FS-SelfService/cgi/small_custview.html
httemplate/edit/cust_main.cgi
httemplate/edit/msg_template.html
httemplate/misc/xmlhttp-cust_main-duplicates.html
httemplate/misc/xmlhttp-cust_main-search.cgi
httemplate/search/cust_bill_pkg_referral.html
httemplate/search/cust_main.cgi
httemplate/view/cust_main/misc.html

index 923920d..baa05ca 100644 (file)
@@ -140,7 +140,7 @@ sub agent_list_customers {
                          my $cust_main = $_;
                          my $hashref = $cust_main->hashref;
                          $hashref->{$_} = $cust_main->$_()
-                           foreach qw(name status statuscolor);
+                           foreach qw(name status statuscolor status_label);
                          delete $hashref->{$_} foreach qw( payinfo paycvv );
                          $hashref;
                    } @cust_main
index bcfe35c..ec114ff 100644 (file)
@@ -464,8 +464,9 @@ sub customer_info {
                     );
 
     $return{has_ship_address} = $cust_main->has_ship_address;
-    $return{status} = $cust_main->status;
+    $return{status} = $cust_main->status_label; #$cust_main->status; #better to break anyone obscurely testing for strings in self-service than to have to upgrade every front-end to get the new status to display
     $return{statuscolor} = $cust_main->statuscolor;
+    $return{status_label} = $cust_main->status_label;
 
     # compatibility: some places in selfservice use this to determine
     # if there's a ship address
index bab7e30..99c3560 100644 (file)
@@ -225,7 +225,7 @@ sub cust_header {
 
   my %header2method = (
     'Customer'                 => 'name',
-    'Cust. Status'             => 'ucfirst_cust_status',
+    'Cust. Status'             => 'cust_status_label',
     'Cust#'                    => 'custnum',
     'Name'                     => 'contact',
     'Company'                  => 'company',
index 2290ba3..d7cede6 100644 (file)
@@ -36,7 +36,7 @@ sub small_custview {
 
   $html .= 'Customer #<B>'. $cust_main->display_custnum. '</B></A>'.
     ' - <B><FONT COLOR="#'. $cust_main->statuscolor. '">'.
-    ucfirst($cust_main->status). '</FONT></B>';
+    $cust_main->status_label. '</FONT></B>';
 
   my @part_tag = $cust_main->part_tag;
   if ( @part_tag ) {
index d76379f..7aa7ce3 100644 (file)
@@ -236,7 +236,7 @@ sub upgrade {
   }
 
   local($FS::cust_main::ignore_expired_card) = 1;
-  local($FS::cust_main::ignore_illegal_zip) = 1;
+  #this is long-gone... would need to set an equivalent in cust_location #local($FS::cust_main::ignore_illegal_zip) = 1;
   local($FS::cust_main::ignore_banned_card) = 1;
   local($FS::cust_main::skip_fuzzyfiles) = 1;
 
index e5982a9..b2949a5 100644 (file)
@@ -17,14 +17,6 @@ use base qw( FS::cust_main::Packages
 
 require 5.006;
 use strict;
-use vars qw( $DEBUG $me $conf
-             @encrypted_fields
-             $import
-             $ignore_expired_card $ignore_banned_card $ignore_illegal_zip
-             $ignore_invalid_card
-             $skip_fuzzyfiles
-             @paytypes
-           );
 use Carp;
 use Scalar::Util qw( blessed );
 use Time::Local qw(timelocal);
@@ -86,21 +78,24 @@ use FS::cust_payby;
 # 1 is mostly method/subroutine entry and options
 # 2 traces progress of some operations
 # 3 is even more information including possibly sensitive data
-$DEBUG = 0;
-$me = '[FS::cust_main]';
+our $DEBUG = 0;
+our $me = '[FS::cust_main]';
+
+our $import = 0;
+our $ignore_expired_card = 0;
+our $ignore_banned_card = 0;
+our $ignore_invalid_card = 0;
 
-$import = 0;
-$ignore_expired_card = 0;
-$ignore_banned_card = 0;
-$ignore_invalid_card = 0;
+our $skip_fuzzyfiles = 0;
 
-$skip_fuzzyfiles = 0;
+our $ucfirst_nowarn = 0;
 
-@encrypted_fields = ('payinfo', 'paycvv');
+our @encrypted_fields = ('payinfo', 'paycvv');
 sub nohistory_fields { ('payinfo', 'paycvv'); }
 
-@paytypes = ('', 'Personal checking', 'Personal savings', 'Business checking', 'Business savings');
+our @paytypes = ('', 'Personal checking', 'Personal savings', 'Business checking', 'Business savings');
 
+our $conf;
 #ask FS::UID to run this stuff for us later
 #$FS::UID::callback{'FS::cust_main'} = sub { 
 install_callback FS::UID sub { 
@@ -4230,17 +4225,29 @@ Returns a status string for this customer, currently:
 
 =over 4
 
-=item prospect - No packages have ever been ordered
+=item prospect
+
+No packages have ever been ordered.  Displayed as "No packages".
+
+=item ordered
+
+Recurring packages all are new (not yet billed).
 
-=item ordered - Recurring packages all are new (not yet billed).
+=item active
 
-=item active - One or more recurring packages is active
+One or more recurring packages is active.
 
-=item inactive - No active recurring packages, but otherwise unsuspended/uncancelled (the inactive status is new - previously inactive customers were mis-identified as cancelled)
+=item inactive
 
-=item suspended - All non-cancelled recurring packages are suspended
+No active recurring packages, but otherwise unsuspended/uncancelled (the inactive status is new - previously inactive customers were mis-identified as cancelled).
 
-=item cancelled - All recurring packages are cancelled
+=item suspended
+
+All non-cancelled recurring packages are suspended.
+
+=item cancelled
+
+All recurring packages are cancelled.
 
 =back
 
@@ -4267,17 +4274,35 @@ sub cust_status {
 
 =item ucfirst_status
 
+Deprecated, use the cust_status_label method instead.
+
 Returns the status with the first character capitalized.
 
 =cut
 
-sub ucfirst_status { shift->ucfirst_cust_status(@_); }
+sub ucfirst_status {
+  carp "ucfirst_status deprecated, use cust_status_label" unless $ucfirst_nowarn;
+  local($ucfirst_nowarn) = 1;
+  shift->ucfirst_cust_status(@_);
+}
 
 sub ucfirst_cust_status {
+  carp "ucfirst_cust_status deprecated, use cust_status_label" unless $ucfirst_nowarn;
   my $self = shift;
   ucfirst($self->cust_status);
 }
 
+=item cust_status_label
+
+Returns the display label for this status.
+
+=cut
+
+sub cust_status_label {
+  my $self = shift;
+  __PACKAGE__->statuslabels->{$self->cust_status};
+}
+
 =item statuscolor
 
 Returns a hex triplet color string for this customer's status.
index f84ff0f..c17bb57 100644 (file)
@@ -68,6 +68,21 @@ sub statuscolors {
 
 }
 
+sub statuslabels {
+  #my $self = shift; #i guess i'm a class method
+
+  my %statuslabels = (
+      'prospect'  => 'No packages',
+      'active'    => 'Active',
+      'ordered'   => 'Ordered',
+      'inactive'  => 'Inactive',
+      'suspended' => 'Suspended',
+      'cancelled' => 'Cancelled',
+  );
+
+  \%statuslabels;
+}
+
 =item cancelled_sql
 
 =cut
index 4b151e7..ded6cc6 100644 (file)
@@ -235,12 +235,25 @@ linked to a customer.
 =cut
 
 sub ucfirst_cust_status {
+  carp "ucfirst_cust_status deprecated, use cust_status_label";
   my $self = shift;
   $self->cust_linked
     ? ucfirst( $self->cust_status(@_) ) 
     : $self->cust_unlinked_msg;
 }
 
+=item cust_status_label
+
+=cut
+
+sub cust_status_label {
+  my $self = shift;
+
+  $self->cust_linked
+    ? FS::cust_main::cust_status_label($self)
+    : $self->cust_unlinked_msg;
+}
+
 =item cust_statuscolor
 
 Given an object that contains fields from cust_main (say, from a JOINed
index 2fc66b4..08f0ada 100644 (file)
@@ -528,7 +528,7 @@ sub substitutions {
       balance
       credit_limit
       invoicing_list_emailonly
-      cust_status ucfirst_cust_status cust_statuscolor
+      cust_status ucfirst_cust_status cust_statuscolor cust_status_label
 
       signupdate dundate
       packages recurdates
index 9746347..b302624 100644 (file)
@@ -20,7 +20,7 @@
       $OUT .=
         '<TR>'.
         "$td<FONT COLOR=\"". $customer->{'statuscolor'}. '">'.
-          ucfirst($customer->{'status'}). "</TD>". "$td</TD>".
+          $customer->{'status_label'}. "</TD>". "$td</TD>".
         "$td$a". $customer->{'name'}. "</A></TD>".
         '</TR>';
         #"$td</TD>".
index 308eae9..919df56 100644 (file)
@@ -1,7 +1,7 @@
 <DIV ID="fs_small_custview">
   
 Customer #<B><%= $display_custnum %></B>
- - <B><FONT COLOR="#<%= $statuscolor %>"><%= ucfirst($status)%></FONT></B>
+ - <B><FONT COLOR="#<%= $statuscolor %>"><%= $status_label %></FONT></B>
 
 <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="<%= $box_bgcolor ||= '#c0c0c0' %>">
   <TR>
index ae5085e..353ae17 100755 (executable)
@@ -17,7 +17,7 @@
 % if ( $custnum ) { 
   <% mt('Customer #') |h %><B><% $cust_main->display_custnum %></B> - 
   <B><FONT COLOR="#<% $cust_main->statuscolor %>">
-    <% ucfirst($cust_main->status) %>
+    <% $cust_main->status_label %>
   </FONT></B>
   <BR><BR>
 % } 
index 6c9d2f4..aac4cd4 100644 (file)
@@ -203,9 +203,9 @@ my %substitutions = (
     '$balance'        => 'Current balance',
     '$credit_limit'   => 'Credit limit',
     '$invoicing_list_emailonly' => 'Billing email address',
-    '$cust_status'    => 'Status',
-    '$ucfirst_cust_status'  => 'Status, capitalized',
-    '$cust_statuscolor'     => 'Status color code',
+    #'$cust_status'    => 'Status (raw internal label)',
+    '$cust_status_label' => 'Status (display label)',
+    '$cust_statuscolor'  => 'Status color code',
     '$company_name'   => 'Our company name',
     '$company_address'=> 'Our company address',
     '$company_phonenum' => 'Our phone number',
index 7cd4633..eac396d 100644 (file)
@@ -8,7 +8,7 @@ Choose an existing customer
 <TR>
   <TD ALIGN="right" VALIGN="top"><B><% $custnum %>: </B></TD>
   <TD ALIGN="left">
-    <% $_->name |h %>&mdash;<B><FONT COLOR="#<%$_->statuscolor%>"><%$_->ucfirst_cust_status%></FONT></B><BR>
+    <% $_->name |h %>&mdash;<B><FONT COLOR="#<%$_->statuscolor%>"><%$_->cust_status_label%></FONT></B><BR>
 <% $_->address1 |h %><BR>
 <% $_->city |h %>,&nbsp;<% $_->state %>&nbsp;&nbsp;<% $_->zip %>
   </TD>
index b3bf468..f40df56 100644 (file)
@@ -15,7 +15,7 @@
 %   my $return = [ map [ $_->custnum,
 %                        $_->name,
 %                        $_->balance,
-%                        $_->ucfirst_status,
+%                        $_->status_label,
 %                        $_->statuscolor,
 %                        scalar($_->open_cust_bill),
 %                        $_->display_custnum,
@@ -65,7 +65,7 @@ sub findbycustnum {
   [ $c->custnum,
     $c->name,
     $c->balance,
-    $c->ucfirst_status,
+    $c->status_label,
     $c->statuscolor,
     scalar($c->open_cust_bill),
     $c->display_custnum,
@@ -93,7 +93,7 @@ sub findbycustnum_or_agent_custid {
   [ map [ $_->custnum,
           $_->name,
           $_->balance,
-          $_->ucfirst_status,
+          $_->status_label,
           $_->statuscolor,
           scalar($_->open_cust_bill),
           $_->display_custnum,
index f8e2ea7..1bc3b10 100644 (file)
   'color' => [ ('') x (5 + $x),
                 sub {
                   my $cust_pkg = shift->cust_pkg;
-                  $cust_pkg ? ucfirst($cust_pkg->statuscolor) : '';
+                  $cust_pkg ? $cust_pkg->statuscolor : '';
                 },
                ('') x 6,
              ],
index 0b0dd4f..f48ea3f 100755 (executable)
 %      ? qq!<A HREF="$view"><FONT SIZE=-1>!. encode_entities($company). '</FONT></A>'
 %      : '<FONT SIZE=-1>&nbsp;</FONT>';
 %    
-%    my $status = $cust_main->status;
-%    my $statuscol = $cust_main->statuscolor;
+%    my $status_label = $cust_main->status_label;
+%    my $statuscolor = $cust_main->statuscolor;
 
     <TR>
       <TD CLASS="grid" ALIGN="right" BGCOLOR="<% $bgcolor %>" ROWSPAN=<% $rowspan %>>
         <A HREF="<% $view %>"><FONT SIZE=-1><% $cust_main->display_custnum %></FONT></A>
       </TD>
       <TD CLASS="grid" ALIGN="center" BGCOLOR="<% $bgcolor %>" ROWSPAN=<% $rowspan %>>
-        <FONT SIZE="-1" COLOR="#<% $statuscol %>"><B><% ucfirst($status) %></B></FONT>
+        <FONT SIZE="-1" COLOR="#<% $statuscolor %>"><B><% $status_label %></B></FONT>
       </TD>
       <TD CLASS="grid" BGCOLOR="<% $bgcolor %>" ROWSPAN=<% $rowspan %>>
         <A HREF="<% $view %>"><FONT SIZE=-1><% "$last, $first" |h %></FONT></A>
index 0d011f6..15def32 100644 (file)
@@ -7,7 +7,7 @@
 
 <TR>
   <TD ALIGN="right"><% mt('Status') |h %></TD>
-  <TD BGCOLOR="#ffffff"><FONT COLOR="#<% $cust_main->statuscolor %>"><B><% ucfirst($cust_main->status) %></B></FONT></TD>
+  <TD BGCOLOR="#ffffff"><FONT COLOR="#<% $cust_main->statuscolor %>"><B><% $cust_main->status_label %></B></FONT></TD>
 </TR>
 
 % my @part_tag = $cust_main->part_tag;