Kontor / Weitere Dokumente
shakehands Kontor ist eine leistungsfähige, komfortable und aktuelle Lösung für Ihre Auftragsverwaltung und oder Ihre Buchhaltung. Das Programm bietet u. a. eine Importfunktion für elektronische Bankumsatzdaten als digitale Bankauszüge, aus denen Sie Buchungen direkt erzeugen können.
Für den Import von Bankauszügen benötigen Sie eine Importdefinition. Für einige Banken und Formate sind bereits Importdefinition angelegt und sind im Lieferumfang von shakehands Kontor enthalten. Für die meisten anderen Banken können Sie selber eigene Importdefinitionen anlegen oder deren Erstellung bei uns in Auftrag geben. Der Service ist kostenpflichtig.
Hier im Handbuch erläutern wir die Vorgehensweise zum Erstellen einer eigenen Importdefinition. Über eine Erweiterung der Importskripte ist zudem das automatische Vervollständigen und Kontieren der Belege auf der Basis von Berechnungen und Bedingungen möglich.
Seit der flächendeckenden Einführung von ISO 20022 werden die Daten als XML-Dateien von Banken und der PostFinance angeliefert. Dies erleichtert die Vielfalt der Scripte. Nutzen Sie die neuen Strukturen (pain und camt).
Importdefinitionen bestehen aus zwei Bestandteilen:
verschiedene Einstellungen zum Separieren der Tabellendaten z.B. Satz- und Feldtrennzeichen, Textkennzeichen und Zeichensatzinformationen
ein Importskript, welches die Verarbeitung der separierten Importdaten steuert
Diese beiden Bestandteile werden beim Importvorgang wie folgt verwendet:
Nach dem Einlesen einer Importdatei wird diese mithilfe der Separationseinstellungen in eine tabellarische Datenstruktur umgewandelt, wobei jede Zeile für einen Datensatz und jede Spalte für ein Feld innerhalb dieses Datensatzes steht.
Jeder Datensatz durchläuft das Importskript, welches die Datenfelder als Eingabedaten erhält und die Felder der Buchungsvorlage als Ausgabedaten bereitstellt.
Das Importskript sorgt also z. B. für das Unterdrücken unbenötigter Zeilen aus der Importdatei, das Zuordnen der Eingabefelder zu den Feldern der Buchungsvorlage, das Berechnen von Werten und das Zuordnen von Feldern in Abhängigkeit von Bedingungen.
Die Skriptsprache entspricht der für die Entwicklung der Druckformulare verwendeten Visual-Basic-ähnlichen Sprache ohne die formular- und grafikorientierten Anweisungen und Funktionen.
Sie können Importdefinitionen für Bankauszüge erstellen, bearbeiten, duplizieren oder löschen.
So öffnen Sie den Dialog Importdefinitionen für Bankauszüge:
Klicken Sie im Navigator den Bereich Buchhaltung>Bankauszüge.
Klicken Sie in der Toolbar auf Neu. shakehands Kontor öffnet den Dialog Neuer Bankauszug.
Um die neue oder geänderte Importdefinition später testen zu können, wählen Sie im Drop-down-Menu Bankkonto den gewünschten Eintrag aus oder erfassen Sie über die Schaltfläche Neu anlegen... ein neues Bankkonto.
Klicken Sie rechts neben dem Drop-down-Menu Importdefinitionen auf die Schaltfläche Verwalten.... Der Dialog Importdefinitionen für Bankauszüge wird geöffnet. Die in der Spalte S (System) mit einem Schloss gekennzeichneten Importdefinitionen sind im Lieferumfang von shakehands Kontor enthalten und können nicht bearbeitet oder gelöscht werden.
Über die verschiedenen Schaltflächen auf der rechten Seite können Sie eine neue Importdefinition erstellen oder eine vorhandene bearbeiten.
Dieser Abschnitt beschreibt, wie Sie eine Importdefinition von Grund auf neu erstellen. In den meisten Anwendungsfällen ist es jedoch ausreichend, eine vorhandene Importdefinition zu duplizieren, das Duplikat anzupassen und dann unter einem anderen Namen zu speichern.
So legen Sie eine neue Importdefinition an:
siehe auch die beiden weiteren Abschnitte:
So geben Sie die Einstellungen zum Separieren der Tabellendaten ein:
Nutzen Sie gleich die Kommentarfunktion im Quelltext des Importskripts und kommentieren Sie Ihren Code, dann steht diese Information beim Übertragen des Quelltexts in eine andere Importdefinition per Kopieren & Einfügen sofort wieder zur Verfügung.
Die Datenfelder der Importdatei müssen den Feldern der Buchungsvorlage zugeordnet werden. Auf der rechten Seite des Dialogs stehen Ihnen dafür in der Drop-down-Liste Felder Vorlage die folgenden Felder zur Verfügung.
Feld | Datentyp | Beschreibung |
---|---|---|
Vorlage_Betrag | number | Betrag |
Vorlage_Datum | date | Das Wertstellungsdatum oder das Buchungsdatum, je nachdem, welche Spalte aus der Importdatei zugeordnet wird |
Vorlage_Notizen | text | Beliebige Spalte der Importdatei, kann aber auch beim Erstellen des Bankauszugs eingegeben werden |
Vorlage_Referenz | text | Beliebige Spalte der Importdatei, kann aber auch beim Erstellen des Bankauszugs eingegeben werden |
Vorlage_Text | text | Buchungstext |
Die folgenden Felder sind in der Buchungsvorlage enthalten, jedoch üblicherweise nicht in der Importdatei. Für diese Spalten können Sie beim Anlegen des Bankauszugs die Werte aus einer Liste auswählen oder sie direkt eingeben.
Feld | Datentyp | Beschreibung |
---|---|---|
Vorlage_BelegNr | text | Die zur Verfügung stehenden Einträge können unter Vorgaben>Nummernkreise definiert werden. |
Vorlage_Konto | text | Wird, falls möglich, automatisch von shakehands Kontor eingesetzt. Kann beim Erstellen des Bankauszugs geändert oder auch neu ausgewählt werden. |
Vorlage_Steuersatz | text | Die zur Verfügung stehenden Einträge können unter Vorgaben>Steuersätze definiert werden. |
Vorlage_Kostenstelle1 | text | Die zur Verfügung stehenden Einträge können unter Vorgaben>Kostenstellen definiert werden. |
Vorlage_Kostenstelle2 | text | Buchungstext |
Die folgenden Felder können nicht als Spalten importiert werden, sondern sie werden für die Plausibilitätsprüfung verwendet und dafür, ab welcher Zeile importiert werden soll.
Feld | Datentyp | Beschreibung |
---|---|---|
Vorlage_Import_OK | boolean | Wird verwendet, um festzulegen, wie viele Spalten mindestens in der Importdatei vorhanden sein müssen, damit die Datei importiert werden kann. |
Vorlage_Zeile_OK | boolean | Wird verwendet, um festzulegen, ab welcher Zeile die Umsatzdaten beginnen. |
So ordnen Sie die Datenfelder zu:
Nachdem Sie eine Importdefinition erstellt oder geändert und den Dialog Importdefinitionen für Bankauszüge geschlossen haben, befinden Sie sich wieder im Dialog Neuer Bankauszug.
So testen Sie eine Importdefinition für Bankauszüge:
Wählen Sie ggf. im Dialog Neuer Bankauszug ein Bankkonto und die neue bzw. geänderte Importdefinition aus.
Klicken Sie auf die Schaltfläche Ausführen....
Navigieren Sie zu der Exportdatei Ihres Bankauszugs und klicken Sie auf die Schaltfläche Öffnen.
Wenn Sie die Importdefinition korrekt erstellt oder geändert haben, werden die zu importierenden Datensätze im Eingabebereich des Dialogs angezeigt.
Wenn die Importdefinition fehlerhaft ist, erhalten Sie eine Fehlermeldung oder im Dialog Neuer Bankauszug werden keine Datensätze aus Ihrem Kontoauszug angezeigt.
Ändern Sie die Einstellungen oder das Importskript entsprechend der Fehlermeldung (falls vorhanden) oder probieren Sie andere Einstellungen bzw. Änderungen am Importskript aus, bis die Datensätze im Dialog Neuer Bankauszug angezeigt werden.
Importdefinitionen sind global für alle Firmen innerhalb einer Datenbank gültig, zwischen verschiedenen Datenbanken können Sie per Vorlagenimport ausgetauscht werden.
So bearbeiten, duplizieren oder löschen Sie eine Importdefinition:
Nehmen Sie im folgenden Dialog die gewünschten Änderungen vor.
Die in der Spalte S (System) mit einem Schloss gekennzeichneten Importdefinitionen sind im Lieferumfang von shakehands Kontor enthalten und können nicht bearbeitet oder gelöscht werden.
Nachfolgend werden die für Importdefinitionen gültigen Erweiterungen beschrieben.
GetKontoDebitor
Gibt das Debitorenkonto zu einem passenden offenen Posten zurück.
Syntax
Ergebnis = GetKontoDebitor(Suchtext, Suchbetrag)
Parameter | Datentyp | Beschreibung |
---|---|---|
Suchtext | text | Suchtext, dessen Bestandteile zur Identifikation eines offenen Postens (OP) verwendet werden. |
Suchbetrag | number | Suchbetrag, der zur Identifikation eines OP verwendet wird. |
Ergebnis | text | Debitorenkonto bei Erfolg, sonst leer. |
Hinweise
Die GetKontoDebitor-Funktion ermittelt das Debitorenkonto, welches zu einem offenen Posten gehört, der mittels der Suchbegriffe eindeutig identifiziert werden kann. Das Ergebnis ist mit hoher Wahrscheinlichkeit die richtige Zuordnung, abhängig von der Qualität der Suchbegriffe und der vorhandenen offenen Posten können aber auch Fehlzuordnungen auftreten.
GetKontoKreditor
Gibt das Kreditorenkonto zu einem passenden offenen Posten zurück.
Syntax
Ergebnis = GetKontoKreditor(Suchtext, Suchbetrag)
Parameter | Datentyp | Beschreibung |
---|---|---|
Suchtext | text | Suchtext, dessen Bestandteile zur Identifikation eines offenen Postens (OP) verwendet werden. |
Suchbetrag | number | Suchbetrag, der zur Identifikation eines OP verwendet wird. |
Ergebnis | text | Debitorenkonto bei Erfolg, sonst leer. |
Hinweise
Die GetKontoKreditor-Funktion ermittelt das Kreditorenkonto, welches zu einem offenen Posten gehört, der mittels der Suchbegriffe eindeutig identifiziert werden kann. Das Ergebnis ist mit hoher Wahrscheinlichkeit die richtige Zuordnung, abhängig von der Qualität der Suchbegriffe und der vorhandenen offenen Posten können aber auch Fehlzuordnungen auftreten.
Dieses Kapitel behandelt das Erstellen einer neuen Importdefinition für Bankauszüge am Beispiel einer camt.054 Datei und die Umstellung der Texterfassung und der Belegvervollständigung.:
Voraussetzung:
Sie haben eine camt.054 Datei von Ihrem eBanking-Server geladen.
Aufbau der Exportdatei analysieren
Die wichtigste Voraussetzung für das Erstellen einer Importdefinition ist, dass Sie den Aufbau der zu importierenden Datendatei kennen. In den meisten Fällen genügt das Öffnen der Datei in einem Texteditor oder in einer Tabellenkalkulation oder in einem XML-Editor. Hier in diesem Fall brauchen Sie diesen Bereich weniger Beachtung zu schenken, da das Format der XML-Struktur durch die ISO-Norm vorgegeben ist.
Importdefinition anlegen
In unserem Beispiel "erstellen" wir die Importdefinition, indem wir die mitgelieferte Importdefinition von camt.054 zunächst duplizieren und dann anpassen.
Passen Sie ggf. die Einstellungen für die Datenquelle im Feld Quelle und die Separationseinstellungen wie Trennzeichen für Felder, Trennzeichen für Datensätze, Zeichensatz, Textbegrenzung an. In unserem Beispiel müssen diese Einstellungen nicht geändert werden.
Importscript anpassen
Nachfolgend wird das Importskript erläutert, damit Sie die für Ihren Anwendungsfall erforderlichen Änderungen vornehmen können.
Grundlegende Informationen zur Skriptsprache sowie eine entsprechende Referenz finden Sie im Handbuch Formularwerkzeug.
Variablen definieren
Im ersten Schritt deklarieren wir die benötigten Variablen. Dies darf nur beim ersten Durchlauf des Skripts geschehen und erfolgt daher über die Abfrage, ob eine der betreffenden Variablen bereits deklariert ist oder nicht. Die Variable vz dient der Ermittlung des Vorzeichens für den Buchungsbetrag und die Variable valid zur Kennzeichnung einer gültigen Buchung.
' Aktionen nur im ersten Durchlauf ausführen: Variablen deklarieren
if ( NOT HasVariable("zeile") )
dim zeile as number
dim formatbetrag as text
endif
set zeile to zeile + 1
Beginn der Importdaten festlegen
Die Umsatzdaten in einem Kontoauszug beginnen üblicherweise nicht bereits in der ersten Zeile. Deshalb legen wir als Nächstes fest, ab welcher Zeile der Importdatei die Daten importiert werden sollen. Hier im XML-File wird dies unterdrückt, da die Analyse des Files nicht auf Stufe der Zeilen beginnt aber der Blicke. Diese Information wird via die Quelle definiert.
Hier ein Beispiel für eine Textorientierte Vorlage:
' Die Umsatzdaten beginnen erst ab Zeile 6, die Zeilen davor verwerfen
set zeile to zeile + 1
if ( zeile < 6 )
set Vorlage_Import_OK to FALSE
exit
endif
Plausibilitätsprüfung einfügen
Beim Analysieren der Exportdatei haben wir festgestellt, dass wir im XML auf Daten bis zur Tiefe 12 zugreifen müssen. Das bedeutet, eine Datei mit weniger Tiefe kann nicht korrekt verarbeitet werden, und der Importvorgang soll in diesem Fall abgebrochen werden.
' Abbrechen, wenn nicht mindestens 12 Felder in Importdatei vorhanden sind
if ( NOT HasVariable("Spalte_012") )
beep
msgBox("Fehler beim Lesen der camt-Exportatei (Ungültiges Datensatzformat)!")
set Vorlage_Import_OK to FALSE
exit
endif
Innerhalb des Importskripts können Sie auf die Felder der Importdatei über den Bezeichner Spalte_xxx zugreifen, wobei xxx durch die Spaltennummer inkl. der führenden Null(en) ersetzt wird. Es stehen so viele Spalten zur Verfügung, wie in der Exportdatei vorhanden sind. Der Test HasVariable("Spalte_015") wird also fehlschlagen (FALSE), wenn weniger als 12 Tiefen im XML-File vorhanden sind.
Mit msgBox("...") legen Sie die Fehlermeldung fest, die angezeigt werden soll, wenn die zu importierende Datei weniger Spalten enthält, als erforderlich (in unserem Beispiel weniger als 12 Spalten).
Nach der Fehlermeldung müssen Sie noch festlegen, dass der Importvorgang komplett abgebrochen werden soll:
Setzen Sie dazu die Variable Vorlage_Import_OK auf FALSE und verlassen Sie das Skript mit exit. Wenn Sie nur exit verwenden, ohne die Statusvariable auf FALSE zu setzen, dann wird das Skript mit der nächsten Importzeile fortgesetzt.
Vorzeichen des Betrags ermitteln
Oft muss das Vorzeichen des Betrags ermittelt werden: Ist das eigene Bankkonto (wird über die Konstante BANKKONTO_BEZEICHNUNG übergeben) das Quellkonto (Spalte 1), dann ist die Buchung eine Ausgabe, andernfalls eine Einnahme. Hier für die XML Datei werden die Vorzeichen durch die Angaben CRE oder DEB abgefragt.
' Vorzeichen des Buchungsbetrags ermitteln
if ( Spalte_001 = BANKKONTO_BEZEICHNUNG AND Spalte_002 <> BANKKONTO_BEZEICHNUNG )
set vz to -1
set valid to TRUE
elseif ( Spalte_002 = BANKKONTO_BEZEICHNUNG AND Spalte_001 <> BANKKONTO_BEZEICHNUNG )
set vz to 1
set valid to TRUE
endif
if ( NOT valid )
beep
msgBox("Fehler beim Lesen der Datei (Das Bankkonto '" + BANKKONTO_BEZEICHNUNG + "'
wurde nicht gefunden)!")
set Vorlage_Import_OK to FALSE
exit
endif
Datenfelder zuordnen
Jetzt können wir die Importfelder den Feldern der Buchungsvorlage zuordnen. Beim Betrag wird das richtige Vorzeichen analysiert. Der Text wird aus verschiedenen Feldern ausgelesen und zusammengesetzt. Weitere Informationen dazu finden Sie unter dem Thema Datenfelder zuordnen.
' ---------------------------------------------------------------------------------
' Importfelder den Datenfeldern zuordnen
' ---------------------------------------------------------------------------------
' Datum (Wertstellungdatum verwenden):
set Vorlage_Datum to TextToDate(Spalte_001)
' Betrag mit richtigem Vorzeichen:
set formatbetrag to Replace(Spalte_002, ",", ".")
set Vorlage_Betrag to FTextToNumber(formatbetrag)
' Währung
set Vorlage_Notizen to ReplaceAll(Spalte_003, " ", "")
'Zahlungspflichtiger IBAN:
set Vorlage_Notizen to Vorlage_Notizen + ", " + ReplaceAll(Spalte_006, " ", "")
'RechnungsNr aus eindeutige Bankreferenz:
set Vorlage_Text to "RgNr: " + ReplaceAll(Middle(Spalte_009, 23, 4), " ", "")
'KundenNr aus eindeutige Bankreferenz:
set Vorlage_Text to Vorlage_Text + " / KdNr: " + ReplaceAll(Middle(Spalte_009, 13, 4), " ", "")
'Zahlungspflichtiger Name:
set Vorlage_Text to Vorlage_Text + " / " + ReplaceAll(Spalte_005, " ", "")
'eindeutige Bankreferenz:
set Vorlage_Referenz to Vorlage_Referenz + ReplaceAll(Spalte_009, " ", "")
Passen Sie nun die Ausgabezeilen für Vorlage_Text eigene Vorstellungen an.
Hier eine Variante:
'Zahlungspflichtiger Name:
set Vorlage_Text to Vorlage_Text + ReplaceAll(Spalte_005, " ", "")
'Zahlungspflichtiger Adresse:
set Vorlage_Text to Vorlage_Text + ", " + ReplaceAll(Spalte_007, " ", "")
'Zahlungspflichtiger Kundenreferenz:
set Vorlage_Text to Vorlage_Text + ", " + ReplaceAll(Spalte_008, " ", ", ")
'Zahlungsempfänger Name: RltdPties>
set Vorlage_Text to Vorlage_Text + ReplaceAll(Spalte_012, " ", "")
An dieser Stelle kann die Importdefinition mit OK gesichert werden und ist vollständig arbeitsfähig.
Es werden der Buchungsvorlage alle wichtigen in der Importdatei vorhandenen Daten zugeordnet.
Automatische Belegvervollständigung - OP-Zuordnung
Ein besonders grosses Potenzial zur Arbeitserleichterung und Automatisation bietet die Möglichkeit, im Importskript allen Feldern der Buchungsvorlage Werte zuzuweisen und somit im Idealfall vollständige Buchungen zu erhalten.
In den mitgelieferten Skripten ist bereits die automatische Zuordnung von Debitoren- oder Kreditorenkonten aus offenen Posten (OP) integriert:
' ---------------------------------------------------------------------------------
' Optional: Belegvervollständigung
' ---------------------------------------------------------------------------------
set Vorlage_Konto to GetKontoDebitor(Vorlage_Text, Vorlage_Betrag)
Die Funktionen GetKontoDebitor(Vorlage_Text, Vorlage_Betrag) bzw. GetKontoKreditor(Vorlage_Text, Vorlage_Betrag )liefern das Personenkonto eines entsprechenden OP zurück, wenn dieser mit einer hohen Wahrscheinlichkeit identifiziert wurde.
Hier ein weiteres Beispiel der Autovervollständigung:
set Vorlage_Konto to IfThen(Vorlage_Text = "Kreditkartenabrechnung", "2099", Vorlage_Konto)
oder
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "Zinsabschluss") > 0,"6850", Vorlage_Konto) ' Passen Sie Konto 6850 auf eigenen eigenen Kontenrahmen und dessen Konto an.
Finden Sie anbei einige Beispiele von Buchungszeilen-Code für einen nRLR-Kontenplan, Sie können den Code gleich in ein neues Script kopieren:
' ---------------------------------------------------------------------------------
' Optional: Belegvervollständigung
' ---------------------------------------------------------------------------------
'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "Zinsabschluss") > 0,“6990“, Vorlage_Konto) 'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "ESSO") > 0,“6210“, Vorlage_Konto) 'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "MIGROS") > 0, “5900“, Vorlage_Konto) 'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "MULTIPAY AG") > 0,"3000", Vorlage_Konto) 'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to IfThen(PatternCount(Vorlage_Text, "SWISSCOM") > 0,“6510“, Vorlage_Konto) 'Konto anpassen auf eigenen Kontenplan
'Konto anpassen auf eigenen Kontenplan
set Vorlage_Konto to GetKontoDebitor(Vorlage_Text, Vorlage_Betrag)
set Vorlage_Konto to IfThen(Vorlage_Konto = "", GetKontoKreditor(Vorlage_Text, Vorlage_Betrag), Vorlage_Konto)
Die Arbeitsweise der OP-Zuordnung zum besseren Verständnis
Die Funktionen verwenden zur Identifizierung eines offenen Postens den im Parameter übergebenen Text sowie den Betrag. Der Text wird in alle erdenklichen Teilbestandteile zerlegt (auch rein numerische) und diese Bestandteile werden ebenso wie der Betrag mit allen in Frage kommenden Feldern der gefundenen offenen Posten verglichen. Jede Übereinstimmung erhöht die Relevanz des betreffenden offenen Postens um einen Punkt. Der offene Posten mit der höchsten allein stehenden Punktzahl wird als wahrscheinlichster Treffer zurückgegeben. Die so erzielten Ergebnisse sind somit wahrscheinlich, aber nicht sicher korrekt.
Es kann durchaus auch zu fehlerhaften Zuordnungen kommen, daher müssen die Zuordnungen beim Buchen immer abschliessend kontrolliert werden.
Importvorgang durchführen
Voraussetzungen:
Die entsprechenden offenen Posten wurden angelegt.
Das Skript der Importdefinition enthält die Funktion für die OP-Zuordnung.
So führen Sie den Importvorgang durch:
Schliessen Sie ggf. die Dialoge zum Bearbeiten der Importdefinition, bis Sie sich wieder im Dialog Neuer Bankauszug befinden.
Wählen Sie ggf. ein Bankkonto und die neue bzw. geänderte Importdefinition aus.
Klicken Sie auf die Schaltfläche Ausführen....
Navigieren Sie zu der Exportdatei Ihres Bankauszugs und klicken Sie auf die Schaltfläche Öffnen. Im Dialog Neuer Bankauszug werden die Datensätze aus der Exportdatei angezeigt.
Überprüfen Sie die Zuordnung der Datenfelder, insbesondere für die automatisch vervollständigten Spalten. In unserem Beispiel ist das die Spalte Konto, in die automatisch die Debitorenkonten der offenen Posten eingesetzt wurden, Personenkonto 10003.