![]() |
Datenbank: Firbird • Version: 2.1 • Zugriff über: Fibplus 6.50
Buchhaltungsprobelm / Grundlage
Hallo zusammen
bin dabei in eine Anwendung ein "Buchhaltungsmodul" zu interieren. Die Tabellen die dazu erstellt wurden sind: ( für den Kontenramen)
SQL-Code:
( für die Buchungen)
CREATE TABLE BOOKKEEPING_CHART_ACCOUNTS (
ID ID NOT NULL /* ID = CHAR(38) NOT NULL */, C_NO T10 /* T10 = VARCHAR(10) */, U_NO T10 /* T10 = VARCHAR(10) */, ACNO INTEGER, ACTYPE INTEGER, TEXT T130 /* T130 = VARCHAR(130) */, LANG T10 /* T10 = VARCHAR(10) */, L_UPDATE TIME_S /* TIME_S = TIMESTAMP */ );
SQL-Code:
Bis jetzt sieht mein Buchungsüberblick ( im Ausdruck so aus)
CREATE TABLE BOOKKEEPING_BOOKING (
ID ID NOT NULL /* ID = CHAR(38) NOT NULL */, C_NO T10 /* T10 = VARCHAR(10) */, U_NO T10 /* T10 = VARCHAR(10) */, "DATE" "DATE" /* "DATE" = DATE */, VOUCHER_NO INTEGER, TEXT T130 /* T130 = VARCHAR(130) */, DEBIT_ACNO INTEGER, CREDIT_ACNO INTEGER, ACTYPE INTEGER, AMOUNT AMOUNT /* AMOUNT = DECIMAL(18,2) */, L_UPDATE TIME_S /* TIME_S = TIMESTAMP */ ); ----------------------------------------------------Soll----------Haben 1010 PC --13.02.2009--1--Testbuchung--4010-----200,00 --13.02.2009--2--Testbuchung--4010-----100,00 1020 Bank --11.02.2009--3--Testbuchung--4010-----250,00 Das Problem ist nun dass bei einem Ausdruck aller Buchungen das so aussehen sollte: ----------------------------------------------------Soll----------Haben------Total 1010 PC --13.02.2009--1--Testbuchung--4010-----200,00--------------------200,00 --13.02.2009--2--Testbuchung--4010-----100,00--------------------300,00 1020 Bank --11.02.2009--3--Testbuchung--3010------------------250,00-------250,00 Es sollen die Buchungen direct unter dem jeweiligen Soll oder Haben Titel befinden. Mir ist leider nicht klar wie das umzusetzten ist. Ich hoffe ich konnte das Problem verständlich schildern. PS: Als Reportgenerator verwende ich FastReport. Besten dank für Eure Tipps. Manfred |
Re: Buchhaltungsprobelm / Grundlage
Über würde es mit einem Gruppierungs-Band versuchen.
|
Re: Buchhaltungsprobelm / Grundlage
Hallo mkinzler
Zitat:
Aber das Probelm ist dass ich in der DB ja nur eine Spalte habe in der der Betrag steht und mir nicht klat ist wie ich den jeweils unter haben oder soll darstelle. Manfred |
Re: Buchhaltungsprobelm / Grundlage
Am Besten in der Abfrage (CASE...WHEN bzw. iif())
|
Re: Buchhaltungsprobelm / Grundlage
Hallo,
wenn ich das richtig sehe, hast du die Werte für Soll/Haben in einer Tabellenspalte. Den Unterschied macht das Feld ACTYPE ? versuchs mal so: - für Soll und Haben je ein Memo (auf deren gewünschten Platz) - beide mit dem Feld verbinden - im OnBeforePrint des einen je nach Soll oder Haben das eine und das andere Memo visible:= True/visible:= False setzen. ...damit ist nur das Memo sichtbar was für den Datensatz zutrifft. Soll/Haben hoffe geholfen zu haben. :hi: |
Re: Buchhaltungsprobelm / Grundlage
Wichtig zu erwähnen ( habe ich leider vergessen ) es soll eine doppelte Buchhaltung werden
Und da liegt auch noch das Problem dass die Buchungen ja doppelt angeseit werden müssen. Hallo mkinzler Zitat:
Hallo haentschman Zitat:
SQL-Code:
Habe auch schon in andere Buchhaltungen reingeschaut ( die Datenbanken ) und da wird es auch so "gelöst"
VOUCHER_NO INTEGER, >> Belegnummer
TEXT T130 /* T130 = VARCHAR(130) */, DEBIT_ACNO INTEGER, >> Debitoren Konto Nummer CREDIT_ACNO INTEGER, >> Kreditoren Konto Nummer ACTYPE INTEGER, >> Kontentyp // Aktiv / Passiv ... AMOUNT AMOUNT /* AMOUNT = DECIMAL(18,2) */, >> Betrag für Tips dankbar Manfred |
Re: Buchhaltungsprobelm / Grundlage
Wie schon geschrieben in der Abfrage beide Betragsfelder erzeugen und anhand des Feldes ACTYPE den Wert zuweisen
BTW.: Sollte es statt Debitor/Kreditorenkonto nicht Konto/Gegenkonto heissen? |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Das heisst wenn eine Buchung vom Konto 1020 auf 4050 erstellt wir wird diese 2x dargestellt. 1x im Kontoblatt beim Konto 1020 und 1x im Kontoblatt beim Konto 4050 mit dem unterschied das der Berag einmal bei Haben und einmal bei Soll steht. Hofe ich habe die richtigen Bez. verwendet. :roll: Zitat:
Grund versuche ich die DB auch in englisch zu halten. Manfred |
Re: Buchhaltungsprobelm / Grundlage
Ich verstehe halt unter "Debitor/Kreditor" spezielle Konten (Personen- Forderungs-/Verbindlichkeitskonto)
Zitat:
Ist der Buchungssatz dann auch doppelt vorhanden? |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Zitat:
ist die Buchung auch nur einmal vorhanden... :gruebel: Wenn Die Buchung 2x vorahnden ist währe es logischer. Ist diese normalerweise 2x vorhanden? |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Du könntest auch eine SP schreiben, welche dir den Buchungssatz entsprechend verdoppelt. |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Bestehen Deiner Meinung nach Nachteile wenn der Datensatz 2x verhanden ist. |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Man kann nicht mal schnell genug editieren. :shock: Mir fällt aber noch was auf, was ich niemals so machen würde : "Date" oder "Text" als eigenen Bezeichner verwenden !! Sieht so aus, als wenn das bei Date nur wegen der unnötigen "" überhaupt ging. |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Bekanntestes Beispiel ist eine Buchung eines Warenverkaufs mit Umsatzsteuer, der Bruttobetrag steht auf der einen Seite in einem Konto, die Umsatzsteuerschuld und der Netto-Verkaufserlös verteilen sich auf zwei Konten auf der anderen Seite. |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Manfred |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Zitat:
da dies meine erstes Buchhaltunsprogramm wird möchte ich dies gleich richtig umsetzten ( lernen ). Wenn Du mir einen guten Link zu einer Doku. oder so hast wöhre dies sehr hilfreich. PS: Danke für Deinen Tipp. |
Re: Buchhaltungsprobelm / Grundlage
Ein Beispiel:
Kauf von Ware auf Ziel (Buchung bei Wareneingang)
Code:
würde zu
Waren 1000 an 1160 Verbindlichkeiten
Vorsteuer 160
Code:
Konto Soll: Haben:
Waren 1000 Vorsteuer 160 Vb.a.L.L. 1160 |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Nicht zwingend. es sind aber 3 Konten angesprochen
man kann das auch durch Buchungsschlüssel, Autokonten oder Felder zur Steuersatzangabe lösen. |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Industrielles Rechnungswesen IKR, EURO, Lehrbuch: Finanzbuchhaltung - Analyse und Kritik des Jahresabschlusses - Kosten- und Leistungsrechnung - von Manfred Deitermann, Siegfried Schmolke, und Wolf-Dieter Rückwart (Taschenbuch - 2008) - gebraucht ca. 6 Euro wegen des geringen Unterhaltungswertes ;) Bücher darüber, wie man eine Buchhaltung entwickelt, kenne ich leider nicht. Es gibt in diesem Bereich aber eine Reihe von Gesetzen / Verordnungen die man schon mal näher ansehen sollte, so z.B. ![]() |
Re: Buchhaltungsprobelm / Grundlage
Zitat:
|
Re: Buchhaltungsprobelm / Grundlage
Zitat:
Manfred |
Re: Buchhaltungsprobelm / Grundlage
Habe jezt eine Lösung gefunden.
@mkinzler: Danke für deinen Denkanstoss. @mjustin: Danke für Deine Anregugen. @Hansa: Danke für die Anmerkung betreffs der Feldnamen Habe eine zusätzliche Tabelle BOOKKEEPING_BOOKING_PRINT erstellt. Darin werden die Daten vor dem Ausdruck "gesammelt" und "aufbereitet".
Delphi-Quellcode:
Shalom
dm.pFIBScript.Script.Text :='INSERT INTO BOOKKEEPING_BOOKING_PRINT (C_NO, U_NO, ACNO, ACTEXT, BDATE, VOUCHER_NO, BTEXT, DEBIT_AMOUNT, CREDIT_AMOUNT, ACNO_CROSS, DEBIT_ACNO, CREDIT_ACNO, DEBIT_ACTYPE, CREDIT_ACTYPE)'+
'SELECT '+ 'BOOKKEEPING_BOOKING.C_NO,'+ 'BOOKKEEPING_BOOKING.U_NO,'+ 'BOOKKEEPING_CHART_ACCOUNTS.ACNO,'+ 'BOOKKEEPING_CHART_ACCOUNTS.ACTEXT,'+ 'BOOKKEEPING_BOOKING.BDATE,'+ 'BOOKKEEPING_BOOKING.VOUCHER_NO,'+ 'BOOKKEEPING_BOOKING.BTEXT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACTYPE > 999 AND BOOKKEEPING_BOOKING.DEBIT_ACTYPE < 2000 '+ 'THEN BOOKKEEPING_BOOKING.AMOUNT END )DEBIT_AMOUNT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACTYPE > 1999 AND BOOKKEEPING_BOOKING.DEBIT_ACTYPE < 3000 '+ 'THEN BOOKKEEPING_BOOKING.AMOUNT END )CREDIT_AMOUNT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACNO = BOOKKEEPING_CHART_ACCOUNTS.ACNO '+ 'THEN BOOKKEEPING_BOOKING.CREDIT_ACNO ELSE BOOKKEEPING_BOOKING.DEBIT_ACNO END ) ACNO_CROSS,'+ 'BOOKKEEPING_BOOKING.DEBIT_ACNO,'+ 'BOOKKEEPING_BOOKING.CREDIT_ACNO,'+ 'BOOKKEEPING_BOOKING.DEBIT_ACTYPE,'+ 'BOOKKEEPING_BOOKING.CREDIT_ACTYPE '+ 'FROM BOOKKEEPING_BOOKING '+ 'INNER JOIN BOOKKEEPING_CHART_ACCOUNTS ON (BOOKKEEPING_BOOKING.CREDIT_ACNO = BOOKKEEPING_CHART_ACCOUNTS.ACNO);'+ 'COMMIT WORK;'+ 'INSERT INTO BOOKKEEPING_BOOKING_PRINT (C_NO, U_NO, ACNO, ACTEXT, BDATE, VOUCHER_NO, BTEXT, DEBIT_AMOUNT, CREDIT_AMOUNT, ACNO_CROSS, DEBIT_ACNO, CREDIT_ACNO, DEBIT_ACTYPE, CREDIT_ACTYPE)'+ 'SELECT '+ 'BOOKKEEPING_BOOKING.C_NO,'+ 'BOOKKEEPING_BOOKING.U_NO,'+ 'BOOKKEEPING_CHART_ACCOUNTS.ACNO,'+ 'BOOKKEEPING_CHART_ACCOUNTS.ACTEXT,'+ 'BOOKKEEPING_BOOKING.BDATE,'+ 'BOOKKEEPING_BOOKING.VOUCHER_NO,'+ 'BOOKKEEPING_BOOKING.BTEXT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACTYPE > 999 AND BOOKKEEPING_BOOKING.DEBIT_ACTYPE < 2000 '+ 'THEN BOOKKEEPING_BOOKING.AMOUNT END )DEBIT_AMOUNT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACTYPE > 1999 AND BOOKKEEPING_BOOKING.DEBIT_ACTYPE < 3000 '+ 'THEN BOOKKEEPING_BOOKING.AMOUNT END )CREDIT_AMOUNT,'+ '(CASE '+ 'WHEN BOOKKEEPING_BOOKING.DEBIT_ACNO = BOOKKEEPING_CHART_ACCOUNTS.ACNO '+ 'THEN BOOKKEEPING_BOOKING.CREDIT_ACNO ELSE BOOKKEEPING_BOOKING.DEBIT_ACNO END ) ACNO_CROSS,'+ 'BOOKKEEPING_BOOKING.DEBIT_ACNO,'+ 'BOOKKEEPING_BOOKING.CREDIT_ACNO,'+ 'BOOKKEEPING_BOOKING.DEBIT_ACTYPE,'+ 'BOOKKEEPING_BOOKING.CREDIT_ACTYPE '+ 'FROM BOOKKEEPING_BOOKING '+ 'INNER JOIN BOOKKEEPING_CHART_ACCOUNTS ON (BOOKKEEPING_BOOKING.DEBIT_ACNO = BOOKKEEPING_CHART_ACCOUNTS.ACNO);'+ 'COMMIT WORK;'; dm.pFIBScript.ExecuteScript; Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz