Abbildung Steuern bei Warenexport - DB ERD

Mik3e

Erfahrenes Mitglied
Hi zusammen,

Ich arbeite seit geraumer Zeit an einer e-Commerce Lösung. Nun beschäftige ich mich seit einigen Tagen mit de Thema "Steuern" (vor allem beim Export von Waren) und habe mich durch etliche Unterlagen gewühlt.

Hier als Grundlage zu meiner Fragestellung mal die Fakten zum Steuerrecht (soweit ich das bisher jedenfalls durchschaut habe):

-----------------------------------------------------------------------------------------------
Prinzipiell gibt es vier verschiedene Besteuerungsmöglichkeiten (Drittstaaten = Nicht EU Mitgliedsstaaten bzw. Sonderzonen in der EU):

1) Warenverkehr mit Drittstaaten - Lieferung an Unternehmer:
Keine USt. verrechnen

2) Warenverkehr mit Drittstaaten - Lieferung an Letzverbraucher:
Keine USt. verrechnen

3) Warenverkehr mit EU Staaten - Lieferung an Unternehmer:
Keine USt. verrechnen, sofern die USt. ID des Kunden bekannt ist. Ist keine USt. ID bekannt, wird der Steuersatz des Lieferantenlandes herangezogen.

4) Warenverkehr mit EU Staaten - Lieferung an Letztverbraucher:
Es kommt der USt. Satz des Lieferantenlandes zur Geltung. Ausnahme: Man überschreitet die Versandhandel-Schwellwerte oder besitzt eine entsprechende Genehmigung des Finanzamtes sowie die "ausländische" UID. Dann kann man den USt. Satz des Landes in das verkauft wird einsetzen. Die USt. muss in diesem Fall an das ausländische Finanzamt abgeführt werden.

Beispiele:

Österreich = 20% USt.
Deutschland = 16% USt. (EU Mitgliedsstaat)
Schweiz = 7,6% USt. (Drittstaat)

- Von Österreich nach Österreich an Unternehmen oder Privat = 20%
- Von Österreich nach Deutschland an Unternehmen mit USt. ID = 0%
- Von Österreich nach Deutschland an Privatperson = 20%
- Von Österreich nach Schweiz an Unternehmen = 0%
- Von Österreich nach Schweiz an Privatperson = 0%

Grafisch aufbereitet findet man diese Infos in folgendem PDF ab Seite 32:
http://fgr.wu-wien.ac.at/INSTITUT/FR/Loukhand.pdf

Sonderfall ist die Versandhandel-Lieferschwelle. Ab einem bestimmten Umsatz (hierfür gibt es detailierte Listen), kann man als Verkäufer an Letzverbraucher in EU Staaten die USt. Sätze des Ziellandes heranziehen. Macht vor allem Sinn, wenn man in Länder mit geringerem Steuersatz liefert (z.B. von Österreich nach Deutschland an Letztverbraucher -> Brutto-Preis sinkt -> Konkurrenzfähiger).
-----------------------------------------------------------------------------------------------

So, das war mal der Exkurs zum Thema :) Nun muss ich diese (zugegeben recht komplexe Logik) in eine relationale Datenstruktur packen.

Fragestellung / Ziel:
Ich möchte dafür nun ein hübsches und elegantes ERD schaffen.

Klar ist, dass man die Länder in Zonen (Steuerzonen) packen muss (z.B. EU Mitgliedsstaaten, Drittländer) und dann entsprechend (abhängig davon, woher der Kunde kommt) die Steuersätze ermitteln.

Bisher habe ich mir folgende Tabellen überlegt:

- Kunden (kommen aus bestimmten Land & Bundesland)
- Länder
- Bundesländer (da man Steuern auch auf dieser Ebene herabbrechen können muss. Beispiel: Die Kanaren sind ein "Bundesland" Spaniens, gelten aber als EU Sonderzone und werden steuerrechtlich wie ein Drittland behandelt)
- Steuerzonen: z.B. EU Mitgliedsstaaten, EU Sonderzonen, Drittländer
- Steuerklassen: z.B: Lebensmittel Österreich, Non-Food Österreich
- Steuersätze: Schaffen die Relation zwischen Steuerzone und Steuerklasse.

z.B:
Lebensmittel Österreich -> 10 % -> EU Mitgliedsstaaten
Lebensmittel Österreich -> 0 % -> EU Sonderzonen
Lebensmittel Österreich -> 0 % -> Drittländer

Die "Sonderform" des Verkaufs an Unternehmen von EU Mitgliedsstaaten mit USt. ID wird mit einem Flag "Umsatzsteuer-befreit" direkt in der Kundentabelle gelöst (da man hier theoretisch immer beim Finanzamt prüfen sollte, ob es diese USt. ID tatsächlich gibt).

Nun grübel ich schon ne geraume Zeit rum.. Mir machen vor allem die Steuerzonen Probleme, da diese ja eigentlich auf Bundesland-Ebene greifen und nicht auf Landesebene.

Vielleicht hat der eine oder andere von Euch sich ja schon mit diesem Thema beschäftigt und kann mir ein paar Tipps zum Aufbau des ERD's geben. Vor allem die Usability ist wichtig (Es wäre z.B witzlos, wenn jemand für die neue Steuerzone "EU" alle Bundesländer einzeln auswählen müsste -> muss über die "Elternkategorie" Länder laufen aber die Vertiefung auf Bundeslandebene ermöglichen)

Ist nicht wirklich einfach behaupte ich mal.. :)
Der Vollständigkeit halbe (obwohl hier irrelevant): DBMS: MySQL > 5.0

Danke & Ciao,
Mike
 
Ich würde die Detallierung auf Länderebene beginnen und nicht schon bei EU/nicht EU. Deinen Shop wirst Du ja auch nicht nur in Österreich/der EU verkaufen.

Dann kann der Händler auch explizit bestimmen, in welche Länder er versendet. Eine Liste mit allen Ländern in der Standard-Installation zur Auswahl vorzuhalten wird ja bei dem Umfang des Projektes den Kohl auch nicht mehr fett machen.

Dann sind natürlich die Steuerklassen non Food, Food, Books etc. in einer eigenen Tabelle editierbar zu führen.

Als nächstes eine Tabelle mit den Steuersätzen, die zunächst zwischen Land und Steuerklasse verknüpft. Dazu gibt es einen Gültigkeitszeitraum mit Start- und Enddatum, letzteres ist ggf. null für "auf unbestimmte Zeit" und natürlich der Prozentsatz.

Für die Sonderfälle kannst Du nun eine Tabelle mit Bundesländern anlegen. Sie werden über einen Fremdschlüssel den Ländern zugeordnet. In der Tabelle der Steuersätze muss nun auch noch eine Bundesland-Id eingefügt werden, die null annimmt, wenn Du den globalen Steuersatz für ein Land bestimmen willst (siehe oben).

Ich hoffe für Dich, dass Du da alles bedacht hast, nicht, dass irgendein Land zum Beispiel Pauschalsteuern erhebt oder sonst einen Unfug macht. Steuerrecht ist ja der Rechtsbereich, der den meisten Unsinn verzapft.

Gruß hpvw
 
Hi,

Also es gibt sicher noch ganz spezielle Formen irgendwo im Kongo, aber man kann nicht alles 100% mit einem System abdecken (den Satz hab ich glaub mal von Dir gehört) :)

Selbst wenn die Software nun alle Funktionen zum aktuellen Zeitpunkt abdeckt, heißt das nicht, dass es in einem Jahr noch stimmt.

Daher möchte ich dem Betreiber höchtmögliche Flexibilität bieten.

Das mit den Zonen hast Du falsch verstanden. Die Tabelle "Steuerzonen" dient ausschließlich dazu, mehrere Länder zusammenzufassen.

Es gibt also beispielsweise folgende Steuerzonen:
- Inland
- EU Mitgliedsstaaten
- EU Sonderzonen (Kanaren etc.)
- Drittländer

Diesen werden über eine Join Tabelle (n:m) verschiedene Länder UND Bundesländer zugewiesen.
Und beim Steuersatz werden dann die Steuerzonen mit den Steuerklassen und dem Wert(%) verknüpft. Die Steuerzone ist hier nur eine Überkategorie die dem User das anklicken von 100 verschiedenen Ländern bzw. Bundesländern spart...

Das ganze löst mir aber noch nicht mein Bundesland Problem...

Habe mir jetzt mal den osCommerce Shop angesehen. Der arbeitet nach dem selben Prinzip. Hier ein Demo-Shop:
http://demoshop.different-solutions.com/admin
User & Passwort: Admin

Zu finden unter Datei -> Einstellungen -> Steuern

Hab mir auch das ERD angesehen, werde daraus aber nicht schlau :(

Ciao,
Mike
 
Wozu so eine EU/Nordamerika-Übersicht, wenn die Steuerklassen dann doch wieder Länderspezifisch sind?
Wenn ein Shop "weltweit" versendet, sollte er auch die Kapazitäten haben, die Steuern der einzelnen Länder zu pflegen.

Vielleicht sollte man über eine n:m-Beziehung die Steuerklassen mit den Ländern verknüpfen. Und dann die Produkte über die Steuerklassen auch den jeweiligen Ländern zuweisen. Mit den Bundesländern tritt dann die gleiche Normalverletzung auf, wie in Deinem anderen Thread.

Ich habe mal ein Beispiel angehängt. Ich hoffe, Du wirst daraus schlau.

Gruß hpvw
 

Anhänge

  • Steuern.gif
    Steuern.gif
    8,8 KB · Aufrufe: 50
Hi,

Also ich finde die kategorisierung nach Steuerzonen doch sehr sinnvoll...Wie diese dann heißen, bleibt ja dem Betreiber überlassen.

Was ich bei Deinem ERD nicht ganz verstehe ist die verknüpfung zwischen Produkt und Steuerklasse. Wenn ich das richtig verstehe, hast Du hier ne n:m Beziehung gebaut.

Aber ein Produkt hat ja jedenfalls immer nur eine Steuerklasse.

Beispiel:
Produkt: "Vollkornbrot" hat die Steuerklasse "Lebensmittel"

Welcher prozentuelle Steuersatz dann zum Einsatz kommt wird ja dahinter über die Tabelle "Steuersatz" deklariert.

Die führt zusammen:
Steuerklasse -> Steuerzone -> %-Satz

D.h. kommt der Kunde aus Deutschland und ich versende aus Österreich:
"Lebensmittel" -> EU-Mitgliedsstaaten -> 0%

Versende ich innerhalb Österreichs:
"Lebensmittel" -> Inland -> 20%

Versende ich an Drittstaaten:
"Lebensmittel" -> Drittstaaten -> 0%

Je nachdem woher der Kunde kommt, erhält er den korrekten Steuersatz.
Das einzige Problem, dass bei diesem Lösungsansatz noch über bleibt sind die Bundesländern.

Würde ich davon ausgehen, dass jedes Land mindestens ein Bundesland hat und jedem Kunden ein Bundesland zugewiesen ist, wäre es simpel. Dann verknüpfe ich einfach die Bundesländer mit den Steuerzonen und lass die Länder außen vor.

Da dem aber nicht so ist (ein land muss nicht zwingend ein Bundesland haben und ein Kunde muss auch nicht einem Bundesland zugewiesen werden), wirds komplexer.

Ich grübel derzeit an der Join-Tabelle von Länder/Bundesländer zu Steuerzonen rum. Ein Land oder Bundesland darf natürlich auch nicht zu mehreren Steuerzonen gehören (oder sehe ich da was falsch?). Nur wie decke ich sowohl Bundesland als auch Land mit der Tabelle ab? Wahrscheinlich ist Dein Ansatz das mit zwei Tabellen zu lösen der beste.

Also:
tbl_land_join_steuerzone
tbl_bundesland_join_steuerzone

Wenn der Benutzer nun eine neue Steuerzone erstellt, kann er auswählen:
Land: Österreich
Bundesland: Alle Bundesländer, Wien, NÖ, etc.

Die Applikation muss dann beim Ausweisen der USt. zuerst prüfen ob der Kunde einem Bundesland zugewiesen ist. Wenn ja, dann sucht er nach dem entsprechenden Steuersatz in der Bundesland_Join Tabelle. Wenn er dort nichts findet, zieht er das Land heran. Findet er dort auch nichts, wird die USt. = 0% gesetzt (sollte er aus einem Land kommen, dem keine Steuer zugewiesen ist).

So.. Jetzt muss ich das alles noch in ein ERD stopfen...
Was hältst Du von dem Denkansatz?

Ciao,
Mike
 
So, hab das jetzt mal in ein ERD gepackt.. Was sagst Du dazu?
Mir gefällt die Lösung mit der Verknüpfung zwischen Land, Bundesland und Steuerzone nocht nicht wirklich... aber mir fällt keine andere ein.. Vielleicht hast Du ja noch einen Geistesblitz.

Ciao,
Mike
 

Anhänge

  • Auszug ERD Steuern.jpg
    Auszug ERD Steuern.jpg
    75,4 KB · Aufrufe: 42
Ich hatte die Steuerklassen als n:m-Beziehung drin, weil es nicht zwingend in allen Ländern die gleichen Steuerklassen gibt und ggf. auch nicht dieselben Produkte in der gleichen Steuerklasse sind.
Zum Beispiel gibt es in DE einige Lebensmittel, auf die der volle Umsatzsteuersatz zu zahlen ist. Auf die gleichen Lebensmittel gibt es in anderen möglicherweise auch einen ermäßigten Satz.
Ein Produkt wird damit in jedem Land/Bundesland einer Steuerklasse zugewiesen.

Gruß hpvw
 
Hm.. da hast Du wahrscheinlich recht...
Aber das auch noch abbilden wird ein Horror... Der Betreiber muss dann nochmals pro produkt und land die Steuern definieren.. Das kann ich ja niemanden zumuten!?

Ciao,
Mike
 
Es kann ja auch eine Steuerklasse "Nicht EU" geben, die dann als Stuersatz 0% hat.

Wenn Du dann mit Land/Steuerzone den gleichen Klimmzug machst, wie mit Bundesland/Land, kannst Du es dem Shop-Betreiber auch wieder einfacher machen. Du bleibst jedoch flexibel und kannst jederzeit spezifischere Steuersätze auf Länder-Ebene definieren.

Ich würde die "Steuerzone" jedenfalls dann als Generalisierung von "Land" modellieren und nicht zwischen Land, Bundesland und die Steuerklassen hängen.

Ich versuche mal anzudeuten, wie das in der Oberfläche für's Produkt aussehen könnte, wobei der letzte Part ein Drop-Down/Select darstellen soll:
Code:
Privatkunden

+ Nordamerika        |Nicht-EU                    |
- EU                 |EU-Lebensmittel             |
    - Spanien        |von EU übernehmen           |
          Kanaren    |Kanaren Special Lebensmittel|
    + Deutschland    |Alkohol Deutschland         |
    + Österreich     |Lebensmittel Inland         |
+ Asien              |Nicht-EU                    |


Geschäftskunden

+ Nordamerika        |Nicht-EU                    |
...
In den Auswahllisten sind dann natürlich nur die Steuerklassen zu sehen, die dem Land/ Bundesland explizit zugewiesen wurden. Wenn es keine speziellen Klassen für Unterkategorien (Land/Bundesland) gibt, kannst Du das Plus ja auch weglassen.

Um das abzufragen, kannst Du mit allen 3 Ebenen (Steuerzone, Land, Bundesland) "Left-Joinen" und im Query entweder mit if .. is not null oder einem Switch die spezifischste Definition als gültigen Steuersatz für den Kunden und das Produkt auswählen.

Gruß hpvw

PS: Was machst die mit Zöllen? *duck und weg*
 
Pff.. Also ich versteh Deine denkweise (halbwegs jedenfalls). Aber das kann ich dem Betreiber nicht zumuten. Das checkt er einfach nicht... (ich spreche aus Erfahrung).

Noch dazu sind jene Fälle, in denen dem Kunden die Mehrwertsteuer des Kunden-Landes verrechnet wird, eher die Ausnahme. Normalerweise wird entweder 0% oder die USt. des Lieferantenlandes verrechnet.

Dafür brauche ich dann auch Bundesländer, weil:
Spanien Dienstleistungen: 20%
Spanien Dienstleistungen / Kanaren: 0% (gilt als Sonderzone und somit Drittland)

Aber in diesem Beispiel gehe ich davon aus, dass ich keine eigene Steuernummer in Spanien habe.

Wenn ich die spezifische Angabe aber außen vor lasse, ist es wieder kein System, dass mir alle Fälle berücksichtigt.

Sehe ich das richtig, dass Du meinst, dass bestimmte Güter nicht in allen Ländern zur selben Steuerklasse gehören müssen?!

Beispiel (angenommen):
- Wodka gilt in Österreich als Steuerklasse Getränk -> 10%
- Wodka gilt in Deutschland als Steuerklasse Kein-Getränk -> 16%

Hm... langsam bin ich mit meinem Rat am Ende...
Entweder ich bin echt zu dämlich oder ich finde einfach keine andere Alternative.

Bei den Zöllen wird es wahrscheinlich etwas leichter. Das ist dann aber eine eigene Kategorie bei den Versandspesen.

Ciao,
der verzweifelte Mike :(
 

Neue Beiträge

Zurück