Neu Anleitung: Artikeletiketten für Auftrag, Rechnung, Lieferschein etc. drucken mit Etikettenanzahl = Artikelanzahl

  • Ersteller des Themas Ersteller des Themas John
  • Erstellungsdatum Erstellungsdatum

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
Hi,

länger als ich hier im Forum unterwegs bin wird sich schon die Funktion gewünscht, passend für einen Auftrag, Rechnung, Lieferschein etc. Artikeletiketten drucken zu können. Leider bewegt sich JTL nicht.
Zwar gibt es eine käufliche Lösung in Form einer Durckvorlage aber diese duckt immer nur ein Etikett je Position, auch wenn der Artikel mit mehr als Menge 1 ausgewiesen ist.

Hier meine Lösung dazu ohne umbebaute Vorlagen und MIT passender Anzahl an Etiketten.

1. Manueller Artikel Workflow Drucken anlegen
Es wird ein manueller Artikel Workflow angelegt mit:
- Name: Etikett drucken
- Ausgabe
- Ausgabeobjekt = Artikel\Ausgabeobjekt
- Ausgabemodus = Drucken
- Vorlagenset Dein Artikeletikett
- Auf Ausgabe warten AKTIV
- Menge bekommt folgenden Code:
Code:
{% assign AnzahlDrucken = 0 -%}\
{% assign Liste = GlobaleTexte.Intern.tmp-Wf-EtikettenDrucken-Anzahl.Deutsch | Split: '|' -%}\
{% for Element in Liste -%}\
    {% assign arrArtikelNummerInternUndMenge = Element | Split: '=' -%}\
    {% assign ArtikelNummerIntern = arrArtikelNummerInternUndMenge | First -%}\
    {% if ArtikelNummerIntern == Vorgang.Allgemein.Stammdaten.InterneArtikelnummer -%}\
    {% assign AnzahlDrucken = arrArtikelNummerInternUndMenge | Last -%}\
    {% endif -%}\
{% endfor %}{{ AnzahlDrucken }}

2. Manueller Auftrag Worklfow anlegen
Es wird ein manueller Auftrags Workflow angelegt mit zwei Aktionen:

Aktion 1
- Werte setzen
- Variable "GlobaleTexte.Intern.tmp-Wf-EtikettenDrucken-Anzahl.Deutsch"
- Wert bekommt folgenden Code:
Code:
{% for Position in Vorgang.AuftragsPositionen -%}\
{% if Position.Positionstyp == 1 -%}\
{{ Position.InterneArtikelnummer }}={{ Position.Menge }}|\
{% endif -%}\
{% endfor -%}

Aktion 2
- Workflow Ereignis auslösen
- Bezugsobjekt = Auftrag\Auftragspositionen\Artikelliste\Objektliste
- Ereignis = Etikett drucken (= der Workflow, der in (1) angelegt wurde)

Der Code in (1) und (2) nutzt hilfsweise einen globalen Text als Variable, um darin eine Liste aus kArtikel bzw. ArtikelNummerIntern und der zugehörigen Menge abzulegen.
Diese Variable muß von Euch selbst in der Wawi unter Einstellungen > Globale Textbausteien angelegt und die benutzte Gruppe/Name dann im Code angepasst werden.
In meinem Bespiel habe ich eine Gruppe mit dem Namen "Intern" mit dem Inhalt "tmp-Wf-EtikettenDrucken-Anzahl" angelegt.

Einschränkungen & Überlegungen
- Der Workflow funktioniert, solange man ihn in Ruhe für EINEN Auftrag ausdrucken lässt, bevor man ihn erneut benutzt.
- Markieren von mehreren Aufträgen ist nicht möglich, bzw. führt zu Chaos, weil der Inhalt der Hilfsvariable mit dem Inhalt eines anderen Auftrags überschrieben würde, bevor alle Etiketten des ersten Auftrags gedruckt wurden. Hier spielen unter anderem physikalische Druckergeschwindigkeit und Spooler mit rein.
- Mehrbenutzerbetrieb ist nur möglich, wenn ein Benutzer den Worklfow erst dann nutzt, wenn ein anderer Benutzer komplett ausgedruckt hat.
- Teilbare Mengen sind bisher nicht berücksichtigt. Unklar, was passiert.
- Ist ein Artikel mehrfach im Auftrag jedoch als unterschiedliche Positionen vorhanden, so wird für alle Vorkommen des Artikels die Anzahl des ersten Vorkommen im Auftrag an Artikel ausgegeben.

Einrichten lassen
Wem das alles technisch zu anspruchsvoll ist, kann sich gerne per PM/eMail bei mir melden und ich richte das zum fairen Stundensatz auf Rechnung in 15 Minuten per Fernwartung ein.

Vielleicht habt Ihr auch noch Ideen, wie man den Ansatz weiter ausbauen kann.

Viele Grüße

John
 
Zuletzt bearbeitet:

curra

Sehr aktives Mitglied
5. Juli 2007
2.757
15
Hi,

länger als ich hier im Forum unterwegs bin wird sich schon die Funktion gewünscht, passend für einen Auftrag, Rechnung, Lieferschein etc. Artikeletiketten drucken zu können. Leider bewegt sich JTL nicht.
Zwar gibt es eine käufliche Lösung in Form einer Durckvorlage aber diese duckt immer nur ein Etikett je Position, auch wenn der Artikel mit mehr als Menge 1 ausgewiesen ist.

Hier meine Lösung dazu ohne umbebaute Vorlagen und MIT passender Anzahl an Etiketten.

1. Manueller Artikel Workflow Drucken anlegen
Es wird ein manueller Artikel Workflow angelegt mit:
- Name: Etikett drucken
- Ausgabe
- Ausgabeobjekt = Artikel\Ausgabeobjekt
- Ausgabemodus = Drucken
- Vorlagenset Dein Artikeletikett
- Auf Ausgabe warten AKTIV
- Menge bekommt folgenden Code:
Code:
{% assign AnzahlDrucken = 0 -%}\
{% assign Liste = GlobaleTexte.Intern.tmp-Wf-EtikettenDrucken-Anzahl.Deutsch | Split: '|' -%}\
{% for Element in Liste -%}\
    {% assign arrArtikelNummerInternUndMenge = Element | Split: '=' -%}\
    {% assign ArtikelNummerIntern = arrArtikelNummerInternUndMenge | First -%}\
    {% if ArtikelNummerIntern == Vorgang.Allgemein.Stammdaten.InterneArtikelnummer -%}\
    {% assign AnzahlDrucken = arrArtikelNummerInternUndMenge | Last -%}\
    {% endif -%}\
{% endfor %}{{ AnzahlDrucken }}

2. Manueller Auftrag Worklfow anlegen
Es wird ein manueller Auftrags Workflow angelegt mit zwei Aktionen:

Aktion 1
- Werte setzen
- Variable "GlobaleTexte.Intern.tmp-Wf-EtikettenDrucken-Anzahl.Deutsch"
- Wert bekommt folgenden Code:
Code:
{% for Position in Vorgang.AuftragsPositionen -%}\
{% if Position.Positionstyp == 1 -%}\
{{ Position.InterneArtikelnummer }}={{ Position.Menge }}|\
{% endif -%}\
{% endfor -%}

Aktion 2
- Workflow Ereignis auslösen
- Bezugsobjekt = Auftrag\Auftragspositionen\Artikelliste\Objektliste
- Ereignis = Etikett drucken (= der Workflow, der in (1) angelegt wurde)

Der Code in (1) und (2) nutzt hilfsweise einen globalen Text als Variable, um darin eine Liste aus kArtikel bzw. ArtikelNummerIntern und der zugehörigen Menge abzulegen.
Diese Variable muß von Euch selbst in der Wawi unter Einstellungen > Globale Textbausteien angelegt und die benutzte Gruppe/Name dann im Code angepasst werden.
In meinem Bespiel habe ich eine Gruppe mit dem Namen "Intern" mit dem Inhalt "tmp-Wf-EtikettenDrucken-Anzahl" angelegt.

Einschränkungen & Überlegungen
- Der Workflow funktioniert, solange man ihn in Ruhe für EINEN Auftrag ausdrucken lässt, bevor man ihn erneut benutzt.
- Markieren von mehreren Aufträgen ist nicht möglich, bzw. führt zu Chaos, weil der Inhalt der Hilfsvariable mit dem Inhalt eines anderen Auftrags überschrieben würde, bevor alle Etiketten des ersten Auftrags gedruckt wurden. Hier spielen unter anderem physikalische Druckergeschwindigkeit und Spooler mit rein.
- Mehrbenutzerbetrieb ist nur möglich, wenn ein Benutzer den Worklfow erst dann nutzt, wenn ein anderer Benutzer komplett ausgedruckt hat.
- Teilbare Mengen sind bisher nicht berücksichtigt. Unklar, was passiert.
- Ist ein Artikel mehrfach im Auftrag jedoch als unterschiedliche Positionen vorhanden, so wird für alle Vorkommen des Artikels die Anzahl des ersten Vorkommen im Auftrag an Artikel ausgegeben.

Einrichten lassen
Wem das alles technisch zu anspruchsvoll ist, kann sich gerne per PM/eMail bei mir melden und ich richte das zum fairen Stundensatz auf Rechnung in 15 Minuten per Fernwartung ein.

Vielleicht habt Ihr auch noch Ideen, wie man den Ansatz weiter ausbauen kann.

Viele Grüße

John
extrem gut gemachte Erklärung. Vielen Dank.
Wir würden nicht pro Artikelmenge gleich viele Etiketten benötigen, sondern pro Position ein Etikett, aber mit der Artikelmenge pro Position auf dem Etikett, als Angabe.
Leider hab ich keine Idee wie ich das Etikett so anpassen muss, damit die Positionsmenge auf dem Etikett erscheint. Gibts dafür im Artikeletikett überhaupt eine variable?
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.789
833
Dazu benötigt man nicht diesen Workflow, dazu haben wir z.B. eine Vorlage, die je Position ein Etikett druckt, das ist für den normalen Anwendungsfall gedacht, siehe Shop 🙂

Das von John ist eine Super Lösung für den Sonderfall, wenn man je Auftrag jeden Artikel etikettieren will.
(Ich frage mich aber noch immer warum man das nicht beim Wareneingang macht, aber OK ... vermutlichen stehen auftragsspezifische Daten dann drauf.)
 

curra

Sehr aktives Mitglied
5. Juli 2007
2.757
15
Dazu benötigt man nicht diesen Workflow, dazu haben wir z.B. eine Vorlage, die je Position ein Etikett druckt, das ist für den normalen Anwendungsfall gedacht, siehe Shop 🙂

Das von John ist eine Super Lösung für den Sonderfall, wenn man je Auftrag jeden Artikel etikettieren will.
(Ich frage mich aber noch immer warum man das nicht beim Wareneingang macht, aber OK ... vermutlichen stehen auftragsspezifische Daten dann drauf.)
eure Vorlage hatte ich sogar in der 1.5x. aber mit 1.8x funktioniert die nicht mehr. Habt ihr da ein Update?
 
  • Gefällt mir
Reaktionen: wawi-dl

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.789
833
... dann schreib uns doch bitte eine Email dazu, dann kann man dies prüfen. Aktuell wüssten wir nicht, warum diese nicht funktionieren sollte.
 

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
...wer dennoch Spaß am selber machen hat, kann auch meine Lösung umbauen.

1. Die Menge der gedruckten Etiketten aus (1) muß fest auf 1 gestellt werden, denn Ihr wollte ja nur ein Etikett.

2. Ihr müßt Euch ein neues Etikett anlegen, das aus dem Globalen Text GlobaleTexte.Intern.tmp-Wf-EtikettenDrucken-Anzahl.Deutsch die Menge für den jeweils zu druckenden Artikel extrahiert und auf dem Etikett ausgibt.
Das ist etwas SQL Frickelei, weil man innerhalb der Vorlage nicht direkt an die Globalen Texte kommt aber machbar.
 

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
So, ich habe das mal eben wie oben angedacht umgesetzt.
Dafür legt man sich am besten ein neues Vorlagenset/Vorlage an.

Im Artikeletikett wird die Anzahl per SQL aus meiner zuvor beschriebenen Globalen Text Variable tmp-Wf-EtikettenDrucken-Anzahl ausgelesen und per ALIAS$ der entsprechende Artikel ausgewählt.

Code:
Alias$(str$(Artikel.InterneArtikelnummer),JTL_DirectQuery("SELECT cWertVarchar FROM vGlobaleTexte WHERE cName = 'tmp-Wf-EtikettenDrucken-Anzahl' AND cNameDeu = 'Deutsch' ") ) + "x"

Das fertige Etikett hänge ich als Vorlage an, viel Spaß damit.

Wer Hilfe bei der Integration benötigt, kann sich gerne melden. Fairer Stundensatz.
 

Anhänge

Zuletzt bearbeitet:

SB-Admin

Aktives Mitglied
9. September 2020
90
19
So, ich habe das mal eben wie oben angedacht umgesetzt.
Dafür legt man sich am besten ein neues Vorlagenset/Vorlage an.

Im Artikeletikett wird die Anzahl per SQL aus meiner zuvor beschriebenen Globalen Text Variable tmp-Wf-EtikettenDrucken-Anzahl ausgelesen und per ALIAS$ der entsprechende Artikel ausgewählt.

Code:
Alias$(str$(Artikel.InterneArtikelnummer),JTL_DirectQuery("SELECT cWertVarchar FROM vGlobaleTexte WHERE cName = 'tmp-Wf-EtikettenDrucken-Anzahl' AND cNameDeu = 'Deutsch' ") ) + "x"

Das fertige Etikett hänge ich als Vorlage an, viel Spaß damit.

Wer Hilfe bei der Integration benötigt, kann sich gerne melden. Fairer Stundensatz.
Hallo John,

leider funktioniert es so leider nicht. Die Menge wird zwar korrekt in die globale Variable geschrieben, aber beim Auslesen kommt nur das "X". Die DirectQuery Abfrage gibt immer nur ein leeres Ergebnis zurück. Ich habe auch den Workflow etwas geändert, denn er hatte auch alle Stücklistenpositionen mit aufgelistet:

{% for Position in Vorgang.AuftragsPositionen -%}\
{% if Position.Positionstyp == 1 and Position.IstStücklistenvater -%}\
{{ Position.InterneArtikelnummer }}={{ Position.Menge }}|\
{% endif -%}\
{% endfor -%}

Die globale Variable wird nun korrekt geschrieben.

Da ich die Etiketten des Auftrages auf ein A4 Blatt mit mehreren Etiketten zusammendrucken wollte und alles auch korrekt im Format eingestellt wurde, druckt er trotzdem für jedes Etikett ein A4 Blatt. Und obwohl nun nur die Stücklistenväter in der Globalen Variablen stehen, druckt er trotzdem alle Stücklistepositionen jeweils auf ein Blatt. Kennst Du das Problem? Hast Du einen Tipp für mich? Vielen Dank im Voraus.
 

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
Hmm, also bei mir funktionierte es.

Ausgabe von mehreren Etiketten auf einem A4 geht meines Wissens nicht, weil die Ausgabe für jeden Artikel einzeln als neues Dokument gestartet wird.
 

SB-Admin

Aktives Mitglied
9. September 2020
90
19
Ja, das Problem mit der Anzahl-Ausgabe funktioniert jetzt. Es lag an einem Fehler im SQL-Befehl. Schade, das man nicht mehrere Etiketten auf einem Blatt ausgeben kann. Dann muss ich eine Lösung über einen separaten Etikettendrucker finden.

Vielen Dank trotzdem.
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.789
833
Ja, das Problem mit der Anzahl-Ausgabe funktioniert jetzt. Es lag an einem Fehler im SQL-Befehl. Schade, das man nicht mehrere Etiketten auf einem Blatt ausgeben kann. Dann muss ich eine Lösung über einen separaten Etikettendrucker finden.

Vielen Dank trotzdem.
Dafür muss explizit die Artikel-Etiketten Vorlage verwendet werden, da man hier je Bogen die Anzahl Etiketten definieren kann, was bei den normalen nicht geht.

Es gibt natürlich sicherlich Tools für "Etiketten Nesting", wird aber sicherlich auch 1-2 Klicks kosten.
 

SB-Admin

Aktives Mitglied
9. September 2020
90
19
Ja, das grundsätzliche Problem ist, dass JTL im Vorlagenbaum fest vorgibt, ob es eine Listen- oder ein Etikettenvorlage ist. Das kann man leider selber nicht ändern. Auch der Import hilft hier nicht, da dann die importierte Vorlage mit Fehlermeldungen nicht erstellt wird. Schade!!! Das Leben könnte so einfach sein, wenn nicht immer als fest eigestellt wäre.
 

Kyrillos

Neues Mitglied
29. Oktober 2024
1
0
Dazu benötigt man nicht diesen Workflow, dazu haben wir z.B. eine Vorlage, die je Position ein Etikett druckt, das ist für den normalen Anwendungsfall gedacht, siehe Shop 🙂

Das von John ist eine Super Lösung für den Sonderfall, wenn man je Auftrag jeden Artikel etikettieren will.
(Ich frage mich aber noch immer warum man das nicht beim Wareneingang macht, aber OK ... vermutlichen stehen auftragsspezifische Daten dann drauf.)
Hallo, welche Vorlage ist den das? Es besteht ja nicht einmal die Möglichkeit die Aufträge mit den Artikeletiketten zu kombinieren, wie würde das in eurer Lösung auschauen?
 

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
... weil eben als Wunsch beim Kunden:

Wer bei Stücklisten nicht die Komponenten, sondern nur den Stücklisten-Oberartikel ausgegeben haben möchte, nimmt statt den Code in (2)

Code:
{% for Position in Vorgang.AuftragsPositionen -%}\
{% if Position.Positionstyp == 1 -%}\
{{ Position.InterneArtikelnummer }}={{ Position.Menge }}|\
{% endif -%}\
{% endfor -%}

folgenden Code:

Code:
{% for Position in Vorgang.AuftragsPositionen -%}\
{% if Position.Positionstyp == 1 -%}\
{% if Position.IstStücklistenkomponente == false -%}\
{{ Position.InterneArtikelnummer }}={{ Position.Menge }}|\
{% endif -%}\
{% endif -%}\
{% endfor -%}
 

straight

Aktives Mitglied
31. Oktober 2022
6
0
Hallo zusammen,
tolle Anleitung @John, hat vielleicht schon jemand das Problem von Curra umgesetzt ? -> Etikett pro Position ?
Das würden wir auch benötigen.

Danke Straight
 

straight

Aktives Mitglied
31. Oktober 2022
6
0
extrem gut gemachte Erklärung. Vielen Dank.
Wir würden nicht pro Artikelmenge gleich viele Etiketten benötigen, sondern pro Position ein Etikett, aber mit der Artikelmenge pro Position auf dem Etikett, als Angabe.
Leider hab ich keine Idee wie ich das Etikett so anpassen muss, damit die Positionsmenge auf dem Etikett erscheint. Gibts dafür im Artikeletikett überhaupt eine variable?
Hallo John,
wir haben die gleiche Anforderung wie Curra, wir benötigen pro Position ein Etikett und nicht pro Artikelmenge.

Kauft ein Kunde bei uns 35x einen Artikel, dann druckt deine Lösung aktuell 35 Etiketten, wir packen aber eine Tüte mit 35 Stück kleben ein Etikett drauf und würden 34 Etiketten wegwerfen. Idealerweise würde auf dem Etikett auch die Anzahl von 35 stehen.

Danke und Gruß
Straight
 

John

Sehr aktives Mitglied
3. März 2012
4.225
1.096
Berlin
@straight das ist noch einfacher und benötigt nur einen Teil meiner Anleitung.

Also, hier nochmal.

Ziel: Ausdruck eines Artikeletiketts pro Position, egal wie viel Artikel pro Position im Auftrag stehen.

1. Manueller Artikel Workflow Drucken anlegen

Es wird ein manueller Artikel Workflow angelegt mit:
- Name: Etikett drucken
- Keine Bedungung
- Aktion: Ausgabe
- Ausgabeobjekt = Artikel\Ausgabeobjekt
- Ausgabemodus = Drucken
- Vorlagenset Dein Artikeletikett
- Auf Ausgabe warten AKTIV
- Menge bekommt eine 1

2. Manueller Auftrag Worklfow anlegen
Es wird ein manueller Auftrags Workflow angelegt mit
- Keine Bedingung
- Aktion: Workflow Ereignis auslösen
- Bezugsobjekt = Auftrag\Auftragspositionen\Artikelliste\Objektliste
- Ereignis = Etikett drucken (= der Workflow, der in (1) angelegt wurde)
 

Ähnliche Themen