X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=42bf64a3e410085ea320d5be632eb1d6618ec596;hb=7943c96636596806b9fc99195c23b166728280c8;hp=7bf8c76ddd7b219bc9d7f1f655a5b3f9a89967c3;hpb=2101a32bdf12abdb2afdb654d6da30975ddd4fc9;p=freeside.git diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 7bf8c76dd..42bf64a3e 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -6,15 +6,25 @@ use FS::UID; 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 $ignore_expired_card $ignore_banned_card ); +use vars qw( $conf @encrypted_fields + $ignore_expired_card $ignore_banned_card + $ignore_invalid_card + ); + +@encrypted_fields = ('payinfo', 'paycvv'); +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 @@ -165,45 +175,25 @@ sub check { $self->ut_numbern('custpaybynum') || $self->ut_foreign_key('custnum', 'cust_main', 'custnum') || $self->ut_number('weight') - || $self->ut_('payby') - || $self->ut_textn('payinfo') - || $self->ut_textn('paycvv') - || $self->ut_textn('paymask') - || $self->ut_textn('paydate') + #encrypted #|| $self->ut_textn('payinfo') + #encrypted #|| $self->ut_textn('paycvv') +# || $self->ut_textn('paymask') #XXX something + #later #|| $self->ut_textn('paydate') || $self->ut_numbern('paystart_month') || $self->ut_numbern('paystart_year') - || $self->ut_textn('payissue') - || $self->ut_textn('payname') - || $self->ut_textn('paystate') + || $self->ut_numbern('payissue') +# || $self->ut_textn('payname') #XXX something + || $self->ut_alphan('paystate') || $self->ut_textn('paytype') - || $self->ut_textn('payip') + || $self->ut_ipn('payip') ; return $error if $error; - ### from cust_main - - #$self->payby =~ /^(CARD|DCRD|CHEK|DCHK|LECB|BILL|COMP|PREPAY|CASH|WEST|MCRD)$/ - # or return "Illegal payby: ". $self->payby; - #$self->payby($1); FS::payby->can_payby($self->table, $self->payby) or return "Illegal payby: ". $self->payby; - $error = $self->ut_numbern('paystart_month') - || $self->ut_numbern('paystart_year') - || $self->ut_numbern('payissue') - || $self->ut_textn('paytype') - ; - return $error if $error; - - if ( $self->payip eq '' ) { - $self->payip(''); - } else { - $error = $self->ut_ip('payip'); - return $error if $error; - } - # If it is encrypted and the private key is not availaible then we can't # check the credit card. my $check_payinfo = ! $self->is_encrypted($self->payinfo); @@ -211,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; @@ -283,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; @@ -390,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); + } + } ###