INHALTSVERZEICHNIS
Anwendungsfall
Über die digitalen Workflows der Upload24 GmbH werden Eingangsrechnungen verarbeitet und freigegeben. Für die automatische und manuelle Zuordnung von Kreditoren, Sachkonten und Kostenstellen soll direkt auf die eGecko-Datenbank zugegriffen werden. So sind keine Exporte o.ä. notwendig und der Anwender kann direkt auch auf neue oder geänderte Datensätze zugreifen.
Technisches Vorgehen
Die eGecko-Daten werden auf einem Microsoft SQL Server vorgehalten. Die Softwarekomponenten der Upload24 greifen per SQL Authentifizierung lesend auf die relevanten Tabellen zu.
Mandanten
Haupttabelle ist hier die Tabelle "[integris].[betrstaette]".
USE [egecko_data];
SELECT DISTINCT
bez AS Mandant
,'' AS Kreditorname -- Attribut leeren, wenn neuer Mandant ausgewählt wird
,'' AS Kreditornummer -- Attribut leeren, wenn neuer Mandant ausgewählt wird
FROM [integris].[betrstaette];Kreditoren
Haupttabelle für die Kreditoren ist die Tabelle "[integris].[personenkonto]". Für Kreditoren ist die Kontenart "K" hinterlegt. Für die Zuordnung von Anschrift und Mandant müssen weitere Tabellen eingebunden werden.
USE [egecko_data];
SELECT p.[kontonummer] AS 'Kreditornummer'
,p.[bezeichnung] AS 'Kreditorname'
,a.[strasse] + ' ' + Convert(nvarchar, a.[hausnummer]) + ', ' + a.[plz] + ' ' + a.[ort] AS 'Kreditoradresse'
,p.[ust_ident_nummer]
,p.[steuernummer]
,bank.[iban]
FROM [integris].[personenkonto] p
INNER JOIN [integris].[geschaeftspartner] g ON p.[geschpartner_id] = g.[geschpartner_id]
INNER JOIN [integris].[anschrift] a On g.[anschrift_id] = a.[anschrift_id]
INNER JOIN [integris].[firma] f ON p.[orgunit_nr] = f.[orgunit_nr]
INNER JOIN [integris].[betrstaette] b ON b.[firma_id] = f.[firma_id]
INNER JOIN [integris].[bankverbindung] bank on p.[orgunit_nr] = bank.[orgunit_nr]
WHERE b.[bez] = '#Mandant#' AND ...Sachkonten
Haupttabelle für die Sachkonten ist die Tabelle "[integris].[sachkonto]". Für die Einschränkung der Auswahl anhand des Mandanten müssen weitere Tabellen eingebunden werden.
USE [egecko_data];
SELECT
s.[bezeichnung] AS 'Sachkonto'
,s.[kontonummer] AS 'Kostenstelle'
FROM [integris].[sachkonto] s
INNER JOIN [integris].[firma] f ON s.[orgunit_nr] = f.[orgunit_nr]
INNER JOIN [integris].[betrstaette] b ON b.[firma_id] = f.[firma_id]
WHERE
b.[bez] = '#Mandant#'
AND (s.[bezeichnung] LIKE '%#Sachkonto#%' OR s.[kontonummer] LIKE '%#Sachkonto#%')
AND s.[bebuchbar] = '1';Kostenstellen
Haupttabelle für die Sachkonten ist die Tabelle "[integris].[kostenstelle]". Für die Einschränkung der Auswahl anhand des Mandanten müssen weitere Tabellen eingebunden werden.
USE [egecko_data];
SELECT
k.[bezeichnung] AS 'Kostenstellename'
,k.[kostenstelle_nr] AS 'Kostenstelle'
FROM [integris].[kostenstelle] k
INNER JOIN [integris].[firma] f ON k.[orgunit_nr] = f.[orgunit_nr]
INNER JOIN [integris].[betrstaette] b ON b.[firma_id] = f.[firma_id]
WHERE
b.[bez] = '%#Mandant#%'
AND (k.[bezeichnung] LIKE '%#Kostenstelle#%' or k.[kostenstelle_nr] LIKE '%#Kostenstelle#%')
AND b.[bebuchbar] = '1';Währung
Haupttabelle ist hier die Tabelle "[integris].[waehrung]".
USE [egecko_data]; SELECT [waehrungsschl] AS 'Währung' FROM [integris].[waehrung];
Notwendige Zuarbeiten
Für den Zugriff wird neben dem Datenbankserver und dem Datenbanknamen ein SQL-Benutzerkonto mit lesenden Rechten auf die notwendigen Tabellen benötigt.