X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_refund.pm;h=166e53783f4bba2bd4c6ef76c4ea6cd0124a7841;hb=3afbcad2c1bcc67d242839f2696cb14e380b4a6a;hp=6d08c8621f795454ec28be3f5a0e33d721b28005;hpb=08b36523ebbf6e2995878f26bfac988f32f7a218;p=freeside.git diff --git a/FS/FS/cust_refund.pm b/FS/FS/cust_refund.pm index 6d08c8621..166e53783 100644 --- a/FS/FS/cust_refund.pm +++ b/FS/FS/cust_refund.pm @@ -7,12 +7,14 @@ use vars qw( @encrypted_fields ); use Business::CreditCard; use FS::UID qw(getotaker); use FS::Record qw( qsearch qsearchs dbh ); +use FS::CurrentUser; use FS::cust_credit; use FS::cust_credit_refund; use FS::cust_pay_refund; use FS::cust_main; @encrypted_fields = ('payinfo'); +sub nohistory_fields { ('payinfo'); } =head1 NAME @@ -86,6 +88,11 @@ order taker (see L books closed flag, empty or `Y' +=item gatewaynum, processor, auth, order_number + +Same as for L, but specifically the result of realtime +authorization of the refund. + =back =head1 METHODS @@ -237,12 +244,17 @@ sub delete { =item replace OLD_RECORD -Modifying a refund? Well, don't say I didn't warn you. +You can, but probably shouldn't modify refunds... + +Replaces the OLD_RECORD with this one in the database, or, if OLD_RECORD is not +supplied, replaces this record. If there is an error, returns the error, +otherwise returns false. =cut sub replace { my $self = shift; + return "Can't modify closed refund" if $self->closed =~ /^Y/i; $self->SUPER::replace(@_); } @@ -256,7 +268,7 @@ returns the error, otherwise returns false. Called by the insert method. sub check { my $self = shift; - $self->otaker(getotaker) unless $self->otaker; + $self->usernum($FS::CurrentUser::CurrentUser->usernum) unless $self->usernum; my $error = $self->ut_numbern('refundnum') @@ -330,6 +342,56 @@ sub unapplied { sprintf("%.2f", $amount ); } +=item send_receipt HASHREF | OPTION => VALUE ... + +Sends a payment receipt for this payment. + +refund_receipt_msgnum must be configured. + +Available options: + +=over 4 + +=item cust_main + +Customer (FS::cust_main) object (for efficiency). + +=cut + +=back + +=cut + +sub send_receipt { + my $self = shift; + my $opt = ref($_[0]) ? shift : { @_ }; + + my $cust_main = $opt->{'cust_main'} || $self->cust_main; + + my $conf = new FS::Conf; + + my $msgnum = $conf->config('refund_receipt_msgnum', $cust_main->agentnum); + return "No refund_receipt_msgnum configured" unless $msgnum; + + my $msg_template = qsearchs('msg_template',{ msgnum => $msgnum}); + return "Could not load template" + unless $msg_template; + + my $queue = new FS::queue { + 'job' => 'FS::Misc::process_send_email', + 'custnum' => $cust_main->custnum, + }; + my $error = $queue->insert( + FS::msg_template->by_key($msgnum)->prepare( + 'cust_main' => $cust_main, + 'object' => $self, + ), + 'msgtype' => 'receipt', # override msg_template's default + ); + + return $error; +} + =back =head1 CLASS METHODS @@ -343,7 +405,7 @@ Returns an SQL fragment to retreive the unapplied amount. =cut sub unapplied_sql { - my ($class, $start, $end) = shift; + my ($class, $start, $end) = @_; my $credit_start = $start ? "AND cust_credit_refund._date <= $start" : ''; my $credit_end = $end ? "AND cust_credit_refund._date > $end" : ''; my $pay_start = $start ? "AND cust_pay_refund._date <= $start" : '';