sub _rebless {
my $self = shift;
+ return '' unless $self->msgclass;
my $class = 'FS::msg_template::' . $self->msgclass;
eval "use $class;";
bless($self, $class) unless $@;
###
$self->_populate_initial_data;
+ ###
+ # Move welcome_msgnum to an export
+ ###
+
+ #upgrade_journal loaded by _populate_initial_data
+ unless (FS::upgrade_journal->is_done('msg_template__welcome_export')) {
+ if (my $msgnum = $conf->config('welcome_msgnum')) {
+ eval "use FS::part_export;";
+ die $@ if $@;
+ eval "use FS::part_svc;";
+ die $@ if $@;
+ eval "use FS::export_svc;";
+ die $@ if $@;
+ #create the export
+ my $part_export = new FS::part_export {
+ 'exportname' => 'Welcome Email',
+ 'exporttype' => 'send_email'
+ };
+ my $error = $part_export->insert({
+ 'to_customer' => 1,
+ 'insert_template' => $msgnum,
+ # replicate blank options that would be generated by UI,
+ # to avoid unexpected results from not having them exist
+ 'to_address' => '',
+ 'replace_template' => 0,
+ 'suspend_template' => 0,
+ 'unsuspend_template' => 0,
+ 'delete_template' => 0,
+ });
+ die $error if $error;
+ #attach it to part_svcs
+ my @welcome_exclude_svcparts = $conf->config('svc_acct_welcome_exclude');
+ foreach my $part_svc (
+ qsearch('part_svc',{ 'svcdb' => 'svc_acct', 'disabled' => '' })
+ ) {
+ next if grep { $_ eq $part_svc->svcpart } @welcome_exclude_svcparts;
+ my $export_svc = new FS::export_svc {
+ 'exportnum' => $part_export->exportnum,
+ 'svcpart' => $part_svc->svcpart,
+ };
+ $error = $export_svc->insert;
+ die $error if $error;
+ }
+ #remove the old confs
+ $error = $conf->delete('welcome_msgnum');
+ die $error if $error;
+ $error = $conf->delete('svc_acct_welcome_exclude');
+ die $error if $error;
+ }
+ FS::upgrade_journal->set_done('msg_template__welcome_export');
+ }
+
+
+ ### Fix dump-email_to (needs to happen after _populate_initial_data)
+ if ($conf->config('dump-email_to')) {
+ # anyone who still uses dump-email_to should have just had this created
+ my ($msg_template) = qsearch('msg_template',{ msgname => 'System log' });
+ if ($msg_template) {
+ eval "use FS::log_email;";
+ die $@ if $@;
+ my $log_email = new FS::log_email {
+ 'context' => 'Cron::backup',
+ 'min_level' => 1,
+ 'msgnum' => $msg_template->msgnum,
+ 'to_addr' => $conf->config('dump-email_to'),
+ };
+ my $error = $log_email->insert;
+ die $error if $error;
+ $conf->delete('dump-email_to');
+ }
+ }
+
}
sub _populate_initial_data { #class method
eval "use FS::msg_template::InitialData;";
die $@ if $@;
+ eval "use FS::upgrade_journal;";
+ die $@ if $@;
my $initial_data = FS::msg_template::InitialData->_initial_data;
foreach my $hash ( @$initial_data ) {
next if $hash->{_conf} && $conf->config( $hash->{_conf} );
+ next if $hash->{_upgrade_journal} && FS::upgrade_journal->is_done( $hash->{_upgrade_journal} );
my $msg_template = new FS::msg_template($hash);
my $error = $msg_template->insert( @{ $hash->{_insert_args} || [] } );
die $error if $error;
$conf->set( $hash->{_conf}, $msg_template->msgnum ) if $hash->{_conf};
+ FS::upgrade_journal->set_done( $hash->{_upgrade_journal} ) if $hash->{_upgrade_journal};
}