Zum Hauptinhalt springen

JTL-Funktionsattribute — Kompendium

Eine Datenquelle pflegen, automatisch in ERP und Kasse. Alle bis_*-Attribute auf einen Blick.

Was sind Funktionsattribute?

In JTL-Wawi werden Funktionsattribute zentral unter Menü Artikel → Attribute angelegt (Bereich „Artikel" → Attribut anlegen → Funktionsattribut) und anschließend je Artikel mit einem Wert befüllt. BIS ERP liest beim JTL-Sync die Attribute mit dem Präfix bis_ aus und übernimmt sie automatisch in die ERP- und POS-Datenmodelle.

Vorteile:

  • Bidirektional. Gebinde, Preise und Pfand lassen sich in JTL oder direkt in BIS ERP pflegen — der Sync gleicht beide Seiten ab und schreibt Änderungen aus BIS ERP als Funktionsattribute nach JTL zurück.
  • Keine Doppelpflege. Keine zusätzlichen Stücklisten-Artikel, keine eigenen Pfand-Artikel-Stammsätze, keine Import-/Exportdateien.
  • Automatischer Abgleich. Änderungen erscheinen beim nächsten Sync auf der jeweils anderen Seite — in BIS ERP, der Kasse und JTL.
Konvention

Alle Attribute beginnen mit bis_. Werte werden in tArtikelAttributSprache für Sprache 0 und 1 gelesen. Umlaute werden automatisch von Windows-1252 auf UTF-8 konvertiert.

Gebinde / Verpackungseinheiten

Verpackungseinheiten (Kiste, Träger, Palette) am Artikel pflegen — mit Menge, EAN, Preis und optional Pfand. BIS ERP legt daraus Verpackungseinheiten und Staffelpreise an.

Nummerierung: bis_gebinde_1_*, bis_gebinde_2_*, … — beliebig viele Gebinde pro Artikel.

Pflichtfelder

AttributTypBeispielWas es bewirkt
bis_gebinde_1_nameTextKisteAnzeigename der Verpackungseinheit. Erscheint auf Bon, Rechnung, Lieferschein und Kundendisplay.
bis_gebinde_1_mengeGanzzahl20Anzahl Einzelartikel pro Gebinde (z. B. 20 Flaschen pro Kiste). Auch als Staffelpreis-Mindestmenge.
bis_gebinde_1_eanText4001234567899EAN/Barcode des Gebindes. Die POS-Kasse erkennt die Verpackungseinheit anhand dieser EAN beim Scannen.
bis_gebinde_1_preisDezimal22.00Verkaufspreis des Gebindes. Brutto oder Netto je nach preistyp — Umrechnung erfolgt automatisch anhand der Steuerklasse.

Optionale Felder

AttributTypBeispielWas es bewirkt
bis_gebinde_1_preistypTextbrutto / nettoSteuert, ob die Preise als Brutto- oder Nettowert interpretiert werden. Standard: brutto.
bis_gebinde_1_preis_{kundengruppe}Dezimalbis_gebinde_1_preis_gastro = 16.50Preis für genau eine Kundengruppe. {kundengruppe} = Name der Kundengruppe in Kleinschreibung, Leerzeichen werden zu _ (z. B. b2b_staffel_1). Kundengruppen ohne eigenes Attribut bekommen den Global-Preis.
bis_gebinde_1_preis_b2bDezimal18.00Sonderfall von preis_{kundengruppe}: Preis für die Kundengruppe „B2B". Gilt nur für diese eine Gruppe — andere B2B-Gruppen (z. B. „B2B Staffel 1") bekommen den Global-Preis, sofern kein eigenes Attribut gesetzt ist.
bis_gebinde_1_sonderpreisDezimal19.99Zeitlich begrenzter Aktionspreis (global). Brutto/Netto wie preis.
bis_gebinde_1_sonderpreis_von / _bisDatum2026-06-01Zeitfenster des Sonderpreises (YYYY-MM-DD). Leer = ab sofort bzw. unbefristet.
bis_gebinde_1_sonderpreis_{kundengruppe}DezimalAktionspreis für eine bestimmte Kundengruppe, mit eigenem Zeitfenster. sonderpreis_b2b = Aktionspreis der Gruppe „B2B".
bis_gebinde_1_kundengruppeTextVeraltet. Wird nicht mehr ausgewertet — stattdessen preis_{kundengruppe} verwenden.
Preismodell: Global + pro Kundengruppe

Der Gebinde-Preis wird je Kunde aufgelöst: 1. der Preis seiner Kundengruppe (preis_{kundengruppe}, z. B. preis_b2b für die Gruppe „B2B"), sonst 2. der Global-Preis (preis). Es gibt keinen pauschalen „B2B-Preis für alle B2B-Gruppen" — jede Gruppe bekommt entweder ihren eigenen Preis oder den Global-Preis. Bearbeitbar direkt in BIS ERP über den Preise-Tab des Artikels (Button „Preise bearbeiten" am Gebinde).

Pfand am Basisartikel

Markiert einen Artikel als Pfandartikel (z. B. Glasflasche) und definiert den Pfandwert. BIS ERP schreibt das in articles.depositType und articles.depositAmount. Beim POS-Verkauf erscheint Pfand automatisch als eigene Position auf dem Bon.

AttributTypWerteWas es bewirkt
bis_pfand_typ Text EINWEG / MEHRWEG / KEIN Pfandart. EINWEG = klassisches Einwegpfand (i.d.R. 0,25 €). MEHRWEG = Mehrwegflasche (i.d.R. 0,08–0,15 €). KEIN oder leer = kein Pfand.
bis_pfand_betrag Dezimal z. B. 0.25 Flaschenpfand pro Stück. Brutto bei B2C-Kundengruppen, Netto bei B2B-Kundengruppen.
bis_kistenpfand_betrag Dezimal z. B. 1.50 Pfand für die Kiste selbst (nicht pro Flasche). Sync läuft only-if-empty — manuelle Pflege im BIS-ERP-UI hat Vorrang.
bis_kiste_ab Ganzzahl z. B. 12 Schwelle: ab wieviel Flaschen die POS-Kasse automatisch eine Kistenpfand-Position bucht. Sync only-if-empty.
B2C vs. B2B

Der Nominalwert (z. B. 0,25 €) bleibt identisch — beim Kassenverkauf entscheidet die Kundengruppe des aktiven Kunden: B2C-Kunden bekommen den Wert als Brutto (MwSt enthalten), B2B-Kunden als Netto (MwSt kommt drauf). Auf dem Bon, der Rechnung und dem Lieferschein erscheint Pfand immer als eigene Position.

Master-Schalter Kistenautomatik

Die Kistenautomatik fügt beim Verkauf von 12er-Vielfachen automatisch eine Kasten-Pfand-Position zum Bon hinzu — ohne dass der Kassierer die Kiste extra scannen muss.

Im Kundencenter unter /my/jtl-integration → Sektion „Kistenpfand-Automatik" kann jeder Tenant diesen Automatismus zentral aktivieren oder deaktivieren:

  • Aktiviert (Standard): Verkauft der Kassierer z. B. 24 Flaschen, erscheint zusätzlich automatisch eine Position „Kistenpfand" mit dem in bis_kistenpfand_betrag hinterlegten Wert.
  • Deaktiviert: Keine automatische Kasten-Pfand-Position mehr. Flaschenpfand aus bis_pfand_* bleibt davon unberührt und wird weiterhin pro Flasche berechnet.
Wann ausschalten?

Wenn Sie ausschließlich lose Flaschen verkaufen, keine Kistenpfand-Logik benötigen oder die Kasten-Position lieber manuell scannen wollen.

Die Einstellung wird automatisch an alle angebundenen POS-Kassen verteilt. Eine Änderung im Kundencenter wirkt beim nächsten Sync der POS-App.

Kundengruppen- & Sonderpreise am Basisartikel

Für den normalen Artikel (nicht das Gebinde) brauchen Sie kein Funktionsattribut. B2B-/Kundengruppen-Preise, Sonderpreise (Aktionspreise), Staffelpreise und individuelle Kundenpreise pflegen Sie ganz normal in JTL-Wawi an den Standard-Preisfeldern des Artikels. Der Connector liest sie beim JTL-Sync automatisch aus den nativen JTL-Preistabellen aus.

Wichtig

bis_*-Funktionsattribute brauchen Sie nur für Gebinde und Pfand. B2B-Preise und Sonderpreise des Basisartikels kommen aus JTLs eigener Preisverwaltung — kein Attribut nötig.

Wo wird in JTL gepflegt?

  • Kundengruppen-Preis (z. B. B2B): Artikel öffnen → Reiter „Preise / VK-Preise" → Preis je Kundengruppe hinterlegen.
  • Sonderpreis (Aktionspreis): Artikel → „Preise"Sonderpreis mit Gültigkeits-Zeitraum (optional je Kundengruppe).
  • Staffelpreis: Artikel → „Preise" → Staffel mit „ab Menge".
  • Individueller Kundenpreis: kundenspezifischer Artikelpreis (JTL-Preis mit Kundenbezug).

Preisfindung an der Kasse

Sind mehrere Preise gültig, gewinnt der speziellste — in dieser Reihenfolge:

Individueller Kundenpreis
  → Kundengruppen-Preis (z. B. B2B)
    → Staffelpreis (ab Menge)
      → Sonderpreis (im Gültigkeitszeitraum)
        → Standardpreis

Die Kundengruppe des aktiven Kunden steuert zusätzlich, ob Preise und Pfand als Brutto (B2C) oder Netto (B2B) erscheinen.

JTL-Quelle (nativ)Inhalt→ BIS ERP / POS
tArtikel.fVKNettoStandard-VerkaufspreisBasispreis
tPreis + tPreisDetail (ab Menge 0)Preis je Kundengruppe (z. B. B2B)productCustomerGroupPrices
tPreisDetail (ab Menge > 0)StaffelpreisproductTierPrices
tArtikelSonderpreis + tSonderpreiseSonderpreis mit ZeitraumSonderpreis-Felder
tPreis mit KundenbezugIndividueller Kundenpreisproduct_customer_prices

Aktionen: „Kaufe X, erhalte Y gratis" ab POS 1.1.13

Aktionen wie 1+1, 3+1 oder „kaufe Artikel A, erhalte Artikel B gratis" pflegen Sie am Auslöser-Artikel (dem Artikel, den der Kunde kauft) über bis_promo_*-Funktionsattribute. Ein Promo pro Artikel — keine Nummerierung. Der Aktionsname entsteht automatisch als „JTL-Aktion {SKU}".

FunktionsattributTypPflichtBedeutung
bis_promo_buyGanzzahlja (≥ 1)N — zu kaufende Menge (z. B. 3 bei „3+1")
bis_promo_getGanzzahlja (≥ 1)M — Anzahl Gratis-Einheiten (z. B. 1 bei „3+1")
bis_promo_free_skuTextneinSKU des Gratis-Artikels. Leer = derselbe Artikel (1+1, 3+1). Gesetzt = „kaufe diesen Artikel, erhalte den anderen gratis". Muss eine lokal vorhandene SKU sein, sonst Fallback auf selben Artikel.
bis_promo_deposit0 / 1neinPfand auf der Gratis-Einheit berechnen. 1 = ja (Standard), 0 = nein.

Beispiel — 3+1 auf denselben Artikel

bis_promo_buy = 3
bis_promo_get = 1

Verkauf von 4 Stück → 3 berechnet, 1 als 0,00-€-Position. Ist der Artikel pfandpflichtig, bleibt das Pfand der Gratis-Einheit voll berechnet (bis_promo_deposit=1) — nur der Artikelpreis ist 0 €.

Beispiel — kaufe Artikel A, erhalte Artikel B gratis

bis_promo_buy      = 1
bis_promo_get      = 1
bis_promo_free_sku = SKU-DES-GRATIS-ARTIKELS
Nicht über Funktionsattribute

Kategorie-Aktionen (günstigste Einheit einer Kategorie gratis) und zeitlich befristete Aktionen pflegen Sie direkt im BIS ERP / Kundencenter. Per JTL-Funktionsattribut sind „selber Artikel" (1+1, 3+1) und „Artikel A → Artikel B" abbildbar. Voraussetzung an der Kasse: BISpicy POS ab Version 1.1.13.

Datenfluss

JTL Wawi (Artikel-Funktionsattribute)
   |
   | JTL-SQL-Sync alle 5 Min oder manuell
   v
BIS ERP
   |- articles.depositType / depositAmount      <- bis_pfand_*
   |- articlePackagingUnits.*                   <- bis_gebinde_*
   `- productTierPrices.*                       <- bis_gebinde_*_preis / sonderpreis
   |
   | Sync zur POS-App (BISRemote)
   v
POS-Kasse
   |- Verpackungseinheit kann gescannt werden (EAN)
   |- Staffelpreis wird automatisch angewandt
   |- Pfand wird automatisch als eigene Position addiert
   `- Brutto/Netto-Berechnung anhand Kundengruppe

Sync-Verhalten

  • Hinzufügen / Ändern. Bei jedem Sync werden die FA-Daten neu eingelesen. Änderungen in JTL erscheinen in BIS ERP und der Kasse beim nächsten Sync.
  • Löschen. Attribut in JTL entfernen → Sync-Lauf entfernt die Verpackungseinheit oder Pfand-Daten in BIS ERP.
  • Mehrere Sprachen. Die Werte werden aus tArtikelAttributSprache für Sprache 0 und 1 gelesen.
  • Encoding. Windows-1252 → UTF-8 Konvertierung für Umlaute.
  • Validierung. Pflichtfelder fehlen → Eintrag wird übersprungen und im Sync-Log als Warnung protokolliert.

Mapping-Tabelle: Funktionsattribut → BIS-ERP-Spalte

FunktionsattributZiel-TabelleZiel-Spalte
bis_gebinde_N_namearticlePackagingUnitsname, shortName
bis_gebinde_N_mengearticlePackagingUnitsquantityPerUnit
bis_gebinde_N_eanarticlePackagingUnitsean, barcode
bis_gebinde_N_preisarticlePackagingUnits / productTierPricessellingPrice + Staffelpreis
bis_gebinde_N_preistypproductTierPricesBerechnungsrichtung brutto/netto
bis_gebinde_N_kundengruppeproductTierPricescustomerGroupKey
bis_gebinde_N_sonderpreisproductTierPricesSonderpreis-Felder
bis_pfand_typarticlesdepositType (EINWEG/MEHRWEG/none)
bis_pfand_betragarticlesdepositAmount