Nach einiger Zeit als Systemadministrator vom Warenwirtschaftssystem AFS-Kaufmann SQL haben sich einige Auswertungen angesammelt die auf Userwunsch angelegt wurden. Diese sind natürlich punktgenau auf die eigenen Bedürfnisse angepasst. Wer möchte kann diese aber auch verändern um Sie den eigenen Wünschen anzupassen.

Unser System sieht wie folgt aus:

Warenwirtschaftsserver: Microsoft Windows Server 2003, MS SQL 2005, AFS Systemhaus SQL 10.4

Clients: Windows XP


Rechnungen-Gutschriften in einem Zeitraum

SELECT
(SELECT Nummer FROM Adressen WHERE Adressen.Adresse = Auftrag.Adresse1) AS Kundennummer,
Auftrag,
Vorgangsdatum,
Vorgangsnummer,
(SELECT Suchbegriff FROM Adressen WHERE Adressen.Adresse = Auftrag.Adresse1) AS Kunde,
(isNULL((SELECT ROUND(SUM(Preis*Anzahl),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag),0)) AS VKNetto,
(CASE WHEN STEUER = 2 THEN (SELECT ROUND(SUM(Preis*Anzahl*1.19),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag) ELSE (SELECT ROUND(SUM(Preis*Anzahl),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag) END) as VKBrutto,
(isNULL((SELECT ROUND(SUM(EK*Anzahl),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag),0)) AS EKNetto,
(isNULL((SELECT ROUND(SUM(EK*Anzahl*1.19),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag),0)) AS EKBrutto,
(isNULL((SELECT ROUND(SUM(Preis*Anzahl),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag),0)) - (isNULL((SELECT ROUND(SUM(EK*Anzahl),2) FROM Positionen WHERE Positionen.Auftrag = Auftrag.Auftrag),0)) AS Rohertrag,
Gedruckt,
Storniert,
Art,
Steuer
FROM Auftrag
WHERE Mandant = 1 AND Vorgangsdatum {ZEITRAUM} AND Gedruckt = True AND Storniert = False AND (Art = 4 OR Art = 7 OR Art = 13) AND (SELECT Suchbegriff FROM Adressen WHERE Adressen.Adresse = Auftrag.Adresse1) LIKE '%{SUCHBEGRIFF}%'
ORDER BY Vorgangsdatum DESC, VKNetto DESC

Auflistung aller Rechnungen und Gutschriften eines Zeitraumes die folgende Kriterien erfüllen:

- Rechnungen und Gutschriften wurden gedruckt
- Rechnungen und Gutschriften wurden nicht storniert
- Firmenbezeichnung enthält "Suchbegriff"

Als Suchkriterium lassen sich bei dieser Auswertung ein Zeitraum einstellen sowie der Name des Kunden der ausgewertet werden soll.


Lagerbestand aller Läger (logistisch)

SELECT        
Artikel.Artikelnummer,
Artikel.Bezeichnung,
Artikel.Bestand,
Artikel.EK,
(SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')) AS Hauptlager,
(SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '8')) AS Nebenlager1,
(SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '9')) AS Nebenlager2s,

die Auswertung habe ich an dieser Stelle gekürzt und unseren wirklichen Lagernamen verändert ...

(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')), 0) * Artikel.EK)+(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '8')), 0) * Artikel.EK)+(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '9')), 0) * Artikel.EK)+(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '2')), 0) * Artikel.EK)+(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '10')), 0) * Artikel.EK)+(isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '11')), 0) * Artikel.EK) AS Lagerwert,

ab hier gehts ungekürzt weiter

isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')), 0) * Artikel.EK AS Hauptlagerwert,
isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '8')), 0) * Artikel.EK AS Nebelagerwert1,
isNULL((SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '9')), 0) * Artikel.EK AS Nebenlagerwert2,
FROM Artikel
WHERE (Artikel.Artikelnummer <> '' AND Artikel.Bezeichnung <> '' AND Artikel.Bezeichnung LIKE '%{SUCHBEGRIFF}%')
AND LEN(Artikel.Artikelnummer) = 8
AND Artikel.Art = '0'
ORDER BY Artikel.Bezeichnung

Diese Auswertung listet die Bestände und die dazugehörigen Warenwerte der einzelnen Läger auf.

Es werden alle Warenbewegungen berücksichtigt, auch Warenbewegungen zu denen es noch keine Rechnung gibt, deswegen logistisch!

Bedingung:
- der Artikel muss eine Artikelnummer haben
- der Artikel muss eine Artikelbezeichnung haben
- die Artikelbezeichnung muss den Suchbegriff enthalten
- die Artikelnummer muss 8 Zeichen lang sein


Artikelverkäufe innerhalb eines Zeitraumes (buchhalterisch)

SELECT
(SELECT Artikelnummer FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) AS ArtNr,
(SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) AS Bezeichnung,
(SELECT Nummer FROM Adressen WHERE Adressen.Adresse = Positionen.Adresse) AS KdNr,
(SELECT Firma1 FROM Adressen WHERE Adressen.Adresse = Positionen.Adresse) AS Kundenname,
Positionen.Anzahl AS Menge,
Positionen.EK * Positionen.Anzahl AS EK,
Positionen.Preis * Positionen.Anzahl AS VK,
(Positionen.Preis * Positionen.Anzahl) - (Positionen.EK * Positionen.Anzahl) AS Rohertrag,
(SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) AS Art,
(SELECT Vorgangsnummer FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) AS Vorgang,
Positionen.Lager,
(SELECT Nettogewicht FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) AS Nettogewicht,
( (SELECT Nettogewicht FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) * Positionen.Anzahl) AS SummeNettogewicht,
(SELECT Land FROM Adressen WHERE Adressen.Adresse = Positionen.Adresse) AS Kundenland
FROM Positionen
WHERE (SELECT Vorgangsdatum From Auftrag WHERE Auftrag.Auftrag = Positionen.Auftrag) {ZEITRAUM}
AND (SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) LIKE '%{SUCHBEGRIFF}%'
AND (SELECT Storniert FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = False
AND (SELECT Gedruckt FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = True
AND ((SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = 4 or (SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = 7)
AND (SELECT Artikelnummer FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) <> ''
AND LEN((SELECT Artikelnummer FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel)) = 8
AND (SELECT Art FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) = '0'
ORDER BY (SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel)

Abverkäufe bestimmter Artikel eines bestimmten Herstellers in einem bestimmten Zeitraum!

Auflistung aller Positionen von Rechnungen und Gutschriften die folgende Kriterien erfüllen:

- Rechnungen und Warengutschriften = gedruckt und nicht storniert
- Rechnungen und Gutschriften sind innerhalb eines bestimmten Zeitraumes
- Mandant = 1
- Suchbegriff ist in der Artikelbezeichnung enthalten
- Es handelt sich um einen angelegten Artikel der eine Artikelnummer hat

Differenzen zur Rechnungsübersicht ergeben sich zum Beispiel durch Artikel die nicht als Stammartikel angelegt sind, sondern als freie Artikel und somit keine Artikelnummer haben!


Artikelverkäufe innerhalb eines Zeitraumes (logistisch)

SELECT
(SELECT Artikelnummer FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) AS ArtNr,
(SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) AS Bezeichnung,
(SELECT Nummer FROM Adressen WHERE Adressen.Adresse = Positionen.Adresse) AS KdNr,
(SELECT Firma1 FROM Adressen WHERE Adressen.Adresse = Positionen.Adresse) AS Kundenname,
Positionen.Anzahl AS Menge,
Positionen.EK * Positionen.Anzahl AS EK,
Positionen.Preis * Positionen.Anzahl AS VK,
(Positionen.Preis * Positionen.Anzahl) - (Positionen.EK * Positionen.Anzahl) AS Rohertrag,
(SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) AS Art,
(SELECT Vorgangsnummer FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) AS Vorgang,
Positionen.Lager,
(SELECT Bestand FROM LAGERB WHERE (Positionen.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')) AS Hauptlager
FROM Positionen
WHERE (SELECT Vorgangsdatum From Auftrag WHERE Auftrag.Auftrag = Positionen.Auftrag) {ZEITRAUM}
AND (SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) LIKE '%{SUCHBEGRIFF}%'
AND (SELECT Storniert FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = False
AND (SELECT Gedruckt FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = True
AND ((SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = 4 or (SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = 7 or  (SELECT Art FROM Auftrag WHERE Positionen.Auftrag = Auftrag.Auftrag) = 13)
AND (SELECT Art FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel) <> 1
ORDER BY (SELECT Bezeichnung FROM Artikel WHERE Positionen.Artikel = Artikel.Artikel)   

Abverkäufe bestimmter Artikel eines bestimmten Herstellers in einem bestimmten Zeitraum!

Auflistung aller Positionen von Rechnungen und Gutschriften die folgende Kriterien erfüllen:

- Rechnungen und Gutschriften = gedruckt und nicht storniert
- Rechnungen und Gutschriften sind innerhalb eines bestimmten Zeitraumes
- Mandant = 1
- Suchbegriff ist in der Artikelbezeichnung enthalten
- Es handelt sich um einen angelegten Artikel der eine Artikelnummer hat

Differenzen zur Rechnungsübersicht ergeben sich zum Beispiel durch Artikel die nicht als Stammartikel angelegt sind, sondern als freie Artikel und somit keine Artikelnummer haben!

Es handelt sich bei dieser Auswertung um ein logistische Auswertung. Wenn die Ware im Januar verschickt wurde, die Rechnung aber erst im Februar geschrieben wurde, dann werden die Artikel im Januar mitgezählt.


Kundenspezifische Artikelnummern

SELECT DISTINCT
Artikelnummer,
Artikel_Nummer.Nummer AS KDArtNr,
Artikel.Bezeichnung,
(SELECT TOP 1 Preis FROM Rabatt WHERE (Rabatt.Artikel = Artikel_Nummer.Artikel AND Rabatt.Adresse = (SELECT DISTINCT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) AS Preis,
(SELECT TOP 1 Datum FROM Rabatt WHERE (Rabatt.Artikel = Artikel_Nummer.Artikel AND Rabatt.Adresse = (SELECT DISTINCT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) AS Preisdatum,
Adressen.Nummer,
Adressen.Firma1
FROM Artikel_Nummer
INNER JOIN Rabatt ON Rabatt.Artikel = Artikel_Nummer.Artikel
INNER JOIN Adressen ON Adressen.Adresse=Rabatt.Adresse
INNER JOIN Artikel ON Artikel.Artikel = Artikel_Nummer.Artikel
WHERE Artikel_Nummer.Nummer <> ''
AND Adressen.Firma1 LIKE '%{SUCHBEGRIFF}%'
AND Artikel_Nummer.Adresse = Adressen.Adresse
ORDER BY Artikel.Bezeichnung       

Suchbegriff = Kundenname (z.B. Ingram oder Actebis)

Diese Auswertung zeigt alle Artikel für die beim gesuchten Kunden eine kundenspezifische Artikelnummer hinterlegt ist. Wenn ein Artikel nicht aufgeführt ist, dann ist für diesen Kunden noch keine kundenspezifische Artikelnummer hinterlegt worden.

Achtung: Manche Kunden sind doppelt angelegt (mehrere Lieferadressen und/oder Rechnungsadressen) bitte beachten das man auch den richtigen Kunden auswertet!!!

###########################################################################

Kundenspezifische Preise

SELECT
(SELECT Top 1 Firma1 FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%' OR Nummer LIKE '%{SUCHBEGRIFF}%') AS Kunde,
Artikel.Artikelnummer,
Artikel.Bezeichnung,
(SELECT TOP 1 Preis FROM Rabatt WHERE (Rabatt.Artikel = Artikel.Artikel AND Rabatt.Adresse = (SELECT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%' OR Nummer LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) AS Preis,
(SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')) AS Hauptlager,
Artikel.EK,
(SELECT TOP 1 Bezeichnung FROM Rabatt WHERE (Rabatt.Artikel = Artikel.Artikel AND Rabatt.Adresse = (SELECT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%' OR Nummer LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) AS Ursprung,
(SELECT TOP 1 Datum FROM Rabatt WHERE (Rabatt.Artikel = Artikel.Artikel AND Rabatt.Adresse = (SELECT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%' OR Nummer LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) AS Preisanlage,
Artikel.Zusatzfeld16 AS VPE  
FROM Artikel
WHERE Artikel.Bezeichnung <> ''
AND Artikel.Artikelnummer <> ''
AND LEN(Artikel.Artikelnummer) = 8
AND (SELECT TOP 1 Preis FROM Rabatt WHERE (Rabatt.Artikel = Artikel.Artikel AND Rabatt.Adresse = (SELECT Top 1 Adresse FROM Adressen WHERE Firma1 LIKE '%{SUCHBEGRIFF}%' OR Nummer LIKE '%{SUCHBEGRIFF}%')) ORDER BY Zaehler DESC) <> ''
ORDER BY Artikel.Bezeichnung             

SUCHBEGRIFF = Firmenname (z.B. Ingram oder Act für Actebis)

Diese Auswertung zeigt alle für den Kunden hinterlegten Preise an.

Berücksichtigt werden dabei vorerst nur Preise die Mengenunabhängig sind!!!

Achtung: Manche Kunden sind doppelt angelegt (mehrere Lieferadressen und/oder Rechnungsadressen). Die Auswertung zeigt dann nichts an.

Wenn das der Fall ist bitte nicht nach dem Namen sondern nach der Kundennummer suchen!!!



Artikelliste mit Hauptlagerbestand und Preisen und Links

SELECT
Artikel.Artikelnummer,
Artikel.Bezeichnung,
(SELECT Bestand FROM LAGERB WHERE (Artikel.Artikel = Lagerb.Artikel AND Lagerb.Ort = '1')) AS Hauptlager,
Artikel.EK,
Artikel.VK1,
Artikel.VK2,
Artikel.VK3,
Artikel.VK4,
'http://artikeldaten.domain.de/' + Artikel.Artikelnummer + '.html' AS Beschreibung,
'http://artikeldaten.domain.de/' + Artikel.Artikelnummer + '-1.jpg' AS Bild,
'http://artikeldaten.domain.de/' + Artikel.Artikelnummer + '.pdf' AS Datenblatt
FROM Artikel
WHERE (Artikel.Artikelnummer <> '' AND Artikel.Bezeichnung <> '' AND Artikel.Bezeichnung LIKE '%{SUCHBEGRIFF}%')
AND LEN(Artikel.Artikelnummer) = 8
AND Artikel.Art = '0'
ORDER BY Artikel.Bezeichnung

Diese Auswertung listet alle Artikel auf.

Enthalten sind die Spalten Hauptlagerbestand, EK, VKs, und die Links zu der Beschreibung, dem Bild1, und dem Datenblatt.



Diese Liste könnte ich noch um einges erweitern. Aus verständlich Gründen lassen sich jedoch Auswertungen die einen deutlichen Rückschluss auf Firmeninternas zulassen nicht im Internet veröffentlichen.

Teilen