From 4e091a88af83ba9293a1747aaf754439dcc4cd39 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Mon, 9 Nov 2015 19:58:47 -0600 Subject: [PATCH] RT#36806: Add message template substitution to show last four digits of credit card number [v3 merge] --- FS/FS/msg_template.pm | 32 +++++++++++++++++--------------- httemplate/edit/msg_template.html | 2 ++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm index 9c2b2844d..5c6392cfc 100644 --- a/FS/FS/msg_template.pm +++ b/FS/FS/msg_template.pm @@ -508,6 +508,17 @@ my $usage_warning = sub { # If you add anything, be sure to add a description in # httemplate/edit/msg_template.html. sub substitutions { + my $payinfo_sub = sub { + my $obj = shift; + ($obj->payby eq 'CARD' || $obj->payby eq 'CHEK') + ? $obj->paymask + : $obj->decrypt($obj->payinfo) + }; + my $payinfo_end = sub { + my $obj = shift; + my $payinfo = &$payinfo_sub($obj); + substr($payinfo, -4); + }; { 'cust_main' => [qw( display_custnum agentnum agent_name @@ -654,11 +665,8 @@ sub substitutions { # overrides the one in cust_main in cases where a cust_pay is passed [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $cust_pay = shift; - ($cust_pay->payby eq 'CARD' || $cust_pay->payby eq 'CHEK') ? - $cust_pay->paymask : $cust_pay->decrypt($cust_pay->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], # for refund receipts 'cust_refund' => [ @@ -666,11 +674,8 @@ sub substitutions { [ refund => sub { sprintf("%.2f", shift->refund) } ], [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $cust_refund = shift; - ($cust_refund->payby eq 'CARD' || $cust_refund->payby eq 'CHEK') ? - $cust_refund->paymask : $cust_refund->decrypt($cust_refund->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], # for payment decline messages # try to support all cust_pay fields @@ -682,11 +687,8 @@ sub substitutions { [ paid => sub { sprintf("%.2f", shift->paid) } ], [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $pending = shift; - ($pending->payby eq 'CARD' || $pending->payby eq 'CHEK') ? - $pending->paymask : $pending->decrypt($pending->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], }; } diff --git a/httemplate/edit/msg_template.html b/httemplate/edit/msg_template.html index 4bfdd626f..0478a8066 100644 --- a/httemplate/edit/msg_template.html +++ b/httemplate/edit/msg_template.html @@ -294,6 +294,7 @@ my %substitutions = ( '$payby' => 'Payment method', '$date' => 'Payment date', '$payinfo' => 'Card/account# (masked)', + '$payinfo_end' => 'Card/account last 4 digits', '$error' => 'Decline reason', ], 'cust_refund' => [ @@ -302,6 +303,7 @@ my %substitutions = ( '$payby' => 'Refund method', '$date' => 'Refund date', '$payinfo' => 'Card/account# (masked)', + '$payinfo_end' => 'Card/account last 4 digits', ], ); -- 2.11.0