Revision e234989c
doc/html/ch02s09.html | ||
---|---|---|
30 | 30 |
</pre><p>Wir gehen jetzt beispielhaft von einer letzten Rechnungsnummer von RE2019456 aus. Demnach sollte ab Januar 2020 die erste Nummer RE2020001 sein. Da der Task auch Präfixe berücksichtigt, kann dies mit folgenden JSON-kodierten Werten umgesetzt werden:</p><p> |
31 | 31 |
<code class="literal">Daten:</code> |
32 | 32 |
</p><pre class="programlisting">multiplier: 100 |
33 |
digits_year: 4</pre><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Der Hintergrundjob nimmt das aktuelle Jahr +1. Daher sollte der Hintergrundjob am 31.12. vor Mitternacht ausgeführt werden, damit im neuen Jahr die Nummernkreise korrekt sind.</p></td></tr></table></div></div><div class="sect2" title="2.9.2. ImportRecordEmails"><div class="titlepage"><div><div><h3 class="title"><a name="Hintergrund-Job ImportRecordEmails"></a>2.9.2. ImportRecordEmails</h3></div></div></div><p> Der Hintergrund-Job <code class="literal">ImportRecordEmails</code> kann vollständig über das Feld Daten konfiguriert werden. Er benötigt folgende Variablen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
|
|
33 |
digits_year: 4</pre><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Der Hintergrundjob nimmt das aktuelle Jahr +1. Daher sollte der Hintergrundjob am 31.12. vor Mitternacht ausgeführt werden, damit im neuen Jahr die Nummernkreise korrekt sind.</p></td></tr></table></div></div><div class="sect2" title="2.9.2. ImportRecordEmails"><div class="titlepage"><div><div><h3 class="title"><a name="Hintergrund-Job ImportRecordEmails"></a>2.9.2. ImportRecordEmails</h3></div></div></div><p>Die prinzipielle Idee des Hintergrund-Jobs <code class="literal">ImportRecordEmails</code> ist es auf einen spezifischen IMAP-Ordner zuzugreifen und unterhalb diesen Ordners alle E-Mails in kivitendo zu importieren. Der Job ist transaktionssicher, d.h. entweder können alle E-Mails zum Zeitpunkt des Jobs importiert werden oder es wird überhaupt keine importiert.</p><p>Die eindeutige Kennzeichnung um Duplikate beim Import zu vermeiden ist die UID der E-Mail auf dem IMAP-Server, dies ist solange stabil, solange der Provider nicht gewechselt wird, bzw. die E-Mails nicht auf einen anderen IMAP-Server migrieren.</p><p>Zu guter Letzt kann der Job auch noch automatisch Verarbeitungen mit dem Anhängen der E-Mail direkt beim Import durchführen, bspw. ZUGFeRD konforme PDFs automatisch verbuchen.</p><p>Die prinzipiellen IMAP-Zugangsdaten können vollständig über das Feld Daten konfiguriert werden und sind wie folgt definiert:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
|
|
34 | 34 |
<code class="literal">hostname:</code> Hier wird der E-Mail-Server (IMAP) eingetragen</p></li><li class="listitem"><p> |
35 | 35 |
<code class="literal">username:</code> Benutzername, für den IMAP-Server (häufig die E-Mail-Adresse)</p></li><li class="listitem"><p> |
36 | 36 |
<code class="literal">password:</code> Passwort des Benutzers</p></li><li class="listitem"><p> |
37 | 37 |
<code class="literal">folder:</code> Hier wird der Ordner eingetragen, aus dem die E-Mails importert werden sollen, bspw. 'INBOX'</p></li><li class="listitem"><p> |
38 | 38 |
<code class="literal">port:</code> Port am E-Mail-Server. Default ist 993</p></li><li class="listitem"><p> |
39 |
<code class="literal">ssl:</code> Gibt an ob SSL verwendet werden soll. Default: 1</p></li></ul></div><p> Optional können außerdem folgende Variablen verwendet werden:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
|
|
39 |
<code class="literal">ssl:</code> Gibt an ob SSL verwendet werden soll. Default: 1</p></li></ul></div><p>Um das ganze Verfahren komfortabler zu optimieren oder Fehlimporte wieder zu löschen stehen folgende optionale Parameter zu Verfügung:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
|
|
40 | 40 |
<code class="literal">email_import_ids_to_delete:</code> Hier können IDs von Importen eingetragen werden, deren E-Mails aus dem E-Mail-Journal gelöscht werden sollen.</p></li><li class="listitem"><p> |
41 | 41 |
<code class="literal">process_imported_emails:</code> Wenn nach dem Import noch weitere Verarbeitung der angehangenen Dokumente erfolgen soll, müssen hier die jeweiligen Schritte eingetragen werden. Aktuell ist es möglich, dass angehangene ZUGFeRD-Rechnung direkt verbucht und mit der E-Mail verknüpft werden. Dazu muss hier 'zugferd' eingetragen werden.</p></li><li class="listitem"><p> |
42 |
<code class="literal">processed_imap_flag:</code> Das hier eingetragenen Flag wird nach dem Verarbeiten in der E-Mail auf den IMAP-Server gesetzt.</p></li><li class="listitem"><p> |
|
43 |
<code class="literal">not_processed_imap_flag:</code> Dieses Flag wird gesetzt, wenn die E-Mail nicht verarbeitet werden konnte.</p></li><li class="listitem"><p> |
|
44 |
<code class="literal">record_type:</code> Einträge im E-Mail-Journal können direkt einem Belegtypen zugeordnet werden. Wenn alle E-Mails, die mit einem Hintergrundjob importiert werden, den gleichen Belegtypen haben, kann man diesen hier festlegen und alle Einträge im E-Mail-Journal werden entsprechend zugeordnet. Für Eingangsrechnungen kann man hier bspw. 'ap_transaction' setzen.</p></li></ul></div><p>Wie die IMAP Flags von den jeweiligen Clients angezeigt und eingerichtet werden, ist aktuell im Thunderbird (Version 115.8.0 und Version 115.8.1) und SoGo (Version 5.9.1) getestet:</p><p>In Thunderbird heißen die Flags Schlagwörter. In unseren beiden Testfälle, war das Verfahren unterschiedlich:</p><p>Thunderbird 115.8.0: Sie werden durchnummeriert mit dem Prefix "$label". Über die Einstellungen kann man Schlagwort und Farbe für den jeweiligen Tag setzen und berabeiten. Um die vordefenierten Tags in Thunderbird zu nutzen kann man $label1 - $label5 nutzen. Eigene Labels werden dann von thunderbird automatisch hochgezählt. Um das korrekte Tag für ein Label zu finden oder auch selbst ein Tag mit einer selbst gewählten Zahl zu definieren kann man in den Einstellunge ganz am Ende über den Button <code class="literal">Konfiguration berabeiten...</code> die Werte in der Kofiguration einsehen, ändern und berabeiten. Hier muss man nach <code class="literal">mailnews.tags</code> suchen.</p><p>Thunderbird 115.8.1: Einstellungen -> Schlagwörter -> hinzufügen. Das Schlagwort wird mit dem 'Label' 'name_mit_unterstrichen' zu Verfügung gestellt. Was wirklich passiert kann man dann ganz unten in den Einstellungen unter 'Konfiguration bearbeiten' und einer darauf folgenden Filtersuche nach 'mailnews.tag' erkennen.</p><p>In SoGo kann man unter Einstellungen -> Mail -> Labels beliebige Label mit $ als Prefix anlegen und Namen und Farbe zuweisen.</p><p>Eine beispielhafte Konfiguration im YAML-Format für das Feld 'Daten' im Hintergrund-Job könnte bspw. so aussehen: |
|
45 |
</p><pre class="programlisting"> |
|
42 |
<code class="literal">imported_imap_flag:</code> Das hier eingetragenen Flag wird nach dem Verarbeiten in der E-Mail auf den IMAP-Server gesetzt.</p></li><li class="listitem"><p> |
|
43 |
<code class="literal">not_imported_imap_flag:</code> Das hier eingetragenen Flag wird bei erfolglosen Importieren auf dem IMAP-Server gesetzt und ist hilfreich um die Fehlerfälle bei großem Datenimporten schneller einzugrenzen.</p></li><li class="listitem"><p> |
|
44 |
<code class="literal">processed_imap_flag:</code> Das hier eingetragenen Flag wird nach dem erfolgreichen Verarbeiten an der E-Mail gesetzt.</p></li><li class="listitem"><p> |
|
45 |
<code class="literal">not_processed_imap_flag:</code> Dieses Flag wird gesetzt, falls die E-Mail nicht erfolgreich verarbeitet werden konnte (Verarbeitungsprozeß ist in <code class="literal">process_imported_emails</code> definiert.</p></li><li class="listitem"><p> |
|
46 |
<code class="literal">record_type:</code> Einträge im E-Mail-Journal können direkt einem Belegtypen zugeordnet werden. Wenn alle E-Mails, die mit einem Hintergrundjob importiert werden, den gleichen Belegtypen haben, kann man diesen hier festlegen und alle Einträge im E-Mail-Journal werden entsprechend zugeordnet. Für Eingangsrechnungen kann man hier bspw. 'ap_transaction' setzen.</p></li><li class="listitem"><p> |
|
47 |
<code class="literal">skip_broken_mime_mails:</code> Bricht den Import-Lauf NICHT ab, falls einige Mails nicht MIME-konform "zerlegt" werden können. Default: 0</p></li></ul></div><p>Wie die IMAP Flags von den jeweiligen Clients angezeigt und eingerichtet werden, ist aktuell im Thunderbird (Version 115.8.0 und Version 115.8.1) und SoGo (Version 5.9.1) getestet:</p><p>In Thunderbird heißen die Flags Schlagwörter. In unseren beiden Testfälle, war das Verfahren unterschiedlich:</p><p>Thunderbird 115.8.0: Sie werden durchnummeriert mit dem Prefix "$label". Über die Einstellungen kann man Schlagwort und Farbe für den jeweiligen Tag setzen und berabeiten. Um die vordefenierten Tags in Thunderbird zu nutzen kann man $label1 - $label5 nutzen. Eigene Labels werden dann von thunderbird automatisch hochgezählt. Um das korrekte Tag für ein Label zu finden oder auch selbst ein Tag mit einer selbst gewählten Zahl zu definieren kann man in den Einstellunge ganz am Ende über den Button <code class="literal">Konfiguration berabeiten...</code> die Werte in der Kofiguration einsehen, ändern und berabeiten. Hier muss man nach <code class="literal">mailnews.tags</code> suchen.</p><p>Thunderbird 115.8.1: Einstellungen -> Schlagwörter -> hinzufügen. Das Schlagwort wird mit dem 'Label' 'name_mit_unterstrichen' zu Verfügung gestellt. Was wirklich passiert kann man dann ganz unten in den Einstellungen unter 'Konfiguration bearbeiten' und einer darauf folgenden Filtersuche nach 'mailnews.tag' erkennen.</p><p>In SoGo kann man unter Einstellungen -> Mail -> Labels beliebige Label mit $ als Prefix anlegen und Namen und Farbe zuweisen.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top">Hilfreich ist dieses Skript was die Flags beispielhaft für einen IMAP-Ordner 'Eingangsrechung' ausliest. Entsprechend die <code class="literal">$GROSSBUCHSTABEN</code> mit eigenen Werten ersetzen: <pre class="programlisting"> |
|
48 |
#!/usr/bin/perl |
|
49 |
|
|
50 |
use strict; |
|
51 |
use warnings; |
|
52 |
|
|
53 |
use Mail::IMAPClient; |
|
54 |
my $imap = Mail::IMAPClient->new( |
|
55 |
Server => '$SERVER', |
|
56 |
User => '$USER', |
|
57 |
Password => '$PASS', |
|
58 |
Ssl => 1, |
|
59 |
Uid => 1, |
|
60 |
); |
|
61 |
|
|
62 |
$imap->select("INBOX.Eingangsrechnung") |
|
63 |
or die "Select error: ", $imap->LastError, "\n"; |
|
64 |
|
|
65 |
# get the flags for every message in my 'Eingangsrechner' folder |
|
66 |
my $flaghash = $imap->flags( scalar( $imap->search("ALL") ) ); |
|
67 |
|
|
68 |
# pump through sorted hash keys to print results: |
|
69 |
for my $k (keys %$flaghash) { |
|
70 |
# print: Message 1: \Flag1, \Flag2, \Flag3 |
|
71 |
print "Message $k:\t", join( ", ", @{$flaghash->{$k}} ), "\n"; |
|
72 |
} |
|
73 |
</pre></td></tr></table></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"> |
|
74 |
Eine beispielhafte Konfiguration im YAML-Format für das Feld 'Daten' im Hintergrund-Job könnte bspw. so aussehen. |
|
75 |
Enthalten sind alle aktuell bekannten Parameter mit entsprechenden sinnvollen Standardwerten, bis auf die Werte der IMAP-Flags (s.a. vorherige Notiz), sodass die Konfiguration als einfachen Start zum Experimentieren direkt kopiert werden kann: |
|
76 |
<pre class="programlisting"> |
|
46 | 77 |
record_type: ap_transaction |
47 | 78 |
folder: INBOX/Eingangsrechnung |
79 |
imported_imap_flag: in_kivitendo_importiert |
|
80 |
not_imported_imap_flag: nicht_importiert |
|
81 |
process_imported_emails: zugferd |
|
48 | 82 |
processed_imap_flag: zugferd_verarbeitet |
49 | 83 |
not_processed_imap_flag: zugferd_geht_net |
50 |
process_imported_emails: zugferd
|
|
84 |
skip_broken_mime_mails: 0
|
|
51 | 85 |
hostname: www.meine-domaene.de |
52 | 86 |
username: alpha39@meine-domaene.de |
53 | 87 |
password: supipass8 |
54 |
</pre><p> |
|
55 |
|
|
56 |
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Der Task-Server </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 2.10. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html> |
|
88 |
</pre></td></tr></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Der Task-Server </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 2.10. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html> |
Auch abrufbar als: Unified diff
doku zu Hintergrundjob ImportRecordEmails überarbeitet/ergänzt