Als Suffix müsste ich ja dann das variable Rechnungsdatum eingeben.
Als Suffix müsste dann der Platzhalter “neuestes Dokumentendatum” eingeben werden …aber ich befürchte das geht nicht (als Suffix muss Text eingegeben werden)
Habt ihr eine Idee wie ich die Rechnungsnummer ohne Regex einfangen kann.
Es darf gerne Regex sein…nur kenn ich mich mit Regex nicht wirklich aus…und ich hoffte dass es mit der Text scannen Funktion vielleicht doch klappen könnte …
Wenn die Rechnungsnummer immer in der Form “Monat Jahr 6 Ziffern” erscheint, ist das trivial: \d\d\s+\d{4}\s+\d{6}
Zwei Ziffern, mindestens ein Leerraum, vier Ziffern, mindestens ein Leerraum, sechs Ziffern
Und dann “Regulärer Ausdruck” bei “Text scannen” auswählen.
was für dich trivial sein mag ist für mich “hohe Mathematik”
Aber danke …ich werde es gleich ausprobieren
Aber dann stellt sich gleich die nächste Frage: Wie kann ich das Ergebnis dann beispielsweise in einer Warnung anzeigen lassen …denn der Platzhalter “DocumentString” funktioniert dann nicht !?
Das Ganze in Klammern setzen und dann \1 benutzen.
Das ist übrigens auch in der Dokumentation erklärt: Einfach mal “regular expression” bei “Hilfe” eintragen und dann den Anhang “Smart Rule …” studieren.
Nun habe ich doch noch eine Frage zu dem fast gleichen Thema: Es geht nach wie vor um “Text scannen” - diesmal jedoch um den Betrag. Am Ende der Rechnung steht:
Mit “Text scannen” - “Betrag” - Bruttobetrag* wird einwandfrei der Dokumentbetrag eingefangen.
Leider is der Platzhalter “Dokumentbetrag” nicht in jeder Action aufrufbar.
Ich habe ein benutzerdefiniertes Metafeld erstellt mit dem Namen “Preis” (Dezimalzahl, Währung, €) - in dieses Feld sollte der Dokumentenbetrag eingesetzt werden. Wegen der Formatierung (Dezimalzahl, Währung, €) lassen sich keine Platzhalter aufrufen
Warum das nicht so funktioniert, wie Du möchtest (d.h. warum der Platzhalter “Dokumentenbetrag” für dieses benutzerdefinierte Metafeld nicht verwendbar ist), ist eine Frage für @cgrunenberg.
Unter der Prämisse, dass es immer um dieselben Rechnungen geht, könnte man das mit einem Skript erledigen, bspw. so (das ist nicht getestet, ich habe ja kein passendes Dokument).
function performsmartrule(records) {
records.forEach(r => {
const match = r.plainText().match((\b/\d+\.\d\d\b/);
if (not match) return; /* nächster Record wenn kein Betrag gefunden */
const netto = parseFloat(match[0]);
const brutto = netto * 1.19; /* hier müsste man noch ein bisschen runden */
const USt = brutto - netto;
r.addCustomMetaData(brutto, {for: "mdpreis", to: r});
r.addCustomMetaData(netto, {for: "mdnetto", to: r});
r.addCustomMetaData(USt, {for: "mdust", to: r});
})
}
Das Script sucht zunächst nach einem regulären Ausdruck, der
an einer Wortgrenze beginnt (\b);
es folgt eine beliebige Anzahl von Ziffern (\d+), mindestens eine
es folgt ein Punkt (\.),
und schließlich folgen genau zwei Ziffern (\d\d) und eine Wortgrenze.
Damit sollte es den Nettopreis finden, weil der bei diesen (!) Rechnungen als erster Betrag auftaucht.
Es folgen die Berechnung von Bruttopreis und Umsatzsteuer, den Bruttobetrag müsste man vermutlich noch runden. Und schließlich werden diese Werte für die benutzerdefinierten Metadaten “Preis”, “Netto” und “USt” eingetragen (diese Bezeichnungen werden in DT-Scripts mW immer nur in Kleinbuchstaben mit vorangestelltem md benutzt).
Alternativ könnte man alle Beträge in dem Dokument aufsammeln, indem man r.plainText().matchAll(/\b(\d+\.\d\d)\b/g)
benutzt und dann den größten Betrag als “Brutto” nimmt etc. Das ist aber etwas aufwendiger, weil das Ergebnis von matchAll kein einfaches Array mehr ist.
Platzhalter werden im Augenblick grundsätzlich nur in text-basierten Feldern unterstützt, abgesehen vom Dokumentenbetrag bei Preisen macht der Rest auch kaum Sinn. Das ist aber zumindest geplant.