X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fmsg_template.pm;h=3b7c3aa841159e6f282044de36f05df566f3feb5;hb=57274014205c53716c2bf0c4fb3e9ffe257e4654;hp=2388aba698875a252ab536c8fd81defda69c257d;hpb=6d42808bbd3ac9c840c6259aef1dc79a0dc620ff;p=freeside.git diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm index 2388aba69..3b7c3aa84 100644 --- a/FS/FS/msg_template.pm +++ b/FS/FS/msg_template.pm @@ -239,7 +239,7 @@ Options are passed as a list of name/value pairs: =item cust_main -Customer object +Customer object (optional) =item object @@ -280,13 +280,18 @@ sub prepare { my $cust_main = $opt{'cust_main'}; # or die 'cust_main required'; my $object = $opt{'object'}; # or die 'object required'; - # localization - my $locale = $cust_main->locale || ''; + my $locale = $cust_main ? $cust_main->locale : ''; + warn "no locale for cust#".$cust_main->custnum."; using default content\n" - if $DEBUG and !$locale; - my $content = $self->content($cust_main->locale); - warn "preparing template '".$self->msgname."' to cust#".$cust_main->custnum."\n" - if($DEBUG); + if $DEBUG and $cust_main and !$locale; + + my $content = $self->content( $locale ); + + warn sprintf( + "preparing template '%s' to cust#%s\n", + $self->msgname, + $cust_main ? $cust_main->custnum : 'none' + ) if $DEBUG; my $subs = $self->substitutions; @@ -294,8 +299,11 @@ sub prepare { # create substitution table ### my %hash; - my @objects = ($cust_main); - my @prefixes = (''); + my ( @objects, @prefixes ); + if ( $cust_main ) { + @objects = ( $cust_main ); + @prefixes = ( '' ); + } my $svc; if( ref $object ) { if( ref($object) eq 'ARRAY' ) { @@ -407,11 +415,11 @@ sub prepare { my $from_addr = $self->from_addr; if ( !$from_addr ) { + my @agentnum = ( $cust_main->agentnum ) if $cust_main; if ( $opt{'from_config'} ) { - $from_addr = scalar( $conf->config($opt{'from_config'}, - $cust_main->agentnum) ); + $from_addr = scalar( $conf->config( $opt{'from_config'}, @agentnum )); } - $from_addr ||= $conf->invoice_from_full($cust_main->agentnum); + $from_addr ||= $conf->invoice_from_full( @agentnum ); } # my @cust_msg = (); # if ( $conf->exists('log_sent_mail') and !$opt{'preview'} ) { @@ -429,11 +437,11 @@ sub prepare { ->format( HTML::TreeBuilder->new_from_content($body) ) ); ( - 'custnum' => $cust_main->custnum, - 'msgnum' => $self->msgnum, - 'from' => $from_addr, - 'to' => \@to, - 'bcc' => $self->bcc_addr || undef, + 'custnum' => $cust_main ? $cust_main->custnum : undef, + 'msgnum' => $self->msgnum, + 'from' => $from_addr, + 'to' => \@to, + 'bcc' => $self->bcc_addr || undef, 'subject' => $subject, 'html_body' => $body, 'text_body' => $text_body, @@ -879,6 +887,25 @@ sub _upgrade_data { ### $self->_populate_initial_data; + ### 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 @@ -887,19 +914,24 @@ 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}; + } }