[freeside-commits] freeside/FS/FS/part_export send_email.pm, NONE, 1.1.2.2
Mark Wells
mark at wavetail.420.am
Tue Dec 28 16:02:31 PST 2010
Update of /home/cvs/cvsroot/freeside/FS/FS/part_export
In directory wavetail.420.am:/tmp/cvs-serv10162/FS/FS/part_export
Added Files:
Tag: FREESIDE_2_1_BRANCH
send_email.pm
Log Message:
send_email export, RT#10884
--- NEW FILE: send_email.pm ---
package FS::part_export::send_email;
use vars qw(@ISA %info);
use Tie::IxHash;
use FS::part_export;
use FS::Record qw(qsearch qsearchs);
use FS::Conf;
use FS::msg_template;
use FS::Misc qw(send_email);
@ISA = qw(FS::part_export);
my %templates;
my %template_select = (
type => 'select',
freeform => 1,
option_label => sub {
$templates{$_[0]};
},
option_values => sub {
%templates = (0 => '',
map { $_->msgnum, $_->msgname }
qsearch({ table => 'msg_template',
hashref => {},
order_by => 'ORDER BY msgnum ASC'
})
);
sort keys (%templates);
},
);
tie my %options, 'Tie::IxHash', (
'insert_template' => {
before => '
<TR><TD COLSPAN=2>
<TABLE>
<TR><TH></TH><TH>Template</TH></TR>
<TR><TD>New service</TD><TD>',
%template_select,
after => '</TD></TR>
',
},
'delete_template' => {
before => '
<TR><TD>Delete</TD><TD>',
%template_select,
after => '</TD></TR>
',
},
'replace_template' => {
before => '
<TR><TD>Modify</TD><TD>',
%template_select,
after => '</TD></TR>
',
},
'suspend_template' => {
before => '
<TR><TD>Suspend</TD><TD>',
%template_select,
after => '</TD></TR>
',
},
'unsuspend_template' => {
before => '
<TR><TD>Unsuspend</TD><TD>',
%template_select,
after => '</TD></TR>
</TABLE>
</TD></TR>',
},
'to_customer' => {
label => 'Send to customer',
type => 'checkbox',
},
'to_address' => {
label => 'Send to other address: ',
type => 'text',
},
);
%info = (
'svc' => [qw( svc_acct svc_broadband svc_phone svc_domain )],
'desc' =>
'Send an email message',
'options' => \%options,
'nodomain' => '',
'notes' => '
Send an email message. The subject and body of the message
will be generated from a message template.'
);
sub _export {
my( $self, $action, $svc ) = (shift, shift, shift);
my $conf = new FS::Conf;
my $msgnum = $self->option($action.'_template');
return if !$msgnum;
my $msg_template = FS::msg_template->by_key($msgnum);
return "Template $msgnum not found\n" if !$msg_template;
my $cust_pkg = $svc->cust_svc->cust_pkg;
my $cust_main = $svc->cust_svc->cust_pkg->cust_main if $cust_pkg;
my $custnum = $cust_main->custnum if $cust_main;
my $svcnum = $svc->svcnum if $action ne 'delete';
my @to = split(',', $self->option('to_address') || '');
push @to, $cust_main->invoicing_list_emailonly
if $self->option('to_customer') and $cust_main;
if ( !@to ) {
warn 'No destination address for send_email export: custnum '.$cust_main->custnum;
# warn, don't die, but also avoid sending the template with _no_ 'to'=>
# param, which would send to the customer by default.
return;
}
if ( $action eq 'replace' ) {
my $old = shift;
return $msg_template->send(
'cust_main' => $cust_main,
'object' => [ $svc, $old ],
'to' => join(',', @to),
);
}
else {
return $msg_template->send(
'cust_main' => $cust_main,
'object' => $svc,
'to' => join(',', @to),
);
}
}
sub _export_insert {
my($self, $svc) = (shift, shift);
$self->_export('insert', $svc);
}
sub _export_replace {
my($self, $new, $old) = (shift, shift, shift);
$self->_export('replace', $new, $old);
}
sub _export_delete {
my($self, $svc) = (shift, shift);
$self->_export('delete', $svc);
}
sub _export_suspend {
my($self, $svc) = (shift, shift);
$self->_export('suspend', $svc);
}
sub _export_unsuspend {
my($self, $svc) = (shift, shift);
$self->_export('unsuspend', $svc);
}
1;
More information about the freeside-commits
mailing list