Neu Kunde: Rückstandsliste über alle offenen Auftragspositionen

designer

Offizieller Servicepartner
SPBanner
20. Juli 2009
271
22
In der Kundenübersicht ist eine Liste gewünscht über alle offenen Positionen eines Kunden mit folgenden Spalten:
Bestellnummer; Bestell-Datum; Anzahl-Ausstehend; ArtikelNummer; Artikelname
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: NetWerk

Happy

Sehr aktives Mitglied
29. Juli 2011
497
124
Hückelhoven
Hallo @designer
versuche es mal mit folgendem SQL.
SQL:
select
tBestellung.cBestellNr as Bestellnummer
, CONVERT(varchar(MAX)
,dErstellt,104) AS "Bestell-Datum"
, Format(fAnzahl, 'F0', 'de-de') as "Anzahl-Ausstehend"
, cArtNr AS ArtikelNummer
, cString As Artikelname
from Verkauf.lvAuftragsposition
join dbo.tBestellung on tBestellung.kBestellung = Verkauf.lvAuftragsposition.kBestellung
where tKunde_kKunde = @key AND fAnzahlAuszuliefern > 0
 

NetWerk

Aktives Mitglied
21. Juni 2019
23
3
Das ist großartig! Wie könnte ich nun noch ein kundenindividuelles Feld (nämlich: erwarteter Liefertermin auf dem Artike) ergänzen???
 

David_M

Aktives Mitglied
4. Januar 2011
99
19
Hallo zusammen,

vorab, wir arbeiten schon mit der Wawi 1.6, in der sich hier und da etwas in der Datenbankstruktur geändert hat.
Da wir die Übersicht allerdings auch ganz hilfreich finden hier einmal der Code. Einfach in der Kundenübersicht als "eigene Übersicht" einbauen:

SQL:
select
Verkauf.tAuftrag.cAuftragsNr as Auftragsnummer
,CONVERT(varchar(MAX)
,dErstellt,104) AS "Bestell-Datum"
,Format(fAnzahl, 'F0', 'de-de') as "Anzahl-Ausstehend"
,cArtNr AS Artikelnummer
from Verkauf.lvAuftragsposition
join Verkauf.tAuftrag on Verkauf.tAuftrag.kAuftrag = Verkauf.lvAuftragsposition.kAuftrag
join Verkauf.tAuftragPositionEckdaten on Verkauf.tAuftragPositionEckdaten.kAuftragPosition =  Verkauf.lvAuftragsposition.kAuftragPosition
where Verkauf.tAuftrag.kKunde = @Key AND Verkauf.tAuftragPositionEckdaten.fAnzahlOffen > 0

Grüße
David
 

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
306
10
Wir wollten ebenfalls eine Rückstandsliste erstellen, benötigten aber neben einigen Artikelinfos auch die externe Bestellnummer, welche wir als eigenes Feld in den Aufträgen haben. Hier die erweiterte SQL-Abfrage, ohne Gewähr:


SQL:
SELECT DISTINCT
Verkauf.tAuftrag.cAuftragsNr AS Auftragsnummer
,CASE WHEN Verkauf.tAuftragAttribut.kAttribut = '202' THEN Verkauf.tAuftragAttributSprache.cWertVarchar ELSE null END AS Bestellnummer
,CONVERT(varchar(MAX),dErstellt,104) AS "Bestell-Datum"
,Format(fAnzahl, 'F0', 'de-de') AS "Anzahl-Ausstehend"
,Verkauf.tAuftragPosition.cEinheit AS Einheit
,Verkauf.tAuftragPosition.cArtNr AS Artikelnummer
,Verkauf.tAuftragPosition.cName AS Artikelbezeichnung
,dbo.tArtikel.cBarcode AS GTIN
,dbo.tArtikel.cHAN AS MPN
FROM Verkauf.tAuftragPosition
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = Verkauf.tAuftragPosition.kAuftrag
JOIN Verkauf.tAuftragPositionEckdaten ON Verkauf.tAuftragPositionEckdaten.kAuftragPosition =  Verkauf.tAuftragPosition.kAuftragPosition
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = Verkauf.tAuftragPosition.kArtikel
JOIN Verkauf.tAuftragAttribut ON Verkauf.tAuftragAttribut.kAuftrag = Verkauf.tAuftragPosition.kAuftrag
JOIN Verkauf.tAuftragAttributSprache ON Verkauf.tAuftragAttributSprache.kAuftragAttribut = Verkauf.tAuftragAttribut.kAuftragAttribut
WHERE Verkauf.tAuftrag.kKunde = @Key AND Verkauf.tAuftragPositionEckdaten.fAnzahlOffen > 0

Um mir ein weiteres JOIN und eine sprachenabhängige Auswahl zu ersparen, suchen wir das eigene Feld "Bestellnummer" anhand dessen interner ID, welche in diesem Fall die 202 ist. Die passende ID für das eigene Feld der Wahl findet sich in der Tabelle dbo.tAttributSprache und müsste in Zeile 3 entsprechend angepasst werden.
Mit dem SELECT DISTINCT verhindern wir, dass in der Ausgabe Artikel doppelt angezeigt werden, wenn es mehrere eigene Felder gibt. Ursprünglich sollte das bereits beim JOIN abgefangen werden, so dass nur die Werte für dieses Attribut gezogen werden, aber damit hatte ich irgendwie kein Glück.
 

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
306
10
Leider kann ich meinen obigen Beitrag nicht mehr ändern, der Code erzeugt immer noch Dubletten in der Abfrage. Bei Aufträgen bei denen das eigene Feld "Bestellnummer" gefüllt ist, werden die Positionen jeweils einmal mit und einmal ohne die Bestellnummer ausgegeben. Ich bin leider noch nicht auf die richtige Lösung gekommen. Ursache hängt mit dem vorletzten JOIN zusammen, aber mir erschließt sich noch nicht warum.

Das DISTINCT hilft in diesem Fall nicht weiter, da die beiden Zeilen sich ja genau in diesem Feld unterscheiden.

Hat jemand eine Idee?

Folgender Code liefert mir die Rückstandsliste ohne das eigene Feld einwandfrei:

SQL:
SELECT
Verkauf.tAuftrag.cAuftragsNr AS Auftragsnummer
,CONVERT(varchar(MAX),dErstellt,104) AS "Bestell-Datum"
,Format(fAnzahl, 'F0', 'de-de') AS "Anzahl-Ausstehend"
,Verkauf.tAuftragPosition.cEinheit AS Einheit
,Verkauf.tAuftragPosition.cArtNr AS Artikelnummer
,Verkauf.tAuftragPosition.cName AS Artikelbezeichnung
,dbo.tArtikel.cBarcode AS GTIN
,dbo.tArtikel.cHAN AS MPN
FROM Verkauf.tAuftragPosition
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = Verkauf.tAuftragPosition.kAuftrag
JOIN Verkauf.tAuftragPositionEckdaten ON Verkauf.tAuftragPositionEckdaten.kAuftragPosition =  Verkauf.tAuftragPosition.kAuftragPosition
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = Verkauf.tAuftragPosition.kArtikel
WHERE Verkauf.tAuftrag.kKunde = @Key AND Verkauf.tAuftragPositionEckdaten.fAnzahlOffen > 0

Und dieser Code liefert mir eine Liste mit Auftragsnummer und dem eigenen Feld "Bestellnummer" (mit ID 202):

SQL:
SELECT DISTINCT
Verkauf.tAuftrag.cAuftragsNr AS Auftragsnummer
,Verkauf.tAuftragAttributSprache.cWertVarchar  AS Bestellnummer
FROM Verkauf.tAuftragPosition
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = Verkauf.tAuftragPosition.kAuftrag
JOIN Verkauf.tAuftragPositionEckdaten ON Verkauf.tAuftragPositionEckdaten.kAuftragPosition =  Verkauf.tAuftragPosition.kAuftragPosition
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = Verkauf.tAuftragPosition.kArtikel
INNER JOIN Verkauf.tAuftragAttribut ON Verkauf.tAuftragAttribut.kAuftrag = Verkauf.tAuftragPosition.kAuftrag AND Verkauf.tAuftragAttribut.kAttribut = '202'
JOIN Verkauf.tAuftragAttributSprache ON Verkauf.tAuftragAttributSprache.kAuftragAttribut = Verkauf.tAuftragAttribut.kAuftragAttribut
WHERE Verkauf.tAuftrag.kKunde = @Key AND Verkauf.tAuftragPositionEckdaten.fAnzahlOffen > 0

Wie schreibt man das sinnvollerweise in einer Abfrage zusammen?
 
Zuletzt bearbeitet:

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
306
10
Ich denke, ich habe es jetzt hinbekommen. Wer möchte, kann/darf gerne testen:


SQL:
SELECT
Verkauf.tAuftrag.cAuftragsNr AS Auftragsnummer
,tBestellnummer.Bestellnummer AS Bestellnummer
,Verkauf.tAuftragPosition.cArtNr AS Artikelnummer
,Verkauf.tAuftragPosition.cName AS Artikelbezeichnung
,dbo.tArtikel.cBarcode AS GTIN
,dbo.tArtikel.cHAN AS MPN
,Format(fAnzahl, 'F0', 'de-de') AS "Anzahl-Ausstehend"
,Verkauf.tAuftragPosition.cEinheit AS Einheit
,FORMAT(Verkauf.tAuftragPosition.fVkNetto, 'N2') as "Netto Einzelpreis"
,FORMAT(Verkauf.tAuftragPosition.fRabatt, 'N2') as "Rabatt (%)"
,FORMAT(Verkauf.tAuftragPosition.fVkNetto*(100-Verkauf.tAuftragPosition.fRabatt)/100, 'N2') as "Netto Einzelpreis inkl. Rabatt"
,FORMAT(Verkauf.tAuftragPosition.fMwSt, 'N2') as "MwSt (%)"
,FORMAT(fAnzahl*(Verkauf.tAuftragPosition.fVkNetto*(100-Verkauf.tAuftragPosition.fRabatt)/100), 'N2') as "Summe Netto Preis inkl. Rabatt"
FROM Verkauf.tAuftragPosition
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = Verkauf.tAuftragPosition.kAuftrag
JOIN Verkauf.tAuftragPositionEckdaten ON Verkauf.tAuftragPositionEckdaten.kAuftragPosition =  Verkauf.tAuftragPosition.kAuftragPosition
JOIN dbo.tArtikel ON dbo.tArtikel.kArtikel = Verkauf.tAuftragPosition.kArtikel
LEFT JOIN (
SELECT Verkauf.tAuftragAttribut.kAuftrag AS ID, Verkauf.tAuftragAttributSprache.cWertVarchar AS Bestellnummer
                 FROM Verkauf.tAuftragAttribut
                 JOIN Verkauf.tAuftragAttributSprache ON Verkauf.tAuftragAttributSprache.kAuftragAttribut = Verkauf.tAuftragAttribut.kAuftragAttribut AND Verkauf.tAuftragAttribut.kAttribut = '202'
) AS tBestellnummer ON tBestellnummer.ID = Verkauf.tAuftragPosition.kAuftrag
WHERE Verkauf.tAuftrag.kKunde = @Key AND Verkauf.tAuftragPositionEckdaten.fAnzahlOffen > 0
 
  • Gefällt mir
Reaktionen: ngi
Ähnliche Themen
Titel Forum Antworten Datum
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Fehler Rechnungsupload Amazon FBA Business Kunde JTL-Wawi - Fehler und Bugs 0
Teillieferungen über WMS JTL-Wawi 1.11 0
Neu Amazon VCS Lite: Wie erstellt ihr unter Wawi 1.11 eine vollständige IGL-/ZM-Liste über alle Verkaufskanäle? User helfen Usern - Fragen zu JTL-Wawi 0
Neu IP Adresse einer Kontaktanfrage über den Shop herausfinden Allgemeine Fragen zu JTL-Shop 4
Neu Keine Labels für Warenpost international über Packtisch JTL-ShippingLabels - Fehler und Bugs 8
Neu Apple Pay über PayPal nicht zu verbinden (Die Domain-Verifizierungsdatei wurde nicht gefunden.) Technische Fragen zu Plugins und Templates 26
Neu CCV Pax A920 Terminal über O.P.I klappt nicht Allgemeine Fragen zu JTL-POS 0
Problem beim Import über Ameise/eBay JTL-Wawi 1.11 1
Neu Nach Update auf 1.11.10.0 Abgleich zu Ebay über 3 Stunden bei neuen Angeboten eBay-Anbindung - Fehler und Bugs 2
Beantwortet [WAWI-85758] Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 1
Dropshipping-Labeldruck beim Lieferanten über JTL-Wawi (Versandstandorte / Workflows) JTL-Wawi 1.10 0
Workflow Trigger bei Angebot-Import über Ameise JTL-Wawi 1.9 1
Neu Etikettendruck über Remotedesktop Fehler Arbeitsabläufe in JTL-Wawi 0
Neu JTL Shipping Fehler bei DHL Versand über WMS ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Kundenkonto über Mein-Konto nicht möglich JTL-Shop - Fehler und Bugs 4

Ähnliche Themen