X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=site_perl%2Fcust_main.pm;h=2002f7a5957272b9f3d8490615f7a02deacc3599;hb=220ac1e017ab668f9fac1e5ff0ca648f8fdfe913;hp=a89896da661e37df590cc43609e37f702e4bdee2;hpb=963a290ad2d9a89b45b66ac9d9ccdd612a756f11;p=freeside.git diff --git a/site_perl/cust_main.pm b/site_perl/cust_main.pm index a89896da6..2002f7a59 100644 --- a/site_perl/cust_main.pm +++ b/site_perl/cust_main.pm @@ -5,12 +5,14 @@ use vars qw($paymentserversecret $paymentserverport $paymentserverhost); package FS::cust_main; use strict; -use vars qw(@ISA $conf $lpr $processor $xaction $E_NoErr); +use vars qw(@ISA $conf $lpr $processor $xaction $E_NoErr $invoice_from); use Safe; use Carp; use Time::Local; use Date::Format; use Date::Manip; +use Mail::Internet; +use Mail::Header; use Business::CreditCard; use FS::UID qw( getotaker ); use FS::Record qw( qsearchs qsearch ); @@ -31,6 +33,7 @@ use FS::cust_main_invoice; $FS::UID::callback{'FS::cust_main'} = sub { $conf = new FS::Conf; $lpr = $conf->config('lpr'); + $invoice_from = $conf->config('invoice_from'); if ( $conf->exists('cybercash3.2') ) { require CCMckLib3_2; @@ -255,7 +258,7 @@ sub check { } ); } - $self->zip =~ /^([\w\-]{5,10})$/ or return "Illegal zip"; + $self->zip =~ /^\s*(\w[\w\-\s]{3,8}\w)\s*$/ or return "Illegal zip"; $self->zip($1); $self->payby =~ /^(CARD|BILL|COMP)$/ or return "Illegal payby"; @@ -585,11 +588,30 @@ sub collect { && ( $cust_bill->printed * 2592000 ) <= $since ) { - open(LPR, "|$lpr") or die "Can't open pipe to $lpr: $!"; - print LPR $cust_bill->print_text; #( date ) - close LPR - or die $! ? "Error closing $lpr: $!" - : "Exit status $? from $lpr"; + #my @print_text = $cust_bill->print_text; #( date ) + my @invoicing_list = $self->invoicing_list; + if ( grep { $_ ne 'POST' } @invoicing_list ) { #email invoice + my $header = new Mail::Header ( [ + "From: $invoice_from", + "To: ". join(', ', grep { $_ ne 'POST' } @invoicing_list ), + "Sender: $invoice_from", + "Reply-To: $invoice_from", + "Date: ". time2str("%a, %d %b %Y %X %z", time), + "Subject: Invoice", + ] ); + my $message = new Mail::Internet ( + 'Header' => $header, + 'Body' => [ $cust_bill->print_text ], #( date) + ); + $message->smtpsend or die "Can't send invoice email!"; #die? warn? + + } elsif ( ! @invoicing_list || grep { $_ eq 'POST' } @invoicing_list ) { + open(LPR, "|$lpr") or die "Can't open pipe to $lpr: $!"; + print LPR $cust_bill->print_text; #( date ) + close LPR + or die $! ? "Error closing $lpr: $!" + : "Exit status $? from $lpr"; + } my %hash = $cust_bill->hash; $hash{'printed'}++; @@ -611,6 +633,7 @@ sub collect { my $error = $cust_pay->insert; return 'Error COMPing invnum #' . $cust_bill->invnum . ':' . $error if $error; + } elsif ( $self->payby eq 'CARD' ) { if ( $options{'batch_card'} ne 'yes' ) { @@ -620,8 +643,9 @@ sub collect { if ( $processor =~ /^cybercash/ ) { #fix exp. date for cybercash - $self->paydate =~ /^(\d+)\/\d*(\d{2})$/; - my $exp = "$1/$2"; + #$self->paydate =~ /^(\d+)\/\d*(\d{2})$/; + $self->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/; + my $exp = "$2/$1"; my $paybatch = $cust_bill->invnum. '-' . time2str("%y%m%d%H%M%S", time); @@ -712,6 +736,10 @@ sub collect { return "Unknown payment type ". $self->payby; } + + + + } ''; @@ -835,7 +863,7 @@ sub check_invoicing_list { =head1 VERSION -$Id: cust_main.pm,v 1.10 1999-01-25 12:26:09 ivan Exp $ +$Id: cust_main.pm,v 1.13 1999-02-28 20:09:03 ivan Exp $ =head1 BUGS @@ -891,7 +919,17 @@ enable cybercash, cybercash v3 support, don't need to import FS::UID::{datasrc,checkruid} ivan@sisd.com 98-sep-19-21 $Log: cust_main.pm,v $ -Revision 1.10 1999-01-25 12:26:09 ivan +Revision 1.13 1999-02-28 20:09:03 ivan +allow spaces in zip codes, for (at least) canada. pointed out by +Clayton Gray + +Revision 1.12 1999/02/27 21:24:22 ivan +parse paydate correctly for cybercash + +Revision 1.11 1999/02/23 08:09:27 ivan +beginnings of one-screen new customer entry and some other miscellania + +Revision 1.10 1999/01/25 12:26:09 ivan yet more mod_perl stuff Revision 1.9 1999/01/18 09:22:41 ivan