diff options
author | ivan <ivan> | 2009-02-09 14:05:31 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-02-09 14:05:31 +0000 |
commit | a4b8ce8cd1d309de00c64f38049a8dda38798046 (patch) | |
tree | 8c36c37a563900083468912ebeb373da39c59cca /FS | |
parent | 9925a640ebd475bf260b4d9e065b3f01e929e20a (diff) |
rest of per-agent config for company_name, company_address, logo, etc.. RT#3989
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/Conf.pm | 24 | ||||
-rw-r--r-- | FS/FS/cust_bill.pm | 11 | ||||
-rw-r--r-- | FS/FS/cust_credit.pm | 3 | ||||
-rw-r--r-- | FS/FS/cust_pay.pm | 6 | ||||
-rwxr-xr-x | FS/bin/freeside-expiration-alerter | 87 |
5 files changed, 81 insertions, 50 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index eb20590cf..4def46260 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -108,7 +108,11 @@ sub config { my $self = shift; return $self->_usecompat('config', @_) if use_confcompat; - my($name,$agentnum)=@_; + my($name, $agentnum)=@_; + + carp "FS::Conf->config($name, $agentnum) called" + if $DEBUG > 1; + my $cv = $self->_config($name, $agentnum) or return; if ( wantarray ) { @@ -146,7 +150,11 @@ sub exists { my $self = shift; return $self->_usecompat('exists', @_) if use_confcompat; - my($name,$agentnum)=@_; + my($name, $agentnum)=@_; + + carp "FS::Conf->exists($name, $agentnum) called" + if $DEBUG > 1; + defined($self->_config($name, $agentnum)); } @@ -556,6 +564,7 @@ worry that config_items is freeside-specific and icky. 'section' => 'billing', 'description' => 'Template file for billing method expiration alerts. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Credit_cards_and_Electronic_checks">billing documentation</a> for details.', 'type' => 'textarea', + 'per-agent' => 1, }, { @@ -1823,7 +1832,7 @@ worry that config_items is freeside-specific and icky. 'section' => 'required', 'description' => 'Your company name', 'type' => 'text', - 'per_agent' => 1, + 'per_agent' => 1, #XXX just FS/FS/ClientAPI/Signup.pm }, { @@ -2270,15 +2279,18 @@ worry that config_items is freeside-specific and icky. { 'key' => 'logo.png', 'section' => 'billing', #? - 'description' => 'An image to include in some types of invoices', - 'type' => 'binary', + 'description' => 'Company logo for HTML invoices and the backoffice interface, in PNG format. Suggested size somewhere near 92x62.', + 'type' => 'image', + 'per_agent' => 1, #XXX just view/logo.cgi, which is for the global + #old-style editor anyway...? }, { 'key' => 'logo.eps', 'section' => 'billing', #? - 'description' => 'An image to include in some types of invoices', + 'description' => 'Company logo for printed and PDF invoices, in EPS format.', 'type' => 'binary', + 'per_agent' => 1, #XXX as above, kinda }, { diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 34feb40f7..704b3504a 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1637,7 +1637,6 @@ L<Time::Local> and L<Date::Parse> for conversion functions. =cut sub print_latex { - my( $self, $today, $template ) = @_; my %params = ( 'format' => 'latex' ); @@ -1653,11 +1652,13 @@ sub print_latex { UNLINK => 0, ) or die "can't open temp file: $!\n"; - if ($template && $conf->exists("logo_${template}.eps")) { - print $lh $conf->config_binary("logo_${template}.eps") + my $agentnum = $self->cust_main->agentnum; + + if ( $template && $conf->exists("logo_${template}.eps", $agentnum) ) { + print $lh $conf->config_binary("logo_${template}.eps", $agentnum) or die "can't write temp file: $!\n"; - }else{ - print $lh $conf->config_binary('logo.eps') + } else { + print $lh $conf->config_binary('logo.eps', $agentnum) or die "can't write temp file: $!\n"; } close $lh; diff --git a/FS/FS/cust_credit.pm b/FS/FS/cust_credit.pm index 99c63cb7f..47a8119ee 100644 --- a/FS/FS/cust_credit.pm +++ b/FS/FS/cust_credit.pm @@ -229,7 +229,8 @@ sub delete { my $cust_main = $self->cust_main; my $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $self->cust_main->agentnum), + #invoice_from??? well as good as any 'to' => $conf->config('deletecredits'), 'subject' => 'FREESIDE NOTIFICATION: Credit deleted', 'body' => [ diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 08699acd1..583a72410 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -220,7 +220,8 @@ sub insert { $payby =~ s/^CHEK$/Electronic check/; $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $self->cust_main->agentnum), + #invoice_from??? well as good as any 'to' => \@invoicing_list, 'subject' => 'Payment receipt', 'body' => [ $receipt_template->fill_in( HASH => { @@ -344,7 +345,8 @@ sub delete { my $cust_main = $self->cust_main; my $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $self->cust_main->agentnum), + #invoice_from??? well as good as any 'to' => $conf->config('deletepayments'), 'subject' => 'FREESIDE NOTIFICATION: Payment deleted', 'body' => [ diff --git a/FS/bin/freeside-expiration-alerter b/FS/bin/freeside-expiration-alerter index ffd75f9a5..0bb61db4a 100755 --- a/FS/bin/freeside-expiration-alerter +++ b/FS/bin/freeside-expiration-alerter @@ -13,7 +13,7 @@ use FS::UID qw(adminsuidsetup); use FS::Record qw(qsearch); use FS::cust_main; -use vars qw($smtpmachine @body); +use vars qw($smtpmachine %agent_failure_body); #hush, perl! $FS::alerter::_template::first = ""; @@ -47,11 +47,6 @@ adminsuidsetup $user; # Get the needed configuration files my $conf = new FS::Conf; $smtpmachine = $conf->config('smtpmachine'); -$mail_sender = $conf->config('invoice_from') - if $conf->exists('invoice_from'); -$failure_recipient = $conf->config('invoice_from') - if $conf->exists('invoice_from'); - my(@customers)=qsearch('cust_main',{}); if (scalar(@customers) == 0) @@ -59,24 +54,6 @@ if (scalar(@customers) == 0) exit 1; } -# Prepare for sending email - -$ENV{MAILADDRESS} = $mail_sender; -my $header = new Mail::Header ( [ - "From: Account Processor", - "To: $failure_recipient", - "Sender: $mail_sender", - "Reply-To: $mail_sender", - "Subject: Unnotified Billing Arrangement Expirations", -] ); - -my @alerter_template = $conf->config('alerter_template') - or die "cannot load config file alerter_template"; - -my $alerter = new Text::Template (TYPE => 'ARRAY', SOURCE => [ map "$_\n", @alerter_template ]) - or die "can't create new Text::Template object: Text::Template::ERROR"; -$alerter->compile() or die "can't compile template: Text::Template::ERROR"; - # Now I can start looping foreach my $customer (@customers) { @@ -110,7 +87,26 @@ foreach my $customer (@customers) ($expire_time < $_date + $panic_time && $expire_time > $_date + $panic_time - $window_time)) { + # Prepare for sending email, now inside the customer loop so i can be agent + # virtualized + + my $agentnum = $customer->agentnum; + + $mail_sender = $conf->config('invoice_from', $agentnum ) + if $conf->exists('invoice_from', $agentnum); + $failure_recipient = $conf->config('invoice_from', $agentnum) + if $conf->exists('invoice_from', $agentnum); + $ENV{MAILADDRESS} = $mail_sender; + + my @alerter_template = $conf->config('alerter_template', $agentnum) + or die "cannot load config file alerter_template"; + + my $alerter = new Text::Template TYPE => 'ARRAY', + SOURCE => [ map "$_\n", @alerter_template ] + or die "can't create new Text::Template object: $Text::Template::ERROR"; + + $alerter->compile() or die "can't compile template: $Text::Template::ERROR"; my @packages = $customer->ncancelled_pkgs; if (scalar(@packages) != 0) { @@ -138,9 +134,10 @@ foreach my $customer (@customers) } $FS::alerter::_template::expdate = $expire_time; - $FS::alerter::_template::company_name = $conf->config('company_name'); + $FS::alerter::_template::company_name = + $conf->config('company_name', $agentnum); $FS::alerter::_template::company_address = - join("\n", $conf->config('company_address') ). "\n"; + join("\n", $conf->config('company_address', $agentnum) ). "\n"; my $message = new Mail::Internet ( 'Header' => $header, @@ -152,23 +149,41 @@ foreach my $customer (@customers) or die "Can't send expiration email: $!"; } elsif ( ! @invoicing_list || grep { $_ eq 'POST' } @invoicing_list ) { - push @body, sprintf(qq{%5d %-32.32s %4s %10s %12s %12s}, - $custnum, - $first . " " . $last . " " . $company, - $payby, - $paydate, - $daytime, - $night); + push @{$agent_failure_body{$customer->agentnum}}, + sprintf(qq{%5d %-32.32s %4s %10s %12s %12s}, + $custnum, + $first . " " . $last . " " . $company, + $payby, + $paydate, + $daytime, + $night + ); } } } } -# Now I need to send EMAIL -if (scalar(@body)) { +# Now I need to send failure EMAIL + +foreach my $agentnum ( keys %agent_failure_body ) { + + $mail_sender = $conf->config('invoice_from', $agentnum ) + if $conf->exists('invoice_from', $agentnum); + $failure_recipient = $conf->config('invoice_from', $agentnum) + if $conf->exists('invoice_from', $agentnum); + + $ENV{MAILADDRESS} = $mail_sender; + my $header = new Mail::Header ( [ + "From: Account Processor", + "To: $failure_recipient", + "Sender: $mail_sender", + "Reply-To: $mail_sender", + "Subject: Unnotified Billing Arrangement Expirations", + ] ); + my $message = new Mail::Internet ( 'Header' => $header, - 'Body' => [ (@body) ], + 'Body' => [ @{$agent_failure_body{$agentnum}} ], ); $!=0; $message->smtpsend( Host => $smtpmachine ) |