Neu [ERLEDIGT] Präferenzbegünstigte Ursprungswaren via Workflow oder Vorlagenanpassungen

  • Temporäre Senkung der Mehrwertsteuer Hier findet ihr gesammelt alle Informationen, Videos und Fragen inkl. Antworten: https://forum.jtl-software.de/threads/mehrwertsteuer-senkung-vom-01-07-31-12-2020-offizieller-diskussionthread-video.129542/

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Gibt es irgendwo eine Anleitung wie man das umsetzen kann, dass der Text
Der Ausführer der Waren, auf die sich dieses Handelspapier bezieht, erklärt, dass diese Waren, soweit nicht anders angegeben, präferenzbegünstigte CE Ursprungswaren sind.

Zollwarentarifnummer: XXXXXXXX
Automatisch auf der Rechnung erscheint wenn das Lieferland die Schweiz oder Norwegen ist?
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Ich habe es jetzt doch selber hinbekommen.
Das Problem war ich habe immer mit den ISO-Codes CHE und NOR statt CH und NO probiert.
 

deliman

Sehr aktives Mitglied
13. Februar 2016
668
43
Hallo,

kannst Du kurz beschreiben, wie Du das gemacht hast? Via Workflow? Wir machen das aktuell noch per Hand via Copy & Past, was aber sehr umständlich ist.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
@deliman Das ist mit einem Workflow überhaupt nicht hin zu bekommen, dafür aber ganz einfach in den jeweiligen Vorlagen. Einfach den Text dort anlegen, wo man ihn haben will und dann in der zugehörigen Darstellungsbedingung prüfen, ob das Lieferland Schweiz oder Norwegen ist.
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
@deliman
Wie auf dem Bild sind die Einstellungen und so funktioniert es über einen Workflow.
Man kann halt den Text nicht formatieren.
@gutberle
Deinen Vorschlag habe ich nicht hinbekommen. Deswegen hab ich das ja so gemacht.
Vielleicht beschreibst du ja mal kurz wie man vorgehen muss und wie die Einstellungen sind.
 

Anhänge

Zuletzt bearbeitet:

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
@albi123 - Das ist eigentlich ganz einfach. Ich habe mir eine neue Untertabelle im Berichtscontainer angelegt und dort dann z.B. für EU-Lieferungen, Drittlandslieferungen und für ReverseCharge Tabellenzeilen angelegt, in denen ich den jeweils richtigen Text als Spalten angelegt habe.

Damit jetzt nicht alle Texte ausgegeben werden, lautet die Darstellungsbedingung (rechts unter Eigenschaften) dann eben Vorgang.Auftrag.IstIGL für EU Lieferungen, Vorgang.Auftrag.IstUStFreiNichtEU für Drittlandslieferungen und Vorgang.Auftrag.IstReverseCharge für ReverseCharge Lieferungen.

Ich habe Dir mal einen Screenshot angehängt, vielleicht wird es damit klarer... :)
 

Anhänge

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
@albi123 ... und um Deine Lieferländer abzufragen, mußt Du dort, wo ich die Vorgang... Variablen abfrage dann eben eine Abfrage für die Länder einfügen, also z.B. ...
Code:
Cond((Vorgang.Auftrag.Lieferadresse.LandISO="CH") OR (Vorgang.Auftrag.Lieferadresse.LandISO="NO"),"Hier Dein Text")
... und für das Bild oder den Stempel eben ...
Code:
Cond((Vorgang.Auftrag.Lieferadresse.LandISO="CH") OR (Vorgang.Auftrag.Lieferadresse.LandISO="NO"),Drawing(<PfadZuDeinemBild>))
P.S. Beide Codes ohne Gewähr, da ohne Wawi von Hand in der Hotellobby reingehackt, aber abseits von etwaigen Syntaxfehlern geht es so... o_O
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Danke @gutberle
ich habe es nicht so gemacht wie du aber der Code hat schon sehr geholfen. Ich habe ein Textfeld eingefügt und dort folgende Absätze eingepflegt:
Code:
Cond((Vorgang.Auftrag.Lieferadresse.Land.ISO="CH") OR (Vorgang.Auftrag.Lieferadresse.Land.ISO="NO"),"Der Ausführer der Waren, auf die sich dieses Handelspapier bezieht, erklärt, dass diese Waren, soweit nicht anders angegeben, präferenzbegünstigte CE Ursprungswaren sind.","")
Code:
Cond((Vorgang.Auftrag.Lieferadresse.Land.ISO="CH") OR (Vorgang.Auftrag.Lieferadresse.Land.ISO="NO"),"Zollwarentarifnummer: XXXXXXXXXXXXXXXXX","")
Code:
Cond((Vorgang.Auftrag.Lieferadresse.Land.ISO="CH") OR (Vorgang.Auftrag.Lieferadresse.Land.ISO="NO"),"EORI-Nummer: DEXXXXXXXX","")
Aber das Bild bekomme ich nicht hin. Ich arbeite mit Ubuntu und er meckert jedes mal den Pfad an: Syntaxfehler.

Hast du noch einen Tipp?
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Ich habe es so und in verschiedenen Varianten versucht:
Code:
Cond((Vorgang.Auftrag.Lieferadresse.Land.ISO="CH") OR (Vorgang.Auftrag.Lieferadresse.Land.ISO="NO"),Drawing("C:\Users\Public\Pictures\Sample Pictures\Chrysantheme.jpg",""))
Ja richtig, ich bin kein Programmierer ;)
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
@albi123 - Ok, dann will ich Dich jetzt mal ein wenig quälen... ;) - Zähl mal durch, welche Klammer wo auf- und wieder zugeht, dann findest Du Deinen Syntaxfehler sofort.

Zu den anderen Sachen: Du musst natürlich selbst entscheiden, wie Du die Abfragen machst und wenn Du jetzt schon weißt, dass Du beim nicht-EU Ausland immer nur in die Schweiz und nach Norwegen verkaufst, dann hast Du meinen Segen für Dein Vorgehen. Tatsächlich sind das aber beides EFTA Länder und zur EFTA gehören auch noch Island und Liechtenstein - Ok, KEIN gutes Argument, ich weiß. Es gibt aber noch viele andere Länder, die aus unserer Sicht einen Drittlandsstatus haben, für die Du also Zollinfos brauchst und für all die würde Deine Abfrage versagen. Was hingegen immer funktioniert ist die Abfrage auf Vorgang.Auftrag.IstUStFreiNichtEU und das natürlich auch bei Norwegen und der Schweiz.

Dann ist es aber auch so, dass Du ja das Herkunftsland und den TARIC Code, also die Zolltarifnummern direkt in der Wawi, in den Artikeldetails unter dem Reiter "Sonstiges" pflegen kannst. Und in den Vorlagen gibt es dafür Variablen, in den Rechnungen sind das zum Beispiel Auftragspositionen.Artikel.Herkunftsland und Auftragspositionen.Artikel.TaricCode. Die sollstest Du dann ähnlich wie oben dann auch benutzen, mir fehlt aber auch ehrlich gesagt die Fantasie, wie das mit den Warentarifnummern sonst gehen soll... - Den EORI Code gibt es in der Wawi nicht, den muss man tatsächlich so reinschreiben, wie Dui das jetzt schon machst.

P.S. Du verkaufst Chrysanthemen nach Norwegen? - Cool ...o_O
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
P.S. Du verkaufst Chrysanthemen nach Norwegen? - Cool ...o_O
Umsatz ohne Ende! :D
War bloß ein Beispielbild und die Klammern hab ich durch gezählt bis die Tränen kamen.
OK, Lerneffekt:
Code:
Cond((Vorgang.Auftrag.IstUStFreiNichtEU),"Der Ausführer der Waren, auf die sich dieses Handelspapier bezieht, erklärt, dass diese Waren, soweit nicht anders angegeben, präferenzbegünstigte CE Ursprungswaren sind.","")
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Den Taric-Code kann man ja (hoffentlich) via Ameise den Artikeln zuordnen.
Ich glaube aber nicht, dass dann der "drittland-export-text" automatisch eingefügt wird.

Ich werde es tun und sehen was passiert.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
Kollege, Du bist wirklich kein Programmierer... :D

Also, pass auf, Cond() hat eine Bedingung und dann zwei Konsequenzen daraus, eine wenn die Bedingung wahr ist und eine wenn sie falsch ist, also so Cond(Bedingung,AktionWennWahr,AktionWennFalsch). Ganz hinten, am Ende Deines Syntaxfehler-Codes schließt sich also die eine Klammer, die Du mit dem Cond( vorne geöffnet hast.

Dazwischen gibt es bei Dir drei Teile (Terme) mit Klammern, einmal die Abfrage ob es Norwegen ist, dann die Abfrage, ob es die Schweiz ist und die habe ich eigentlich nur deshalb in Klammern gesetzt, weil dazwischen ein "OR", also eine weitere Bedingung steht und ich sicherstellen wollte, dass sich das "OR" auf die beiden Länderabfragen als Ganzes bezieht. Das hat etwas mit der Priorität der Operatoren zu tun und bei List & Label bin ich mir nicht sicher, also besser Vorsicht.

Ok, und dann kommt am Ende noch der Befehl für das Bild, der lautet Drawing(PfadZumBild). Oha, der Befehl Drawing() hat also nur einen Parameter zwischen seiner öffnenden und schließenden Klammer, Dein Code von oben lautet aber Drawing(PfadZumBild,"").

Hier hast Du also die Klammer eins zu weit nach rechts gesetzt und damit eigentlich gleich zwei Syntaxfehler erzeugt, nämlich dass beim Drawing() Befehl ein zweiter, ungültiger Parameter "" auftaucht und dass Cond() keinen AktionWennFalsch Teil mehr hat, letzteres ist aber tatsächlich egal, denn der AktionWennFalsch Teil von Cond() ist "optional", man kann also auch darauf verzichten und nur die AktionWennWahr prüfen und ausführen.

Ok, genug geschwafelt, hier ist Dein Konstrukt in korrekt...
Code:
Cond((Vorgang.Auftrag.Lieferadresse.Land.ISO="CH") OR (Vorgang.Auftrag.Lieferadresse.Land.ISO="NO"),Drawing("C:\Users\Public\Pictures\Sample Pictures\Chrysantheme.jpg"),"")
... und wenn wir jetzt noch die Sache mit dem IstUStFreiNichtEU einbauen, dann sieht das so aus...
Code:
Cond(Vorgang.Auftrag.IstUStFreiNichtEU,Drawing("C:\Users\Public\Pictures\Sample Pictures\Chrysantheme.jpg"),"")
... und wie Du siehst, muss das ...IstUStFreiNichtEU nicht mal in Klammern gesetzt werden, denn da wird ja nicht mehr drum herum mit "OR" oder so geprüft und entschieden.

Die Frage, ob der "drittland-export-text" automatisch eingefügt wird, ist leicht erklärt, denn das hat nichts mit dem TARIC Code zu tun. Stattdessen ist es so, dass die Wawi beim Aufruf einer Vorlage prüft, ob das Versandland ein EU Land, ein Drittland, usw. ist und sie setzt dann selbsttätig die entsprechenden Variablen.

Kommt also ein Auftrag nach Norwegen dann IST Vorgang.Auftrag.IstUStFreiNichtEU bei Aufruf der Rechnungsvorlage zum Drucken/Speichern/Mailen... auf True=Wahr gesetzt und Dein Ausführer Text wird automatisch ausgegeben.

WAS Du Dir aber überlegen solltest, ist ob Du das Ganze nicht lieber doch so strukturieren solltest, wie ich es oben vorgeschlagen habe und die Abfrage, ob überhaupt etwas ausgegeben werden soll, nicht im Text vornimmst, sondern in der Darstellungsbedingung. Das sähe für die "Chrysanthemen nach Norwegen" dann so aus:

Darstellungsbedingung: Vorgang.Auftrag.IstUStFreiNichtEU
Bild: Drawing("C:\Users\Public\Pictures\Sample Pictures\Chrysantheme.jpg")
- oder -
Text: "Der Ausführer der Waren, auf die sich dieses Handelspapier bezieht, erklärt, dass diese Waren, soweit nicht anders angegeben, präferenzbegünstigte CE Ursprungswaren sind."

Ich denke, Du siehst daran ganz gut , warum die Trennung zwischen der Entscheidung ob dargestellt werden soll und dem was dargestellt werden soll, das Ganze viel übersichtlicher macht, zumal wenn Du mehrere solcher Konstrukte hast, die irgendwie alle gleichberechtigt in Deiner Rechnung stehen, sich aber auch unterschiedliche Bedingungen und Länder beziehen. Dann bricht bei der "alles in einem" Lösung schnell das Chaos aus, bei der getrennten Version aber nicht.
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Es hat noch sehr viel Probieren gebraucht aber jetzt habe ich es hin bekommen. So wie du empfohlen hast mit einer neuen Tabelle. Man muss eben erst mal dahinter steigen wie, wo, was ist und angezeigt wird.
Ich wollte immer alles in eins packen. Erst als ich geschnallt hab, dass man alles schön trennen und mit separaten Zeilen/Spalten arbeiten muss hat es funktioniert.
Die Darstellungsbedingung habe ich dann gleich für die Tabelle und nicht bei den einzelnen Zeilen/Spalten eingefügt.

Erstmal ganz lieben Dank für deine großartige und geduldige Hilfe.

Jetzt habe ich oben auf deinem Bild gesehen, das du noch mehr Bedingungen abfragst und entsprechenden Text ausgibst.
Darf ich dich noch Fragen was das ist und was da drin steht sofern das nicht Firmeninterna sind natürlich.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
Gern geschehen und klar, die anderen Texte kann ich Dir gerne erläutern, die haben zwar auch mit Export, aber nicht direkt mit präferenzbegünstigten Waren zu tun, sondern das sind die Standardtexte auf der Rechnung zur Steuerschuld.

Das Ganze ist bei mir in einer Tabelle unter den Rechnungspositionen angeordnet (siehe Anhang). Die obere Spalte in jeder Tabellenzeile ist eigentlich gleich und lautet auf Deutsch "Leistungsort:" und auf Englisch "Place of Performance:"

Darunter stehen dann die drei Alternativtexte für Innergemeinschaftliche Lieferungen (IGL), Drittlandslieferungen (DL) und Reverse Charge Lieferungen (RC)...

IGL: cond(Vorgang.Auftrag.Kunde.LandISO<>"DE","Tax free intracommunity delivery (acc. § 4 Nr. 1 b UStG)",ToRTF$(Vorgabe.Texte.IGL))
DL: cond(Vorgang.Auftrag.Kunde.LandISO<>"DE","Transaction is not subject to German domestic taxation",ToRTF$(Vorgabe.Texte.UStFrei))
RC: cond(Vorgang.Auftrag.Kunde.LandISO<>"DE","Reverse Charge",ToRTF$(Vorgabe.Texte.ReverseCharge))

Wie Du siehst, frage ich vor der Ausgabe ab, in welchem Land der Kunde sitzt und benutze dann entweder den von mir erzeugten englischen Text, oder aber eine der drei Textvorgaben der Wawi aus dem Bereich "Preis / Steuerdarstellung". Die sind in der aktuellen Wawi im Menü "Admin > Ausgabeoptionen (veraltet)" angesiedelt, also schon als "veraltet" bezeichnet und vielleicht gibt es die auch aktuell schon woanders in der Wawi, das wäre mir entgangen, aber falls nicht, dann werden sie vermutlich in die "Globalen Textbausteine" wandern, mal schauen.

Die Abfrage auf die Sprache von oben ist übrigens nur "halbgar", weil z.B. nicht jeder, der in England arbeitet auch automatisch eine englischsprachige Rechnung braucht (bald schon, ich weiß...). Falls Du also die tatsächliche Sprache deines Kunden berücksichtigen möchtest, dann musst Du die Abfrage Vorgang.Auftrag.Kunde.LandISO<>"DE" von oben gegen die Abfrage der tatsächlich beim Kunden hinterlegten Sprache austauschen. Die gibt es zwar nicht als L&L Variable, aber man kommt da mit einer JTL_DirectQuery() gut ran. Dann sähe das Konstrukt für den IGL Text zum Beispiel so aus...
Code:
cond(Upper$(JTL_DirectQuery("SELECT tSpracheUsed.cISO2 FROM tSpracheUsed JOIN tkunde ON tkunde.kSprache=tSpracheUsed.kSprache WHERE dbo.tkunde.ckundennr='"+ToString$(Vorgang.Kunde.Kundennummer)+"'"))<>"DE","Tax free intracommunity delivery (acc. § 4 Nr. 1 b UStG)",ToRTF$(Vorgabe.Texte.IGL))
... die Werte, die von der JTL_DirectQuery() zurückgeliefert werden, sind also auch die 2-Buchstaben ISO Codes wie bei Vorgang.Kunde.LandISO, aber als Kleinbuchstaben, weshalb ich noch ein Upper$() drumrum gepackt habe, denn das macht daraus Großbuchstaben. Zur Übersicht habe ich Dir mal ein Bild angehängt, das Dir die in der Wawi definierten Sprachen und ihre cISO2 Codes zeigt.
 

Anhänge

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
ok,
kann es sein, dass da noch die Darstellungsbedingungen fehlen? Es wird ja sonst immer irgendein Text ausgegeben. Endwerder in englisch oder in deutsch.
Ich habe das jetzt so gemacht:
"RC": Vorgang.Auftrag.IstReverseCharge.
"DL": Vorgang.Auftrag.IstUStFreiNichtEU
"IGL": Vorgang.Auftrag.IstIGL

Das mit der Länderabfrage würde ja bedeuten ich muss für jedes einzelne Land in der entsprechenden Landessprache so eine Abfrage hinterlegen.
Ich verkaufe nicht soooo oft nach Norwegen. Deswegen schenke ich mir das ;)

Für meine Zwecke ist es nun perfekt.

Nochmals vielen lieben Dank.
 
Zuletzt bearbeitet:

gutberle

Sehr aktives Mitglied
29. März 2011
1.273
348
Oha, das stimmt natürlich, die hatte ich vergessen, aber genau wie Du es oben gemacht hast ist es richtig, natürlich ohne die "RC": und so weiter davor, falls hier noch jemand mitliest... ;)

P.S. Das mit der vielfachen Länder- oder eher Sprachabfrage ist korrekt. Im Moment, wo nicht einmal die für den Auslandsverkauf gedachten Texte, die wir hier verwenden, in anderen Sprachen in der Wawi vorliegen, ist das alles völlig überdreht. Falls/wenn diese Texte aber mal in die "Globalen Texte" wandern UND diese globalen Texte dann auch noch in List & Label zur Verfügung gestellt werden, braucht man den ganzen Zirkus nicht mehr, denn dann steht Dir automatisch der richtige Text in der richtigen Sprache unter der immer gleichen Variable zur Verfügung. - Drücken wir uns selbst die Daumen, dass das bald kommt... :)
 
Zuletzt bearbeitet:

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Wo finde ich eine nachvollziehbare Anleitung?
Naja bis dahin haben wir doch was ziemlich gutes geschaffen für alle die auch auf der suche sind ;)
Zwei Lösungen
Eine leichte Lösung über den Workflow und eine (für Nichtprogrammierer) etwas schwierigere dafür aber komplette Lösung.

Ich habe noch gar nicht probiert ob man nicht sogar alles über Workflows machen kann ohne das es sich gegenseitig "stört" ;)
 

albi123

Sehr aktives Mitglied
7. Dezember 2009
535
34
Ich muss das nochmal hoch holen weil sich ein kleines Problemchen aufgetan hat.

Darstellungsbedingung: Vorgang.Auftrag.IstUStFreiNichtEU
Bild: Drawing("C:\Users\Public\Pictures\Sample Pictures\Chrysantheme.jpg")
Ich habe mich immer gewundert warum manchmal das Bild (Stempel) auf der Rechnung gedruckt wurde und manchmal nicht.
Jetzt habe ich festgestellt, dass wenn die Rechnung via Workflow auf dem Server ausgeführt wird wird das Bild gedruckt. Das passiert immer dann wenn der Kunde via PayPal oder Sofortüberweisung sofort bezahlt und der Workflow auf dem Server ausgeführt wird.
Wenn aber der Kunde per Vorkasse bezahlt, das Geld eingeht und ich auf einem Clienten Zahlungseingang setzte wird das Bild NICHT gedruckt.
Der Grund ist der nun (auf dem Clienten) falsche Pfad zum Bild.

Jetzt ist natürlich die Frage, wie muss der Pfad zum Bild aussehen damit das Bild auch aus einem Clienten heraus gedruckt wird?
 
Ähnliche Themen Forum Antworten Erstelldatum des Themas
Gelöst Statistik Auswertung erzeigt Fehler- erledigt- Gelöste Themen in diesem Bereich 0