27.10.2025 20:49:28
Navigation
· Bugtracker
· Kontakt
· Web Links
· Suche
· Buchtipps
Login
Benutzername

Passwort



Noch kein Mitglied?
Klicke hier um dich zu registrieren

Passwort vergessen?
Um ein neues Passwort anzufordern klicke hier.
Mitglieder Online
· Gäste Online: 10

· Mitglieder Online: 0

· Mitglieder insgesamt: 15,269
· Neuestes Mitglied: nikoxx11
Foren Themen
Neueste Themen
· Auswerung/Selektion
· Kontoführungsgebühr
· Automatische Buchungen
· Die Sache mit der E-...
· eBay gemäß Artikel...
Heißeste Themen
· Auswerung/Selektion [4]
Thema ansehen
EasyCash&Tax Website » EasyCash&Tax - Fibu » BankImport-Plugin
   Thema drucken
Mein Dresdner-Bank Script mal erklärt
mielket
Da ich glaube, dass dieses sehr spezielle aber sehr mächtige Plugin nur von wenigen Benutzern verwendet wird, und das deshalb, weil es nicht ganz einfach auf eigene Bedürfnisse anzupassen ist, möchte ich mein eigenes Script, mit dem ich die EC&T-Spenden buche, die auf meinem Konto eintrudeln, einmal ausführlich kommentieren.

Mein Mozilla-Browser schmeißt folgendes in die Zwischenablage, wenn ich eine Zeile aus der Kontenübersicht des Online-Bankings selektiere und dann kopiere:

11.11.2005[TAB]11.11.2005[TAB]Verguetung[TAB][ENTER]
VORNAME NACHNAME VERWENDUNGSZWECK[ENTER]
[TAB]EUR[TAB]15,00 H[TAB][ENTER]

Zunächst extrahiere ich die einzelnen Teile für die Buchung aus der Browserzeile. Es können, wie beim Editieren mit einer Schreibmarke und indem man die Shift-Taste gedrückt hält, Anfangs- und Endmarken mit den "Setze Anfangsmarke" und "Setze Endmarke" Befehlen gesetzt werden. Alles was nach dem Setzen der Marken dazwischen liegt kann mit dem "Selektion -> [Buchungsbestandteil]" Befehl in eine neue EC&T-Buchung übernommen werden. [Buchungsbestandteil] kann dabei folgendes sein: Belegnummer, Betrag, Buchungsdatum, Buchungstext.


// BankImport-Skript 'Dresdner Bank -- Registriergebühren zu 7%'
//
// Buchungsdatum
Setze Anfangsmarke für Selektion
Springe hinter nächsten Tabulator
Setze Endmarke für Selektion
Selektion -> Buchungsdatum

Den jeweils 'eingescannten' Anteil habe ich fett hervorgehoben:

11.11.2005[TAB]11.11.2005[TAB]Verguetung[TAB][ENTER]
VORNAME NACHNAME VERWENDUNGSZWECK[ENTER]
[TAB]EUR[TAB]15,00 H[TAB][ENTER]


//
// Kontoinhaber -> Belegtext
Springe hinter nächsten Zeilenumbruch
Setze Anfangsmarke für Selektion
Springe hinter Suchmuster/( )
Springe vor Suchmuster/( )
Setze Endmarke für Selektion
Selektion als Personennamen normalisieren
Selektion -> Buchungstext

11.11.2005[TAB]11.11.2005[TAB]Verguetung[TAB][ENTER]
VORNAME NACHNAME VERWENDUNGSZWECK[ENTER]
[TAB]EUR[TAB]15,00 H[TAB][ENTER]

Der Befehl "Selektion als Personennamen normalisieren" sorgt dafür, dass eine korrekte Groß/Kleinschreibung verwendet wird und dass bei einem Komma zwischen Vor- und Nachnamen das Komma gelöscht wird und die Namen vertauscht werden. Z.B.:

"VORNAME NACHNAME" -> "Vorname Nachname" oder
"nachname, VORNAME" -> "Vorname Nachname"


//
// Betrag
Springe hinter nächsten Tabulator
Springe hinter nächsten Tabulator
Setze Anfangsmarke für Selektion
Springe vor Suchmuster/( )
Setze Endmarke für Selektion
Selektion -> Betrag

11.11.2005[TAB]11.11.2005[TAB]Verguetung[TAB][ENTER]
VORNAME NACHNAME VERWENDUNGSZWECK[ENTER]
[TAB]EUR[TAB]15,00 H[TAB][ENTER]


//
// Einnahmen oder Ausgaben?
Gehe ein Zeichen weiter
Setze Anfangsmarke für Selektion
Gehe ein Zeichen weiter
Setze Endmarke für Selektion
Wenn Selektion <> Suchmuster/Ausgaben/(H)
Als Einnahmen buchen
Setze MWSt./7
Setze Konto/Software-Spenden (Charityware)

11.11.2005[TAB]11.11.2005[TAB]Verguetung[TAB][ENTER]
VORNAME NACHNAME VERWENDUNGSZWECK[ENTER]
[TAB]EUR[TAB]15,00 H[TAB][ENTER]

Hier steht entweder 'H' für Haben oder 'S' für Soll. Entsprechend unterscheide ich nach Einnahmen oder Ausgaben. Ist es eine Ausgabe, springe ich nach ganz unten zur Sprungmarke "Ausgaben". Wenn nicht, gehe ich davon aus, dass es sich um eine Spende handelt, die ich mit 7% versteuere und auf das Konto "Software-Spenden (Charityware)" buche.

Im Prinzip reicht das bis hier schon, um Buchungen zu erzeugen. Aber das Plugin kann noch mehr. Ab hier ist es für Anfänger allerdings schwierig, denn jetzt wird die eingelesene Buchung mit einer Datenbank verknüpft. Die Datenbank hat ihre eigene Sprache, die sich SQL nennt und mit der Abfragen und Änderungen gemacht werden können. Der Zweck der Datenbankanbindung ist es, die Zahlungen auf das Konto mit einem eigenen Datenbestand zur Zahlungskontrolle abzugleichen.

Ich selbst greife auf eine mySQL-Datenbank zu, die auf dem Server der EC&T-Website liegt und die EC&T-Registrierungen enthält. Aber mit SQL kann man auch auf einfachere MS-Access oder Excel-Tabellen zugreifen, wenn man eine ganz simple Offene-Posten Liste führen will. Im Prinzip lässt sich jede sog. ODBC-Datenquelle verwenden. Der '...' Knopf im BankImport-Dialog erlaubt das Auswählen einer Datenquelle. Zum Anlegen einer ODBC-Datenquelle geht man (bei Windows2000) auf Systemsteuerung -> Verwaltung -> Datenquellen (ODBC).


//
// Rechnungsnummer über Kontoinhaber aus Datenbank holen
//
Datenbankabfrage/SELECT reg_name, reg_email, reg_bemerkungen,reg_rech FROM reg_users WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(reg_name,'ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('<Beschreibung>','ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') AND reg_rech<>"" ORDER BY reg_name;
Wenn Datensatz nicht gefunden/keine_rg_nr
Tabellenspalte enthält Belegnummer/4
Datenbankaktualisierung/UPDATE reg_users SET reg_rech="<Belegnummer>", reg_bezahlt="-1", reg_test="0", reg_voll="-1" where reg_rech="<Belegnummer>" AND reg_rech<>"";
Nach Sprungmarke/Ende

Nach dem "Datenbankabfrage/" Befehl kommt ein SQL-Befehl (SELECT), der nach dem Auftraggeber der Überweisung in den mit Rechnungsnummer versehenen Einträgen der Registrierungsdatenbank sucht. Er ist etwas komplizierter, weil eine Umlautkonvertierung durchgeführt wird. Bei einem erfolgreichen Fund wird die in der Tabelle gespeicherte Rechnungsnummer als Belegnummer in die EC&T-Buchung übernommen, die in der 4. Spalte der durch den SELECT-Befehl gefüllten Tabelle des Bankimport-Buchendialogs steht. "<Beschreibung>" ist dabei ein Platzhalter, der den Auftraggeber der Überweisung in den SQL-Befehl einfügt.

Mit dem "Datenbankaktualisierung/" Befehl wird eine SQL-Änderungsabfrage gesetzt, die nach Überprüfung der Buchung durch den Anwender ausgeführt wird. Z.B. kann der Anwender im Bankimport-Buchungsdialog die Belegnummer ändern, die dann mit dem SQL-UPDATE-Befehl in die Datenbank geschrieben wird.


//
:keine_rg_nr
// Noch keine Rg-Nr. vergeben
//
Datenbankabfrage/SELECT reg_name, reg_email, reg_bemerkungen,reg_rech FROM reg_users WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(reg_name,'ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('<Beschreibung>','ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') AND reg_rech="" ORDER BY reg_name;
Wenn Datensatz nicht gefunden/suche_aehnliche_namen
Datenbankaktualisierung/UPDATE reg_users SET reg_rech="<Belegnummer>", reg_bezahlt="-1", reg_test="0", reg_voll="-1" where reg_name="<Beschreibung>" AND reg_rech="";
Nach Sprungmarke/Ende

Dieses Set von Script-Befehlen wird ausgeführt, wenn bei der vorigen Abfrage kein übereinstimmender 'Kunde' mit einer zugewiesenen Rechnungsnummer gefunden wird. Hier wird nach Übereinstimmenden Namen geschaut, für die noch keine Rechnungsnummer existiert. Wenn dies auch keinen Treffer gibt, wird mit der nächsten Abfrage fortgefahren.


//
:suche_aehnliche_namen
// Name anders geschrieben
//
Datenbankabfrage/SELECT reg_name, reg_email, reg_bemerkungen,reg_rech FROM reg_users WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(reg_name,'ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') LIKE CONCAT('%',LEFT('<Beschreibung>',INSTR('<Beschreibung>',' ')),'%') OR REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(reg_name,'ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss') LIKE CONCAT('%',SUBSTR(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('<Beschreibung>','ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss'),1+INSTR(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('<Beschreibung>','ä','ae'),'ö','oe'),'ü','ue'),'Ä','Ae'),'Ö','Oe'),'Ü','Ue'),'ß','ss'),' ')),'%') ORDER BY reg_name;
Wenn Datensatz nicht gefunden/alle_anzeigen
Datenbankaktualisierung/UPDATE reg_users SET reg_rech="<Belegnummer>", reg_bezahlt="-1", reg_test="0", reg_voll="-1" where reg_name="<Beschreibung>";
Tabellenspalte enthält Belegnummer/4
Tabellenspalte enthält Buchungstext/1
Nach Sprungmarke/Ende

Hier werden nun alle Namen in der kleinen Tabelle des Bankimport-Buchendialogs aufgelistet, die in der Datenbank entweder eine Übereinstimmung mit dem Vornamen oder dem Nachnamen ergeben (SQL: LIKE-Operator).


//
:alle_anzeigen
// Noch keine Rg-Nr. vergeben
//
Datenbankabfrage/SELECT reg_name, reg_email, reg_bemerkungen,reg_rech FROM reg_users ORDER BY reg_name;
Wenn Datensatz nicht gefunden/Ende
Datenbankaktualisierung/UPDATE reg_users SET reg_rech="<Belegnummer>", reg_bezahlt="-1", reg_test="0", reg_voll="-1" where reg_name="<Beschreibung>";
Tabellenspalte enthält Belegnummer/4
Tabellenspalte enthält Buchungstext/1
Nach Sprungmarke/Ende
//

Wenn die letzte Abfrage auch keinen Treffer brachte, werden einfach alle Einträge der Datenbank in der Tabelle angezeigt. Außerdem werden die Befehle nach der "Ausgaben" Sprungmarke übersprungen.


:Ausgaben
Als Ausgaben buchen
:Ende
Springe hinter nächsten Zeilenumbruch
//
//


Das ganze Script gibts nochmal als Dateianhang ohne Smily-Konvertierungen. ;)
Bearbeitet von mielket am 14.11.2005 22:16:34
 
http://am3.notify.live.net/throttledthirdparty/01.00/AQGwcKFTwqFdQoAAdm9TTl6zAgAAAAADEwAAAAQUZm52OjE3QjlBNEFEQTU4QzU2ODAFBkxFR0FDWQ
Springe ins Forum:
Forensuche


Shoutbox
Du musst dich einloggen um eine Nachricht zu senden.

mielket
14.10.2025 10:40:17
Naja, wäre EC&T nativ für MacOS entwickelt worden und man bräuche einen Mac-Emulator drumrum, damit es auf Windows läuft, gäbe es auch Reibungsverluste.

Thomas R
04.10.2025 11:39:18
Danke, ich weiß schon, warum ich lieber in der Win-Welt lebe. Wink

mielket
04.10.2025 11:12:27
Der Plugin-Manager kann nur EC&T updaten, nicht das Crossover, das im EasyCT4Mac.zip Paket enthalten ist.

mielket
04.10.2025 11:09:47
nicht ganz: Das Problem war, dass der Fehler nicht in der EC&T-Software an sich steckte, sondern in der Windows-Simulation
der Firma Codeweavers drum herum.

Thomas R
04.10.2025 07:48:12
@thomas_stahl Wenn du auf das Icon des Button "Plugin" klickst geht dein Wunsch in Erfüllung.

thomas_stahl
03.10.2025 20:43:01
Version 3.4. hat meine Druck-Probleme gelöst! Danke

thomas_stahl
03.10.2025 20:37:06
Warum gibt es keinen Button "Update" wo ich einfach die neueste version einfach Installieren kann?

mielket
01.10.2025 17:36:13
... bzw. "reverse charge", z.B. hier

Thomas R
01.10.2025 17:23:24
@olip In der Forensuche mal "Auslandsbuchung" eingeben.

olip
01.10.2025 13:09:03
Hallo brauche hilfe , waren einkauf B2B aus eu ausland wo kann ich das verbuchen laut steuerberater muss das seperat angegeben werden . grss oliver

mielket
29.09.2025 11:14:40
Mehr dazu hier: https://easyct.de/
news.php?readmore=
181
PS: Hast Du auch einen Druckertreiber installiert? (Auch wenn Du nur PDFs brauchst!)

mielket
29.09.2025 11:13:13
@thomas_stahl Ich nehme an, dass Du per Plugin-Manager geupdatet hast. Brauchst aber das komplette Mac-Paket.

thomas_stahl
28.09.2025 12:19:33
@mielke...ich habe ECT v3.3 und iOS Mac OS Sequoia 15.6.1 ...und wenn ich als PDF sichere haben diese immer 0 byte

mielket
25.09.2025 16:50:02
@thomas_stahl Um wieder drucken zu können, musst Du das neue MacOS-Paket mit EC&T v3.x installieren. Updaten hilft nix.

Thomas R
21.09.2025 20:33:42
@thomas_stahl Hast du über Druck > Druckerauswahl nicht verschiedene Möglichkeiten? Wie Microsoft (Office) zu oder Adobe zu PDF?

32,382,975 eindeutige Besuche