X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=ad3d80a20607aa6c981cf393cdf5c6bec7f81fa2;hb=446fb74f2f31d48dd303c9a52105d40f11079e10;hp=5914ab5c5abb2779b1026960722e7fe6d798bb0e;hpb=0d81877c6ae8ea9732065f5400ff37a7458587ed;p=freeside.git diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 5914ab5c5..ad3d80a20 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -7,9 +7,11 @@ use FS::Record qw( qsearchs ); #qsearch; use FS::payby; use FS::cust_main; use Business::CreditCard qw( validate cardtype ); +use FS::Msgcat qw( gettext ); use vars qw( $conf @encrypted_fields $ignore_expired_card $ignore_banned_card + $ignore_invalid_card ); @encrypted_fields = ('payinfo', 'paycvv'); @@ -17,10 +19,12 @@ sub nohistory_fields { ('payinfo', 'paycvv'); } $ignore_expired_card = 0; $ignore_banned_card = 0; +$ignore_invalid_card = 0; install_callback FS::UID sub { $conf = new FS::Conf; #yes, need it for stuff below (prolly should be cached) + $ignore_invalid_card = $conf->exists('allow_invalid_cards'); }; =head1 NAME @@ -197,7 +201,8 @@ sub check { # Need some kind of global flag to accept invalid cards, for testing # on scrubbed data. #XXX if ( !$import && $check_payinfo && $self->payby =~ /^(CARD|DCRD)$/ ) { - if ( $check_payinfo && $self->payby =~ /^(CARD|DCRD)$/ ) { + if ( !$ignore_invalid_card && + $check_payinfo && $self->payby =~ /^(CARD|DCRD)$/ ) { my $payinfo = $self->payinfo; $payinfo =~ s/\D//g; @@ -269,7 +274,8 @@ sub check { $self->payissue(''); } - } elsif ( $check_payinfo && $self->payby =~ /^(CHEK|DCHK)$/ ) { + } elsif ( !$ignore_invalid_card && + $check_payinfo && $self->payby =~ /^(CHEK|DCHK)$/ ) { my $payinfo = $self->payinfo; $payinfo =~ s/[^\d\@\.]//g; @@ -347,7 +353,7 @@ sub check { if ( $self->paydate eq '' || $self->paydate eq '-' ) { return "Expiration date required" # shouldn't payinfo_check do this? - unless $self->payby =~ /^(BILL|PREPAY|CHEK|DCHK|LECB|CASH|WEST|MCRD|PPAL)$/; + unless $self->payby =~ /^(BILL|PREPAY|CHEK|DCHK|LECB|CASH|WEST|MCRD|MCHK|PPAL)$/; $self->paydate(''); } else { my( $m, $y ); @@ -376,9 +382,17 @@ sub check { ) { $self->payname( $self->first. " ". $self->getfield('last') ); } else { - $self->payname =~ /^([\w \,\.\-\'\&]+)$/ - or return gettext('illegal_name'). " payname: ". $self->payname; - $self->payname($1); + + if ( $self->payby =~ /^(CHEK|DCHK)$/ ) { + $self->payname =~ /^([\w \,\.\-\']*)$/ + or return gettext('illegal_name'). " payname: ". $self->payname; + $self->payname($1); + } else { + $self->payname =~ /^([\w \,\.\-\'\&]*)$/ + or return gettext('illegal_name'). " payname: ". $self->payname; + $self->payname($1); + } + } ###