+ return "Unknown card type" if $self->payinfo !~ /^99\d{14}$/ #token
+ && cardtype($self->payinfo) eq "Unknown";
+ } else {
+ $self->payinfo('N/A'); #???
+ }
+ } else {
+ if ( $self->is_encrypted($self->payinfo) ) {
+ #something better? all it would cause is a decryption error anyway?
+ my $error = $self->ut_anything('payinfo');
+ return $error if $error;
+ } else {
+ my $error = $self->ut_textn('payinfo');
+ return $error if $error;
+ }
+ }
+
+ '';
+
+}
+
+=item payby_payinfo_pretty [ LOCALE ]
+
+Returns payment method and information (suitably masked, if applicable) as
+a human-readable string, such as:
+
+ Card #54xxxxxxxxxxxx32
+
+or
+
+ Check #119006
+
+=cut
+
+sub payby_payinfo_pretty {
+ my $self = shift;
+ my $locale = shift;
+ my $lh = FS::L10N->get_handle($locale);
+ if ( $self->payby eq 'CARD' ) {
+ $lh->maketext('Card #') . $self->paymask;
+ } elsif ( $self->payby eq 'CHEK' ) {
+
+ #false laziness w/view/cust_main/payment_history.html::translate_payinfo
+ my( $account, $aba ) = split('@', $self->paymask );
+
+ if ( $aba =~ /^(\d{5})\.(\d{3})$/ ) { #blame canada
+ my($branch, $routing) = ($1, $2);
+ $lh->maketext("Routing [_1], Branch [_2], Acct [_3]",
+ $routing, $branch, $account);