X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_pay.pm;h=201b427aa2fd4a8d8b5dc77366d67ea8b3cd3b76;hb=961ed0b05abcd9c9180d4c91ef4dd75cca4e3eb2;hp=de14610d655ced2afe7612b24076173c2821d03e;hpb=188c20600560139fc40811c6538a18109c050f95;p=freeside.git diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index de14610d6..201b427aa 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -12,16 +12,16 @@ use FS::Misc qw( send_email ); use FS::Record qw( dbh qsearch qsearchs ); use FS::payby; use FS::cust_main_Mixin; -use FS::payinfo_Mixin; +use FS::payinfo_transaction_Mixin; use FS::cust_bill; use FS::cust_bill_pay; use FS::cust_pay_refund; use FS::cust_main; use FS::cust_pay_void; -@ISA = qw(FS::Record FS::cust_main_Mixin FS::payinfo_Mixin ); +@ISA = qw( FS::payinfo_transaction_Mixin FS::cust_main_Mixin FS::Record ); -$DEBUG = 0; +$DEBUG = 1; $me = '[FS::cust_pay]'; @@ -216,21 +216,27 @@ sub insert { my $payby = $self->payby; my $payinfo = $self->payinfo; $payby =~ s/^BILL$/Check/ if $payinfo; - $payinfo = $self->paymask if $payby eq 'CARD' || $payby eq 'CHEK'; + if ( $payby eq 'CARD' || $payby eq 'CHEK' ) { + $payinfo = $self->paymask + } else { + $payinfo = $self->decrypt($payinfo); + } $payby =~ s/^CHEK$/Electronic check/; $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $cust_main->agentnum), + #invoice_from??? well as good as any 'to' => \@invoicing_list, 'subject' => 'Payment receipt', 'body' => [ $receipt_template->fill_in( HASH => { - 'date' => time2str("%a %B %o, %Y", $self->_date), - 'name' => $cust_main->name, - 'paynum' => $self->paynum, - 'paid' => sprintf("%.2f", $self->paid), - 'payby' => ucfirst(lc($payby)), - 'payinfo' => $payinfo, - 'balance' => $cust_main->balance, + 'date' => time2str("%a %B %o, %Y", $self->_date), + 'name' => $cust_main->name, + 'paynum' => $self->paynum, + 'paid' => sprintf("%.2f", $self->paid), + 'payby' => ucfirst(lc($payby)), + 'payinfo' => $payinfo, + 'balance' => $cust_main->balance, + 'company_name' => $conf->config('company_name'), } ) ], ); @@ -344,7 +350,8 @@ sub delete { my $cust_main = $self->cust_main; my $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $self->cust_main->agentnum), + #invoice_from??? well as good as any 'to' => $conf->config('deletepayments'), 'subject' => 'FREESIDE NOTIFICATION: Payment deleted', 'body' => [ @@ -550,84 +557,15 @@ sub unrefunded { sprintf("%.2f", $amount ); } +=item amount -=item cust_main - -Returns the parent customer object (see L). - -=cut - -sub cust_main { - my $self = shift; - qsearchs( 'cust_main', { 'custnum' => $self->custnum } ); -} - -=item payby_name - -Returns a name for the payby field. - -=cut - -sub payby_name { - my $self = shift; - FS::payby->shortname( $self->payby ); -} - -=item gatewaynum - -Returns a gatewaynum for the processing gateway. - -=item processor - -Returns a name for the processing gateway. - -=item authorization - -Returns a name for the processing gateway. - -=item order_number - -Returns a name for the processing gateway. +Returns the "paid" field. =cut -sub gatewaynum { shift->_parse_paybatch->{'gatewaynum'}; } -sub processor { shift->_parse_paybatch->{'processor'}; } -sub authorization { shift->_parse_paybatch->{'authorization'}; } -sub order_number { shift->_parse_paybatch->{'order_number'}; } - -#sucks that this stuff is in paybatch like this in the first place, -#but at least other code can start to use new field names -#(code nicked from FS::cust_main::realtime_refund_bop) -sub _parse_paybatch { +sub amount { my $self = shift; - - $self->paybatch =~ /^((\d+)\-)?(\w+):\s*([\w\-\/ ]*)(:([\w\-]+))?$/ - or return {}; - #"Can't parse paybatch for paynum $options{'paynum'}: ". - # $cust_pay->paybatch; - - my( $gatewaynum, $processor, $auth, $order_number ) = ( $2, $3, $4, $6 ); - - if ( $gatewaynum ) { #gateway for the payment to be refunded - - my $payment_gateway = - qsearchs('payment_gateway', { 'gatewaynum' => $gatewaynum } ); - - die "payment gateway $gatewaynum not found" #? - unless $payment_gateway; - - $processor = $payment_gateway->gateway_module; - - } - - { - 'gatewaynum' => $gatewaynum, - 'processor' => $processor, - 'authorization' => $auth, - 'order_number' => $order_number, - }; - + $self->paid(); } =back @@ -682,24 +620,25 @@ sub _upgrade_data { #class method my $sth = dbh->prepare($count_sql) or die dbh->errstr; $sth->execute or die $sth->errstr; my $total = $sth->fetchrow_arrayref->[0]; - + #warn "$total cust_pay records to update\n" + # if $DEBUG; local($DEBUG) = 2 if $total > 1000; #could be a while, force progress info my $count = 0; my $lastprog = 0; - while (1) { - my $cust_pay = qsearchs( { + my @cust_pay = qsearch( { 'table' => 'cust_pay', 'hashref' => {}, 'extra_sql' => $where, - 'order_by' => 'ORDER BY paynum LIMIT 1', - } ); + 'order_by' => 'ORDER BY paynum', + } ); - return unless $cust_pay; + foreach my $cust_pay (@cust_pay) { my $h_cust_pay = $cust_pay->h_search('insert'); if ( $h_cust_pay ) { + next if $cust_pay->otaker eq $h_cust_pay->history_user; $cust_pay->otaker($h_cust_pay->history_user); } else { $cust_pay->otaker('legacy'); @@ -708,13 +647,11 @@ sub _upgrade_data { #class method delete $FS::payby::hash{'COMP'}->{cust_pay}; #quelle kludge my $error = $cust_pay->replace; - #infinite... - #if ( $error ) { - # warn " *** WARNING: Error updaating order taker for payment paynum". - # $cust_pay->paynun. ": $error\n"; - # next; - #} - die $error if $error; + if ( $error ) { + warn " *** WARNING: Error updating order taker for payment paynum ". + $cust_pay->paynun. ": $error\n"; + next; + } $FS::payby::hash{'COMP'}->{cust_pay} = ''; #restore it