Hallo zusammen,
ich arbeite mit dem o.g. Bericht und habe dazu eine Frage.
Ich habe den Befehl leicht ergänzt, damit ich auch nach unseren Vertriebsmitarbeitern selektieren kann. Außerdem lass ich mir das Porto nicht ausgeben.
Mir ist aufgefallen, dass Teilstornos fehlerhaft berücksichtigt werden. Wird nur ein Teil einer Rechnung storniert, also ggf. nur eine Position, taucht die komplette Rechnung trotzdem nicht mehr in der Umsatzliste des Mitarbeiters auf.
Das führt dazu, dass weniger Vertriebsprovision ausbezahlt wird.
Liege ich da richtig?
Mein SQL-Befehl wie folgt:
SELECT
r.datum AS datum,
r.belegnr AS belegnummer,
r.ort AS ort,
r.plz AS plz,
a.name AS name,
rp.bezeichnung AS artikelbezeichnung,
ROUND(rp.menge-IFNULL(gp.menge,0),0) AS menge,
ROUND(rp.umsatz_netto_einzeln*(rp.menge-IFNULL(gp.menge,0)),2) AS umsatz,
ROUND(rp.umsatz_netto_einzeln*(rp.menge-IFNULL(gp.menge,0))*((100+rp.rabatt)/100),2) AS umsatzohnerabatt,
ROUND(rp.umsatz_netto_einzeln*(rp.menge-IFNULL(gp.menge,0))*((rp.rabatt)/100),2) AS gesamtrabatt,
ROUND(rp.deckungsbeitrag,2) AS deckungsbeitrag,
ROUND(rp.einkaufspreis*(rp.menge-IFNULL(gp.menge,0)),2) AS ek,
r.waehrung AS waehrung,
r.id AS rechnungid,
a.id AS adressid
FROM rechnung AS r
JOIN rechnung_position rp on r.id = rp.rechnung
JOIN adresse AS a ON r.vertriebid = a.id
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}') AND IF('{VERTRIEBSMITARBEITER}'='0',1,a.name LIKE '{VERTRIEBSMITARBEITER}') AND rp.bezeichnung <> 'Porto'