summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2009-02-09 14:05:31 +0000
committerivan <ivan>2009-02-09 14:05:31 +0000
commita4b8ce8cd1d309de00c64f38049a8dda38798046 (patch)
tree8c36c37a563900083468912ebeb373da39c59cca /FS
parent9925a640ebd475bf260b4d9e065b3f01e929e20a (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.pm24
-rw-r--r--FS/FS/cust_bill.pm11
-rw-r--r--FS/FS/cust_credit.pm3
-rw-r--r--FS/FS/cust_pay.pm6
-rwxr-xr-xFS/bin/freeside-expiration-alerter87
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 )