X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=site_perl%2Fcust_pay_batch.pm;h=c7a0ccb9db9f209b4c1afaa4d822b64718089699;hb=1e3eae905b861761f93643aa5fce14a8be5d9ed2;hp=f40a0497073fd4ce91694ee56edf420d73a1eb9f;hpb=ef834d58bfd2ce38c8bea73262c8091a5d88388f;p=freeside.git diff --git a/site_perl/cust_pay_batch.pm b/site_perl/cust_pay_batch.pm index f40a04970..c7a0ccb9d 100644 --- a/site_perl/cust_pay_batch.pm +++ b/site_perl/cust_pay_batch.pm @@ -1,24 +1,22 @@ package FS::cust_pay_batch; use strict; -use vars qw (@ISA); -use Exporter; -#use FS::UID qw(getotaker); -use FS::Record qw(hfields qsearch qsearchs); +use vars qw( @ISA ); +use FS::Record; use Business::CreditCard; -@ISA = qw(FS::Record); +@ISA = qw( FS::Record ); =head1 NAME -FS::cust_pay_batdh - Object methods for batch cards +FS::cust_pay_batch - Object methods for batch cards =head1 SYNOPSIS use FS::cust_pay_batch; - $record = create FS::cust_pay_batch \%hash; - $record = create FS::cust_pay_batch { 'column' => 'value' }; + $record = new FS::cust_pay_batch \%hash; + $record = new FS::cust_pay_batch { 'column' => 'value' }; $error = $record->insert; @@ -73,7 +71,7 @@ following fields are currently supported: =over 4 -=item create HASHREF +=item new HASHREF Creates a new record. To add the record to the database, see L<"insert">. @@ -82,48 +80,17 @@ points to. You can ask the object for a copy with the I method. =cut -sub create { - my($proto,$hashref)=@_; - - $proto->new('cust_pay_batch',$hashref); - -} +sub table { 'cust_pay_batch'; } =item insert Adds this record to the database. If there is an error, returns the error, otherwise returns false. -=cut - -sub insert { - my($self)=@_; - - #local $SIG{HUP} = 'IGNORE'; - #local $SIG{INT} = 'IGNORE'; - #local $SIG{QUIT} = 'IGNORE'; - #local $SIG{TERM} = 'IGNORE'; - #local $SIG{TSTP} = 'IGNORE'; - - $self->check or - $self->add; -} - =item delete -#inactive -# -#Delete this record from the database. - -=cut - -sub delete { - my($self)=@_; - - #$self->del; - - return "Can't (yet?) delete batched transactions!"; -} +Delete this record from the database. If there is an error, returns the error, +otherwise returns false. =item replace OLD_RECORD @@ -135,40 +102,30 @@ sub delete { =cut sub replace { - my($new,$old)=@_; - #return "(Old) Not a table_name record!" unless $old->table eq "table_name"; - # - #return "Can't change keyfield!" - # unless $old->getfield('keyfield') eq $new->getfield('keyfield'); - # - #$new->check or - #$new->rep($old); - return "Can't (yet?) replace batched transactions!"; } =item check -Checks all fields to make sure this is a valid example. If there is +Checks all fields to make sure this is a valid transaction. If there is an error, returns the error, otherwise returns false. Called by the insert and repalce methods. =cut sub check { - my($self)=@_; - return "Not a cust_pay_batch record!" unless $self->table eq "cust_pay_batch"; + my $self = shift; my $error = $self->ut_numbern('trancode') - or $self->ut_number('cardnum') - or $self->ut_money('amount') - or $self->ut_number('invnum') - or $self->ut_number('custnum') - or $self->ut_text('address1') - or $self->ut_textn('address2') - or $self->ut_text('city') - or $self->ut_text('state') + || $self->ut_number('cardnum') + || $self->ut_money('amount') + || $self->ut_number('invnum') + || $self->ut_number('custnum') + || $self->ut_text('address1') + || $self->ut_textn('address2') + || $self->ut_text('city') + || $self->ut_text('state') ; return $error if $error; @@ -186,25 +143,24 @@ sub check { $cardnum = $1; $self->cardnum($cardnum); validate($cardnum) or return "Illegal credit card number"; - my $type = cardtype($cardnum); - return "Unknown credit card type" - unless ( $type =~ /^VISA/ || - $type =~ /^MasterCard/ || - $type =~ /^American Express/ || - $type =~ /^Discover/ ); + return "Unknown card type" if cardtype($cardnum) eq "Unknown"; if ( $self->exp eq '' ) { - return "Expriation date required"; + return "Expriation date required"; #unless $self->exp(''); } else { - $self->exp =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/ - or return "Illegal expiration date"; - if ( length($2) == 4 ) { - $self->exp("$2-$1-01"); - } elsif ( $2 > 98 ) { #should pry change to check for "this year" - $self->exp("19$2-$1-01"); + if ( $self->exp =~ /^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})$/ ) { + $self->exp("$1-$2-$3"); + } elsif ( $self->exp =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/ ) { + if ( length($2) == 4 ) { + $self->exp("$2-$1-01"); + } elsif ( $2 > 98 ) { #should pry change to check for "this year" + $self->exp("19$2-$1-01"); + } else { + $self->exp("20$2-$1-01"); + } } else { - $self->exp("20$2-$1-01"); + return "Illegal expiration date"; } } @@ -216,7 +172,8 @@ sub check { $self->payname($1); } - $self->zip =~ /^([\w\-]{10})$/ or return "Illegal zip"; + $self->zip =~ /^\s*(\w[\w\-\s]{3,8}\w)\s*$/ + or return "Illegal zip: ". $self->zip; $self->zip($1); $self->country =~ /^(\w\w)$/ or return "Illegal \w\wy"; @@ -231,10 +188,13 @@ sub check { =head1 VERSION -$Id: cust_pay_batch.pm,v 1.2 1998-11-18 09:01:44 ivan Exp $ +$Id: cust_pay_batch.pm,v 1.5 1999-07-29 07:49:04 ivan Exp $ =head1 BUGS +There should probably be a configuration file with a list of allowed credit +card types. + =head1 SEE ALSO L, L @@ -247,7 +207,16 @@ added hfields ivan@sisd.com 97-nov-13 $Log: cust_pay_batch.pm,v $ -Revision 1.2 1998-11-18 09:01:44 ivan +Revision 1.5 1999-07-29 07:49:04 ivan +fixes for bugs noticed by Joel Griffiths + +Revision 1.4 1999/07/17 22:02:16 ivan +another bug noticed by Steve Gertz + +Revision 1.3 1998/12/29 11:59:44 ivan +mostly properly OO, some work still to be done with svc_ stuff + +Revision 1.2 1998/11/18 09:01:44 ivan i18n! i18n! Revision 1.1 1998/11/15 05:19:58 ivan