X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_refund.pm;h=d156d22a883719cf3b02c78eaaed6ab69e2bed93;hb=249f7d6cf45f8df5679ac36fc28dd8376e695496;hp=4086f0f95de623e020bab844667da8bbfe7a59be;hpb=f0bb712b44ff110ce3441a32a5226837d34738fe;p=freeside.git diff --git a/FS/FS/cust_refund.pm b/FS/FS/cust_refund.pm index 4086f0f95..d156d22a8 100644 --- a/FS/FS/cust_refund.pm +++ b/FS/FS/cust_refund.pm @@ -14,6 +14,7 @@ use FS::cust_pay_refund; use FS::cust_main; @encrypted_fields = ('payinfo'); +sub nohistory_fields { ('payinfo'); } =head1 NAME @@ -87,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 @@ -238,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(@_); } @@ -331,6 +342,59 @@ 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 $cust_msg = $msg_template->prepare( + 'cust_main' => $cust_main, + 'object' => $self, + 'msgtype' => 'receipt', + ); + return 'Error preparing message' unless $cust_msg; + my $error = $cust_msg->insert; + return $error if $error; + + my $queue = new FS::queue { + 'job' => 'FS::cust_msg::process_send', + 'custnum' => $cust_main->custnum, + }; + $error = $queue->insert( $cust_msg->custmsgnum ); + + return $error; +} + =back =head1 CLASS METHODS