RT#38432: OFM - Send refund receipt [v3 message prepare]
[freeside.git] / FS / FS / cust_refund.pm
index 45a170b..166e537 100644 (file)
@@ -14,6 +14,7 @@ use FS::cust_pay_refund;
 use FS::cust_main;
 
 @encrypted_fields = ('payinfo');
+sub nohistory_fields { ('payinfo'); }
 
 =head1 NAME
 
@@ -341,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