[freeside-commits] branch master updated. f34ac99a5e160d2eac4fb2cfecce820d1cf9b7ed

Ivan ivan at 420.am
Thu Mar 5 17:30:51 PST 2015


The branch, master has been updated
       via  f34ac99a5e160d2eac4fb2cfecce820d1cf9b7ed (commit)
       via  aaa1a91c209ec3547b2c62dc59af935649a62b58 (commit)
      from  0668c6afdce579dd202b12874bc0e9f1abe40ada (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f34ac99a5e160d2eac4fb2cfecce820d1cf9b7ed
Merge: aaa1a91 0668c6a
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Mar 5 17:30:46 2015 -0800

    Merge branch 'master' of git.freeside.biz:/home/git/freeside


commit aaa1a91c209ec3547b2c62dc59af935649a62b58
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Mar 5 17:30:26 2015 -0800

    legacy change history, RT#29311

diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm
index 81671ff..897b781 100644
--- a/FS/FS/Mason.pm
+++ b/FS/FS/Mason.pm
@@ -398,6 +398,7 @@ if ( -e $addl_handler_use_file ) {
   use FS::cust_credit_source_bill_pkg;
   use FS::prospect_contact;
   use FS::cust_contact;
+  use FS::legacy_cust_history;
   # Sammath Naur
 
   if ( $FS::Mason::addl_handler_use ) {
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 9c2e9ba..89fc5f7 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -200,6 +200,7 @@ sub dbdef_dist {
     grep {    ! /^(clientapi|access_user)_session/
            && ! /^h_/
            && ! /^log(_context)?$/
+           && ! /^legacy_cust_history$/
            && ( ! /^queue(_arg|_depend|_stat)?$/ || ! $opt->{'queue-no_history'} )
            && ! $tables_hashref_torrus->{$_}
          }
@@ -778,6 +779,31 @@ sub tables_hashref {
                         ],
     },
 
+    'legacy_cust_history' => {
+      'columns' => [
+        'legacyhistorynum', 'serial',     '',        '', '', '',
+        'custnum',             'int',     '',        '', '', '',
+        'history_action',  'varchar',     '',   $char_d, '', '',
+        'history_date',           @date_type,            '', '',
+        'history_usernum',     'int', 'NULL',        '', '', '',
+        'item',            'varchar', 'NULL',   $char_d, '', '',
+        'description',     'varchar', 'NULL', 2*$char_d, '', '',
+        'change_data',        'text', 'NULL',        '', '', '',
+      ],
+      'primary_key'  => 'legacyhistorynum',
+      'unique'       => [],
+      'index'        => [ ['custnum'], ['history_date'], ],
+      'foreign_keys' => [
+                          { columns    => [ 'custnum' ],
+                            table      => 'cust_main',
+                          },
+                          { columns    => [ 'history_usernum' ],
+                            table      => 'access_user',
+                            references => [ 'usernum' ],
+                          },
+                        ],
+    },
+
     'cust_statement' => {
       'columns' => [
         'statementnum', 'serial', '', '', '', '',
diff --git a/FS/FS/legacy_cust_history.pm b/FS/FS/legacy_cust_history.pm
new file mode 100644
index 0000000..9e14903
--- /dev/null
+++ b/FS/FS/legacy_cust_history.pm
@@ -0,0 +1,134 @@
+package FS::legacy_cust_history;
+use base qw( FS::Record );
+
+use strict;
+use FS::Record qw( qsearch qsearchs );
+
+=head1 NAME
+
+FS::legacy_cust_history - Object methods for legacy_cust_history records
+
+=head1 SYNOPSIS
+
+  use FS::legacy_cust_history;
+
+  $record = new FS::legacy_cust_history \%hash;
+  $record = new FS::legacy_cust_history { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::legacy_cust_history object represents an item of customer change history
+from a previous billing system.  FS::legacy_cust_history inherits from
+FS::Record.  The following fields are currently supported:
+
+=over 4
+
+=item legacyhistorynum
+
+primary key
+
+=item custnum
+
+Customer (see L<FS::cust_main)
+
+=item history_action
+
+Action, such as add, edit, delete, etc.
+
+=item history_date
+
+Date, as a UNIX timestamp
+
+=item history_usernum
+
+Employee (see L<FS::access_user>)
+
+=item item
+
+The item (i.e. table) which was changed.
+
+=item description
+
+A text description of the change
+
+=item change_data
+
+A text data structure representing the change
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new record.  To add the record to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to.  You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'legacy_cust_history'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database.  If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid record.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('legacyhistorynum')
+    || $self->ut_foreign_key('custnum', 'cust_main', 'custnum')
+    || $self->ut_text('history_action')
+    || $self->ut_numbern('history_date')
+    || $self->ut_foreign_keyn('history_usernum', 'access_user', 'usernum')
+    || $self->ut_textn('item')
+    || $self->ut_textn('description')
+    || $self->ut_anything('change_data')
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/MANIFEST b/FS/MANIFEST
index 0542dfd..378421c 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -836,3 +836,5 @@ FS/cust_contact.pm
 t/cust_contact.t
 FS/pkg_discount_Mixin.pm
 t/pkg_discount_Mixin.t
+FS/legacy_cust_history.pm
+t/legacy_cust_history.t
diff --git a/FS/t/legacy_cust_history.t b/FS/t/legacy_cust_history.t
new file mode 100644
index 0000000..ac48aee
--- /dev/null
+++ b/FS/t/legacy_cust_history.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::legacy_cust_history;
+$loaded=1;
+print "ok 1\n";
diff --git a/httemplate/elements/change_history_common.html b/httemplate/elements/change_history_common.html
index 2d2c4c0..d941427 100644
--- a/httemplate/elements/change_history_common.html
+++ b/httemplate/elements/change_history_common.html
@@ -18,7 +18,7 @@
 % foreach my $item ( @history ) {
 %   my $history_other = '';
 %   my $act  = $item->history_action;
-%   if ( $act =~ /^replace/ ) {
+%   if ( $act =~ /^replace/ && $item->table ne 'legacy_cust_history' ) {
 %     my $pkey = $item->primary_key;
 %     my $date = $item->history_date;
 %     $history_other = qsearchs({
@@ -44,18 +44,29 @@
 %   }
 
   <TR>
+
     <TD ALIGN="left" CLASS="grid" BGCOLOR="<% $bgcolor %>">
-%     my $otaker = $item->history_user;
+%     my $otaker;
+%     if ( $item->history_usernum ) {
+%       $access_user{ $item->history_usernum } ||=
+%         qsearchs('access_user', { 'usernum' => $item->history_usernum });
+%       $otaker = $access_user{ $item->history_usernum }->username
+%         if $access_user{ $item->history_usernum };
+%     }
+%     $otaker ||= $item->history_user;
 %     $otaker = '<i>auto billing</i>'          if $otaker eq 'fs_daily';
 %     $otaker = '<i>customer self-service</i>' if $otaker eq 'fs_selfservice';
 %     $otaker = '<i>job queue</i>'             if $otaker eq 'fs_queue';
+%     $otaker = '<i>system bootstrap user</i>' if $otaker eq 'fs_bootstrap';
       <% $otaker %>
     </TD>
+
     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
 %     my $d = time2str('%b %o, %Y', $item->history_date );
 %     $d =~ s/ / /g;
       <% $d %>
     </TD>
+
     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
 %     my $t = time2str('%r', $item->history_date );
 %     $t =~ s/ / /g;
@@ -72,44 +83,53 @@
 
     <TD ALIGN="center" CLASS="grid" BGCOLOR="<% $bgcolor %>">
 %       my $label = '';
-%       $label = $item->table;
-%       $label =~ s/^h_//;
-%       $label = $tables{$label};
-% if ( $single_cust ) {
-%     $label = &{ $h_table_labelsub{$item->table} }( $item, $label )
-%       if $h_table_labelsub{$item->table};
-% }
+%       if ( $item->table eq 'legacy_cust_bill' ) {
+%         $label = $item->item;
+%       } else {
+%         $label = $item->table;
+%         $label =~ s/^h_//;
+%         $label = $tables{$label};
+%         $label = &{ $h_table_labelsub{$item->table} }( $item, $label )
+%           if $single_cust && $h_table_labelsub{$item->table};
+%       }
       <% $label %>
     </TD>
+
     <TD ALIGN="left" CLASS="grid" BGCOLOR="<% $bgcolor %>">
-      <% $action{$item->history_action} %>
+      <% $action{$item->history_action} || ucfirst($item->history_action) |h %>
     </TD>
+
     <TD ALIGN="left" CLASS="grid" BGCOLOR="<% $bgcolor %>">
-      <% join(', ',
-           map  { my $value = ( $_ =~ /(^pay(info|cvv)|^ss|_password)$/ ) 
-                                ? 'N/A'
-                                : $item->get($_);
-                  $value = time2str($cust_pkg_date_format, $value)
-                   if $item->table eq 'h_cust_pkg'
-                   && $cust_pkg_date_fields{$_}
-                   && $value;
-
-                  $value = substr($value, 0, 77).'...' if length($value) > 80;
-                  $value = encode_entities($value);
-                  "<I>$_</I>:<B>$value</B>";
-                }
-           grep { $history_other
-                    ? ( $item->get($_) ne $history_other->get($_) )
-                    : ( $item->get($_) =~ /\S/ )
-                }
-           grep { ! /^(history|custnum$)/i }
-                $item->fields
-         )
-      %>
-% if ( $single_cust && $h_table_descripsub{$item->table} ) {
-      <% &{ $h_table_descripsub{$item->table} }( $item ) %>
-% }
+%     if ( $item->table eq 'legacy_cust_bill' ) {
+        <% $item->description |h %>
+%     } else {
+        <% join(', ',
+             map  { my $value = ( $_ =~ /(^pay(info|cvv)|^ss|_password)$/ ) 
+                                  ? 'N/A'
+                                  : $item->get($_);
+                    $value = time2str($cust_pkg_date_format, $value)
+                     if $item->table eq 'h_cust_pkg'
+                     && $cust_pkg_date_fields{$_}
+                     && $value;
+
+                    $value = substr($value, 0, 77).'...' if length($value) > 80;
+                    $value = encode_entities($value);
+                    "<I>$_</I>:<B>$value</B>";
+                  }
+             grep { $history_other
+                      ? ( $item->get($_) ne $history_other->get($_) )
+                      : ( $item->get($_) =~ /\S/ )
+                  }
+             grep { ! /^(history|custnum$)/i }
+                  $item->fields
+           )
+        %>
+%       if ( $single_cust && $h_table_descripsub{$item->table} ) {
+          <% &{ $h_table_descripsub{$item->table} }( $item ) %>
+%       }
+%     }
     </TD>
+
   </TR>
 
 % }
@@ -221,4 +241,6 @@ if ( $curuser->option('history_order') eq 'newest' ) {
   @history = reverse @history;
 }
 
+my %access_user = (); #cache
+
 </%init>
diff --git a/httemplate/view/cust_main/change_history.html b/httemplate/view/cust_main/change_history.html
index 217b14e..6c9b670 100644
--- a/httemplate/view/cust_main/change_history.html
+++ b/httemplate/view/cust_main/change_history.html
@@ -46,6 +46,9 @@ tie my %tables, 'Tie::IxHash',
   'phone_device'      => 'Phone device',
   'cust_pkg_discount' => 'Discount',
   #? it gets provisioned anyway 'phone_avail'         => 'Phone',
+
+  'legacy_history'    => 'Label not used',
+
 ;
 
 my $pkg_join = "JOIN cust_pkg USING ( pkgnum )";

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Mason.pm                                     |    1 +
 FS/FS/Schema.pm                                    |   26 ++++++
 ...main_credit_limit.pm => legacy_cust_history.pm} |   61 +++++++------
 FS/MANIFEST                                        |    2 +
 FS/t/{AccessRight.t => legacy_cust_history.t}      |    2 +-
 httemplate/elements/change_history_common.html     |   90 ++++++++++++--------
 httemplate/view/cust_main/change_history.html      |    3 +
 7 files changed, 126 insertions(+), 59 deletions(-)
 copy FS/FS/{cust_main_credit_limit.pm => legacy_cust_history.pm} (51%)
 copy FS/t/{AccessRight.t => legacy_cust_history.t} (77%)




More information about the freeside-commits mailing list