use SL::Common;
use SL::DBUtils;
+use SL::DB::AuthUser;
use SL::DB::Default;
+use SL::DB::Employee;
use SL::GenericTranslations;
use SL::IS;
use SL::Mailer;
}
$query =
- qq|SELECT dunning_ar_amount_fee, dunning_ar_amount_interest, dunning_ar
+ qq|SELECT dunning_ar_amount_fee, dunning_ar_amount_interest, dunning_ar, dunning_creator
FROM defaults|;
- ($form->{AR_amount_fee}, $form->{AR_amount_interest}, $form->{AR}) = selectrow_query($form, $dbh, $query);
+ ($form->{AR_amount_fee}, $form->{AR_amount_interest}, $form->{AR}, $form->{dunning_creator})
+ = selectrow_query($form, $dbh, $query);
$main::lxdebug->leave_sub();
}
}
}
- $query = qq|UPDATE defaults SET dunning_ar_amount_fee = ?, dunning_ar_amount_interest = ?, dunning_ar = ?|;
- @values = (conv_i($form->{AR_amount_fee}), conv_i($form->{AR_amount_interest}), conv_i($form->{AR}));
+ $query = qq|UPDATE defaults SET dunning_ar_amount_fee = ?, dunning_ar_amount_interest = ?, dunning_ar = ?,
+ dunning_creator = ?|;
+ @values = (conv_i($form->{AR_amount_fee}), conv_i($form->{AR_amount_interest}), conv_i($form->{AR}),
+ $form->{dunning_creator});
do_query($form, $dbh, $query, @values);
return 1;
my $query =
qq|SELECT
dcfg.email_body, dcfg.email_subject, dcfg.email_attachment,
- c.email AS recipient
-
+ COALESCE (NULLIF(c.invoice_mail, ''), c.email) AS recipient, c.name,
+ (SELECT login from employee where id = ar.employee_id) as invoice_employee_login
FROM dunning d
LEFT JOIN dunning_config dcfg ON (d.dunning_config_id = dcfg.id)
LEFT JOIN ar ON (d.trans_id = ar.id)
LIMIT 1|;
my $ref = selectfirst_hashref_query($form, $dbh, $query, $dunning_id);
- if (!$ref || !$ref->{recipient} || !$myconfig->{email}) {
+ # without a recipient, we cannot send a mail
+ if (!$ref || !$ref->{recipient}) {
$main::lxdebug->leave_sub();
- return;
+ die $main::locale->text("No email recipient for customer #1 defined.", $ref->{name});
+ }
+
+ # without a sender we cannot send a mail
+ # two cases: check mail from 1. current user OR 2. employee who created the invoice
+ my ($from, $sign);
+ if ($::instance_conf->get_dunning_creator eq 'current_employee') {
+ $from = $myconfig->{email};
+ die $main::locale->text('No email for current user #1 defined.', $myconfig->{name}) unless $from;
+ } else {
+ eval {
+ $from = SL::DB::Manager::AuthUser->find_by(login => $ref->{invoice_employee_login})->get_config_value("email");
+ $sign = SL::DB::Manager::AuthUser->find_by(login => $ref->{invoice_employee_login})->get_config_value("signature");
+ die unless ($from);
+ 1;
+ } or die $main::locale->text('No email for user with login #1 defined.', $ref->{invoice_employee_login});
}
my $template = SL::Template::create(type => 'PlainText', form => $form, myconfig => $myconfig);
my $mail = Mailer->new();
$mail->{bcc} = $form->get_bcc_defaults($myconfig, $form->{bcc});
- $mail->{from} = $myconfig->{email};
+ $mail->{from} = $from;
$mail->{to} = $ref->{recipient};
$mail->{subject} = $template->parse_block($ref->{email_subject});
$mail->{message} = $template->parse_block($ref->{email_body});
-
+ my $sign_backup = $::myconfig{signature};
+ $::myconfig{signature} = $sign if $sign;
$mail->{message} .= $form->create_email_signature();
+ $::myconfig{signature} = $sign_backup if $sign;
$mail->{message} =~ s/\r\n/\n/g;
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'path' => "${spool}/$filename",
'name' => $form->get_formname_translation('dunning') . "_${dunning_id}.pdf" };
- $form->get_employee_data('prefix' => 'employee', 'id' => $form->{employee_id});
+ my $employee_id = ($::instance_conf->get_dunning_creator eq 'invoice_employee') ?
+ $form->{employee_id} :
+ SL::DB::Manager::Employee->current->id;
+
+ $form->get_employee_data('prefix' => 'employee', 'id' => $employee_id);
$form->get_employee_data('prefix' => 'salesman', 'id' => $form->{salesman_id});
$form->{attachment_type} = "dunning";