1 package FS::cust_pay_batch;
6 use Business::CreditCard;
8 @ISA = qw( FS::Record );
12 FS::cust_pay_batch - Object methods for batch cards
16 use FS::cust_pay_batch;
18 $record = new FS::cust_pay_batch \%hash;
19 $record = new FS::cust_pay_batch { 'column' => 'value' };
21 $error = $record->insert;
23 $error = $new_record->replace($old_record);
25 $error = $record->delete;
27 $error = $record->check;
31 An FS::cust_pay_batch object represents a credit card transaction ready to be
32 batched (sent to a processor). FS::cust_pay_batch inherits from FS::Record.
33 Typically called by the collect method of an FS::cust_main object. The
34 following fields are currently supported:
38 =item trancode - 77 for charges
42 =item exp - card expiration
46 =item invnum - invoice
48 =item custnum - customer
50 =item payname - name on card
76 Creates a new record. To add the record to the database, see L<"insert">.
78 Note that this stores the hash reference, not a distinct copy of the hash it
79 points to. You can ask the object for a copy with the I<hash> method.
83 sub table { 'cust_pay_batch'; }
87 Adds this record to the database. If there is an error, returns the error,
88 otherwise returns false.
92 Delete this record from the database. If there is an error, returns the error,
93 otherwise returns false.
95 =item replace OLD_RECORD
99 #Replaces the OLD_RECORD with this one in the database. If there is an error,
100 #returns the error, otherwise returns false.
105 return "Can't (yet?) replace batched transactions!";
110 Checks all fields to make sure this is a valid transaction. If there is
111 an error, returns the error, otherwise returns false. Called by the insert
120 $self->ut_numbern('trancode')
121 || $self->ut_number('cardnum')
122 || $self->ut_money('amount')
123 || $self->ut_number('invnum')
124 || $self->ut_number('custnum')
125 || $self->ut_text('address1')
126 || $self->ut_textn('address2')
127 || $self->ut_text('city')
128 || $self->ut_text('state')
131 return $error if $error;
133 $self->getfield('last') =~ /^([\w \,\.\-\']+)$/ or return "Illegal last name";
134 $self->setfield('last',$1);
136 $self->first =~ /^([\w \,\.\-\']+)$/ or return "Illegal first name";
139 my $cardnum = $self->cardnum;
141 $cardnum =~ /^(\d{13,16})$/
142 or return "Illegal credit card number";
144 $self->cardnum($cardnum);
145 validate($cardnum) or return "Illegal credit card number";
146 return "Unknown card type" if cardtype($self->payinfo) eq "Unknown";
148 if ( $self->exp eq '' ) {
149 return "Expriation date required";
152 $self->exp =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/
153 or return "Illegal expiration date";
154 if ( length($2) == 4 ) {
155 $self->exp("$2-$1-01");
156 } elsif ( $2 > 98 ) { #should pry change to check for "this year"
157 $self->exp("19$2-$1-01");
159 $self->exp("20$2-$1-01");
163 if ( $self->payname eq '' ) {
164 $self->payname( $self->first. " ". $self->getfield('last') );
166 $self->payname =~ /^([\w \,\.\-\']+)$/
167 or return "Illegal billing name";
171 $self->zip =~ /^([\w\-]{10})$/ or return "Illegal zip";
174 $self->country =~ /^(\w\w)$/ or return "Illegal \w\wy";
177 #check invnum, custnum, ?
186 $Id: cust_pay_batch.pm,v 1.3 1998-12-29 11:59:44 ivan Exp $
190 There should probably be a configuration file with a list of allowed credit
195 L<FS::cust_main>, L<FS::Record>
199 ivan@voicenet.com 97-jul-1
202 ivan@sisd.com 97-nov-13
204 $Log: cust_pay_batch.pm,v $
205 Revision 1.3 1998-12-29 11:59:44 ivan
206 mostly properly OO, some work still to be done with svc_ stuff
208 Revision 1.2 1998/11/18 09:01:44 ivan
211 Revision 1.1 1998/11/15 05:19:58 ivan
214 Revision 1.3 1998/11/15 04:33:00 ivan
215 updates for newest versoin
217 Revision 1.2 1998/11/15 03:48:49 ivan
218 update for current version