docs, RT#72101
[freeside.git] / FS / FS / cust_msg.pm
index 9346327..5309e25 100644 (file)
@@ -23,9 +23,9 @@ FS::cust_msg - Object methods for cust_msg records
 
 =head1 DESCRIPTION
 
-An FS::cust_msg object represents an email message generated by Freeside 
-and sent to a customer (see L<FS::msg_template>).  FS::cust_msg inherits 
-from FS::Record.  The following fields are currently supported:
+An FS::cust_msg object represents an email message generated by Freeside.
+FS::cust_msg inherits from FS::Record.  The following fields are currently
+supported:
 
 =over 4
 
@@ -47,8 +47,12 @@ from FS::Record.  The following fields are currently supported:
 
 =item body - message body (as a complete MIME document)
 
+=item preview - HTML fragment to show as a preview of the message
+
 =item error - Email::Sender error message (or null for success)
 
+=item status - "prepared", "sent", or "failed"
+
 =back
 
 =head1 METHODS
@@ -137,12 +141,14 @@ sub check {
     || $self->ut_textn('env_to')
     || $self->ut_anything('header')
     || $self->ut_anything('body')
+    || $self->ut_anything('preview')
     || $self->ut_enum('status', \@statuses)
     || $self->ut_textn('error')
     || $self->ut_enum('msgtype', [  '',
                                     'invoice',
                                     'receipt',
                                     'admin',
+                                    'report',
                                  ])
   ;
   return $error if $error;
@@ -159,8 +165,9 @@ message on error, or an empty string.
 
 sub send {
   my $self = shift;
-  my $msg_template = $self->msg_template
-    or return 'message was created without a template object';
+  # it's still allowed to have cust_msgs without message templates, but only 
+  # for email.
+  my $msg_template = $self->msg_template || 'FS::msg_template::email';
   $msg_template->send_prepared($self);
 }
 
@@ -199,6 +206,25 @@ sub parts {
 
 =back
 
+=head1 SUBROUTINES
+
+=over 4
+
+=item process_send CUSTMSGNUM
+
+Given a C<cust_msg.custmsgnum> value, sends the message. It must already
+have been prepared (via L<FS::msg_template/prepare>).
+
+=cut
+
+sub process_send {
+  my $custmsgnum = shift;
+  my $cust_msg = FS::cust_msg->by_key($custmsgnum)
+    or die "cust_msg #$custmsgnum not found";
+  my $error = $cust_msg->send;
+  die $error if $error;
+}
+
 =head1 SEE ALSO
 
 L<FS::msg_template>, L<FS::cust_main>, L<FS::Record>.