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.292
399
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.292
399
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.292
399
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 Lager Ampel Text Attribut ampel_text_gruen mit Shop 5.34 und Wawi 1.8.12.2 funktioniert nicht JTL-Wawi - Fehler und Bugs 1
Neu JTL Shop 5.3.x HTML Portlet gesucht / Tag Stripping im Rich Text Portlet deaktivieren Allgemeine Fragen zu JTL-Shop 4
Neu Text und Formel kombinieren Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Artikelname statt Preis im Gutschein User helfen Usern - Fragen zu JTL-Wawi 0
GPSR - Das Feld [Verantwortliche Person] ist leer hinterlegt! Es findet keine Zuordnung statt. - wie lösche ich den Eintrag JTL-Wawi 1.9 5
Falscher Wert exportiert (⌀ Netto-EK statt Netto-EK) JTL-Wawi 1.9 1
Neu EXTF csv Datev als eigenen Export, statt Ameise? Einzeldifferenzbesteuert! User helfen Usern - Fragen zu JTL-Wawi 2
Neu Sprachvariablen: Statt mehreren Variablen (wie z. B. %s %s) nur eine bestimmte ausgeben Allgemeine Fragen zu JTL-Shop 2
Neu Artikelhistorie Lieferdatum statt Buchungsdatum User helfen Usern - Fragen zu JTL-Wawi 4
Neu Artikel Leichen bereinigen in der Datenbank Betrieb / Pflege von JTL-Shop 3
Neu Artikel nur zur Ansicht in Shop ... ohne Kauf-Button Betrieb / Pflege von JTL-Shop 2
Artikel im Shop sichtbar obwohl kein Lagerbestand. JTL-Wawi 1.6 2
Neu Pickliste für Aufträge mit mehr als einem Artikel aus verschiedenen Lagerbereichen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neue Artikel werden nicht angezeigt im Shop JTL-Wawi 1.9 1
kaufland.de Artikel steht seit Tagen "in Prüfung" kaufland.de - Anbindung (SCX) 0
kaufland.de Artikel steht seit Tagen "in Prüfung" JTL-Wawi 1.9 0
Neu 📢 Plugin "Verbotene Artikel: Kauf nur für richtige Kundengruppe" by NETZdinge.de Plugins für JTL-Shop 0
Neu GPSR Umsetzung auch für "Artikel auf Anfrage" nötig? User helfen Usern - Fragen zu JTL-Wawi 2
Neu WMS - Mini Artikel ohne Barcode Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu Neuen ähnlichen Artikel direkt aus Auftrag - wie erstellen? User helfen Usern - Fragen zu JTL-Wawi 3
GPSR Produktsicherheit - Stücklisten Artikel (Bundle) verschiedene Hersteller JTL-Wawi 1.9 2
Neu Artikel-Filter / Suche: Artikel ohne Verantwortliche Person (GPSR) User helfen Usern - Fragen zu JTL-Wawi 4
Neu Koupon % Artikel ausschließen Allgemeine Fragen zu JTL-Shop 0
Kompletter SCX Abgleich hängt fest bei Artikel (Senden) 1. Aufruf [0,00%] 0/0 kaufland.de - Anbindung (SCX) 1
Neu Amazon Artikel mehrfach listen / Generelle Frage / Amazon-Anbindung - Ideen, Lob und Kritik 2
Ebay JTL-Wawi "Hersteller" + "Verantwortliche Person" auf mehrere Artikel übertragen GPSR JTL-Wawi 1.9 6
Neu Neues Lager, Artikel sind angelegt, Bestände auf 0, wie pflege ich jetzt die Bestände korrekt ein ? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Alle Artikel updaten GPSR eBay-Anbindung - Fehler und Bugs 1
Neu Kategorie für Webshop aktiv setzen unter Beibehaltung des aktiv-Status aller enthaltener Artikel User helfen Usern - Fragen zu JTL-Wawi 6
Artikel können nicht mehr aufgerufen werden, Artikelkategorier fehlerhafte Anzeige JTL-Wawi 1.9 2
Neu Ab gewisser Bon-Summe einen Artikel kostenfrei dazu. Wie? Fragen rund um LS-POS 0
GPSR für nur einen Artikel des Hersteller JTL-Wawi 1.9 2
Neu Export der Shop-Artikel JTL-Ameise - Fehler und Bugs 2
Neu Artikel werden als online in der WAWI angezeigt sind es aber nicht! Shopware-Connector 0
Gelöst Preisstaffelung bei Mengenverkauf für einen Artikel erstellen Allgemeine Fragen zu JTL-POS 4
Neu Pickliste, Artikel summiert Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 5
Neu WARNUNG JTL GPSR Plugin 1.0.2 funktioniert nicht, wenn Artikel keine Beschreibung hat Plugins für JTL-Shop 20
Neu Artikel Etikett beim Versandvorgang drucken Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Nur geänderte Artikel per Ameise exportieren JTL Ameise - Eigene Exporte 5
Neu Versandkostenfreie Artikel von Versandkostengrenze ausschließen Betrieb / Pflege von JTL-Shop 2
Neu Artikel Bilder bei neuen Amazon Artikeln immer nur JTL Dummy Bild Amazon-Lister - Fehler und Bugs 1
Neu Artikel-Bilder je Plattform JTL Ameise - Eigene Exporte 2
Neu Technische Zeichnung im Artikel hinterlegen JTL-Plan&Produce - Ideen, Lob und Kritik 0
Neu Neue Artikel mit Ameise und EAN aus JTL JTL-Workflows - Ideen, Lob und Kritik 1
In Bearbeitung Unteilbare Artikel in POS trotzdem teilbar Allgemeine Fragen zu JTL-POS 1
In Diskussion Bestellte Artikel werden über alle Lager reserviert (WaWi + POS) JTL-Workflows - Fehler und Bugs 15
Neu Kann Artikel nicht für den Shop aktivieren User helfen Usern - Fragen zu JTL-Wawi 2
Neu Anmerkung im Artikel unter Sonstiges auf einer Druckvorlage ausgeben User helfen Usern 1
Neu wie kann ich wareneingang mit artikel karton einbuchen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Wir würdet Ihr vorgehen? ( Teilgelieferten Auftrag anderen Artikel ausliefern) User helfen Usern - Fragen zu JTL-Wawi 1

Ähnliche Themen