diff options
author | ivan <ivan> | 2008-06-01 22:48:15 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-06-01 22:48:15 +0000 |
commit | 15a02054fe0f91eda70003b8d1cf29497d19aa91 (patch) | |
tree | 68cd3680377bacb8a54785cf4aea7afbe1c78a4d /FS | |
parent | d8cbc19ac6d9d4aa9df946e6c9912bbcac26ef82 (diff) |
refactor payment history slightly, add refund receipts, have "unapplied" refunds show like other unapplied/open things, RT#3545
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_pay.pm | 88 | ||||
-rw-r--r-- | FS/FS/cust_refund.pm | 7 | ||||
-rw-r--r-- | FS/FS/payinfo_Mixin.pm | 2 | ||||
-rw-r--r-- | FS/FS/payinfo_transaction_Mixin.pm | 122 |
4 files changed, 130 insertions, 89 deletions
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 03e355f74..156887097 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -12,14 +12,14 @@ 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; @@ -550,90 +550,6 @@ sub unrefunded { sprintf("%.2f", $amount ); } - -=item cust_main - -Returns the parent customer object (see L<FS::cust_main>). - -=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; - if ( $self->payby eq 'BILL' ) { #kludge - 'Check'; - } else { - 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. - -=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 { - 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, - }; - -} - =back =head1 CLASS METHODS diff --git a/FS/FS/cust_refund.pm b/FS/FS/cust_refund.pm index e075e3ed5..abc131e44 100644 --- a/FS/FS/cust_refund.pm +++ b/FS/FS/cust_refund.pm @@ -3,15 +3,16 @@ package FS::cust_refund; use strict; use vars qw( @ISA @encrypted_fields ); use Business::CreditCard; -use FS::Record qw( qsearch qsearchs dbh ); use FS::UID qw(getotaker); +use FS::Record qw( qsearch qsearchs dbh ); +use FS::cust_main_Mixin; +use FS::payinfo_transaction_Mixin; use FS::cust_credit; use FS::cust_credit_refund; use FS::cust_pay_refund; use FS::cust_main; -use FS::payinfo_Mixin; -@ISA = qw( FS::payinfo_Mixin FS::cust_main_Mixin FS::Record ); +@ISA = qw( FS::payinfo_transaction_Mixin FS::cust_main_Mixin FS::Record ); @encrypted_fields = ('payinfo'); diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm index fb56371e3..99cca6a8a 100644 --- a/FS/FS/payinfo_Mixin.pm +++ b/FS/FS/payinfo_Mixin.pm @@ -271,6 +271,8 @@ sub payby_payinfo_pretty { } } +=back + =head1 BUGS Future items? diff --git a/FS/FS/payinfo_transaction_Mixin.pm b/FS/FS/payinfo_transaction_Mixin.pm new file mode 100644 index 000000000..a6a2c991f --- /dev/null +++ b/FS/FS/payinfo_transaction_Mixin.pm @@ -0,0 +1,122 @@ +package FS::payinfo_transaction_Mixin; + +use strict; +use vars qw( @ISA ); +use FS::payby; +use FS::payinfo_Mixin; + +@ISA = qw( FS::payinfo_Mixin ); + +=head1 NAME + +FS::payinfo_transaction_Mixin - Mixin class for records in tables that represent transactions. + +=head1 SYNOPSIS + +package FS::some_table; +use vars qw(@ISA); +@ISA = qw( FS::payinfo_transaction_Mixin FS::Record ); + +=head1 DESCRIPTION + +This is a mixin class for records that represent transactions: that contain +payinfo and paybatch. Currently FS::cust_pay and FS::cust_refund + +=head1 METHODS + +=over 4 + + +=item cust_main + +Returns the parent customer object (see L<FS::cust_main>). + +=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; + if ( $self->payby eq 'BILL' ) { #kludge + 'Check'; + } else { + 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. + +=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 { + 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, + }; + +} + + + + +=back + +=head1 SEE ALSO + +L<FS::payinfo_Mixin> + +=back |