Gelöst Listenansicht - Behaltene/zurückgesendete/umgetauschte Artikel

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
14
Hi zusammen.

wir bräuchten 2 Listenansichten:

Beim Kunden:
Der Tab "Artikel" beim Kunden zeigt zwar die gekauften Artikel, beinhaltet aber wichtige Details nicht.
Es wäre schön wenn man sehen würde welche Artikel der Kunde über alle Aufträge gekauft hat, welche er zurückgesendet hat und davon gutgeschrieben bekommen hat und welche einem Umtauschauftrag unterliegen.
Also in der Art folgende Spalten:
Artikelnummer | Artikelname | Auftragsnummer | Rechnungsnummer | wurde zurückgesendet? | Retourennummer + Datum | wurde erstattet? | erstattet am | wurde umgetauscht ?

Beim Verkauf:
dasselbe wie oben nur eben auf Auftragsbasis basierend.

Kann sich hier jemand opfern, da leider null Kenntnisse?! Gerne auch gegen Bezahlung

VG
 

Philipp Laumen

Gesperrter Benutzer
16. Juli 2018
260
85
Hi @vmgmbh
ich habe da mal was rudimentäres gebastelt.
Es werden nur normale Positionen und Aufträge betrachtet, keine Stücklistenkomponenten oder Dinge wie Angebote / Umlagerungen
SQL:
SELECT 
tBestellpos.cArtNr AS 'Artikelnummer',
tBestellpos.cString AS 'Artikelname',
tBestellung.cBestellNr AS 'Auftragsnummer',
trechnung.cRechnungsNr AS 'Rechnungsnummer',
tbestellpos.nAnzahl AS 'Menge',
(tRMRetourePos.fAnzahl - tWarenLagerEingang.fAnzahl)  AS 'Empfangene Retourmenge',
tRMRetoure.cRetoureNr  AS 'Retourenummer' ,
tRMRetoure.dErstellt  AS 'Retouredatum',
tgutschrift.cGutschriftNr AS 'Gutschrift',
tZahlungsabgleichAusgang.dBuchungsdatum AS 'Erstattet am',
(SELECT cBestellNr FROM dbo.tBestellung WHERE kBestellung = tRMRetoure.kBestellungUmtausch) AS 'Umtauschnummer'
FROM dbo.tBestellung 
JOIN dbo.tBestellpos ON tBestellpos.tBestellung_kBestellung = tBestellung.kBestellung
LEFT JOIN dbo.tRechnung ON tRechnung.kRechnung = tBestellung.tRechnung_kRechnung
LEFT JOIN dbo.tLieferscheinpos ON tLieferscheinPos.kBestellPos = tBestellpos.kBestellPos
LEFT JOIN dbo.tRMRetourePos ON tRMRetourePos.kLieferscheinPos = tLieferscheinPos.kLieferscheinPos
LEFT JOIN dbo.tWarenLagerEingang ON tWarenLagerEingang.kRMRetourePos = tRMRetourePos.kRMRetourePos
LEFT JOIN dbo.tRMRetoure ON tRMRetoure.kBestellung = dbo.tBestellung.kBestellung
LEFT JOIN dbo.tGutschrift ON tgutschrift.kGutschrift = tRMRetoure.kGutschrift
LEFT JOIN dbo.tZahlungsabgleichAusgang ON tZahlungsabgleichAusgang.kGutschrift = tgutschrift.kGutschrift
WHERE tBestellung.tKunde_kKunde = @Key 
AND tBestellung.cType = 'B'
AND tBestellpos.nType = 1
ORDER BY dbo.tBestellung.kBestellung DESC

Bitte einmal testen und Rückmeldung geben.
 
  • Gefällt mir
Reaktionen: vmgmbh

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
14
Hey @phillip Laumen und danke für die Rückmeldung und die tolle Abfrage!

die "empfangene Retourenmenge" ist immer 0,0000 oder leer komischerweise und hat Nachkommastellen.
Auch "Menge" sollte gerundet werden auf ne Ganzzahl

"Erstattet am" bleibt auch immer leer, obwohl Zahlung gesetzt für die Rechungskorrektur bzw. Rückzahlung

"Umtauschnummer" sollte die Umtauschauftragsnummer aufzeigen

Retourennummer wird auf gesetzt bei nicht emfpangenen Retourenartikeln. Wird die Retourennummer geschrieben von den zurückerhaltenen Artikeln. Dasselbe analog Gutschriftnummer, obwohl gar keine Gutschrift gibt wird die Nummer in die Zeile des erstatteten Artikels geschrieben. Dasselbe bei Retourendatum. Sollte in diesen Fällen alles leer sein wenn der Artikel nicht zurückkam.
Ich denke du fragst hier auf Auftragsebene ab, das ganze müsste auf Artikelebene geprüft werden.
 
Zuletzt bearbeitet:

Philipp Laumen

Gesperrter Benutzer
16. Juli 2018
260
85
Hi @vmgmbh ,

Ich habe das SQL nochmal angepasst. Bitte beachte das das "Erstattet am" nur bei Zahlungsausgängen über die Wawi gefüllt wird. Oder willst du da lieber das Erstelldatum der Gutschrift haben?
Der Rest müsste jetzt funktionieren.
"Sollte in diesen Fällen alles leer sein wenn der Artikel nicht zurückkam. " - Das SQL gibt jetzt den Wert aus, sobald eine Retoure angemeldet wurde.

SQL:
SELECT
tBestellpos.cArtNr AS 'Artikelnummer',
tBestellpos.cString AS 'Artikelname',
tBestellung.cBestellNr AS 'Auftragsnummer',
trechnung.cRechnungsNr AS 'Rechnungsnummer',
ROUND(CONVERT(FLOAT, ISNULL(tbestellpos.nAnzahl,0.0)),2) AS 'Menge',
ROUND(CONVERT(FLOAT, ISNULL(tRMRetourePos.fAnzahl,0.0)),2) AS 'Empfangene Retourmenge',
tRMRetoure.cRetoureNr  AS 'Retourenummer' ,
tRMRetoure.dErstellt  AS 'Retouredatum',
tgutschrift.cGutschriftNr AS 'Gutschrift',
tgutschrift.dErstellt AS 'Gutschrift erstellt am',
(SELECT cBestellNr FROM dbo.tBestellung WHERE kBestellung = tRMRetoure.kBestellungUmtausch) AS 'Umtauschnummer'
FROM dbo.tBestellung
JOIN dbo.tBestellpos ON tBestellpos.tBestellung_kBestellung = tBestellung.kBestellung
LEFT JOIN dbo.tRechnung ON tRechnung.kRechnung = tBestellung.tRechnung_kRechnung
LEFT JOIN dbo.tLieferscheinpos ON tLieferscheinPos.kBestellPos = tBestellpos.kBestellPos
LEFT JOIN dbo.tRMRetourePos ON tRMRetourePos.kLieferscheinPos = tLieferscheinPos.kLieferscheinPos
LEFT JOIN dbo.tWarenLagerEingang ON tWarenLagerEingang.kRMRetourePos = tRMRetourePos.kRMRetourePos
LEFT JOIN dbo.tRMRetoure ON tRMRetoure.kRMRetoure = dbo.tRMRetourePos.kRMRetoure
LEFT JOIN dbo.tGutschrift ON tgutschrift.kGutschrift = tRMRetoure.kGutschrift
WHERE tBestellung.tKunde_kKunde = @Key
AND tBestellung.cType = 'B'
AND tBestellpos.nType = 1
ORDER BY dbo.tBestellung.kBestellung DESC
DESC

Bitte einmal testen und Rückmeldung geben.
 
Zuletzt bearbeitet:

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
14
Hi @vmgmbh ,

Ich habe das SQL nochmal angepasst. Bitte beachte das das "Erstattet am" nur bei Zahlungsausgängen über die Wawi gefüllt wird. Oder willst du da lieber das Erstelldatum der Gutschrift haben?
Der Rest müsste jetzt funktionieren.
"Sollte in diesen Fällen alles leer sein wenn der Artikel nicht zurückkam. " - Das SQL gibt jetzt den Wert aus, sobald eine Retoure angemeldet wurde.

SQL:
SELECT
tBestellpos.cArtNr AS 'Artikelnummer',
tBestellpos.cString AS 'Artikelname',
tBestellung.cBestellNr AS 'Auftragsnummer',
trechnung.cRechnungsNr AS 'Rechnungsnummer',
ROUND(CONVERT(FLOAT, ISNULL(tbestellpos.nAnzahl,0.0)),2) AS 'Menge',
ROUND(CONVERT(FLOAT, ISNULL(tRMRetourePos.fAnzahl,0.0)),2) AS 'Empfangene Retourmenge',
tRMRetoure.cRetoureNr  AS 'Retourenummer' ,
tRMRetoure.dErstellt  AS 'Retouredatum',
tgutschrift.cGutschriftNr AS 'Gutschrift',
tZahlungsabgleichAusgang.dBuchungsdatum AS 'Erstattet am',
(SELECT cBestellNr FROM dbo.tBestellung WHERE kBestellung = tRMRetoure.kBestellungUmtausch) AS 'Umtauschnummer'
FROM dbo.tBestellung
JOIN dbo.tBestellpos ON tBestellpos.tBestellung_kBestellung = tBestellung.kBestellung
LEFT JOIN dbo.tRechnung ON tRechnung.kRechnung = tBestellung.tRechnung_kRechnung
LEFT JOIN dbo.tLieferscheinpos ON tLieferscheinPos.kBestellPos = tBestellpos.kBestellPos
LEFT JOIN dbo.tRMRetourePos ON tRMRetourePos.kLieferscheinPos = tLieferscheinPos.kLieferscheinPos
LEFT JOIN dbo.tWarenLagerEingang ON tWarenLagerEingang.kRMRetourePos = tRMRetourePos.kRMRetourePos
LEFT JOIN dbo.tRMRetoure ON tRMRetoure.kRMRetoure = dbo.tRMRetourePos.kRMRetoure
LEFT JOIN dbo.tGutschrift ON tgutschrift.kGutschrift = tRMRetoure.kGutschrift
LEFT JOIN dbo.tZahlungsabgleichAusgang ON tZahlungsabgleichAusgang.kGutschrift = tgutschrift.kGutschrift
WHERE tBestellung.tKunde_kKunde = @Key
AND tBestellung.cType = 'B'
AND tBestellpos.nType = 1
ORDER BY dbo.tBestellung.kBestellung DESC

Bitte einmal testen und Rückmeldung geben.

sieht klasse aus und klappt
Nur wie du sagtest, GS Datum bei "Erstattet am" wäre besser... könntest du uns das noch anpassen? :)