1 package FS::part_export::send_email;
3 use vars qw(@ISA %info);
6 use FS::Record qw(qsearch qsearchs);
9 use FS::Misc qw(send_email);
11 @ISA = qw(FS::part_export);
14 my %template_select = (
20 option_values => sub {
21 %templates = (0 => '',
22 map { $_->msgnum, $_->msgname }
23 qsearch({ table => 'msg_template',
24 hashref => { disabled => 1 },
25 order_by => 'ORDER BY msgnum ASC'
28 sort keys (%templates);
32 tie my %options, 'Tie::IxHash', (
33 'insert_template' => {
37 <TR><TH></TH><TH>Template</TH></TR>
38 <TR><TD>New service</TD><TD>',
43 'delete_template' => {
45 <TR><TD>Delete</TD><TD>',
50 'replace_template' => {
52 <TR><TD>Modify</TD><TD>',
57 'suspend_template' => {
59 <TR><TD>Suspend</TD><TD>',
64 'unsuspend_template' => {
66 <TR><TD>Unsuspend</TD><TD>',
73 label => 'Send to customer',
77 label => 'Send to other address: ',
83 'svc' => [qw( svc_acct svc_broadband svc_phone svc_domain )],
85 'Send an email message',
86 'options' => \%options,
90 Send an email message. The subject and body of the message
91 will be generated from a message template.'
95 my( $self, $action, $svc ) = (shift, shift, shift);
96 my $conf = new FS::Conf;
98 my $msgnum = $self->option($action.'_template');
101 my $msg_template = FS::msg_template->by_key($msgnum);
102 return "Template $msgnum not found\n" if !$msg_template;
104 my $cust_pkg = $svc->cust_svc->cust_pkg;
105 my $cust_main = $svc->cust_svc->cust_pkg->cust_main if $cust_pkg;
106 my $custnum = $cust_main->custnum if $cust_main;
107 my $svcnum = $svc->svcnum if $action ne 'delete';
109 my @to = split(',', $self->option('to_address') || '');
110 push @to, $cust_main->invoicing_list_emailonly
111 if $self->option('to_customer') and $cust_main;
113 warn 'No destination address for send_email export: custnum '.$cust_main->custnum;
114 # warn, don't die, but also avoid sending the template with _no_ 'to'=>
115 # param, which would send to the customer by default.
119 if ( $action eq 'replace' ) {
121 return $msg_template->send(
122 'cust_main' => $cust_main,
123 'object' => [ $svc, $old ],
124 'to' => join(',', @to),
128 return $msg_template->send(
129 'cust_main' => $cust_main,
131 'to' => join(',', @to),
137 my($self, $svc) = (shift, shift);
138 $self->_export('insert', $svc);
141 sub _export_replace {
142 my($self, $new, $old) = (shift, shift, shift);
143 $self->_export('replace', $new, $old);
147 my($self, $svc) = (shift, shift);
148 $self->_export('delete', $svc);
151 sub _export_suspend {
152 my($self, $svc) = (shift, shift);
153 $self->_export('suspend', $svc);
156 sub _export_unsuspend {
157 my($self, $svc) = (shift, shift);
158 $self->_export('unsuspend', $svc);