KL
Verpackungsrechner
v7.0 · KL-Kartons · Bin-Fit-Engine · Verteiler-integriert
Nutzer:
Ändern v7.0

🚀 v7 · Advanter-Excel-Import optional — sonst manuelle Eingabe unten

Präzise-Modus: Alle 3 Excels vom WTV-Büro geplant. Karton-Handlings aus Material-Liste (KSt 50.01) → präzise Berechnung.

kopf_<AT>.xlsx
<AT>.xlsx (ohne Details)
Advanter_<Kunde>_Import.xlsx
<AT>_versand_verpackung.xlsx

1. Auftrag

Manuelle Eingabe · Angebotsphase (v6-Legacy, ohne Advanter-Excel)

2. Eingaben

Stk
Sorten
Stk
Stk
Stk
mm

Setup (Stk pro Größe)

Stk
Stk
Stk

3. Karton-Mix (Σ über alle LS)

Stk pro Karton-Typ. Σ Karton-Mix muss = n_LS × Ø Kartons sein. Tubes & Paletten zählen separat.

⚙ Konstanten v6 (12 statt 22)

Aufbau & Pick

Min
Min
Min
Min/m

Tisch-Layout

m
mm

Setup-Zeiten pro Größe

Min/Stk
Min/Stk
Min/Stk
Min

Chaos

Etiketten-Basis pauschal

Min

Karton-Zeiten (Pack-Min/Stk) sind pro Typ in Stammdaten definiert — siehe Stammdaten-Tab (Phase 3).

📐 Formel-Dokumentation v6
T_GesamtT_Gesamt = T_Aufbau + n_LS × T_pro_LS + T_Chaos

T_Aufbau= Aufbau-Pauschal + anz_Karton-Typen × t_Karton + Setup-S/M/L + n_LS × Setup_pro_LS [v6.8: Pauschal statt Sorten × t_UF]

T pro LS= T_Pick + (T_Pack_Karton + T_Pack_Tube + T_Pack_Palette + T_Etikett) / n_LS
T_Pick = Stk/LS × (Pickzeit + Wegstrecke_m × Wegetakt)
Wegstrecke_m = (Sorten × Median_Breite_mm / 1000) / Layout_Divisor
Layout_Divisor: einreihig=1, zweireihig=2 (nur bei parallelen Tischen mit Mittelgang)

T_Pack_*= Σ Stk_Typ × Min_pro_Stk_Typ (eine Summe pro Kategorie)
T_Etikett= Σ alle Karton-Stk × etk_pro_pkt × etk_basis

T_Chaos = n_LS × T_pro_LS × Chaos%

BUG-FIX v6Σ Karton-Stk muss = n_LS × Ø_Kartons.
Tubes & Paletten zählen NICHT in diese Summe (Bug #2).
"Anzahl Kartongrößen" als Eingabe ENTFERNT — wird aus Mix gezählt (Bug #1).
T_Gesamt
0 Min
Stunden
0
PT (à 7,5h)
0

Aufschlüsselung v6-Legacy

T_Aufbau Min
T_Pick pro LS Min
T_Pack Kartons Min
T_Pack Paletten Min
T_Etikett gesamt Min
T pro LS Min
Chaos-Aufschlag%
T_Chaos absolut Min
Anz. Karton-Typen genutzt
Reihenlänge gesamt m
Tische benötigt Stk
⏳ ...

Vorgabe-Text

Neue Stichprobe erfassen

Ein Karton aus einem Auftrag wird testweise gepackt. Stoppuhr + grobe %-Aufteilung. Theorie wird automatisch berechnet.

Bezug

Test-Karton

Stk
Sorten
Stk

Sonderhandling (nur was am Test-Karton war)

Praxis-Messung

Min

Grobe Aufteilung in % (Σ = 100):

%
%
%
%
Live-Vergleich
%
Praxis
Min
Theorie
Min

Δ je Komponente

Pick (Praxis / Theorie)
Pack (Praxis / Theorie)
Etk (Praxis / Theorie)
Sonder (Praxis / Theorie)
⏳ Auftrag wählen + Werte eintragen

Ampel-Schwellen (konfigurierbar): grün < 10%, gelb < 25%, rot ≥ 25%.

Filter:
Filter:
Filter:

Datenexport

Vollständiger Export aller Daten zur Auswertung in Excel/Power BI.

Statistik

Lädt...

API für externe Tools

Excel Power Query oder Power BI können die Daten live via API abrufen:

Aufträge JSON: /api/auftraege
Feedback JSON: /api/feedback
Filter Beispiel: /api/auftraege?from=2026-05-01&to=2026-05-31

🧮 Algorithmen-Übersicht

Alle Algorithmen die der Rechner intern nutzt — Zweck, Input, Output, kritische Parameter, Code-Zeile. Sortiert nach Aufruf-Reihenfolge (von Upload bis Empfehlung).

1 · Excel-Parser (Upload)
parseKopfExcel(rows) · Auftragskopf
Zweck
Extrahiert Auftrags-Metadaten aus dem Advanter-Kopf-Excel: Auftragsnummer, Kunde, Adressen, Liefereinteilungen, Versandart, Verpackungsanweisung-Freitext, Sachbearbeiter, Objekt.
Input
Excel-Rows als 2D-Array
Output
{auftragNr, kunde, adressen, liefereinteilungen, versandart, verpackungsanweisung, sachbearbeiter, ...}
Code
Zeile 4704
parseVerteilerExcel(rows) · Lieferverteiler
Zweck
Parst Lieferverteiler-Excel (Deichmann-Long-Format). Erkennt unique Adressen, Zentrallager-Kennzeichen, Motive pro Adresse, Cluster-Bildung (klein/mittel/groß/xxl/zentrallager).
Input
Excel-Rows
Output
{unique_adressen, total_zeilen, pro_adresse, is_zentrallager}, Cluster-Aggregate
Code
Zeile 2622
parseProdExcel(rows) + parseTitelAusProduktion(rows) · Produktion
Zweck
Parser der Produktions-Positionsliste — extrahiert pro Titel: Motiv-ID, Format (B×H), Menge, Material-Beschreibung, Sortenart, KSt, Y-Präfix-Erkennung (Einlagerung, nicht versenden), gerillt/faltbar-Flag.
Input
Excel-Rows
Output
Array von {titelId, format:{b,h}, menge, material_beschr, sortenart, kostenstelle, einlagerung, hat_vorverpacken}
Code
Zeile 2419 + 4735
2 · Sortenklassifikation & Verpackmodus
rollModusTitel(t) · Falt/Roll-Default
Zweck
Karton-unabhängiger Default-Verpackmodus pro Titel: rigide · flach · kern · gerollt_verpackt. Basiert auf Sortenart, KSt-Präfix, rollbar-Flags.
Regel
Rigide (Alu-Dibond, PVC-Hartschaum, Wabenplatte) → rigide. Papier/Textil/Folie → gerollt oder flach je nach Größe. Sublimation → faltbar, UV-Druck → rollen.
Output
Modus-String
Code
Zeile 1143
bestimmeVerpackModus(t, kartonVe) · Karton-abhängig
Zweck
Karton-abhängige Modus-Wahl (Fix Felix 2026-07-03): Wenn Motiv flach nicht in gewählten Karton passt aber gerollt schon → gerollt_verpackt. Rigide/Kern-Modus bleibt unverändert (Regel-Muss).
Input
Titel + gewählte Karton-VE
Output
Endgültiger Modus für diesen Karton
Code
Zeile 1157
50 %-Rill-Regel (F4) · Faltbare Ware
Zweck
Gerillte/faltbare Ware belegt gefaltet nur ~50 % der Original-Grundfläche. Wird in Bin-Fit-Belegung angewendet damit A0-Karton mit Rille nicht als A0 sondern als ~A2 kalkuliert wird.
Auslöser
Produktionsliste enthält Rille-Sub-Position (Rill-Werk) für den Titel
Code
Zeile 1219 (F4-Kommentar)
3 · Bin-Fit-Belegung (Karton-Motiv-Zuordnung)
passtInKarton(t, karton) · Motiv-Karton-Fit
Zweck
Prüft ob Einzel-Motiv (flach/gerollt) in Karton-Innenmaße passt. Differenziert nach Modus.
Regel
Rigide → platteFitInKarton() (Diagonal-Prüfung). Rollbar (kern/gerollt_verpackt) → bMin ≤ l (kürzeste Seite muss in Karton-Länge). Flach → bMax ≤ l ∧ bMin ≤ b.
Code
Zeile 1407
platteFitInKarton(maxCm, minCm, l, b, h) · 3D-Diagonal-Fit
Zweck
Rigide Platte kann in 4 Modi in Karton passen — nicht nur flach am Boden.
Modi
flach (max ≤ l ∧ min ≤ max(b,h)) · boden-diag (max ≤ √(l²+b²) ∧ min ≤ h) · seiten-diag (max ≤ √(l²+h²) ∧ min ≤ b) · quer-diag (max ≤ √(b²+h²) ∧ min ≤ l)
Output
Modus-Name oder null
Code
Zeile 1682
motivPasstInKarton(analyse, kartonVE) · Auftragsweit
Zweck
Prüft ob alle Motive eines Auftrags in einen Karton-Typ passen. Semantik-Differenz Mixed-Aufträge (v6.8.4): Rollbar-Übergrößen bekommen extra Karton, Rigide-Übergrößen kommen auf Palette.
Output
{flach, gerollt, rigide_ok, rollbar_ok, insgesamt_ok, warnung, hat_rigide, hat_rollbar, hat_kern}
Code
Zeile 1712
gruppiereFuerSammelrollen(titel) · Multi-Motiv-Rollen
Zweck
Fasst mehrere „gerollt_verpackt"-Motive zusammen in eine Sammelrolle, wenn sie den gleichen Karton-Slot bedienen. Reduziert Karton-Anzahl.
Code
Zeile 1441
4 · Karton-Empfehlung (Bin-Fit + Optimum-Score)
empfehleKartonMixNachBinFit(analyse, titel, adressen) · Kern-Bin-Fit
Zweck
Empfiehlt Karton-Set pro Filial-Adresse via Multi-Kriterien-Score. Kern-Rollen bekommen separaten CP-Karton, Rest-Motive kleinsten passenden Karton (min. 30 % Auslastung Ziel).
Ansatz
Ruft findeOptimaleKartonKombi() — probiert alle sinnvollen Karton-Kombinationen durch, wählt niedrigsten Total-Score.
Output
Array [{ve, menge_pro_adr}]
Code
Zeile 3392
bewerteKartonKombi(motiveProAdr, kombi_ves, anz_filial) · Multi-Kriterien-Score
Zweck
Bewertet eine Karton-Kombi für einen Auftrag mit Total-Score. Kombi = ∞ wenn Motive nicht abgedeckt.
Score-Komponenten
Fracht (Paletten × 55 €) + Handling-Zeit (Kartons × min × 0,50 €/min) + Karton-Material (1 €/Karton) + EU-PPWR-Leerraum-Strafe (20 €/Karton bei >50 % Leerraum)
Konstanten
SCORE_KOSTEN.palette_eur=55 · arbeitsminute_eur=0.5 · karton_eur=1 · leerraum_strafe_eur_ppwr=20 · ppwr_leerraum_grenze=0.50
Code
Zeile 3250 (Konstanten Zeile 3239)
waehleOptimalenKarton(rolle_cm, artikel_pro_adr, gewicht_kg) · Fallback
Zweck
Regel-basierter Fallback wenn Multi-Kriterien-Score keinen Kandidaten findet. Kleinster Karton dessen Innenmaß die Rolle aufnimmt + genug Volumen für Artikel-Menge.
Schwellen
≥160 cm → VE-0204.004 · ≥140 → VE-0204.003 · ≥120 → VE-0204.002 · ≥90 → dicht/schwer? Groß-Karton, sonst CP · ≥60 → Standard Größen · ≥40 → A3 · sonst A4
Code
Zeile 3210
empfehleStrategie(analyse) · Karton-Auswahl UI
Zweck
Baut initiale Karton-Auswahl-Map {ve: menge_pro_adresse} für UI-Darstellung. Aggregiert Bin-Fit-Empfehlung + Sondergrößen-Wellpappe + Polybeutel (bei Sublimation) + Palette-Trigger.
Palette-Trigger (Felix 2026-07-06)
> 30 kg/Adr ODER > 175 cm Karton-Länge ODER > 10 Kartons/Adr
Code
Zeile 3432
5 · Strategien-Engine (Kosten-optimierter Versand)
findeVerpackungsstrategien(analyse, anz_filial, anz_zl, artikel_gesamt)
Zweck
Vergleicht bis zu 4 Strategien und liefert sortierte Liste (günstigste passende zuerst).
Strategien
1) 1-Karton — alles in 1 Paket pro Adresse
2) 2-Karton-Split — schmaler CP-Karton für Kern-Rolle + kompakter Rest-Karton (2 Standard-Pakete statt 1 Sperrgut)
3) Palette-unterverpackt — Kartons auf Europalette an Zentrallager
4) Palette-direkt — ohne Karton auf Palette (nur bei Kundenanweisung oder rigide > 78 cm)
Sortier-Rank
ZL-only → alle Palette-* zuerst · palette_pflicht (30 kg/10 K/175 cm) → Palette-* zuerst · anz_zl > 0 → palette-unterverpackt · sonst → nach Kosten aufsteigend
Code
Zeile 2962
paketKosten(kartonLenCm) · Fracht-Approximation
Zweck
Grobe Fracht-Kosten-Schätzung pro Paket basierend auf Karton-Länge. Nicht auftragskonditions-genau — Richtwerte 2026.
Staffel
> 175 cm → 45–95 € (DHL Sperrgut+ / Spedition)
> 120 cm → 15–30 € (DPD/GLS Sperrgut)
> 60 cm → 8–12 € (DHL/DPD Paket)
sonst → 5–8 € (DHL Paket)
Code
Zeile 2979
VERSENDER + PALETTE_CARRIER · Dienstleister-Stammdaten
Zweck
Statische Referenz-Tabelle für Versender-Empfehlung nach Auftragsprofil.
Paket-Versender
DHL Paket (31.5 kg / 120 cm / 300 cm-Gurt / 7 €) · DPD (31.5/175/300/7) · GLS (40/200/300/7) · DHL Sperrgut (50/175/360/25) · UPS (70/274/400/12) · DACHSER Palette (1000/220/999/60)
Paletten-Speditionen
DACHSER 60–120 € · DB Schenker/DSV 55–110 · DHL Freight 35–75 · Kühne+Nagel 40–80 · GLS FreightParcel 35–80 · DPD/UPS = kein Palette-DE
Code
Zeile 1636 (VERSENDER), 1649 (PALETTE_CARRIER)
kunde_will_palette_direkt · Freitext-Regex
Zweck
Erkennt Kundenwunsch „direkte Palette" aus Verpackungsanweisung- + Versandart-Freitext des Auftragskopfs/Verteilers.
Regex
/palette.direkt|direkt.palette|ohne.karton|nur.palette|palette.ohne.karton|palettenversand|palette.per.spedition|spedition|stueckgut|stückgut/i
Code
Zeile 2971
6 · D1-Stammdaten (Ziel-Architektur)
verpackung_pool · 160 körperliche Verpackungsartikel
Zweck
Master-Stammdaten aller körperlichen Verpackungen aus Navision-300er. Ersetzt hardcoded PALETTE_KAPAZITAET nach Schritt 3.
Kategorien
KARTONAGEN 29 · HÜLSEN 20 · VERSANDTASCHEN 11 · WELLPAPPE 8 · LADEMITTEL 47 · POLYBEUTEL 16 · SCHLAUCHFOLIE 10 · POLSTER 9 · STRETCH_UMREIFUNG 8 · STANZVERPACKUNG 2
Advanter-Bridge
322/490 (66 %) matchen über Info Artikelnummer Alt, 90 %+ bei physischen Kartons
Migration
0008_verpackungspool.sql · 0009_verpackungspool_data.sql
sorten_klassifikation · Advanter-WG → Material-Klasse
Zweck
Map von 20 Advanter-Warengruppen auf Material-Klasse + Pack-Strategie. Für Auftragspositionen-Parser (Ziel 2 Zeit-Modul).
Regeln (Felix 2026-07-06)
Keder + UV → tube_only (Kern rollen) · Keder + Sublimation → karton_falt (faltbar) · SK-Folie → tube_only · Hartschaum/Alu → karton_rigide
Nearest-Neighbor · Handling-Zeit-Vererbung (kommt in Schritt 3)
Zweck
Für die 149 noch nicht kalibrierten Pool-Artikel: Handling-Zeit vom nächsten kalibrierten Anker erben (max Innenmaß-Differenz ≤ 10 cm pro Achse, nur innerhalb selber Kategorie).
Anker
11 heute kalibrierte Kartons in PALETTE_KAPAZITAET. Später überschreibbar bei BDE-Ist-Kalibrierung.
Regel
Felix 2026-07-06: „5–10 cm Unterschied → gleiche Zeit"
⚠️ Bekannte Regel-Lücken (Stand 2026-07-06)
Bug 1 — Versender-Widerspruch: Strategie „1-Karton Paketversand" zeigt DACHSER-Palette als Versender bei > 175 cm Länge. Ursache: paketKosten() gibt Sperrgut/Spedition-Preis zurück, Strategie-Titel bleibt „1-karton". Fix: bei Karton-Länge > 175 cm Strategie umbenennen in „Sperrgut / Spedition-Paket" oder auf Palette-Strategie umschwenken.
Bug 2 — Container mit 0 % Auslastung als „günstigste" gewählt: Bei sehr großen rollbaren Motiven (3000×2700 mm) matcht nur der 118 cm Container → wird zwangsläufig als Sieger gewählt trotz 0 % Volumen-Auslastung. Fix: PPWR-Leerraum-Strafe (20 €/Karton) im Score zu schwach — Faktor auf 60–80 € erhöhen oder Palette bevorzugen wenn Container mit < 5 % Auslastung „gewinnt".
Bug 3 — gerollt-verpackt-Rolle nicht abgedeckt: Motive T-3/T-4/T-5/T-6 im 666-Adressen-Test fallen mit „kein Karton für gerollt-verpackt-Rolle" durch. Ursache: bewerteKartonKombi filtert Kombi wenn kein Karton lang genug ist. Fix: Auto-Ergänzung eines CP-Kartons (VE-0204.*) als zweiter Karton in Kombi wenn Roll-Länge > Standardkarton.
Bug 4 — Palette-Trigger greift nicht bei großen Container-Kartons: Neue Regel kartonsProAdrSumme > 10 prüft Karton-Anzahl, nicht Karton-Größe. Wenn 1 Container-Karton pro Adresse, aber Karton = 118 cm lang: Regel triggert nicht. Fix: Zusatz-Trigger „Karton-Innenlänge > 100 cm → Palette empfohlen" oder „Karton-Volumen > 500 l → Palette".

🛠 Verpackungspool-Verwaltung 160 Artikel · D1 verpackung_pool

Direkt-Edit von EK, Bestand, Maßen und Palette-Kapazitäten. Änderungen greifen sofort nach nächstem Reload des Rechner-Tabs. Gelbe Zeile = kalibriert (Anker) · weiß = vererbt/default.

Navi Bezeichnung Kat. Advanter B×H×T mm EK € Bestand Meldebestand Pal-Kap. Zeit min akt.
Klick „🔄 Neu laden" um Pool anzuzeigen