enable CardFortress in test database, #71513
[freeside.git] / FS / FS / cust_main_invoice.pm
index add0cca..6c155ac 100644 (file)
@@ -1,20 +1,21 @@
 package FS::cust_main_invoice;
+use base qw( FS::Record );
 
 use strict;
-use vars qw(@ISA $conf);
-use Exporter;
 use FS::Record qw( qsearchs );
 use FS::Conf;
-use FS::cust_main;
 use FS::svc_acct;
 use FS::Msgcat qw(gettext);
 
-@ISA = qw( FS::Record );
-
 =head1 NAME
 
 FS::cust_main_invoice - Object methods for cust_main_invoice records
 
+=head1 ANNOUNCEMENT
+
+This is deprecated in version 4. Instead, contacts with the "invoice_dest"
+attribute should be used.
+
 =head1 SYNOPSIS
 
   use FS::cust_main_invoice;
@@ -43,7 +44,7 @@ FS::Record.  The following fields are currently supported:
 
 =item custnum - customer (see L<FS::cust_main>)
 
-=item dest - Invoice destination: If numeric, a svcnum (see L<FS::svc_acct>), if string, a literal email address, or `POST' to enable mailing (the default if no cust_main_invoice records exist)
+=item dest - Invoice destination: If numeric, a svcnum (see L<FS::svc_acct>), if string, a literal email address, `POST' to enable mailing (the default if no cust_main_invoice records exist), or `FAX' to enable faxing via a HylaFAX server.
 
 =back
 
@@ -91,7 +92,7 @@ sub replace {
 
 Checks all fields to make sure this is a valid invoice destination.  If there is
 an error, returns the error, otherwise returns false.  Called by the insert
-and repalce methods.
+and replace methods.
 
 =cut
 
@@ -104,9 +105,6 @@ sub check {
   ;
   return $error if $error;
 
-  return "Unknown customer"
-    unless qsearchs('cust_main',{ 'custnum' => $self->custnum });
-
   $self->SUPER::check;
 }
 
@@ -127,16 +125,20 @@ sub checkdest {
   my $error = $self->ut_text('dest');
   return $error if $error;
 
-  if ( $self->dest eq 'POST' ) {
+  my $conf = new FS::Conf;
+
+  if ( $self->dest =~ /^(POST|FAX)$/ ) {
     #contemplate our navel
   } elsif ( $self->dest =~ /^(\d+)$/ ) {
     return "Unknown local account (specified by svcnum: ". $self->dest. ")"
       unless qsearchs( 'svc_acct', { 'svcnum' => $self->dest } );
-  } elsif ( $self->dest =~ /^([\w\.\-\&\+]+)\@(([\w\.\-]+\.)+\w+)$/ ) {
+  } elsif ( $conf->exists('emailinvoice-apostrophe')
+              ? $self->dest =~ /^\s*([\w\.\-\&\+\']+)\@(([\w\.\-]+\.)+\w+)\s*$/
+              : $self->dest =~ /^\s*([\w\.\-\&\+]+)\@(([\w\.\-]+\.)+\w+)\s*$/ ){
     my($user, $domain) = ($1, $2);
     $self->dest("$1\@$2");
   } else {
-    return gettext("illegal_email_invoice_address");
+    return gettext("illegal_email_invoice_address"). ': '. $self->dest;
   }
 
   ''; #no error
@@ -144,7 +146,7 @@ sub checkdest {
 
 =item address
 
-Returns the literal email address for this record (or `POST').
+Returns the literal email address for this record (or `POST' or `FAX').
 
 =cut
 
@@ -159,11 +161,11 @@ sub address {
   }
 }
 
-=back
+=item cust_main
 
-=head1 VERSION
+Returns the parent customer object (see L<FS::cust_main>).
 
-$Id: cust_main_invoice.pm,v 1.14 2003-08-05 00:20:42 khoff Exp $
+=back
 
 =head1 BUGS