Neu DotLiquid Preise runden

pebro

Aktives Mitglied
9. Oktober 2019
4
0
Hallo liebe JTL-Nutzer und Experten,

wir sind aktuell dabei auf JTL umzustellen und benötigen eine Möglichkeit, auftragsbezogen Etiketten zu drucken.

Das soll wie folgt geschehen:

Im Kunde (Kd Nr. 4711) wird in eigenen Feldern "Kalkulationsfaktor" z.B. 3,0 hinterlegt, sowie "Rundung" 0,90

Das heißt, dass mit dem Abschließen eines Auftrags für diesen Kunden 4711 passende Etiketten gedruckt werden sollen, welche dann auch dem Paket beigelegt werden.
Auf den Etiketten sollen die folgenden Infos abgedruckt werden:

- Logo
- EAN-Code
(bis hier hin noch zu realisieren)
- Verkaufspreis

Dieser Verkaufspreis setzt sich wie folgt zusammen: VK netto x Kalkulationsfaktor (in Kunde hinterlegt) und dann eben gerundet auf 0,90€.

Ist es möglich, dies in JTL zu realisieren ?
So dass der Workflow über DotLiquid auf die im Kunde hinterlegten Daten zugreift, den Preis berechnet und auch passend rundet ?

Über eure Hilfe würden wir uns sehr freuen.

Liebe Grüße
Lucas Brodkorb
 

Patrick Liedtke

Aktives Mitglied
27. Juni 2018
27
3
Sollte so funktionieren (Ich nehm mal den VK (Also den Kunden-EK) als 'Zu multiplizierender Wert'):

Runden ( Kalkulationsfaktor x VK ) Minus ( 1 Minus Rundung )

Runden (3,0 x 3,14 [= 9,42]) [=9] - ( 1 - 0,90 [=0,1]) = 8,90 ¥

ROUND(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit,2)-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue)))

Also wenn es wirklich "Runden" sein soll...

Falls es immer nach oben geglättet werden soll:

KommastellenIgnorieren ( Kalkulationsfaktor x VK ) Plus Rundung

Ganzzahl (3,0 x 3,14 [= 9,42]) [=9] + 0,9

Int(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)+Val(Alias$("Rundung",CustomerAttribute.AttributeValue))

Ja okay, bei der 1. Variante bist du auch nicht wirklich akkurat, da (wie oben im Bsp. zu erkennen) unter 0,5 VOR Abzug der Rundungsdifferenz schon runtergerundet wird.

WertVorKomma(3,0*3,14) [=9] +
Runden(WertHinterKomma(3,0*3,14) [=0,42] - (1-0,90) [=0,32]) [=0] -
(1-0,90) [=0,10] ) [=8,90]

Prüfung: (Erhöhen wir den EK-Wert bis nach der Multiplikation Ein Wert >0,5 rauskommt -> 3,3)

WertVorKomma(3,0*3,3) [=9] +
Runden(WertHinterKomma(3,0*3,3) [=0,9] - (1-0,9) [=0,8]) [=1] - (1-0,9) [0,9]) = [9,90]

Also falls es um Atome spalten oder ähnlich feinfühlige Werte geht:

Heißt dann übersetzt:

Int(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)+
ROUND(Frac(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue))))
-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue)))


Denke, jetzt hast du für alle Eventualitäten jeweils eine Formel... Bei Copy-Paste empfehle ich, die Klammern abzuzählen, denn ich hab das ohne die Wawi geschrieben und ... Naja ... Klammern sind halt die Interpunktionszeichenifizierten Feuerameisen in der Boxershort unserer Sandkastenkindheit...

Viel Spaß damit :D

Patrick
 
  • Gefällt mir
Reaktionen: pebro

pebro

Aktives Mitglied
9. Oktober 2019
4
0
Sollte so funktionieren (Ich nehm mal den VK (Also den Kunden-EK) als 'Zu multiplizierender Wert'):

Runden ( Kalkulationsfaktor x VK ) Minus ( 1 Minus Rundung )

Runden (3,0 x 3,14 [= 9,42]) [=9] - ( 1 - 0,90 [=0,1]) = 8,90 ¥

ROUND(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit,2)-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue)))

Also wenn es wirklich "Runden" sein soll...

Falls es immer nach oben geglättet werden soll:

KommastellenIgnorieren ( Kalkulationsfaktor x VK ) Plus Rundung

Ganzzahl (3,0 x 3,14 [= 9,42]) [=9] + 0,9

Int(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)+Val(Alias$("Rundung",CustomerAttribute.AttributeValue))

Ja okay, bei der 1. Variante bist du auch nicht wirklich akkurat, da (wie oben im Bsp. zu erkennen) unter 0,5 VOR Abzug der Rundungsdifferenz schon runtergerundet wird.

WertVorKomma(3,0*3,14) [=9] +
Runden(WertHinterKomma(3,0*3,14) [=0,42] - (1-0,90) [=0,32]) [=0] -
(1-0,90) [=0,10] ) [=8,90]

Prüfung: (Erhöhen wir den EK-Wert bis nach der Multiplikation Ein Wert >0,5 rauskommt -> 3,3)

WertVorKomma(3,0*3,3) [=9] +
Runden(WertHinterKomma(3,0*3,3) [=0,9] - (1-0,9) [=0,8]) [=1] - (1-0,9) [0,9]) = [9,90]

Also falls es um Atome spalten oder ähnlich feinfühlige Werte geht:

Heißt dann übersetzt:

Int(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)+
ROUND(Frac(Val(Alias$("Kalkulationsfaktor",CustomerAttribute.AttributeValue)) * SalesOrderPosition.GrossPricePerUnit)-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue))))
-(1-Val(Alias$("Rundung",CustomerAttribute.AttributeValue)))


Denke, jetzt hast du für alle Eventualitäten jeweils eine Formel... Bei Copy-Paste empfehle ich, die Klammern abzuzählen, denn ich hab das ohne die Wawi geschrieben und ... Naja ... Klammern sind halt die Interpunktionszeichenifizierten Feuerameisen in der Boxershort unserer Sandkastenkindheit...

Viel Spaß damit :D

Patrick


Hi Patrick !

Wow, vielen Dank für deine ausführliche Antwort. Das probiere ich heute Abend gleich mal aus.

Wir benötigen diese Formel, da wir Etiketten aus dem Auftrag mit den individuellen Kundenpreisen drucken müssen, die wir dann dem Paket beilegen.

Nun stehen wir nur noch vor dem „Problem“, dass die Etikettenanzahl der Anzahl der bestellten Artikel entsprechen muss.
Gibt es denn auch hierfür eine Lösung ?

Also wenn Kunde XY den Artikel 0815 drei Mal bestellt, dass dann automatisch drei passende Etiketten gedruckt werden, welche den Preis anhand deiner oben beschriebenen Formel tragen ?

Wenn du mir auch hier eine passende Lösung hast, wäre das der pure Wahnsinn. 😍

Liebe Grüße
Lucas
 

Patrick Liedtke

Aktives Mitglied
27. Juni 2018
27
3
Klar.

In den Seitenwechelbedingungen der Datentabelle "Ja" einstellen. (Falls es nicht eh schon ein Etikett ist)
Und bei Anzahl der Ausfertigungen Die Formel für die Anzahl der Artikelpositionen (jeweils) hinterlegen, Also SalesOrderPosition.Quantity in das Feld hinterlegen.
Bestellt:

10x Artikel1
5x Artikel412
33x Artikel0518

Dann druckt die Wawi jeweils die Menge an Etiketten.

Nur vorsicht: Solltest du teilbare Artikel haben, die auch in Teilmengen bestellt werden können... Also Etwa 0,25x ArtikelX, druckt dein Drucker wahrscheinlich 0,25x das Etikett, Bis er merkt dass das nicht geht... Rastet dann aus und hinterlässt eine Schneise der Verwüstung auf dem Weg, die Menschheit für dieses Vergehen zu bestrafen... Drucker hassen Menschen...

Also das war jetzt wenig professionell, aber... Es ist Sonntag :D
Gruß, Patrick
 
  • Gefällt mir
Reaktionen: pebro

pebro

Aktives Mitglied
9. Oktober 2019
4
0
Klar.

In den Seitenwechelbedingungen der Datentabelle "Ja" einstellen. (Falls es nicht eh schon ein Etikett ist)
Und bei Anzahl der Ausfertigungen Die Formel für die Anzahl der Artikelpositionen (jeweils) hinterlegen, Also SalesOrderPosition.Quantity in das Feld hinterlegen.
Bestellt:

10x Artikel1
5x Artikel412
33x Artikel0518

Dann druckt die Wawi jeweils die Menge an Etiketten.

Nur vorsicht: Solltest du teilbare Artikel haben, die auch in Teilmengen bestellt werden können... Also Etwa 0,25x ArtikelX, druckt dein Drucker wahrscheinlich 0,25x das Etikett, Bis er merkt dass das nicht geht... Rastet dann aus und hinterlässt eine Schneise der Verwüstung auf dem Weg, die Menschheit für dieses Vergehen zu bestrafen... Drucker hassen Menschen...

Also das war jetzt wenig professionell, aber... Es ist Sonntag :D
Gruß, Patrick

Hi Patrick !

Du bist der Hammer...
Auch wenn es "wenig professionell" war, sieht das nach einer Lösung von vielen unserer Probleme aus.

Ich bin gerade am Probieren, deine Formel einzubauen, bekomme da aber leider eine Fehlermeldung (siehe Screenshot anbei)...

Wahrscheinlich liegt es aber an mir und nicht an deiner Formel. :D
 

Anhänge

  • Bildschirmfoto 2020-07-12 um 18.59.06.png
    Bildschirmfoto 2020-07-12 um 18.59.06.png
    17,4 KB · Aufrufe: 20

Patrick Liedtke

Aktives Mitglied
27. Juni 2018
27
3
Leider kann man im Screenshot nicht erkennen, an welcher Stelle du das eintragen willst.
Leg das ganze als Benutzervariable fest, dann kannst du von überall drauf zugreifen.

In deinem Screenshot sieht man, dass die Variable Customer... nicht verfügbar ist an der stelle (wäre sonst rot und in Fettschrift).

Gruß, Patrick