manueller Rechnungsversand per E-Mail. Vorbelegung mandantenweit konfigurierbar
authorJan Büren <jan@kivitendo.de>
Mon, 4 Feb 2019 09:56:00 +0000 (10:56 +0100)
committerJan Büren <jan@kivitendo.de>
Mon, 4 Feb 2019 09:56:00 +0000 (10:56 +0100)
SL/DB/MetaSetup/Default.pm
bin/mozilla/io.pl
doc/changelog
locale/de/all
sql/Pg-upgrade2/defaults_invoice_mail_priority.pl [new file with mode: 0644]
templates/webpages/client_config/_features.html

index 0b282d5..fae9ab5 100644 (file)
@@ -88,6 +88,7 @@ __PACKAGE__->meta->columns(
   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 },
index ece721f..8f2a315 100644 (file)
@@ -2020,15 +2020,21 @@ sub _get_files_for_email_dialog {
 
 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};
@@ -2038,6 +2044,7 @@ sub show_sales_purchase_email_dialog {
 
   my $email_form = {
     to                  => $email,
+    cc                  => $email_cc,
     subject             => $::form->generate_email_subject,
     message             => $::form->generate_email_body,
     attachment_filename => $::form->generate_attachment_filename,
@@ -2050,7 +2057,7 @@ sub show_sales_purchase_email_dialog {
     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;
index 6778623..23684f6 100644 (file)
@@ -24,9 +24,9 @@ Kleinere neue Features und Detailverbesserungen:
 - 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.
index 1020aa5..1354308 100755 (executable)
@@ -1685,6 +1685,9 @@ $self->{texts} = {
   '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.',
@@ -3270,6 +3273,7 @@ $self->{texts} = {
   '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!',
diff --git a/sql/Pg-upgrade2/defaults_invoice_mail_priority.pl b/sql/Pg-upgrade2/defaults_invoice_mail_priority.pl
new file mode 100644 (file)
index 0000000..602a7ef
--- /dev/null
@@ -0,0 +1,20 @@
+# @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;
index 7d4959f..a5aedd1 100644 (file)
    </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>