Inaktiv Text statt Artikel Betrag in der Rechnung ausgeben

zumopeds

Aktives Mitglied
9. Juli 2017
19
0
Hi,

wir beschenken den Kunden ab einem bestimmten Bestellwert mit einem Geschenk.
Der Artikel wir von Shopware an WAWI übermittelt und automatisch mit 0,00euro berechnet.

Ich hätte gerne in der Spalte in der die Bruttobeträge der Einzelartikel sind, eine Abfrage wie z.B.
If der Artikelpreis = 0,00euro then Ausgabe "Gratis"

Läßt sich so etwas verwirklichen, finde keine Ansatz wie ich diese Abfrage in die Rechnung bekommen.
Danke, Gruß André
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo André,

das läßt sich mit dem Vorlageneditor sogar recht einfach lösen, braucht aber sicherlich ein bißchen Übung, bis man die paar Befehle, die man braucht, intus hat. Ich bin für die folgende Beschreibung der Einfachheit halber von einer ganz neuen und jungfräulichen "Standard" Rechnungsvorlage ausgegangen und habe dort folgendes gemacht ...

1. Links im Reiter "Ebenen" alles außer der Ebene "Positionsliste" ausgeblendet.
2. Auf den Reiter "Objekte" gewechselt und direkt unterhalb von "Berichtscontainer" auf den Eintrag "Tabelle: Auftragspositionen" doppel-geklickt.
3. Dadurch öffnet sich eine Art Liste mit den Spalten der Positionen, als Art.Nr., Beschreibung, E-Preis, G-Preis, ...
4. Dort gibt es zwei Bereiche, einen für Rechnungen ohne Rabatte und einen für Rechnungen mit Rabatten, die Änderungen müssen also 2x gemacht werden.
5. Du suchst Dir erst im einen und dann im anderen Bereich die Zeilen, in denen der Einzel-Preis für die Position ausgegeben wird.

Dort findest Du als Eintrag die obere Zeile, doppel-klickst, um den Editor zu öffnen und änderst den Eintrag auf die untere Zeile ab ...
Code:
cond(Vorgabe.NettoPreiseBenutzen, Auftragspositionen.NettopreisEinzel, Auftragspositionen.BruttopreisEinzel)
Cond(Auftragspositionen.NettopreisEinzel=0, "Gratis", Cond(Vorgabe.NettoPreiseBenutzen, LocCurrL$(Auftragspositionen.NettopreisEinzel,Vorgang.Gebietsschema), LocCurrL$(Auftragspositionen.BruttopreisEinzel,Vorgang.Gebietsschema)))

Dann machst Du das Ganze auch für die Zeile, in der der Gesamt-Preis für die Position ausgegeben wird, wieder obere gegen untere Zeile austauschen ...
Code:
cond(Vorgabe.NettoPreiseBenutzen, Auftragspositionen.NettopreisGesamt, Auftragspositionen.BruttopreisGesamt)
Cond(Auftragspositionen.NettopreisGesamt=0, "Gratis", Cond(Vorgabe.NettoPreiseBenutzen, LocCurrL$(Auftragspositionen.NettopreisGesamt,Vorgang.Gebietsschema), LocCurrL$(Auftragspositionen.BruttopreisGesamt,Vorgang.Gebietsschema)))

Diese beiden Änderungen führst Du danach dann auch noch für den unteren Bereich "Rabatt nicht vorhanden" genauso durch, bestätigst alles mit OK, speicherst die Vorlage und probierst Sie aus. Du mußt dann noch bedenken, dass Du mit Sicherheit sowohl im Bereich "Drucken", wie auch im Bereich "Speichern" Vorlagen haben wirst. Die Änderungen müssen natürlich überall gemacht werden, klar.

Nun noch ganz kurz zu den Änderungen: Ich habe einen weitere Cond(Bedingung,AusführenWennWahr,AusführenWennFalsch) Abfrage vorne an die alte Abfrage rangehängt, die erst mal abfragt, ob der Betrag 0€ ist. Ist das der Fall, wird "Gratis" ausgegeben, sonst springt die Abfrage eigentlich nur zur alten Abfrage aus der Standard-Rechnungsvorlagen. Allerdings habe ich dort die einfache Ausgabe der Beträge hier in LocCurrL$(Wert,Vorgang.Gebietsschema) eingebettet, um Dir zu zeigen, dass man die Beträge auch gleich bei der Ausgabe formatieren kann. LocCurrL$(Wert,Vorgang.Gebietsschema) würde den 1234 bei einer deutschen Rechnung also automatisch als "1.234,00 €", bei einer englischen Rechnung in Dollar aber eben als "$1,234.00" ausgeben. Echt praktisch, und falls Du z.B. das Währungszeichen nicht mit ausgegeben haben möchtest, dann heißt der Befehl LocCurr$(Wert,Vorgang.Gebietsschema), das "L" im Befehl fehlt also nur.

P.S. Ich habe Dir die modifizierte Standard-Rechnungsvorlage hier angehängt. Vielleicht hilft das beim Nachvollziehen der Änderungen.

Gruß,
Ingmar
 

Anhänge

  • Rechnung_Standard_GratisArtikel_07102017.vlg
    27,1 KB · Aufrufe: 10
  • Gefällt mir
Reaktionen: Thore

zumopeds

Aktives Mitglied
9. Juli 2017
19
0
Hi Ingmar,

vielen Dank für die ausführliche Erklärung, kriege es aber leider nicht hin, da ich eine andere Vorlage (Professional) habe. Bei mir sieht die Zeile mit den Gesamtbeträgen so aus:

Code:
cond((Vorgabe.MwStAusweisen or (not Vorgabe.NettoPreiseBenutzen and not Vorgabe.MwStAusweisen)) and not (Vorgang.Auftrag.Rechnungsadresse.Land.IstEU and Vorgang.Auftrag.Rechnungsadresse.Land.NameDeutsch != Vorgang.Firma.Landname and not isNullOrEmpty(Vorgang.Auftrag.Kunde.UStID)),FStr$(Auftragspositionen.BruttopreisGesamt,'-?&.##'),FStr$(Auftragspositionen.NettopreisGesamt,'-?&.##'))

wenn ich deine Zeile mit "+" dazu füge´, sehe ich schon mal das es klappt, jedoch wirft er mir zweimal den Preis aus bzw, Preis und "Gratis".
In meinen Code einfügen klappt nicht, entweder ein Syntax Fehler oder aber der cond Befehl wir in der Gesamtzahl (4 statt erwarteten 2 bis 3 )überschritten.
Mein Code ist doch nur eine Formatierung oder? Was würde sich an der Ausgabe ändern wenn ich deinen nehme?

Gruß André
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hi André,

die neue Cond() einfach mit "+" hinter der alten anhängen würde bedeuten, dass Du die erste Bedingung unangetastet läßt und dann gibt sie natürlich auch weiterhin den Preis aus. Einfach nur anhängen bedeutet also, dass Du eine komplett separate Bedingung einführst, Du will ja aber die bisherige Bedingung ausschalten, wenn der Preis 0 ist.

Cond() funktioniert ja so, dass zuerst, ganz links in der Klammer auf eine Bedingung (condition) getestet wird und dann entweder der nächste/zweite Teil in der Klammer ausgeführt wird, wenn die Bedingung "wahr" ist, oder aber der übernächste/dritte Teil, wenn die Bedingung "falsch" ist.

Also musst Du die bisherige Cond-Funktion in Deine neue Cond() integrieren, so dass die alte nur dann ausgeführt wird, wenn der Wert nicht gleich 0 Euro > Gratis ist. Die alte Funktion gehört also in den "AusführenWennFalsch" Teil der neuen Cond() Funktion, also in die Klammer und hinter das zweite Komma. - Das sieht dann in einer allgemeinen Form so aus ...
Code:
Cond(Auftragspositionen.NettopreisEinzel=0, "Gratis", <HierDeineKompletteAlteFunktion>)
... und die schließende Klammer ganz rechts ist hier nötig, weil Du ja deine alte Funktion in der neuen kapselst und die Klammer gehört zur neuen Funktion, die auf 0€ testet.

In meinem Beispiel in der ersten Antwort habe ich hier noch zwischen dem Einzelpreis und dem Gesamtpreis differenziert, das ist aber nicht nötig, denn der Gesamtpreis ist ja automatisch 0€ wenn der Einzelpreis 0€ ist. du kannst also in allen für Dich relevanten Formeln einfach so wie im Beispiel hier drüber vorgehen und dann sollte es funktionieren.

Gruß,
Ingmar
 

zumopeds

Aktives Mitglied
9. Juli 2017
19
0
Guten Morgen Ingmar,

genau so habe ich es auch schon versucht, aber er bringt mir dann den Fehler 'isNullOrEmpty(Vorgang.Auftrag.Kunde.......NettopreisGesamt,"-?&.##'' kann nicht interpretiert werden.

Code:
cond(Auftragspositionen.NettopreisGesamt=0, "Gratis", ((Vorgabe.MwStAusweisen or (not Vorgabe.NettoPreiseBenutzen and not Vorgabe.MwStAusweisen)) and not (Vorgang.Auftrag.Rechnungsadresse.Land.IstEU and Vorgang.Auftrag.Rechnungsadresse.Land.NameDeutsch != Vorgang.Firma.Landname and not isNullOrEmpty(Vorgang.Auftrag.Kunde.UStID)),FStr$(Auftragspositionen.BruttopreisGesamt,'-?&.##'),FStr$(Auftragspositionen.NettopreisGesamt,'-?&.##')))

Wenn ich am Schluss eine Klammer weg lasse (was aber meines Erachtens falsch ist), dann kommt das die erste Anweisung nicht interpretiert werden kann.

Die Einzelpreisbedingung funktioniert ja, aber diese überträgt er nicht in die Gesamtpreisspalte, daher benötige ich ja auch die Gesamtpreisanpassung und daran scheitert es, oder einst Du mit "Dich relevanten Formeln einfach so wie im Beispiel hier drüber vorgehen und dann sollte es funktionieren" ich soll deine Ganze Codezeile
Code:
Cond(Auftragspositionen.NettopreisGesamt=0, "Gratis", Cond(Vorgabe.NettoPreiseBenutzen, LocCurrL$(Auftragspositionen.NettopreisGesamt,Vorgang.Gebietsschema), LocCurrL$(Auftragspositionen.BruttopreisGesamt,Vorgang.Gebietsschema)))
gegen meine Ursprüngliche ersetzten?

Gruß André
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hallo André,

danke, dass Du die nicht funktionierende Zeile in Deine Message reinkopiert hast, das erspart die Raterei.

Du hast nicht wirklich die GANZE alte Funktion reinkopiert, sondern hast das cond vor der Klammer weggelassen, vielleicht weil Du gedacht hast, da ist ja schon ein Cond ganz am Anfang. So funktioniert das Ganze aber nicht, es kann durchaus mehrere und sogar viele ineinander geschachtelte Conds geben.

Ein gutes Beispiel dafür ist die Unterscheidung von "Herr", "Frau", "Fräulein". Das sind drei mögliche Anreden und damit eine zuviel für ein einfaches Cond(). Also schreibt man dann ...
Cond(Anrede="Herr", TuWasFürHerr, Cond(Anrede="Frau", TuWasFürFrau, SonstTuWasFürFräulein))

Füge also einfach vor "((Vogabe.MwStAusweisen" das dort hingehörende cond oder Cond (egal) ein und es sollte dann aber wirklich funktionieren.

Gruß,
Ingmar
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Rechnungen zeigen Paypal Text an, obwohl er in der Vorlage nicht ausgewählt ist JTL-Wawi 2.0 3
Neu OPC - Rich Text Änderungen werden nicht übernommen Allgemeine Fragen zu JTL-Shop 1
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Text Vorbereitung für WAWI import JTL-Wawi 1.11 3
Herkunftsland als Auswahlfeld statt als Freitextfeld JTL-Wawi 1.11 2
Neu Nach Umstellung DHL Versenden 4.0 wird Kleinpaket nun auf DHL Paket Labeldrucker ausgegeben statt auf Kleinpaketdrucker JTL-ShippingLabels - Fehler und Bugs 18
Neu Punkt statt Komma beim export Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Kind-Artikel nicht bei Ebay anbieten Allgemeine Fragen zu JTL-Shop 1
Beantwortet [Shop 5.7.2 / Wawi 2.0.5] GPSR-Daten werden am Artikel nicht angezeigt trotz korrekter Übertragung und installiertem Plugin Allgemeine Fragen zu JTL-Shop 1
Neu Anzeige Alle Artikel mit Kategorieanzeige linke Menüleiste Allgemeine Fragen zu JTL-Shop 9
Neu Amazon: Artikel-Highlight / Produkttitel auf 75 Zeichen begrenzt Amazon-Anbindung - Fehler und Bugs 8
Neu Shop zeigt keine Artikel mehr Fehler 500 Betrieb / Pflege von JTL-Shop 9
Amazon Artikel-Highlights JTL-Wawi 1.7 1
JTL Wawi 1.11. - Fenstergröße - Artikel auf Einkaufsliste setzen JTL-Wawi 1.11 13
Exportvorlage: Auftrag nur Artikel die per Dropshipping verfügbar sind in Datei schreiben JTL-Wawi 1.11 4
Neu JTL → Shopify Connector: MappingTablesException / „Endpoint id is empty“ – betroffene Artikel aus Logs per SQL finden Shopify-Connector 2
Fehlermeldung beim Artikel erstellen JTL-Wawi 1.11 3
Probleme beim Shopify-Abgleich: Artikel trotz erfolgreichem Abgleich nicht in Shopify auffindbar JTL-Wawi 1.11 1
Neu Verkaufskanal Sichtbarkeit Zuweisung Artikel in Shopware gelöscht - Connector Bug? Shopware-Connector 1
Eigenes Feld aus Artikel auf Lagerpackliste ausgeben JTL-Wawi 1.11 1
Neu Artikel-Menü zurück Allgemeine Fragen zu JTL-Shop 1
JTL Artikel-Maske leer/verschoben (1.11.7) JTL-Wawi 1.11 2
Neu Ein Artikel in der Kategorie Allgemeine Fragen zu JTL-Shop 5
Neu nicht lieferbare Artikel aus Bestellung wieder auf die Einkaufsliste setzen ?! User helfen Usern - Fragen zu JTL-Wawi 1
Neu Streichpreise oder Rabatte für Staffelpreise von einem Artikel einrichten? Wie am Besten? JTL-Wawi 1.6 0

Ähnliche Themen