[freeside-commits] branch master updated. 871700058406b65d66bfcf645e4546fafb132246

Mark Wells mark at 420.am
Wed Mar 23 13:20:55 PDT 2016


The branch, master has been updated
       via  871700058406b65d66bfcf645e4546fafb132246 (commit)
      from  7109ab0b7108ee365fbc958eaaf9e473f2332c08 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 871700058406b65d66bfcf645e4546fafb132246
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Mar 23 11:46:41 2016 -0700

    add event action to send an invoice attached to a notice, #40152

diff --git a/FS/FS/msg_template/email.pm b/FS/FS/msg_template/email.pm
index 83ff18f..07a1fa0 100644
--- a/FS/FS/msg_template/email.pm
+++ b/FS/FS/msg_template/email.pm
@@ -206,6 +206,12 @@ A string to use as the HTML body; if specified, replaces the entire
 body of the message. This should be used ONLY by L<FS::report_batch> and may
 go away in the future.
 
+=item attach
+
+A L<MIME::Entity> (or arrayref of them) to attach to the message.
+
+=cut
+
 =back
 
 =cut
@@ -348,13 +354,24 @@ sub prepare {
     'Type'        => 'multipart/related',
   );
 
+  if ( $opt{'attach'} ) {
+    my @attach;
+    if (ref $opt{'attach'} eq 'ARRAY') {
+      @attach = @{ $opt{'attach'} };
+    } else {
+      @attach = $opt{'attach'};
+    }
+    foreach (@attach) {
+      $message->add_part($_);
+    }
+  }
+
   #$message->head->replace('Content-type',
   #  'multipart/related; '.
   #  'boundary="' . $message->head->multipart_boundary . '"; ' .
   #  'type=multipart/alternative'
   #);
-  
-  # XXX a facility to attach additional parts is necessary at some point
+
   foreach my $part (@{ $email{mimeparts} }) {
     warn "$me appending part ".$part->mime_type."\n" if $DEBUG;
     $message->add_part( $part );
diff --git a/FS/FS/part_event/Action/cust_bill_send_with_notice.pm b/FS/FS/part_event/Action/cust_bill_send_with_notice.pm
new file mode 100644
index 0000000..10e86e3
--- /dev/null
+++ b/FS/FS/part_event/Action/cust_bill_send_with_notice.pm
@@ -0,0 +1,48 @@
+package FS::part_event::Action::cust_bill_send_with_notice;
+
+use strict;
+use base qw( FS::part_event::Action );
+use FS::msg_template;
+use MIME::Entity;
+
+sub description { 'Email a notice to the customer with invoice attached'; }
+
+sub eventtable_hashref {
+  { 'cust_bill' => 1 };
+}
+
+sub option_fields {
+  (
+    'msgnum'      => { label  => 'Message template',
+                       type     => 'select-table',
+                       table    => 'msg_template',
+                       hashref  => { disabled => '' },
+                       name_col => 'msgname',
+                       disable_empty => 1,
+                     },
+    'modenum'     => { label  => 'Invoice mode',
+                       type   => 'select-invoice_mode',
+                     },
+
+  );
+}
+
+sub default_weight { 56; }
+
+sub do_action {
+  my( $self, $cust_bill, %opt ) = @_;
+
+  $cust_bill->set('mode' => $self->option('modenum'));
+  my %args = ( 'time' => $opt{'time'} );
+  my $mimepart = MIME::Entity->build( $cust_bill->mimebuild_pdf(\%args) );
+  my $msgnum = $self->option('msgnum');
+  my $msg_template = FS::msg_template->by_key($msgnum)
+    or die "can't find message template #$msgnum to send with invoice";
+  $msg_template->send(
+    'cust_main' => $cust_bill->cust_main,
+    'object'    => $cust_bill,
+    'attach'    => $mimepart
+  );
+}
+
+1;
diff --git a/FS/FS/part_event/Action/letter.pm b/FS/FS/part_event/Action/letter.pm
index 835dec2..123b990 100644
--- a/FS/FS/part_event/Action/letter.pm
+++ b/FS/FS/part_event/Action/letter.pm
@@ -26,7 +26,7 @@ sub option_fields {
   );
 }
 
-sub default_weight { 56; } #?
+sub default_weight { 58; }
 
 sub do_action {
   my( $self, $object ) = @_;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/msg_template/email.pm                        |   21 ++++++++-
 .../Action/cust_bill_send_with_notice.pm           |   48 ++++++++++++++++++++
 FS/FS/part_event/Action/letter.pm                  |    2 +-
 3 files changed, 68 insertions(+), 3 deletions(-)
 create mode 100644 FS/FS/part_event/Action/cust_bill_send_with_notice.pm




More information about the freeside-commits mailing list