Neu Übersicht Verpackungsverordnung Gewichte erhalten

thowi

Sehr aktives Mitglied
8. Juni 2018
424
64
Hallo zusammen,

die Auswertung wird ja über die Ameise ab Version 1.4 möglich sein (issue Tracker Link). Ich hab jetzt schonmal was übergangsweise gebaut, um die Verpackungsgewichte pro Bestellung auszulesen, zu der es eine Rechnung gibt.

Legt euch einfach 2 eigene Felder (dezimal) in den Artikeln an und pflegt dort die Gewichte in Gramm pro Artikel.
Im Code müsst ihr lediglich die IDs der Attribute tauschen. Führt den Code der letzten Zeile aus um rauszufinden, welche IDs eure eigenen Felder haben und ändert die IDs (bei mir 149 und 150) im Code auf eure IDs, fertig ist die Auswertung.

ich hab mir den Code als externe SQL ODBC Datenquelle im Excel hinterlegt und lasse mir die Daten beim Öffnen der Datei aktualisieren - so habe ich immer den aktuellsten Stand. Im Excel kann man dann noch eintragen, was man pro Land lizensiert hat und per bedingter Formatierung warnen, wenn x % der Menge erreicht ist.

Hier mein SQL, ohne Gewähr:

SQL:
/*
Zeigt Gewichte für Kunststoff und Papier pro Land für das aktuelle Jahr
*/

SELECT
TLA.cLand AS 'Lieferland'
,SUM(ATS_149.fWertDecimal)/1000 AS 'Papier-Pappe-Karton in kg'
,SUM(ATS_150.fWertDecimal)/1000 AS 'Kunststoffe in kg'
FROM tBestellPos TBP
INNER JOIN tBestellung TB ON TBP.tBestellung_kBestellung = TB.kBestellung
INNER JOIN tRechnung TR ON TB.tRechnung_kRechnung = TR.kRechnung    /* Nur Aufträge, wo schon eine Rechnung geschrieben ist */
JOIN tlieferadresse TLA ON TB.kLieferAdresse = TLA.kLieferAdresse
LEFT JOIN tArtikelAttribut AT ON TBP.tArtikel_kArtikel = AT.kArtikel
LEFT JOIN tArtikelAttributSprache ATS_149 ON AT.kArtikelAttribut = ATS_149.kArtikelAttribut And AT.kAttribut = 149    /* 150 = Papier-Pappe-Karton */
LEFT JOIN tArtikelAttributSprache ATS_150 ON AT.kArtikelAttribut = ATS_150.kArtikelAttribut And AT.kAttribut = 150    /* 150 = Kunststoffe */
WHERE TBP.cArtNr <> ''
AND YEAR(TR.dErstellt) = YEAR(getdate())    /* Dieses Jahr */
AND TB.cType = 'B'                            /* Nur Bestellungen und keine Umlagerungen. Umlagerungen wären Typ U */
GROUP BY TLA.cLand

-- select * from tAttributSprache            /* Check der Attribut-ID */

Vielleicht hilft das dem ein oder anderen.
 

thowi

Sehr aktives Mitglied
8. Juni 2018
424
64
Für die Version 1.4 gibt's ja nen schönen Ameisenexport. Die Ergebnisse von dort kann man ja prima in eine Pivot-Tabelle ballern und dort dann alles erkennen. Ich bin aber trotzdem ein Fan davon, ein SQL im Excel einzurichten und es direkt fertig ausgerechnet und topaktuell beim Öffnen der Excel-Datei zu haben, ohne manuell was tun zu müssen.

Daher hier mein Update des o.g. Codes für die Version 1.4 - getestet mit 1.4.17.2

SQL:
/*
Zeigt Gewichte fuer Kunststoff und Papier pro Land fuer das aktuelle Jahr
*/
SELECT LA.cLand AS 'Lieferland',
       SUM(ATS_149.fWertDecimal)/1000 AS 'Papier-Pappe-Karton in kg',
       SUM(ATS_150.fWertDecimal)/1000 AS 'Kunststoffe in kg'
FROM tBestellPos TBP
INNER JOIN tBestellung TB ON TBP.tBestellung_kBestellung = TB.kBestellung
INNER JOIN tRechnung TR ON TB.tRechnung_kRechnung = TR.kRechnung    /* INNER weil nur Auftraege, wo schon eine Rechnung geschrieben ist */
INNER JOIN tLieferadresse LA ON TB.kLieferAdresse = LA.kLieferAdresse        /* NICHT auf tAdresse joinen, denn da liegen die Kundenadressen. Beim Auftrag wird von da aus in die tRechnungs- bzw. tLieferadresse kopiert, damit das unveränderlich gesichert ist. */
LEFT JOIN tArtikelAttribut AT ON TBP.tArtikel_kArtikel = AT.kArtikel
LEFT JOIN tArtikelAttributSprache ATS_149 ON AT.kArtikelAttribut = ATS_149.kArtikelAttribut AND AT.kAttribut = 149    /* 150 = Papier-Pappe-Karton */
LEFT JOIN tArtikelAttributSprache ATS_150 ON AT.kArtikelAttribut = ATS_150.kArtikelAttribut AND AT.kAttribut = 150    /* 150 = Kunststoffe */
WHERE TBP.nType = 1                                                    /* nur richtige Artikel */
  AND YEAR(TR.dErstellt) = YEAR(getdate())                            /* Dieses Jahr */
  AND TB.cType = 'B'                                                /* Nur Bestellungen und keine Umlagerungen. Umlagerungen waeren Typ U */
GROUP BY LA.cLand
ORDER BY LA.cLand

-- select * from tAttributSprache                                    /* Check der Attribut-ID */
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Ante und windsport.de

Bolschi

Gut bekanntes Mitglied
2. Mai 2016
222
8
Hallo thowi, das klingt sehr spannend. Danke für deinen Beitrag. Ich würde es gerne umsetzten. Hierzu eine Frage:
Das Verpackungsmaterial berechnet sich bei uns eher pro Sendung (Karton, Fyler und Packetband) Wie ich deinen Beitrag lese erhält aber jeder Artikel ein eigenes Feld. Was passiert also wenn der Kunde 5 verschiedene Artikel bestellt ich diese aber nur in einer Sendung packe. Die Artikelumverpackungen sind bei uns schon durch die Markenhersteller lizensiert insofern müsste ich nur die Versandverpackung+Füllmaterial lizensieren.
Marco
 

thowi

Sehr aktives Mitglied
8. Juni 2018
424
64
Mit meiner Abfrage kann man nur produktspezifische Verpackung ermitteln, also die Artikelverpackung selbst. Z.B. wenn du einen Artikel hast der in einer Pappschachtel eingepackt / eingeschweißt ist.
Die Versandkartons und alles weitere, was nicht artikelspezifisch ist, musst du auf andere Weise ermitteln, das geht hiermit nicht.