X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDN.pm;h=4c8001ac85b0ab7665b32d2f1d4185368dc9d4ff;hb=e450ac3003c9abe0e769e99e9e71a3eabbc7ed14;hp=3ba67673380b232e1cdcba885efaaea7a6096243;hpb=a3b8cfa7b754629f39ee42e1cadd88d013666a14;p=kivitendo-erp.git diff --git a/SL/DN.pm b/SL/DN.pm index 3ba676733..4c8001ac8 100644 --- a/SL/DN.pm +++ b/SL/DN.pm @@ -37,6 +37,7 @@ package DN; use SL::Common; use SL::DBUtils; +use SL::DB::AuthUser; use SL::DB::Default; use SL::DB::Employee; use SL::GenericTranslations; @@ -386,8 +387,8 @@ sub send_email { 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) @@ -396,20 +397,38 @@ sub send_email { 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; @@ -515,6 +534,11 @@ sub get_invoices { push(@values, like($form->{customer})); } + if ($form->{department_id}) { + $where .= qq| AND (a.department_id = ?)|; + push(@values, $form->{department_id}); + } + my %columns = ( "ordnumber" => "a.ordnumber", "invnumber" => "a.invnumber", @@ -554,6 +578,7 @@ sub get_invoices { ct.name AS customername, a.customer_id, a.duedate, a.amount - a.paid AS open_amount, a.direct_debit, + dep.description as departmentname, cfg.dunning_description, cfg.dunning_level, @@ -571,6 +596,7 @@ sub get_invoices { FROM ar a LEFT JOIN customer ct ON (a.customer_id = ct.id) + LEFT JOIN department dep ON (a.department_id = dep.id) LEFT JOIN dunning_config cfg ON (a.dunning_config_id = cfg.id) LEFT JOIN dunning_config nextcfg ON (nextcfg.id =