diff --git a/MoneyMonkey.lua b/MoneyMonkey.lua index 52b2788..3bb5699 100644 --- a/MoneyMonkey.lua +++ b/MoneyMonkey.lua @@ -8,21 +8,23 @@ -- Das Skript liest eine zweite Lua-Datei ein, in der sich die eigentliche Konfiguration -- befindet. Diese muss an die eigenen Bedürfnisse und Verhältnisse angepasst werden. -- - +-- Erforderliche MoneyMoney-Version: 2.3.25 -- CSV Dateieinstellungen local encoding = "UTF-8" local utf_bom = false local linebreak = "\n" -local reverseOrder = false -- Exportformat bei MoneyMoney anmelden -Exporter{version = 1.4, +Exporter{version = 1.5, + options = { + { label="Umsätze müssen als erledigt markiert sein", name="checkedOnly", default=true } + }, format = MM.localizeText("Buchungssätze"), fileExtension = "csv", - reverseOrder = reverseOrder, + reverseOrder = true, description = MM.localizeText("Export von MoneyMoney Umsätzen zu direkt importierbaren Steuer-Buchungssätzen.")} @@ -74,7 +76,7 @@ end -- -function WriteHeader (account, startDate, endDate, transactionCount) +function WriteHeader (account, startDate, endDate, transactionCount, options) -- Write CSV header. local line = "" @@ -94,7 +96,7 @@ end -- WriteHeader: Export abschließen -- -function WriteTail (account) +function WriteTail (account, options) print ("--------------- END EXPORT ----------------") end @@ -146,7 +148,7 @@ function UmsatzMetadaten (KategoriePfad, Kommentar) end -- Kostenstelle 1 und 2 mit Hashzeichen ("#1000") - for Nummer in string.gmatch(Metadaten, "#([%w_]+)%s*") do + for Nummer in string.gmatch(Metadaten, "#(%w+)%s*") do if AnzahlKostenstellen > 2 then error(string.format("Der Export wurde abgebrochen, da mehr als zwei Kostenstellen über die Kategorie angegeben wurde.\n\nKategorie:\t%s\n", Kategorie), 0) end @@ -172,7 +174,7 @@ function UmsatzMetadaten (KategoriePfad, Kommentar) -- Umsatz-Kommentar nach Kostenstellen oder Steuersätzen durchsuchen KommentarNeu = Kommentar - for KS in string.gmatch(Kommentar, "#([%w_]+)%s*") do + for KS in string.gmatch(Kommentar, "#(%w+)%s*") do if AnzahlKostenstellen > 2 then error(string.format("Der Export wurde abgebrochen, da zu viele weitere Kostenstellen in den Notizen angegeben wurden.\n\nKategorie:\t%s\nNotiz:\t%s\nKostenstelle 1:\t%s\nKostenstelle 2:\t%s", Kategorie, Notiz, Kostenstellen[1], Kostenstellen[2]), 0) end @@ -200,7 +202,7 @@ end -- -function WriteTransactions (account, transactions) +function WriteTransactions (account, transactions, options) for _,transaction in ipairs(transactions) do -- Trage Umsatzdaten aus der Transaktion in der später zu exportierenden Form zusammen @@ -256,7 +258,7 @@ function WriteTransactions (account, transactions) -- Finanzkonto für verwendetes Bankkonto ermitteln - if ( Bankkonto.Finanzkonto == "" or Bankkonto.Finanzkonto == nil) then + if ( Bankkonto.Finanzkonto == "" ) then error ( string.format("Kein Finanzkonto für Konto %s gesetzt.\n\nBitte Feld 'Finanzkonto' in den benutzerdefinierten Feldern in den Einstellungen zum Konto setzen.", account.name ), 0) end @@ -313,8 +315,10 @@ function WriteTransactions (account, transactions) -- Buchung exportieren if Exportieren then - if transaction.checkmark == false then - error(string.format("Der Export wurde abgebrochen, da ein Umsatz nicht als erledigt markiert wurde.\n\nBetroffener Umsatz:\nKonto:\t%s\nDatum:\t%s\nName:\t%s\nBetrag:\t%s\t%s\nKategorie:\t%s\nZweck:\t%s\nNotiz:\t%s", account.name, Umsatz.Datum, Umsatz.Name, Umsatz.Betrag, Umsatz.Waehrung, Umsatz.Kategorie, Umsatz.Verwendungszweck, Umsatz.Notiz), 0) + if options ~= nil then + if options.checkedOnly and transaction.checkmark == false then + error(string.format("Der Export wurde abgebrochen, da ein Umsatz nicht als erledigt markiert wurde.\n\nBetroffener Umsatz:\nKonto:\t%s\nDatum:\t%s\nName:\t%s\nBetrag:\t%.2f\t%s\nKategorie:\t%s\nZweck:\t%s\nNotiz:\t%s", account.name, Umsatz.Datum, Umsatz.Name, Umsatz.Betrag, Umsatz.Waehrung, Umsatz.Kategorie, Umsatz.Verwendungszweck, Umsatz.Notiz), 0) + end end if Buchung.Finanzkonto and Buchung.Gegenkonto then diff --git a/README.md b/README.md index 686cdc6..2fae74b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MoneyMonkey v1.3 +# MoneyMonkey v1.5 **MoneyMonkey** ist eine Erweiterung (Plugin, Extension) für das Online-Banking-Programm _[MoneyMoney](https://moneymoney-app.com)_ (macOS). Mit **MoneyMonkey** können Umsätze von einem oder mehreren in _MoneyMoney_ geführten Konten direkt in eine Buchhaltungssoftware als vollständige Buchungssätze importiert werden und damit den Buchungsvorgang automatisieren. @@ -93,7 +93,8 @@ Einnahmen Veranstaltungen Tickets [4300] #EVENT Werden einer Buchung mehr als zwei unterschiedliche Kostenstellen zugewiesen führt das zum Abbruch des Exports. -_Hinweis:_ *MonKey Office* erlaubt es, Kostenstellen mit beliebigen Zeichen (einschließlich Leerzeichen) zu benennen. *MoneyMonkey* unterstützt aus Gründen der Übersichtlichkeit und als Analogie zu Hashtags nur alphanumerische Bezeichner (Groß- und Kleinbuchstaben und Ziffern, ohne Leerzeichen). +_Hinweis:_ *MonKey Office* erlaubt es, Kostenstellen mit beliebigen Zeichen (einschließlich Leerzeichen) zu benennen. *MoneyMonkey* unterstützt aus Gründen der Übersichtlichkeit und als Analogie zu Hashtags nur alphanumerische Bezeichner (Groß- und Kleinbuchstaben und Ziffern) zzgl. des Unterstrichs ("_") aber keine Leerzeichen). + #### Kostenstellen pro Umsatz einstellen @@ -127,22 +128,33 @@ ist äquivalent zu ist aber deutlich übersichtlicher und einfacher zu verwalten. +Wie schon bei einer einzelnen Buchung gilt: werden einer Buchung durch Vererbung mehr als zwei unterschiedliche Kostenstellen zugewiesen führt das zum Abbruch des Exports. + ## MoneyMonkey starten Wenn nun in _MoneyMoney_ Umsätze ausgewählt werden, kann man im Menü `Konto` den Eintrag `Umsätze exportieren …` auswählen. In der Folge erscheint ein Dialog zur Bestimmung einer Exportdatei. In dem Auswahlmenü unten in diesem Dialog kann man nun den Punkt `Buchungssätze (.csv)` auswählen. Damit wird das Plugin für den Export ausgewählt. -Wenn keine Konfigurationsfehler gefunden werden startet **MoneyMonkey** anschließend den Export in die angegebene Datei. +Wurde das Plugin ausgewählt, erscheint darunter noch eine Option `Umsätze müssen als erledigt markiert sein`. Ist diese Option gesetzt, muss bei allen zu exportierenden Umsätzen in _MoneyMoney_ das Markierungsfeld hinter dem Umsatz ausgewählt sein. Fehlt dieses bei einem Umsatz bricht der Export mit einer entsprechenden Fehlermeldung ab. Mit dieser Option kann man sicherstellen, dass jeder Umsatz bevor er in die Buchhaltung übernommen wird eine explizite Prüfung erfahren hat (Plausibilität, korrekte Kategoriezuordnung, Beleg vorhanden etc.). Wenn man auf eine solche Prüfung verzichten möchte oder zu Testzwecken einen Export vornehmen will kann man diese Option auch ausschalten, sie ist aber empfohlen. + +Wenn keine Konfigurationsfehler gefunden werden startet **MoneyMonkey** anschließend den Export der ausgewählten Umsätze in die angegebene Datei. + +Ein Umsatz wird _nicht_ exportiert wenn eine der folgenden Bedingungen erfüllt ist + +* Der Umsatz wurde dem Gegenkonto [0000] zugeordnet +* Im Bankkonto eines Umsatzes wurde eine Währung konfiguriert und der Umsatz hat eine andere Währung als die dort eingestellte Das Skript _beendet_ den Export vorzeitig wenn einer der folgenden Fehler detektiert wurde: * Ein Umsatz wurde keiner Kategorie zugeordnet +* Für das Bankkonto eines Umsatzes wurde kein Finanzkonto konfiguriert * Für eine eingestellte Kategorie ist kein Gegenkonto ermittelbar -* Der Umsatz wurde nicht bestätigt (Kästchen) +* Der Umsatz wurde nicht bestätigt (Markierungsfeld gesetzt - nur wenn die Option gesetzt wurde, s.o.) * Es wurden einer Kategorie mehr als zwei Kostenstellen zugeordnet Der Fehler wird entsprechend in einem Dialog angezeigt. In jedem dieser Fälle wird keine Datei erzeugt. + ## Import in MonKey Office Wenn die Exportdatei geschrieben wurde kann sie anschließend über die Funktion "Import & Export -> Textdatei importieren" importiert werden. @@ -151,20 +163,38 @@ Wenn die Exportdatei geschrieben wurde kann sie anschließend über die Funktion Um die Datei imporieren zu können muss zunächst eine Einstellung dafür angelegt werden. Diese muss mit den folgenden Einstellungen angelegt werden: -* Bereich: **Buchungen** -* Trennzeichen für Felder: **Komma** -* Trennzeichen für Datensätze: **LF** -* Text in Anführungszeichen: **Doppelt "** -* Zeichensatz für: **UTF-8** -* Importieren ab Zeile: *2* +* Bereich: `Buchungen` +* Trennzeichen für Felder: `Komma` +* Trennzeichen für Datensätze: `LF` +* Text in Anführungszeichen: `Doppelt "` +* Zeichensatz für: `UTF-8` +* Importieren ab Zeile: `2` * Steuerautomatik: _abhängig von der Buchhaltungssystematik_ * Einzeilig: **AUS** -Über den Button _Felder zuordnen_ können die Spalten in der Exportdatei den Feldern der Buchhaltung zugeordnet werden. Die Spaltentitel der Exportdatei entsprechen dabei 1:1 den Bezeichnungen in MonKey Office und sollten daher leicht zu finden sein. +Bevor es losgehen kann müssen noch die Felder aus der MoneyMonkey-Exportdatei den Feldern der Buchhaltung zugeordnet werden. Das kann halbautomatisch erfolgen, da die Spaltentitel der Exportdatei dabei 1:1 den Bezeichnungen in MonKey Office entsprechen. Dazu folgende Schritte vornehmen: + +1. Über den Button _Datei_ eine MoneyMonkey-Exportdatei ausgewählen +2. Die Einstellung _Importieren ab Zeile_ vorübergehend auf den Wert `1` setzen +3. Den Button _Felder zuordnen_ klicken. Damit sollten alle Spalten in der Exportdatei den Feldern der Buchhaltung zugeordnet werden. Zur Sicherheit noch mal drüber schauen, ob alles geklappt hat, sonst manuell zuordnen. +4. Die Einstellung _Importieren ab Zeile_ wieder auf den Wert `2` setzen + +Damit kann die Import-Einstellung verwendet werden. Neben dem Button `Datei` wird nun noch der Name der zuvor ausgewählten Datei angezeigt und darunter unter `Ordner` der Ordner, in dem sich diese Datei befand. Wenn beide Felder so belassen werden, wird beim Aktivieren der Einstellung automatisch auf genau diese Datei zugegriffen. Wenn man den Eintrag bei `Datei` löscht, erscheint beim Aktivieren des Imports automatisch ein Dateiauswahlfenster (voreingestellt auf den eingestellten Ordner). Darüber kann man sich beim Import entweder Zeit sparen oder auch sicherstellen, dass man explizit eine bestimmte Datei (oder einen bestimmten Ordner) manuell auswählen muss. -## Import starten + +### Import starten Wenn die Einstellungen für den Import vorgenommen wurden kann die Exportdatei importiert werden. Dabei sollte ggf. noch mal überprüft werden, ob die richtigen Spalten gewählt wurden und ob den Buchungen die richtigen Finanz- bzw. Gegenkonten, Steuersätze und Kostenstellen zugeordnet wurden. Nach dem Import sind die Buchungen sofort gültig und müssen nicht noch einmal bestätigt werden. Damit lassen sich auch große Zahlen an Umsätzen schnell in Buchungen überführen. +Vorsicht: In der Importdatei angegebene Kostenstellen werden von **MonKey Office** automatisch angelegt (und sollten dann später in `Vorgaben -> Kostenstellen` noch entsprechend benannt werden). + +### Empfohlener Workflow + +Wie oft und mit welcher Granularität importiert werden soll hängt stark vom Bedarf ab. Üblicherweise sollte man mindestens monatlich die Daten von **MoneyMoney** in **MonKey Office** überführen allein schon um sicherzustellen, dass man bei der Vergabe der Kategorien und/oder Kostenstellen keine Fehler gemacht hat. Typische Fehlbuchungen lassen sich zumeist mit `Buchhaltung -> Summen und Salden` bzw. dem `Buchhaltung -> Kontoauszug` gut erkennen und entsprechende Fehler aufspüren. + +Der Name der jeweils gewählten Exportdatei ist in den exportierten Umsätze jeweils im Feld "BelegNr" abgelegt. Damit lassen sich Umsätze aus einem bestimmten Exportvorgang problemlos über den Buchungsfilter wiederfinden und bei Bedarf auch löschen, so dass ein Import auch wiederholt werden kann, ohne die sonstigen Buchungen zu beeinflussen. + + +