From 6170db240b2883d457614fadbb8134b4e34070c5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20B=C3=BCren?= Date: Mon, 4 Feb 2019 10:56:00 +0100 Subject: [PATCH] manueller Rechnungsversand per E-Mail. Vorbelegung mandantenweit konfigurierbar --- SL/DB/MetaSetup/Default.pm | 1 + bin/mozilla/io.pl | 19 ++++++++++++------ doc/changelog | 6 +++--- locale/de/all | 4 ++++ .../defaults_invoice_mail_priority.pl | 20 +++++++++++++++++++ .../webpages/client_config/_features.html | 8 +++++++- 6 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 sql/Pg-upgrade2/defaults_invoice_mail_priority.pl diff --git a/SL/DB/MetaSetup/Default.pm b/SL/DB/MetaSetup/Default.pm index 0b282d5f5..fae9ab5f5 100644 --- a/SL/DB/MetaSetup/Default.pm +++ b/SL/DB/MetaSetup/Default.pm @@ -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 }, diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index ece721f33..8f2a3156e 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -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; diff --git a/doc/changelog b/doc/changelog index 6778623ab..23684f682 100644 --- a/doc/changelog +++ b/doc/changelog @@ -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. diff --git a/locale/de/all b/locale/de/all index 1020aa5c1..1354308f8 100755 --- a/locale/de/all +++ b/locale/de/all @@ -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 index 000000000..602a7ef83 --- /dev/null +++ b/sql/Pg-upgrade2/defaults_invoice_mail_priority.pl @@ -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; diff --git a/templates/webpages/client_config/_features.html b/templates/webpages/client_config/_features.html index 7d4959fda..a5aedd179 100644 --- a/templates/webpages/client_config/_features.html +++ b/templates/webpages/client_config/_features.html @@ -236,9 +236,15 @@ [% 'Sent emails can be optionally stored in the database with or without their attachments.' | $T8 %] + + [% LxERP.t8('Invoice email settings') %] + + [% 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) %] + + [% '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 %] + [% LxERP.t8("Requirement Specs") %] - [% LxERP.t8('Default article for converting into quotations and orders') %] -- 2.20.1