inventory_accno_id => { type => 'integer' },
inventory_system => { type => 'text' },
invnumber => { type => 'text' },
+ invoice_mail_settings => { type => 'enum', check_in => [ 'cp', 'invoice_mail', 'invoice_mail_cc_cp' ], db_type => 'invoice_mail_settings', default => 'cp' },
ir_changeable => { type => 'integer', default => 2, not_null => 1 },
ir_show_mark_as_paid => { type => 'boolean', default => 'true' },
is_changeable => { type => 'integer', default => 2, not_null => 1 },
sub show_sales_purchase_email_dialog {
my $email = '';
+ my $email_cc = '';
+ my $inv_email;
if ($::form->{cp_id}) {
$email = SL::DB::Contact->load_cached($::form->{cp_id})->cp_email;
}
- my $invoice_mail;
- if ($::form->{type} eq 'invoice' && !$email) {
- # check for invoice_mail
- $email = SL::DB::Customer->load_cached($::form->{vc_id})->invoice_mail;
- $invoice_mail = 1 if $email;
+ if ($::form->{type} eq 'invoice' && (!$email || $::instance_conf->get_invoice_mail_settings ne 'cp')) {
+ # check for invoice_mail if defined (vc.invoice_email)
+ $inv_email = SL::DB::Customer->load_cached($::form->{vc_id})->invoice_mail;
+ if ($inv_email) {
+ # check if cc for contact is also wanted
+ $email_cc = $email if ($::instance_conf->get_invoice_mail_settings eq 'invoice_mail_cc_cp');
+ $email = $inv_email;
+ }
}
+ # still no email? use general mail (vc.email)
if (!$email && $::form->{vc} && $::form->{vc_id}) {
$email = SL::DB::Customer->load_cached($::form->{vc_id})->email if 'customer' eq $::form->{vc};
$email = SL::DB::Vendor ->load_cached($::form->{vc_id})->email if 'vendor' eq $::form->{vc};
my $email_form = {
to => $email,
+ cc => $email_cc,
subject => $::form->generate_email_subject,
message => $::form->generate_email_body,
attachment_filename => $::form->generate_attachment_filename,
show_bcc => $::auth->assert('email_bcc', 'may fail'),
FILES => \%files,
is_customer => $::form->{vc} eq 'customer',
- is_invoice_mail => $invoice_mail,
+ is_invoice_mail => $inv_email,
});
print $::form->ajax_response_header, $html;
- Kundenstammdaten um Feld E-Mail Rechnungsempfänger erweitert
Viele Kunden besitzen für den Rechnungseingang eine generische E-Mail-Adresse, die nicht
mit der allgemeine E-Mail-Adresse identisch ist. Falls dieses Feld gesetzt ist, so hat dieser
- Wert beim E-Mail Versand der Rechnung Priorität. Für die wiederkehrende Rechnung wird die
- Mail-Adresse zusätzlich bedient. In den entsprechenden vorgelagerten Masken, wird dies auch
- visuell angezeigt.
+ Wert beim manuellen E-Mail Versand der Rechnung Priorität (mandantenweit konfigurierbar).
+ Für die wiederkehrende Rechnung wird diese E-Mail-Adresse zusätzlich gesetzt.
+ In den entsprechenden vorgelagerten Masken, wird dies auch visuell angezeigt (nicht bei alter Auftragsmaske!).
- Kundenstammdaten um Feld Amtsgericht erweitert
Falls das Feld Steuernummer mit dem Wert der Hr-Nr gefüllt wurde, wird auch das zuständige
Registierungs-Gericht benötigt.
'Invoice Number' => 'Rechnungsnummer',
'Invoice Number missing!' => 'Rechnungsnummer fehlt!',
'Invoice deleted!' => 'Rechnung gelöscht!',
+ 'Invoice email' => 'E-Mail des Rechnungsempfängers (Kundenstammdaten)',
+ 'Invoice email and Contact Person' => 'E-Mail des Rechnungsempfängers und CC an Ansprechpartner',
+ 'Invoice email settings' => 'E-Mail Rechnungsversand',
'Invoice filter' => 'Rechnungsfilter',
'Invoice for fees' => 'Rechnung über Gebühren',
'Invoice has already been storno\'d!' => 'Diese Rechnung wurde bereits storniert.',
'The greetings have been saved.' => 'Die Anreden wurden gespeichert',
'The installation is currently locked.' => 'Die Installation ist momentan gesperrt.',
'The installation is currently unlocked.' => 'Die Installation ist momentan entsperrt.',
+ 'The invoice recipient can either be a selected contact person (default) or the email adress set in the master data of the customer. Additionally a contact persons mail and the company\'s invoicing mail can be combined.' => 'Der E-Mail-Rechnungsempfänger ist entweder mit dem Ansprechpartner des Belegs vorbelegt (Standard) oder mit der E-Mail-Rechnungsadresse aus den Stammdaten. Alternativ können beide (Ansprechpartner in CC) vorbelegt werden.',
'The invoices have been created. They\'re pre-selected below.' => 'Die Rechnungen wurden erzeugt. Sie sind unten vorausgewählt.',
'The item couldn\'t be deleted!' => 'Der Artikel konnte nicht gelöscht werden!',
'The item couldn\'t be saved!' => 'Der Artikel konnte nicht gespeichert werden!',
--- /dev/null
+# @tag: defaults_invoice_mail_priority
+# @description: Einstellen der Priorität der generischen E-Mail für Rechnungen (Verkauf)
+# @depends: release_3_5_3
+package SL::DBUpgrade2::defaults_invoice_mail_priority;
+
+use utf8;
+
+use parent qw(SL::DBUpgrade2::Base);
+use strict;
+
+sub run {
+ my ($self) = @_;
+
+ # this query will fail if column already exist (new database)
+ $self->db_query(qq|CREATE TYPE invoice_mail_settings AS ENUM ('cp', 'invoice_mail', 'invoice_mail_cc_cp');
+ ALTER TABLE defaults ADD COLUMN invoice_mail_settings invoice_mail_settings default 'cp'|);
+ return 1;
+}
+
+1;
</td>
<td>[% 'Sent emails can be optionally stored in the database with or without their attachments.' | $T8 %]</td>
</tr>
+ <tr>
+ <td align="right">[% LxERP.t8('Invoice email settings') %]</td>
+ <td>
+ [% L.select_tag('defaults.invoice_mail_settings', [ [ 'cp', LxERP.t8('Contact Person') ],[ 'invoice_mail', LxERP.t8('Invoice email') ],[ 'invoice_mail_cc_cp', LxERP.t8('Invoice email and Contact Person') ] ], default=SELF.defaults.invoice_mail_settings) %]
+ </td>
+ <td>[% 'The invoice recipient can either be a selected contact person (default) or the email adress set in the master data of the customer. Additionally a contact persons mail and the company\'s invoicing mail can be combined.' | $T8 %]</td>
+ </tr>
<tr><td class="listheading" colspan="4">[% LxERP.t8("Requirement Specs") %]</td></tr>
-
<tr>
<td align="right">[% LxERP.t8('Default article for converting into quotations and orders') %]</td>
<td>