ich habe den Umsatzbericht nach Projekt so modifiziert, dass ich die Umsatzzahlen je Monat projektübergreifend angezeigt bekomme.
Mein SQL Statement sieht nun wie folgt aus:
SELECT DATE_FORMAT(r.datum,‘%m.%Y’) AS datum, ROUND(SUM(rp.menge-IFNULL(gp.menge,0)),0) AS menge, ROUND(SUM(rp.umsatz_netto_einzeln*(rp.menge-IFNULL(gp.menge,0))),2) AS umsatz, r.waehrung AS waehrung
FROM rechnung r
JOIN rechnung_position rp on r.id = rp.rechnung
LEFT JOIN (SELECT gp.auftrag_position_id, SUM(gp.menge) AS menge FROM gutschrift_position AS gp JOIN gutschrift g ON gp.gutschrift = g.id WHERE gp.auftrag_position_id<>0 AND g.status <>‘angelegt’ AND g.status <> ‘storniert’ GROUP BY auftrag_position_id) AS gp on rp.auftrag_position_id = gp.auftrag_position_id
WHERE r.status<>‘angelegt’ AND r.status<>‘storniert’ AND IF(‘{VON}’=0,1,r.datum>=‘{VON}’) AND IF(‘{BIS}’=0,1,r.datum<=‘{BIS}’)
GROUP BY DATE_FORMAT(r.datum,‘%m.%Y’)
Nun möchte ich noch den über die Monate kumulierten Jahresumsatz am Ende der Abfrage anzeigen. Wie lässt sich umsetzen?
Ich habe nun ein paar Tests gemacht und scheinbar die Unstimmigkeit gefunden.
Im Select oben werden leider die Gutschriften nicht richtig verarbeitet. Habe das in unserem System reproduzieren können. Es fehlen einfach die jeweilig erstellten Gutschriften.
Könnte ein Fehler im SQL sein. Fakt ist, der ermittelte Wert des SQLs von oben wird immer höher sein, als der eigentlich Umsatz, sofern Gutschriften vorliegen.
Der Bericht setzt rp_auftag_position_id mit gp_auftrag_position_id gleich.
Was passiert aber mit Gutschriften, die pauschal einen Betrag gutschreiben, z. B. ein Nachlass, der nicht positionsbezogen ist? Diese haben keine auftrag_position_id.
Habt ihr so was, tauchen diese Gutschriften auf, oder könnte das die Differenz erklären?