Zum Hauptinhalt springen

Rechnungslauf Vorlagen Struktur

Die Angabe der Rechnungserkennung findet im YAML Format statt. YAML = „yet another markup language“

YAML Struktur

Autogenerated

Der Bereich unterhalb vom Schlüsselwort "Autogenerated" wird vom System erstellt und darf nicht geändert werden. Für die Erstellung ist der Action Service Job "Service OM ADV Lernen" zuständig. Deshalb kann dieser Bereich immer wieder automatisch überschrieben bzw. neu erstellt werden.

hinweis

Manuelle Anpassungen der ADV Vorlage finden IMMER oberhalb des Schlüsselwortes Autogenerated statt.

Beispiel Autogenerated
Identifier: ATU57894559
Autogenerated:
InvoiceDate:
Matchers:

OrderNumber

Mit dem Schlüsselwort OrderNumber wird angegeben wo sich die Auftragsnummer befindet. Prinzipiell sollte das nicht notwendig sein, da wir die Auftragsnummer direkt über die Nummernkreis Struktur suchen. Falls der Auftrag aber nicht gefunden wird, dann kann mit dem Schlüsselwort OrderNumber die Optimierung gemacht werden.

Beispiel OrderNumber
OrderNumber:
Matchers:
- (?<value>A-[0-9]{6})
- (?<value>A-OEV-[0-9]{6})

Identifier

Mit der Schlüsselwort "Identifier" wird ein eindeutiger Begriff festgelegt, mit dem unser System erkennen kann, dass diese Vorlage zum Einsatz kommt.

Beispiel Identifier
Identifier: ATU57894559

Das kann die ATU Nummer sein aber z.B. auch ein IBAN oder E-Mail Adresse.

Keywords

Mit dem Schlüsselwort "Keywords" können zusätzliche Begriffe festgelegt, mit denen unser System erkennen kann, dass diese Vorlage zum Einsatz kommt.

Beispiel Keywords I
Keywords:
- - Grünanlagen
- - office@mayr.at

In unserem Beispiel wird beim Finden des Wortes Grünanlagen ODER office@mayr.at die aktuelle Vorlage verwendet.

Beispiel Keywords II
Keywords:
- - Grünanlagen
- Specht
- - "@maschinenring.at"

Sie können bei den Keywords auch eine UND Bedingung angeben. In diesem Beispiel muss das System Grünanlagen und Specht finden, damit diese Vorlage zum Einsatz kommt ODER @maschinenring.at. Auch können sie die Begriffe in Anführungszeichen setzen falls gewisse Zeichen von der YAML Syntax interpretiert werden.

Firma über ID zuweisen (obsolete)

Mit dem Schlüsselwort BillerId wird der Rechnung fix einer Firma zugeordnet. Dabei wird die KR_ID aus der Tabelle NET_KREDITOR verwendet. Sobald die ADV Vorlage über die Schlüsselwörter Keywords oder Identifier erkannt wird, wird die Firma mit der dazugehörigen ID der Rechnung zugewiesen. Diese Funktionalität ist aber nicht mehr notwendig, da dies direkt bei der ADV Vorlage visuell eingestellt werden kann.

Beispiel BillerId
BillerId: "058AB7FC-A3E1-42E2-886B-7642F1D77997"

Rechnungsdatum

Mit dem Schlüsselwort InvoiceDate wird angegeben wo sich das Rechnungsdatum befindet. Dabei können mehrere reguläre Ausdrucke verwendet werden die einer nach dem anderen verarbeitet werden. Sobald ein Ergebnis gefunden wird, wird dieses als Rechnungsdatum übernommen. Der erste Matcher hat dabei die höchste Priorität.

Rechnungsdatum I
InvoiceDate:
Matchers:
- r?echnungsdatum?:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})
- d?atum?:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})

In unserem Beispiel Rechnungsdatum I wird zuerst die angegeben Zeichenkette gesucht und dann die Gruppe (Named Capture Group) value zurück gegeben.

Rechnungsnummer

Mit dem Schlüsselwort InvoiceNumber wird angegeben wo sich die Rechnungsnummer befindet. Dabei können mehrere reguläre Ausdrucke verwendet werden die einer nach dem anderen verarbeitet werden. Sobald ein Ergebnis gefunden wird, wird dieses als Rechnungsnummer übernommen. Der erste Matcher hat dabei die höchste Priorität.

Rechnungsnummer I
InvoiceNumber:
Matchers:
- r?echnungs?[\.:\-\t ]*nr[\.:\s]*(?<value>0\S\d+\S\d+\S*)
- r?echnungs?[\.:\-\t ]*nr[\.:\s]*(?<value>\S*0\s\d+\s\d+\S*)
- Rechnungsnummer:.+.(?<value>[0-9]{4})-(?<value>[0-9]{6})
Strip: "-+"

In unserem Beispiel Rechnungsdatum I wird zuerst die angegeben Zeichenkette gesucht und dann der Abschnitt value zurück gegeben.

hinweis

Wenn sie die Gruppe (Named Capture Group) value mehrmals angeben wird, dann werden die ermittelten Werte als ein Wert zusammengefasst.

Netto

Mit dem Schlüsselwort NetAmount wird angegeben wo sich das Netto der Rechnung befindet. Dabei können mehrere reguläre Ausdrucke verwendet werden die einer nach dem anderen verarbeitet werden. Sobald ein Ergebnis gefunden wird, wird dieses als Netto übernommen. Der erste Matcher hat dabei die höchste Priorität.

Netto I
NetAmount:
Matchers:
- Netto[ ]*(?<value>[0-9]+[,][0-9]+)

In unserem Beispiel Netto I wird zuerst die angegeben Zeichenkette gesucht und dann die Gruppe (Named Capture Group) value zurück gegeben.

Brutto

Mit dem Schlüsselwort TotalGrossAmount wird angegeben wo sich das Brutto der Rechnung befindet. Dabei können mehrere reguläre Ausdrucke verwendet werden die einer nach dem anderen verarbeitet werden. Sobald ein Ergebnis gefunden wird, wird dieses als Brutto übernommen. Der erste Matcher hat dabei die höchste Priorität.

Brutto I
TotalGrossAmount:
Matchers:
- Gesamt[ ]*(?<value>[0-9]+[,][0-9]+)

In unserem Beispiel Brutto I wird zuerst die angegeben Zeichenkette gesucht und dann die Gruppe (Named Capture Group) value zurück gegeben.

Zahlungsreferenz

Mit dem Schlüsselwort PaymentReference wird angegeben, wo sich die Zahlungsreferenz befindet. Dabei können mehrere reguläre Ausdrucke verwendet werden die einer nach dem anderen verarbeitet werden. Sobald ein Ergebnis gefunden wird, wird dieses als Zahlungsreferenz übernommen. Der erste Matcher hat dabei die höchste Priorität.

Zahlungsreferenz
PaymentReference:
Matchers:
- Zahlungsreferenz:?\s+(?<value>[a-z0-9\-/\.]+)

Steuer

Mit dem Schlüsselwort VATMatchers wird angegeben wo sich die Steuerzeilen der Rechnung befinden. Dabei können mehrere reguläre Ausdrucke verwendet werden, die einer nach dem anderen verarbeitet werden. Sobald eine entsprechende Zeile im Dokument gefunden wird, versucht das System diese zu interpretieren. Der erste Matcher hat dabei die höchste Priorität. Die Ermittlung der USt. erfolgt dann automatisch nach mehreren Regeln. Dabei versucht das System einerseits den Steuersatz zu ermitteln und andererseits die Basis und den Steuerbetrag. Mit dem Schlüsselwort VatMatchers bringt es nichts "Named Capture Group" wie z.B. "ust:*(?<value>[0-9]+[,][0-9]+)" zu verwenden. Der Grund ist die automatische Interpretation der USt. Zeilen.

Steuer I
VATMatchers:
- MatchRegExpr:
- zuzüglich
- ust:?
- MatchRegExpr:
- zuzüglich ust:?
- Match:
- USt.
- EUR
hinweis

Bitte beachten Sie, dass sie mit Match einen Text und mit MatchRegExpr einen regulären Ausdruck angeben können.

Schlüsselwort Strip

Strip
InvoiceNumber:
Matchers:
- r?echnungs?[\.:\-\t ]*nr[\.:\s]*(?<value>0\S\d+\S\d+\S*)
- r?echnungs?[\.:\-\t ]*nr[\.:\s]*(?<value>\S*0\s\d+\s\d+\S*)
Strip: "-+"

Mit dem Schlüsselwort Strip können Zeichen angegeben werden, die am Anfang bzw. Ende des gefundenen Wertes automatisch entfernt werden. Das Schlüsselwort Strip kann zu jedem Schlüsselwort wie InvoiceNumber, NetAmount, InvoiceDate usw. kombiniert werden.

Tips & Tricks

  • Zum Testen der Vorlagen bzw. schreiben von regulären Ausdrucken verwenden wir gerne die Seite https://regex101.com/
  • Als FLAVOR bitte die Einstellung .NET 7.0 (C#) auswählen
  • Gehen sie im Posteingang zu der entsprechenden Rechnung (RDB) und kopieren sie sich die Posteingangsnummer
  • Dann gehen sie im Hauptmenü zu dem Menü ADV Vorlagen (560026)
  • Wählen sie hier die entsprechende Vorlage der Firma aus oder legen sie eine komplett neue Vorlage an
  • In der Karteikarte Test können sie sich die entsprechende Rechnung holen mittels der vorher kopierten Posteingangsnummer
  • Kopieren sie den OCR Text im Browser auf die Seite https://regex101.com/
  • Schreiben sie die notwendigen regulären Ausdrucke um bestimmte Kriterien zu erkennen
  • Setzen sie die regulären Ausdrucke entsprechend der Syntax in die Karteikarte Vorlage ein
  • Testen sie das Ergebnis in der Karteikarte Test mittels der Schaltfläche Test.
    Sie werden vom System informiert was und wieso gefunden wurde.

Beispiele

Standard

Standard
Identifier: _Default
InvoiceDate:
Matchers:
- r?echnungsdatum?:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})
- r?echnungsdatum?:? ?(?<value>([0-9]{1,2}(\.)?( )?(J[]n((uar)|(ner))?|Feb(ruar)?|Mar|März|Apr(il)?|Mai|Jun(i)?|Jul([iy])?|Aug(ust)?|Sep(tember)?|Okt(ober)?|Nov(ember)?|Dez(ember)?)(\.)?( )(([0-9]{2}){1,2})))
- d?atum?:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})
- d?atum?:? ?(?<value>([0-9]{1,2}(\.)?( )?(J[]n((uar)|(ner))?|Feb(ruar)?|Mar|März|Apr(il)?|Mai|Jun(i)?|Jul([iy])?|Aug(ust)?|Sep(tember)?|Okt(ober)?|Nov(ember)?|Dez(ember)?)(\.)?( )(([0-9]{2}){1,2})))
- am:? ?(?<value>([0-9]{1,2}(\.)?( )?(J[]n((uar)|(ner))?|Feb(ruar)?|Mar|März|Apr(il)?|Mai|Jun(i)?|Jul([iy])?|Aug(ust)?|Sep(tember)?|Okt(ober)?|Nov(ember)?|Dez(ember)?)(\.)?( )(([0-9]{2}){1,2})))
- am:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})
InvoiceNumber:
Matchers:
- r?echnungsnummer?[\.:\t ]*(?<value>\S*\d+[\d ]*\d+\S*)
- r?echnungs?[\.:\-\t ]*nr[\.:\s]*(?<value>\S*\d+[\d ]*\d+\S*)
- r?echnung?[\.:\t ]*(?<value>\S*\d+[\d ]*\d+\S*)
- n?ummer?[\.:\t ]*(?<value>\S*\d+[\d ]*\d+\S*)
Strip: "-+"
TotalGrossAmount:
WordMatchers:
- Match:
- endbetrag
- Match:
- zahlungsreferenz
- Match:
- rechnungsbetrag
- Match:
- gesamtsumme
- MatchRegExpr:
- gesamtbetrag:?
- Match:
- rechnungssumme
- Match:
- gesamthonorar
- MatchRegExpr:
- rechnungsbetrag:?
- Match:
- gesamt-betrag
- Match:
- zahlungsbetrag
- MatchRegExpr:
- bruttobetrag?
- Match:
- gesamt
- eur
- Match:
- gesamt
- Match:
- brutto
- MatchRegExpr:
- ^(.)?summe(:)?$
NetAmount:
WordMatchers:
- Match:
- nettobetrag
- Match:
- netto
PaymentReference:
Matchers:
- Zahlungsreferenz:?\s+(?<value>[a-z0-9\-/\.]+)
VATMatchers:
- MatchRegExpr:
- zuzüglich
- ust:?
- MatchRegExpr:
- zuzüglich ust:?
- MatchRegExpr:
- umsatzsteuersatz:?
- MatchRegExpr:
- mehrwertsteuer:?
- MatchRegExpr:
- mwst\.
- MatchRegExpr:
- mwst?\.?:?
- MatchRegExpr:
- ust\.?:?
- MatchRegExpr:
- Umsatzsteuer?:?

Beispiel Viking

Viking
Identifier: Viking
OrderNumber:
Matchers:
- (?<value>A-[0-9]{6})
- (?<value>A-OEV-[0-9]{6})
InvoiceDate:
Matchers:
- D?atum?:? ?(?<value>([0-9]{2}\.){2}[0-9]{4})
InvoiceNumber:
Matchers:
- Rechnung[\.:\t ]*Nr[\.:\t ](?<value>\S*\d+\S*)
Strip: "-+"
TotalGrossAmount:
Matchers:
- Gesa?t[\.:\t ]*brutto[\.:\t ]*EUR[\.:\t ](?<value>\S*\d+\S*)
- brutto[\.:\t ]*EUR[\.:\t ](?<value>\S*\d+\S*)
VATMatchers:
- MatchRegExpr:
- A =
- B =
- C =
Keywords:
- - ATU41472107