X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fmsg_template.pm;h=70e5569249e195d33e27ed9550275723fddf831c;hb=1f1c0ad8798bfaea287c47565f1a565ee7d82e5c;hp=9c2b2844d78d19695a1f457e5bffbf860ddc842b;hpb=249f7d6cf45f8df5679ac36fc28dd8376e695496;p=freeside.git diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm index 9c2b2844d..70e556924 100644 --- a/FS/FS/msg_template.pm +++ b/FS/FS/msg_template.pm @@ -422,7 +422,7 @@ sub prepare { 'bcc' => $self->bcc_addr || undef, 'subject' => $subject, 'html_body' => $body, - 'text_body' => $text_body + 'text_body' => $text_body, ); } @@ -430,7 +430,8 @@ sub prepare { =item send OPTION => VALUE Fills in the template and sends it to the customer. Options are as for -'prepare'. +'prepare', plus 'attach', a L (or arrayref of them) to attach +to the message. =cut @@ -438,7 +439,20 @@ Fills in the template and sends it to the customer. Options are as for # preview it, etc. sub send { my $self = shift; - send_email(generate_email($self->prepare(@_))); + my %opt = @_; + + my %email = generate_email($self->prepare(%opt)); + if ( $opt{'attach'} ) { + my @attach; + if (ref($opt{'attach'}) eq 'ARRAY') { + @attach = @{ $opt{'attach'} }; + } else { + @attach = $opt{'attach'}; + } + push @{ $email{mimeparts} }, @attach; + } + + send_email(%email); } =item render OPTION => VALUE ... @@ -508,6 +522,17 @@ my $usage_warning = sub { # If you add anything, be sure to add a description in # httemplate/edit/msg_template.html. sub substitutions { + my $payinfo_sub = sub { + my $obj = shift; + ($obj->payby eq 'CARD' || $obj->payby eq 'CHEK') + ? $obj->paymask + : $obj->decrypt($obj->payinfo) + }; + my $payinfo_end = sub { + my $obj = shift; + my $payinfo = &$payinfo_sub($obj); + substr($payinfo, -4); + }; { 'cust_main' => [qw( display_custnum agentnum agent_name @@ -654,11 +679,8 @@ sub substitutions { # overrides the one in cust_main in cases where a cust_pay is passed [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $cust_pay = shift; - ($cust_pay->payby eq 'CARD' || $cust_pay->payby eq 'CHEK') ? - $cust_pay->paymask : $cust_pay->decrypt($cust_pay->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], # for refund receipts 'cust_refund' => [ @@ -666,11 +688,8 @@ sub substitutions { [ refund => sub { sprintf("%.2f", shift->refund) } ], [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $cust_refund = shift; - ($cust_refund->payby eq 'CARD' || $cust_refund->payby eq 'CHEK') ? - $cust_refund->paymask : $cust_refund->decrypt($cust_refund->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], # for payment decline messages # try to support all cust_pay fields @@ -682,11 +701,8 @@ sub substitutions { [ paid => sub { sprintf("%.2f", shift->paid) } ], [ payby => sub { FS::payby->shortname(shift->payby) } ], [ date => sub { time2str("%a %B %o, %Y", shift->_date) } ], - [ payinfo => sub { - my $pending = shift; - ($pending->payby eq 'CARD' || $pending->payby eq 'CHEK') ? - $pending->paymask : $pending->decrypt($pending->payinfo) - } ], + [ 'payinfo' => $payinfo_sub ], + [ 'payinfo_end' => $payinfo_end ], ], }; }