[freeside-commits] branch FREESIDE_4_BRANCH updated. a2d1bca6d13c6760f2c7c2de677da4df3f9e5c3e

Mark Wells mark at 420.am
Mon Dec 14 17:04:54 PST 2015


The branch, FREESIDE_4_BRANCH has been updated
       via  a2d1bca6d13c6760f2c7c2de677da4df3f9e5c3e (commit)
      from  0a2c29c0f22bee8cb30ef4eea31881ab1ae525f7 (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 a2d1bca6d13c6760f2c7c2de677da4df3f9e5c3e
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 14 16:26:05 2015 -0800

    show refund reason on report and make it searchable, #39398

diff --git a/httemplate/search/cust_pay_pending.html b/httemplate/search/cust_pay_pending.html
index fe82268..8662d19 100755
--- a/httemplate/search/cust_pay_pending.html
+++ b/httemplate/search/cust_pay_pending.html
@@ -9,6 +9,7 @@
                 'addl_fields'   => [ sub { time2str('%r', shift->_date ) },
                                      $status_sub,
                                    ],
+                'addl_sort_fields' => [ 'status' ],
                 'redirect_empty' => $redirect_empty,
 &>
 <%init>
diff --git a/httemplate/search/cust_pay_void.html b/httemplate/search/cust_pay_void.html
index 5b24736..c639706 100755
--- a/httemplate/search/cust_pay_void.html
+++ b/httemplate/search/cust_pay_void.html
@@ -8,4 +8,5 @@
                 'addl_fields'   => [
                   sub { time2str('%b %d %Y', shift->void_date ) },
                 ],
+                'addl_sort_fields' => [ 'void_date' ],
 &>
diff --git a/httemplate/search/elements/cust_pay_or_refund.html b/httemplate/search/elements/cust_pay_or_refund.html
index 1fea67c..ffc6afe 100755
--- a/httemplate/search/elements/cust_pay_or_refund.html
+++ b/httemplate/search/elements/cust_pay_or_refund.html
@@ -26,6 +26,7 @@ Examples:
                'html_init'      => '',
                'addl_header'    => [],
                'addl_fields'    => [],
+               'addl_sort_fields' => [],
                'redirect_empty' => $redirect_empty,
           )
 
@@ -80,6 +81,8 @@ die "access denied"
 
 my $table = $opt{'table'} || 'cust_'.$opt{'thing'};
 
+my $has_reason = dbdef->table($table)->column('reasonnum') ? 1 : 0;
+
 my $amount_field = $opt{'amount_field'};
 my $name_singular = $opt{'name_singular'};
 
@@ -217,6 +220,7 @@ unless ( $opt{'disable_by'} ) {
                       $o = 'customer self-service' if $o eq 'fs_selfservice';
                       $o;
                     };
+  push @sort_fields, '';
 }
 
 if ( $tax_names ) {
@@ -233,6 +237,7 @@ if ( $tax_names ) {
                                    split('\|', shift->tax_names)
                            );
                     };
+  push @sort_fields, '', '';
 }
 
 push @header, FS::UI::Web::cust_header();
@@ -242,11 +247,14 @@ push @links, map { $_ ne 'Cust. Status' ? $cust_link : '' }
 my @color = ( ( map '', @fields ), FS::UI::Web::cust_colors() );
 my @style = ( ( map '', @fields ), FS::UI::Web::cust_styles() );
 push @fields, \&FS::UI::Web::cust_fields;
+push @sort_fields, FS::UI::Web::cust_sort_fields;
 
 push @header, @{ $opt{'addl_header'} }
   if $opt{'addl_header'};
 push @fields, @{ $opt{'addl_fields'} }
   if $opt{'addl_fields'};
+push @sort_fields, @{ $opt{'addl_sort_fields'} }
+  if $opt{'addl_sort_fields'};
 
 my( $count_query, $sql_query, @count_addl );
 if ( $cgi->param('magic') ) {
@@ -432,6 +440,7 @@ if ( $cgi->param('magic') ) {
       push @search, "($table.auth LIKE '$1%') OR ($table.order_number LIKE '$1%')";
       push @fields, 'auth', 'order_number';
       push @header, 'Auth #', 'Transaction #';
+      push @sort_fields, '', '';
       $align .= 'rr';
 
     }
@@ -513,6 +522,18 @@ if ( $cgi->param('magic') ) {
   my $addl_from = FS::UI::Web::join_cust_main($table);
   my $group_by = '';
 
+  # reasons, for refunds and voided payments
+  if ( $has_reason ) {
+    push @select, "reason.reason";
+    $addl_from .= " LEFT JOIN reason USING (reasonnum)\n";
+    push @fields, 'reason';
+    push @sort_fields, 'reason.reason';
+    push @header, emt('Reason');
+    if ( $cgi->param('reasonnum') =~ /^(\d+)$/ ) {
+      push @search, "COALESCE(reasonnum, 0) = $1";
+    }
+  }
+
   if ( $cgi->param('tax_names') ) {
     if ( dbh->{Driver}->{Name} =~ /^Pg/i ) {
 
diff --git a/httemplate/search/elements/report_cust_pay_or_refund.html b/httemplate/search/elements/report_cust_pay_or_refund.html
index 70727c0..a25e696 100644
--- a/httemplate/search/elements/report_cust_pay_or_refund.html
+++ b/httemplate/search/elements/report_cust_pay_or_refund.html
@@ -23,7 +23,7 @@ Examples:
 
   <TR>
     <TH CLASS="background" COLSPAN=2 ALIGN="left">
-      <FONT SIZE="+1"><% mt('Payment search options') |h %></FONT>
+      <FONT SIZE="+1"><% mt('[_1] search options', ucfirst($name_singular)) |h %></FONT>
     </TH>
   </TR>
 
@@ -51,6 +51,20 @@ Examples:
 
   <& /elements/tr-select-user.html &>
 
+% if ( $has_reason ) {
+%   # limit to reasons that are in use for the table being reported on
+%   # (maybe order by count(*) desc?)
+  <& /elements/tr-select-table.html,
+    label       => emt('Reason'),
+    field       => 'reasonnum',
+    id          => 'reasonnum',
+    table       => 'reason',
+    name_col    => 'reason',
+    extra_sql   => " WHERE EXISTS(SELECT 1 FROM $table WHERE $table.reasonnum = reason.reasonnum) ",
+    empty_label => emt('any'),
+  &>
+% }
+
   <TR>
     <TD ALIGN="right" VALIGN="center"><% mt(ucfirst($name_singular). ' date') |h %></TD>
     <TD>
@@ -166,6 +180,8 @@ my $title = $void ? "Voided $name_singular report" :
             "\u$name_singular report" ;
 $table .= '_void' if $void;
 
+my $has_reason = dbdef->table($table)->column('reasonnum');
+
 tie (my %payby, 'Tie::IxHash',
   'CARD-VisaMC'    => 'credit card (Visa/MasterCard)',
   'CARD-Amex'      => 'credit card (American Express)',
diff --git a/httemplate/search/report_cust_refund.html b/httemplate/search/report_cust_refund.html
index fe84cf6..98b31a1 100644
--- a/httemplate/search/report_cust_refund.html
+++ b/httemplate/search/report_cust_refund.html
@@ -1,4 +1,5 @@
 <& elements/report_cust_pay_or_refund.html,
               'thing'          => 'refund',
               'name_singular'  => emt('refund'),
+              'reason_class'   => 'F',
 &>

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

Summary of changes:
 httemplate/search/cust_pay_pending.html            |    1 +
 httemplate/search/cust_pay_void.html               |    1 +
 httemplate/search/elements/cust_pay_or_refund.html |   21 ++++++++++++++++++++
 .../search/elements/report_cust_pay_or_refund.html |   18 ++++++++++++++++-
 httemplate/search/report_cust_refund.html          |    1 +
 5 files changed, 41 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list