batch refactor continued
[freeside.git] / FS / FS / payby.pm
index 9f8b689..2b54810 100644 (file)
@@ -1,9 +1,10 @@
 package FS::payby;
 
 use strict;
-use vars qw(%hash);
+use vars qw(%hash @EXPORT_OK);
 use Tie::IxHash;
 
+
 =head1 NAME
 
 FS::payby - Object methods for payment type records
@@ -90,6 +91,11 @@ tie %hash, 'Tie::IxHash',
     shortname => 'Complimentary',
     longname  => 'Complimentary',
   },
+  'DCLN' => {  # This is only an event.
+    tinyname  => 'declined',
+    shortname => 'Declined payment',
+    longname  => 'Declined payment',
+  },
 ;
 
 sub payby {
@@ -101,6 +107,11 @@ sub payby2longname {
   map { $_ => $hash{$_}->{longname} } $self->payby;
 }
 
+sub payby2bop {
+  { 'CARD' => 'CC'.
+    'CHEK' => 'ECHECK',};
+}
+
 sub cust_payby {
   my $self = shift;
   grep { ! exists $hash{$_}->{cust_main} } $self->payby;
@@ -111,6 +122,27 @@ sub cust_payby2longname {
   map { $_ => $hash{$_}->{longname} } $self->cust_payby;
 }
 
+sub payinfo_check{
+  my($payby, $payinforef) = @_;
+
+  if ($payby eq 'CARD') {
+    $$payinforef =~ s/\D//g;
+    if ($$payinforef){
+      $$payinforef =~ /^(\d{13,16})$/
+        or return "Illegal (mistyped?) credit card number (payinfo)";
+      $$payinforef = $1;
+      validate($$payinforef) or return "Illegal credit card number";
+      return "Unknown card type" if cardype($$payinforef) eq "Unknown";
+    } else {
+      $$payinforef="N/A";
+    }
+  } else {
+    $$payinforef =~ /^([\w \!\@\#\$\%\&\(\)\-\+\;\:\'\"\,\.\?\/\=]*)$/
+    or return "Illegal text (payinfo)";
+    $$payinforef = $1;
+  }
+}
+
 =back
 
 =head1 BUGS