Seite 1 von 1

Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Mo 24. Aug 2009, 22:13
von Gabriele.Brehmert
Hallo ,
ich möchte mich zu erst als neues Foren-Mitglied vorstellen. Wir starten im September unseren ersten Laden (Getränkehandel mit Tabakwaren usw.) und ich habe lange nach einer Software mit Kassenprogramm gesucht. Die bekannten Standardprogramme von Lexware und Co sind einfach zu teuer und meiner Meinung nach unübersichtlich. Je länger ich mich mit CAO befasse um so mehr gefällt es mir. Im Forum sind auch viele Lösungen und Lösungsansätze zu finden - Super. Wir benutzen die Version 1.4.9.2 K und haben soweit auch alles eingerichtet. Jetzt möchten wir gern die Auswertung für unseren Steuerberater vorbereiten und ich beschäftige mich jetzt schon ein paar Tage mit SQL. Vielleicht hat ja jemand Zeit mir bei folgendem Problem zu helfen. Nach stöbern im Forum bin ich auf folgendes SQL-Script gestossen:

Code: Alles auswählen

SELECT
J.VRENUM as Buchungsnummer, J.RDATUM as Datum, position, Warengruppe, steuer_code,
ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2) AS Brutto,
CASE JP.STEUER_CODE
WHEN 0 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_0+100)*(J.MWST_0)
WHEN 1 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_1+100)*(J.MWST_1)
WHEN 2 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_2+100)*(J.MWST_2)
WHEN 3 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_3+100)*(J.MWST_3)
ELSE 0
END as MWST,
CASE JP.STEUER_CODE
WHEN 0 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_0/100+1))
WHEN 1 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_1/100+1))
WHEN 2 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_2/100+1))
WHEN 3 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_3/100+1))
ELSE 0
END as Nettobetrag,
CASE JP.STEUER_CODE
WHEN 0 THEN J.MWST_0
WHEN 1 THEN J.MWST_1
WHEN 2 THEN J.MWST_2
WHEN 3 THEN J.MWST_3
ELSE 0
END as MWST_Satz,
J.WAEHRUNG,
JP.GEGENKTO as 'Haben-Konto',
J.KUN_NUM as 'Soll-Konto',
J.KUN_NAME1 as Buchungstext

FROM
JOURNAL J, JOURNALPOS JP
WHERE
J.QUELLE=3
AND J.REC_ID=JP.JOURNAL_ID
AND JP.ARTIKELTYP !='T'
and JP.EPREIS!=0
and JP.MENGE!=0
and JP.RABATT!=100
and Month(J.RDATUM)=8
and YEAR(J.RDATUM)=2009

GROUP BY
J.REC_ID, JP.GEGENKTO, JP.STEUER_CODE , warengruppe
ORDER BY
J.VRENUM, J.RDATUM, position
Dabei geht es um die Auswertung der Erlöse der Barkasse. Das erfüllt "fast" unsere Anforderungen. Fast deshalb weil bei Belegbuchungen auf eine Warengruppe der Inhalt von JOURNALPOS.GEGENKTO = -1 ist. Ich habe schon versucht mit CASE und IF anweisungen die Standard-Konten (DEF_EKTO und DEF_AKTO) aus der Tabelle Warengruppen zu übernehmen - leider erfolglos. Ich glaube IF Anweisungen , in denen die Default Konten abgefragt werden gehen in die richtige Richtung.
z.B.
ist JP.GEGENKTO -1 und Warengruppe = 1 und Steuersatz = 1 dann GEGENKTO = 4301
ist JP.GEGENKTO -1 und Warengruppe = 1 und Steuersatz = 2 dann GEGENKTO = 4401

Leider gelingt mir die korrekte Abfrage nicht. Falls dafür mehrere IF-Anweisungen nötig sind , wir haben nur max 10 Warengruppen ohne Untergruppen aber mit 7% und 19% MwSt-Sätzen (z.B. Zeitschriften).

oder wenigstens -> bei anweisung JP.GEGENKTO as 'Haben-Konto', soll falls -1 der entsprechende Inhalt aus Warengruppen.DEF_EKTO übernommen werden. Dann würde automatisch das voreingestellte Konto mit Standard Steuersatz übernommen.

Ich wollte so genau als möglich das Problem beschreiben und hoffe das jemand eine Lösung hat oder auch eine kleine Lehrstunde gibt (bin kein blutiger Anfänger - aber auch kein Profi) - bis dann . . . .

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 07:58
von redone
Hallo,

erstmal herzlich willkommen im Forum :)

Ich habe das Script mal Testweise bei mir verwendet und Buchungen, sowie Bar, Bar über Kasse, vorkasse, usw durchgeführt.
Es wurde immer ein Gegenkonto angezeigt.
Wie sind die Artikel angelegt? Gibt es dort ein Gegenkonto?
Mit einem geeigneten SQL-Tool, wie z.B. HeidiSql, mal in der Datenbank nachprüfen, was dort in den Feldern steht.

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 08:05
von Gabriele.Brehmert
Hallo redone,
und vielen Dank für die schnelle Reaktion.

Der Fall tritt dann auf wenn direkt auf die Warengruppe gebucht wird, also nicht ein Artikel ausgewählt wird.
Beispiel Brötchen (haben keinen BARCODE) und werden gleich mit dem Betrag auf die Warengruppe Backwaren gebucht.
In diesem Fall beinhaltet das Feld GEGENKTO -1.

bis dann . . .

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 14:59
von Gabriele.Brehmert
So Freunde,
ich bin jetzt einen kleinen Schritt weiter:

mit der Anweisung:

Code: Alles auswählen

if (JP.GEGENKTO = -1,if (JP.STEUER_CODE = 1,4300,4400),JP.GEGENKTO) as 'Haben-Konto',
wird bei Inhalt -1 den Steuercodes entsprechend ein Konto zugewiesen. Schöner wärs natürlich wenn jeder Warengruppe die dazugehörenden Konten zugewiesen würden.

Vielleicht hat ja jemand eine Idee . . .

bis demnächst.

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 16:09
von redone
Hallo,

ich habs etwas verändert. Schaumal ob das deinen Wünschen entspricht :)

Code: Alles auswählen

SELECT
J.VRENUM as Buchungsnummer, J.RDATUM as Datum, JP.Position, JP.Warengruppe, JP.steuer_code AS Steuercode,
ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2) AS Brutto,
CASE JP.STEUER_CODE
WHEN 0 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_0+100)*(J.MWST_0)
WHEN 1 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_1+100)*(J.MWST_1)
WHEN 2 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_2+100)*(J.MWST_2)
WHEN 3 THEN ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_3+100)*(J.MWST_3)
ELSE 0
END as MWST,
CASE JP.STEUER_CODE
WHEN 0 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_0/100+1))
WHEN 1 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_1/100+1))
WHEN 2 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_2/100+1))
WHEN 3 THEN (ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2)/(J.MWST_3/100+1))
ELSE 0
END as Nettobetrag,
CASE JP.STEUER_CODE
WHEN 0 THEN J.MWST_0
WHEN 1 THEN J.MWST_1
WHEN 2 THEN J.MWST_2
WHEN 3 THEN J.MWST_3
ELSE 0
END as MWST_Satz,
J.Waehrung,
IF(JP.GEGENKTO = -1,WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',
IF(J.KUN_NUM,J.KUN_NUM,'1000') as 'Soll-Konto',
J.KUN_NAME1 as Buchungstext

FROM
JOURNAL J
LEFT JOIN JOURNALPOS JP ON J.REC_ID=JP.JOURNAL_ID
LEFT JOIN WARENGRUPPEN WG ON JP.WARENGRUPPE=WG.ID
WHERE
J.QUELLE=3
AND JP.ARTIKELTYP !='T'
and JP.EPREIS!=0
and JP.MENGE!=0
and JP.RABATT!=100
and Month(J.RDATUM)=8
and YEAR(J.RDATUM)=2009

GROUP BY
J.REC_ID, JP.GEGENKTO, JP.STEUER_CODE , JP.WARENGRUPPE
ORDER BY
J.VRENUM, J.RDATUM, JP.POSITION
Vorrausetzung ist, dass die Warengruppen ein Default Aufwandskonto haben.
Für das Sollkonto hab ich einfach angenommen, dass 1000 deine Kasse ist, wenn du auf die Warengruppe buchst.
Wenn du noch Gutschriften mit einbeziehen möchtest dann ersetzte

Code: Alles auswählen

J.QUELLE=3
durch

Code: Alles auswählen

J.QUELLE IN(3,4)

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 17:48
von Gabriele.Brehmert
Hallo, redone

Volltreffer! - das erspart mir eine Menge manueller Nacharbeit und sollte unserem Steuerberater genügen.

Vielen Dank . . . ich bin begeistert über die wirklich schnelle Hilfe!

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 18:09
von CAO-Support
Hallo,

hier die verbesserte Version :

(man verwende seit Version 1.4 JP.GSUMME anstatt per Einzelpreis * Menge - Rabatt das ganze selbst zu berechnen)
Ferner habe ich die Gruppierung berichtigt.

Code: Alles auswählen

SELECT
J.VRENUM as Buchungsnummer, J.RDATUM as Datum, JP.Position, JP.Warengruppe, JP.steuer_code AS Steuercode,
ROUND(SUM((JP.EPREIS-(JP.EPREIS/100*JP.RABATT))*JP.MENGE),2) AS Brutto,
CASE JP.STEUER_CODE
WHEN 0 THEN ROUND(SUM(JP.GPREIS),2)/(J.MWST_0+100)*(J.MWST_0)
WHEN 1 THEN ROUND(SUM(JP.GPREIS),2)/(J.MWST_1+100)*(J.MWST_1)
WHEN 2 THEN ROUND(SUM(JP.GPREIS),2)/(J.MWST_2+100)*(J.MWST_2)
WHEN 3 THEN ROUND(SUM(JP.GPREIS),2)/(J.MWST_3+100)*(J.MWST_3)
ELSE 0
END as MWST,
CASE JP.STEUER_CODE
WHEN 0 THEN (ROUND(SUM(JP.GPREIS),2)/(J.MWST_0/100+1))
WHEN 1 THEN (ROUND(SUM(JP.GPREIS),2)/(J.MWST_1/100+1))
WHEN 2 THEN (ROUND(SUM(JP.GPREIS),2)/(J.MWST_2/100+1))
WHEN 3 THEN (ROUND(SUM(JP.GPREIS),2)/(J.MWST_3/100+1))
ELSE 0
END as Nettobetrag,
CASE JP.STEUER_CODE
WHEN 0 THEN J.MWST_0
WHEN 1 THEN J.MWST_1
WHEN 2 THEN J.MWST_2
WHEN 3 THEN J.MWST_3
ELSE 0
END as MWST_Satz,
J.Waehrung,
IF(JP.GEGENKTO = -1 and JP.ARTIKEL_ID=-1,WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',
IF(J.KUN_NUM,J.KUN_NUM,'1000') as 'Soll-Konto',
J.KUN_NAME1 as Buchungstext

FROM
JOURNAL J
INNER JOIN JOURNALPOS JP ON J.REC_ID=JP.JOURNAL_ID
INNER JOIN WARENGRUPPEN WG ON JP.WARENGRUPPE=WG.ID
WHERE
J.QUELLE=3
AND JP.ARTIKELTYP !='T'
and JP.GPREIS!=0
and Month(J.RDATUM)=8
and YEAR(J.RDATUM)=2009

GROUP BY J.REC_ID, 'Haben-Konto', JP.STEUER_CODE , JP.WARENGRUPPE
ORDER BY J.VRENUM, J.RDATUM, JP.POSITION
Gefährlich : Wenn eine Warwengruppe anschließend gelöscht wird, geht das Script durch den INNER JOIN 100%ig schief!

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 19:11
von Gabriele.Brehmert
Hallo,

bei der "verbesserten" version bekommen ich wieder -1 angezeigt !

bis dann . . .

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 19:29
von CAO-Support
Hallo,

versuche mal

Code: Alles auswählen

IF(JP.GEGENKTO = -1 and JP.ARTIKEL_ID=-1,WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',
durch folgendes zu ersetzen :

Code: Alles auswählen

IF(JP.GEGENKTO = -1 and JP.ARTIKEL_ID<1,WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',

Wenn das nicht funktioniert, was steht im Feld ARTIKEL_ID ?

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 19:30
von Gabriele.Brehmert
Hallo, Fehler gefunden (Artikel_ID ist -99 anstatt -1) richtige Zeile:

Code: Alles auswählen

IF(JP.GEGENKTO = -1 and JP.ARTIKEL_ID=-99,WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',
Ich hab es kurz getestet und so müsste es stimmen

bis dann . . .

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Di 25. Aug 2009, 19:48
von CAO-Support
Hallo,

völlig korrekt wäre das :

Code: Alles auswählen

IF(JP.GEGENKTO=-1 and JP.ARTIKEL_ID=-99 and JP.ARTIKELTYP='F',WG.Def_EKTO,JP.GEGENKTO) as 'Haben-Konto',
Ab kommender Version der Kasse wird dann das Default-Erlöskonto der Warengruppe mit in den Datensatz übernommen,
somit ist dieser Workaround langfristig dann überflüssig.

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Mi 26. Aug 2009, 20:13
von Gabriele.Brehmert
Hallo zusammen,

ich habe noch eine kleine Anregung:

Wenn diese Übernahme der Defaultkonten geplant wird könnten vielleicht in der nächsten Version gleich Default Konten für 7% und 19% MwSt vorgesehen werden.

z.B. bei Allgem. Einstell. unter Warengruppen und dort für Normale und verminderte MwSt. Defaultangaben.

Und nochmal: Ein tolles Forum !

bis dann . . .

Re: Auswertung Verkäufe CAO-Kasse - spez. Feld GEGENKTO

Verfasst: Do 27. Aug 2009, 09:24
von CAO-Support
Hallo,

das ist leider nicht möglich, da dafür weitere Felder in der DB benötigt würden.
Besser wäre es also, in einer Warengruppe auch nur einen Steuersatz zu verwenden.