]> wagnertech.de Git - kivitendo-erp.git/commitdiff
GenericTranslation um Vorbelegungen für E-Mail-Texte erweitert
authorJan Büren <jan@kivitendo-premium.de>
Sat, 29 Jul 2017 18:19:10 +0000 (20:19 +0200)
committerJan Büren <jan@kivitendo-premium.de>
Sat, 29 Jul 2017 18:19:10 +0000 (20:19 +0200)
Neuer Menüpunkt:
System-> Sprachen und Übersetzungen -> Vorbelegte Texte für E-Mail
Falls ein Ansprechpartner hinterlegt ist, wird entsprechend des
Geschlechts und der vorbelegten Textbaustein die Anrede zusammengesetzt.
Falls kein Ansprechpartner gewählt ist, kommt die allgemeine Grußformel.
Bis auf Gutschrift und Mahnung(en) sind alle Workflow Masken im Ein- und
Verkauf umgesetzt.

bin/mozilla/generictranslations.pl
doc/changelog
locale/de/all
menus/user/00-erp.yaml
templates/webpages/generictranslations/edit_email_strings.html [new file with mode: 0644]

index 5d945566f486cf1021de294627a35a0b932edacf..d3341f2125af84726d0f647cd1d5a98e6bc8b2a9 100644 (file)
@@ -5,6 +5,23 @@ use SL::Locale::String qw(t8);
 
 use strict;
 
+# convention:
+# preset_text_$formname will generate a input textarea
+# and will be preset in $form email dialog if the form name matches
+
+my %mail_strings = (
+  salutation_male                     => t8('Salutation male'),
+  salutation_female                   => t8('Salutation female'),
+  salutation_general                  => t8('Salutation general'),
+  salutation_punctuation_mark         => t8('Salutation punctuation mark'),
+  preset_text_sales_quotation         => t8('Preset email text for sales quotations'),
+  preset_text_sales_order             => t8('Preset email text for sales orders'),
+  preset_text_sales_delivery_order    => t8('Preset email text for sales delivery orders'),
+  preset_text_invoice                 => t8('Preset email text for sales invoices'),
+  preset_text_request_quotation       => t8('Preset email text for requests (rfq)'),
+  preset_text_purchase_order          => t8('Preset email text for purchase orders'),
+);
+
 sub edit_greetings {
   $main::lxdebug->enter_sub();
 
@@ -135,6 +152,61 @@ sub save_sepa_strings {
 
   $main::lxdebug->leave_sub();
 }
+sub edit_email_strings {
+  $main::lxdebug->enter_sub();
+
+  $main::auth->assert('config');
+
+  my $form     = $main::form;
+  my $locale   = $main::locale;
+
+  $form->get_lists('languages' => 'LANGUAGES');
+  unshift @{ $form->{LANGUAGES} }, { 'id' => 'default', };
+
+  my (%translations, $translation_list);
+  foreach (keys %mail_strings)  {
+    $translation_list = GenericTranslations->list(translation_type => $_);
+    %translations     = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list };
+
+    foreach my $language (@{ $form->{LANGUAGES} }) {
+      $language->{$_} = $translations{$language->{id}};
+    }
+  }
+  setup_generictranslations_edit_email_strings_action_bar();
+
+  $form->{title} = $locale->text('Edit preset email strings');
+  $form->header();
+  print $form->parse_html_template('generictranslations/edit_email_strings',{ 'MAIL_STRINGS' => \%mail_strings });
+
+  $main::lxdebug->leave_sub();
+}
+
+sub save_email_strings {
+  $main::lxdebug->enter_sub();
+
+  $main::auth->assert('config');
+
+  my $form     = $main::form;
+  my $locale   = $main::locale;
+
+  $form->get_lists('languages' => 'LANGUAGES');
+
+  unshift @{ $form->{LANGUAGES} }, { };
+  foreach my $language (@{ $form->{LANGUAGES} }) {
+    foreach (keys %mail_strings)  {
+      GenericTranslations->save('translation_type' => $_,
+                                'translation_id'   => undef,
+                                'language_id'      => $language->{id},
+                                'translation'      => $form->{"translation__" . ($language->{id} || 'default') . "__" . $_},
+                               );
+    }
+  }
+  $form->{message} = $locale->text('The Mail strings have been saved.');
+
+  edit_email_strings();
+
+  $main::lxdebug->leave_sub();
+}
 
 sub setup_generictranslations_edit_greetings_action_bar {
   my %params = @_;
@@ -163,5 +235,18 @@ sub setup_generictranslations_edit_sepa_strings_action_bar {
     );
   }
 }
+sub setup_generictranslations_edit_email_strings_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => "save_email_strings" } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
 
 1;
index b36292e7ec56932a8a0a1acc303abd4152e07bde..d10b4c89b5508158e0e93aa8640f769a5d25274b 100644 (file)
@@ -9,6 +9,7 @@ kleinere neue Features und Detailverbesserungen:
   - SEPA-XML: alle Sonderzeichen filtern
   - SEPA-Export: Export wieder rückgängig machen, falls noch Status offen
   - Stammdaten -> Berichte -> Artikel: Standardlager und Lagerplatz optional anzeigen
+  - Vorbelegte Texte inkl. Ansprechpartner für den E-Mail-Versand bei allen Workflows hinzugefügt.
 
 2017-07-17 - Release 3.5.0
 
index f742c36ab727d39dd7e1b2eda9158be487e4271f..4df7f503dba16e8c1cd95af3cc2feb512a88dc21 100755 (executable)
@@ -1132,6 +1132,7 @@ $self->{texts} = {
   'Edit payment term'           => 'Zahlungsbedingungen bearbeiten',
   'Edit picture'                => 'Bild bearbeiten',
   'Edit pre-defined text'       => 'Vordefinierten Textblock bearbeiten',
+  'Edit preset email strings'   => 'Vorbelegte Texte für E-Mails editieren',
   'Edit price rule'             => 'Preisregel bearbeiten',
   'Edit pricegroup'             => 'Preisgruppe bearbeiten',
   'Edit prices and discount (if not used, textfield is ONLY set readonly)' => 'Preise und Rabatt in Formularen frei anpassen (falls deaktiviert, wird allerdings NUR das textfield auf READONLY gesetzt / kann je nach Browserversion und technischen Fähigkeiten des Anwenders noch umgangen werden)',
@@ -2200,6 +2201,13 @@ $self->{texts} = {
   'Prepare bank collection via SEPA XML' => 'Einzug via SEPA XML vorbereiten',
   'Prepare bank transfer via SEPA XML' => 'Überweisung via SEPA XML vorbereiten',
   'Prepayment'                  => 'Vorauszahlung',
+  'Preset email strings'        => 'Vorbelegte E-Mail-Texte',
+  'Preset email text for purchase orders' => 'Vorbelegter E-Mail-Text für Einkaufsaufträge',
+  'Preset email text for requests (rfq)' => 'Vorbelegter E-Mail-Text für Anfragen',
+  'Preset email text for sales delivery orders' => 'Vorbelegter E-Mail-Text für Verkaufs-Lieferscheine',
+  'Preset email text for sales invoices' => 'Vorbelegter E-Mail-Text für Rechnungen',
+  'Preset email text for sales orders' => 'Vorbelegter E-Mail-Text für Aufträge',
+  'Preset email text for sales quotations' => 'Vorbelegter E-Mail-Text für Angebote',
   'Preview'                     => 'Vorschau',
   'Preview Mode'                => 'Vorschaumodus',
   'Previous transdate text'     => 'wurde gespeichert am',
@@ -2530,10 +2538,13 @@ $self->{texts} = {
   'Sales quotation #1 has been deleted.' => 'Angebot #1 wurde gelöscht.',
   'Sales quotation #1 has been updated.' => 'Angebot #1 wurde aktualisiert.',
   'Salesman'                    => 'Verkäufer/in',
-  'Salesman (ID)'               => 'Verkäufer/in (ID)',
   'Salesman (database ID)'      => 'Verkäufer/in (Datenbank-ID)',
   'Salesman (login)'            => 'Verkäufer/in (Login)',
   'Salesperson'                 => 'Verkäufer',
+  'Salutation female'           => 'Anrede weiblich',
+  'Salutation general'          => 'Anrede anonym (personenlos)',
+  'Salutation male'             => 'Anrede männlich',
+  'Salutation punctuation mark' => 'Zeichensetzungs-Trenner nach der Anrede-Formel (Punkt, Ausrufezeichen, etc)',
   'Same Filename !'             => 'unveränderter Dateiname !',
   'Same as the quote character' => 'Wie Anf&uuml;hrungszeichen',
   'Sat. Fax'                    => 'Sat. Fax',
@@ -2901,6 +2912,7 @@ $self->{texts} = {
   'The ID #1 is not a valid database ID.' => 'Die ID #1 ist keine gültige Datenbank-ID.',
   'The LDAP server "#1:#2" is unreachable. Please check config/kivitendo.conf.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/kivitendo.conf.',
   'The MT940 import needs an import profile called MT940' => 'Der MT940 Import benötigt ein Importprofil mit dem Namen "MT940"',
+  'The Mail strings have been saved.' => 'Die vorbelegten E-Mail-Texte wurden gespeichert.',
   'The PDF has been created'    => 'Die PDF-Datei wurde erstellt.',
   'The PDF has been printed'    => 'Das PDF-Dokument wurde gedruckt.',
   'The SEPA export has been created.' => 'Der SEPA-Export wurde erstellt',
index c520c4b68517335702b9273f33bbfc9176da7daa..eae8faf77df87500160be2fb00188780b23b663d 100644 (file)
   module: generictranslations.pl
   params:
     action: edit_sepa_strings
+- parent: system_languages_and_translations
+  id: system_languages_and_translations_email_strings
+  name: Preset email strings
+  order: 500
+  module: generictranslations.pl
+  params:
+    action: edit_email_strings
 - parent: system
   id: system_payment_terms
   name: Payment Terms
diff --git a/templates/webpages/generictranslations/edit_email_strings.html b/templates/webpages/generictranslations/edit_email_strings.html
new file mode 100644 (file)
index 0000000..c24a8c8
--- /dev/null
@@ -0,0 +1,37 @@
+[%- USE T8 %]
+[%- USE HTML %]
+<h1>[% HTML.escape(title) %]</h1>
+[%- IF message %]
+ <p>
+ [% HTML.escape(message) %]
+ </p>
+[%- END %]
+ <form method="post" action="generictranslations.pl" id="form">
+  <table>
+   [%- FOREACH mail_string IN MAIL_STRINGS.keys.sort %]
+    <tr>
+      <th class="listheading">&nbsp;</th>
+      <th class="listheading">[% MAIL_STRINGS.$mail_string %]</th>
+     </tr>
+
+     [%- FOREACH language = LANGUAGES %]
+     <tr>
+      <td>
+       [%- IF language.id == 'default' %]
+       [% 'Default (no language selected)' | $T8 %]
+       [%- ELSE %]
+       [%- HTML.escape(language.description) %]
+       [%- END %]
+      </td>
+      <td>
+       [%- IF mail_string.search('preset') %]
+        <textarea name="translation__[% language.id %]__[% mail_string %]" rows="4" cols="60">[% HTML.escape(language.$mail_string) %]</textarea>
+       [%- ELSE %]
+        <input name="translation__[% language.id %]__[% mail_string %]" size="40" value="[% HTML.escape(language.$mail_string) %]">
+       [%- END %]
+      </td>
+     </tr>
+     [%- END %]
+   [%- END %]
+  </table>
+ </form>