Komplexe Steuererfassung für EU Shop

  • Hallo Virtuemart Fans,


    ich bastle ja jetzt auch schon eine ganze Weile mit dem Virtuemart herum von 1 bis 3, aber es bleiben immer noch Mysterien und ungeklärte Phänomene.


    Nun zum Thema (Shop mit Joomla 3.4.3 und VM 3.0.9):


    1. Shopvorgabe:
    Für einen EU-Shop habe ich insgesamt 6 verschiedene Regeln zur Mehrwertsteuer hinterlegt.


    - 2x Mehrwertsteuer (Gast-Käufergruppe) / der Besucher ist nicht angemeldet
    (19% MwSt. = Normale Produkte und 7% MwSt. = Lebensmittel/Nahrungsergänzung)


    Die Nahrungsergänzungen befinden sich in einer eigenen Kategorie.
    Die 7% Regel ist dieser Kategorie zugeordnet.
    Die 19% Regel den verbleibenden Kategorien.


    - 2x Mehrwertsteuer (EU) / der Besucher ist angemeldet oder gibt im Warenkorb/Checkout sein Land ein:
    (19% MwSt. = Normale Produkte und 7% MwSt. = Lebensmittel/Nahrungsergänzung)


    Die Nahrungsergänzungen befinden sich in einer eigenen Kategorie.
    Die 7% Regel ist dieser Kategorie zugeordnet.
    Die 19% Regel den verbleibenden Kategorien.
    Die entsprechenden Länder für EU sind zugeordnet.


    - 2x Mehrwertsteuer (nicht EU) / der Besucher ist angemeldet oder gibt im Warenkorb/Checkout sein Land ein:
    (0% MwSt. = Normale Produkte und 0% MwSt. = Lebensmittel/Nahrungsergänzung)


    Die Nahrungsergänzungen befinden sich in einer eigenen Kategorie.
    Die 0% Regel ist dieser Kategorie zugeordnet.
    Die 0% Regel den verbleibenden Kategorien.
    Die entsprechenden Länder für EU sind zugeordnet.


    2. Problemstellung:


    Für Gäste und EU funktioniert auch alles soweit.


    Nur für nicht EU (z.B. Schweiz) gibt es Probleme.


    - Problem 1: in der Übersicht sowie in der Detailansicht der Produkte wird keine MwSt. angezeigt.
    Hier wäre eigentlich schön wenn diese trotzdem angezeigt würde also mit 0,00 € - das hängt damit zusammen das ich in dem Textfeld davor mit PopUp Verlinkung "zzgl. Versand (Versandkostenhinweis) und inkl. MwSt. (Mehrwertsteuerhinweis für alle bzw. speziell auch für Gäste bevor siesich mit Ihrem jeweiligen Land identifizieren)". Wird dieser Teil (MwSt.) nicht angezeigt ist auch kein Hinweis auf Versand und MwSt. eingeblendet. Wobei ich denke das liese sich noch anders lösen!?


    - Problem 2: in der Übersicht sowie in der Detailansicht der Verkaufspreis richtig angezeigt nur darüber erscheint der Reguläre Preis für Preisnachlässe und der entspricht dem Verkaufpreis.


    Dieses Problem ist schwerwiegender und ich nehme an das VM die Reduzierung der MwSt. als Preisnachlass wertet und somit dann die Anzeige "Regulärer Preis" aktiviert, obwohl es zwischen diesen Preisen keinen unterschied gibt.


    Habe ich bei den Einstellungen bzgl. der Steuerregeln bzw. der Preisangaben irgendetwas übersehen?


    3. Einstellungen Preisangaben:


    - MwSt. im Warenkorb anzeigen (ja)


    - Rundung nur auf die Anzeige anwenden (ja)


    - Anzeige der Preise von Varianten inklusive MwSt (ja)


    Folgende Preise anzeigen (Preis anzeigen/Preisbezeichung anzeigen/Dezimalstellen für Rundung):


    - MwSt.-Betrag (ja/ja/2)
    - Basispreis inklusive MwSt., aber ohne Preisnachlässe (ja/ja/2)
    - Endverkaufspreis (ja/ja/2)
    - Preisnachlassbetrag (ja/ja/2)
    - Grundpreis (ja/ja/2)


    Ich werde mich nochmal auf die suche nach einer Lösung begeben, daher wäre schön wenn das jemand gelöst hat bzw. einen Hinweis zur Lösung hat.


    Vielen Dank

  • #### Weitere Info ###


    zu Problem 1:


    habe ich eine Lösung gefunden:


    in mytemplate/html/com_virtuemart/category/default.php


    ####################


    if (empty($product->prices['salesPrice']) and VmConfig::get ('askprice', 1) and !$product->images[0]->file_is_downloadable) {
    echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE');
    }
    //todo add config settings
    if ($this->showBasePrice) {
    echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $product->prices);
    echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $product->prices);
    }
    echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices);
    if (round($product->prices['basePriceWithTax'],VmConfig::get('salesPriceRounding')) != $product->prices['salesPrice']) {
    echo '' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices) . "";
    }
    if (round($product->prices['salesPriceWithDiscount'],VmConfig::get('salesPriceRounding')) != $product->prices['salesPrice']) {
    echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices);
    }
    echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
    echo $this->currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices);
    echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);


    echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices);



    ## hier eingebaut und via sprachoveride den Linkaufruf eingebaut ##
    //display shipping info tetro


    echo '<div class="PricetaxAmount vm-display vm-price-value"><span class="vm-price-desc">'
    .JText::_('COM_VIRTUEMART_PRODUCT_SHIPPING_DISPLAY').
    '</span><span class="PricetaxAmount"></span></div>';


    //display shipping info tetro
    ## hier eingebaut und via sprachoveride den Linkaufruf eingebaut ##



    $unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit);
    echo $this->currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices);


    ####################


    Falls das jemand für rechtsgültien Shop brauchen könnte


    #### Weitere Info ###


    zu Problem 2:


    Wenn man in den Preisangaben (VM Konfiguration) 5 Dezimaleinstellungen einstellt, dann verschwindet der der Fehler (siehe Problemstellung 2. oben) und "Regulärer Preis" wird nicht mehr angezeigt?
    Anscheinend ist dort irgendwo der Grund für das Phänomen?


    Hatte auch 4 Dezimaleinstellungen getestet dort wird der Preis bis auf die letzte Kommastelle richtig angezeigt. Dies lässt vermuten, dass die 5 Kommastelle irgendein Vergleichsproblem hat und da wahrscheinlich einen anderen Wert vermittelt bekommt wenn 4 oder weniger Dezimalstellen eingestellt ist.


    Soweit ich die Funktion verstanden hab wird der alte Preis nur angezeigt wenn dieser einen anderen Wert hat.


    Nun habe ich zusätzlich die Option "Rundung nur auf die Anzeige anwenden" deaktiviert und siehe da er zeigt wieder alles richtig an. Das würde bedeuten das hier ein Problem auftaucht.



    Die Option "Rundung nur auf die Anzeige anwenden" habe ich bzgl. der Genauigkeit der Mehrwertsteuer-Berechnung aktiviert, welches dann Berechnungsfehler (Aufrundungsfehler durch das zusammenzählen mehrere Produkt-Mehrwertsteuern) bei mehreren Produkten im Warenkorb behoben hat.


    Bei dieser Option "Rundung nur auf die Anzeige anwenden" wird die Aufrundungsproblematik dadurch behoben indem mit mehr Kommastellen eine höhere Genauigkeit beim Zusammenzählen der Mehrwertsteuerbeträge gerechnet wird.


    Wenn ich zwei Kommastellen (bei den Preisen wie üblich) einstelle, so erhalte ich folgendes Beispiel:


    Produkt A:
    ( 3 Kommastellen) 8,344 € = 8,34 (aufgerundet auf zwei Kommastellen)


    plus


    Produkt B:
    ( 3 Kommastellen) 5,264 € = 5,26 (aufgerundet auf zwei Kommastellen)


    Ergebnis (Produkt A) + (Produkt B):


    ( 3 Kommastellen) 13,608 € = 13,61 (aufgerundet auf zwei Kommastellen) siehe oben Berechnung mit den bereits aufgerundeten Beträgen "(Produkt A / 8,34) + (Produkt B / 5,26) = 13,60"


    Wenn also durch "(Produkt A) + (Produkt B)" mit 2 Kommastellen aufgerundet und die Mehrwertssteuerbeträge zusammenzählt wird, ergibt sich dadurch ein andere Mehrwersteuer Gesamtbetrag.


    Um diesen Fehler zu vermeiden ist die Einstellung "Rundung nur auf die Anzeige anwenden" eigentlich unbedingt zu aktivieren. Vor allem wenn man mit einer genaueren Warenwirtschaft (z.B. Lexware etc.) arbeitet und von dort die Rechnungststellung auch betreibt.


    Dennoch verursacht sie eine Fehlerberechnung.


    VM vergleicht hier anscheinend aufgerundete Beträge mit tatsächlich hinterlegten Beträgen. Ähnliches zeigt sich auch wenn ich bei einem Produkt ganz normal mit 19% MwSt. folgendes bei den Preisen eines Produktes eintrage.


    Endpreis
    5.89643


    daraus berechnet (19% MwSt.) sich ein


    Selbstkostenpreis
    4.95498


    Auch bei dieser Variante wird die Anzeige "Regulärer Preis" dargestellt mit dem gleichen Preis wie der Verkaufspreis?


    Daraus folgt meiner Meinung nach das er den angezeigten und aufgerundeten Endpreis Betrag (5.90 / 2 Kommastellen / Preisangaben) mit dem hinterlegten vergleicht und dort einen anderen Wert (5.89643) vorfindet jedoch dan wieder zur Anzeige aufrundet - als eben zuerst aufzurunden und dann zu vergleichen.


    Nun habe ich auch noch den Endpreis testweise auf 5.901 gestellt zwecks der Kommastelle aber auch hier die unbeliebte Anzeige.


    Das funktioniert nur dann wenn wie oben schon beschrieben fünf Stellen nach dem Komma eingestellt werden. Also im Prinzip die Rundung der Beträge vermeidet.


    Also bleibt mir derzeit nichts anderes übrig als zwischen dem Übel der Fehlberechnung der addierten Mehrwertsteuer (Rundung nur auf die Anzeige anwenden - deaktivieren) oder einer Fehlfunktion bei nicht EU Ländern (also ohne MwSt.) und mit der Anzeige "Regulärer Preis" als doppelte Preisangabe wählen zu müssen.


    Ist das nur bei mir so?


    Aber im Prinzip ist das auch so ein Fehler der bei den Kalkulationen auftaucht im Zusammenspiel mit (Basispreis inklusive MwSt., aber ohne Preisnachlässe).
    Daher meine ich müsste um dies zu vermeiden einfach die Möglichkeit bestehen das man Nullstellen bei den Produkten mitspeichern kann. Was ja nicht möglich ist.
    Aber eigentlich tappe ich immer noch im Dunkeln?


    Würde mich über Hilfe freuen.


    Gruß Ralf

  • Servus,


    wenn ich das richtig verstanden habe, muss man ab Januar 2015 die jeweilige MwSt des Landes angeben. Ich hab hier ein wenig gelesen:


    Umsatzsteuer: Das ändert sich beim Export elektronischer Dienstleistungen


    Dafür gibt es inzwischen den EU VAT ID Checker in Verbindung mit der MOSS-Erweiterung. (Ich hab's selbst noch nicht ausprobiert, weil ich keinen EU-Shop habe, aber den Reaktionen nach macht es das Leben wohl um vieles einfacher.)
    Orders : EU Vat ID checker


    Zu Deinen Berechnungen kann ich leider nicht wirklich etwas sagen, da müsste ich erst mal nen Tag ausprobieren, um das alles nachzuvollziehen. Bisher hatte ich keine Probleme mit den Berechnungen, bis auf Abweichungen von einem Cent, aber bei einem Cent ist auch das Finanzamt nicht wirklich irritiert.


    So short
    Stefan

  • Vielen Dank für den Tipp


    Das Tool hatte ich schon mal im Hinterkopf scheint sehr nützlich, ob es jedoch die genannte Problematik beseitigen kann ist für mich sehr fraglich. Zumal ich das Problem mit den Aufrundungen eher VM Intern sehe und sehr unsicher ob das ein Drittanbietertool ausbügeln kann.


    Zu Deiner Steuerproblematik muss ich dazu sagen das der Shop nicht in den Bereich "elektronischer Dienstleistung" tätig sein wird und daher immer noch die Regelung mit der Besteuerung innerhalb der EU so gilt, dass die Mehrwertsteuer des Anbieterlandes zur Verwendung kommt.


    Ausser eben europäisch aber nicht EU (z.B. Schweiz) - diese werden nach meinem Wissensstand nicht besteuert - also Mwehrwertsteuer entfällt (0% MwSt.).


    Wenn du bei Dir die Option "Rundung nur auf die Anzeige anwenden" nicht benötigst und mit den Rundungsabweichungen bei der Mehrwertsteuer leben kannst, dann tritt der Fehler wie beschrieben auch nicht auf. In deinem Fall wird der Preis auch nur durch die einmalige Vergabe der Mehrwertsteuer berechnet. In meinem Fall bekommt der Preis ja default 19% MwSt. und wird dann nochmal neu mit 0% MwSt. (z.B. Schweiz) berechnet und das sorgt dann für unterschiedliche Ergebnisse da er mit mehr Kommastellen rechnet - der alte Preis jedoch bereits nur mit zwei Stellen vorliegt - oder so ähnlich ist für mich wie gesagt noch etwas wirr.


    Ich hab jetzt erstmal das geringere Übel gewählt "bis mal einer eine Lösung findet bzw. ein Upgrade eine Lösung in der Zukunft bringt" und habe die Option "Rundung nur auf die Anzeige anwenden" deaktiviert. Nun muss die Buchhaltung damit leben.


    Dennoch sollte dieser Bereich weiter beobachtet werden und es wäre natürlich interessant ob dein Erweiterungstipp (EU VAT ID Checker) eventuell zu meiner Problemstellung einen erfahrenen Nutzer aufmerksam macht.


    Gruß Ralf

  • Viel zu viele verschiedene Dinge vermischt. Lese ich jetzt nicht alles durch.


    Also das Euvatid plugin braucht jeder, der mit euvatid arbeiten will. Ob man MOSS nutzt, oder nicht, ist eine anderes Blatt.


    Mit MOSS läuft VM mit euvatid checker mit 17 Steuerregeln einwandfrei. Das Plugin löst alle oben genannten Probleme.


    So und jetzt zum Runden. Link: https://en.wikipedia.org/wiki/…stributivity_and_rounding


    Mehr Kommentare hier Link: Discount Error


    Die neue Version arbeitet noch etwas besser (3.0.9.6).

  • Ja sorry ich dachte wenn ich mir die Mühe mache das relativ komplex gleich von Anfang an darzustellen kann ich dadurch Hinterfragungen zu meinem Problem vermeiden.


    Im Prinzip geht es auch simpler:


    1. Option "Rundung nur auf die Anzeige anwenden" aktiviert.


    Optimale und richtige Berechnung der MwSt. - jedoch Problem mit den 0% MwSt. bei nicht EU bei der Anzeige "Regulärer Preis" als doppelte Preisangabe wenn zusätzlich (Basispreis inklusive MwSt., aber ohne Preisnachlässe) aktiviert ist, obwohl kein Preisunterschied bzw. kein Rabatt eingestellt ist.


    2. Option "Rundung nur auf die Anzeige anwenden" deaktiviert.


    Nicht genaue Berechnung der MwSt. - jedoch ohne Problem mit den 0% MwSt. bei nicht EU bei der Anzeige "Regulärer Preis" - wird dann nicht mehr angezeigt. (Da es anscheinend keinen Unterschied mehr gibt?)


    Und sorry aber wenn du dir das nicht alles durchgelesen hast wie kannst du dann wissen ob das Plugin alle oben genannten Probleme lösst?


    Zu meiner Problemstellung benötige ich eben keine 17 Steuersätze.


    Es wird einfach durch die Option "Rundung nur auf die Anzeige anwenden" ein Berechnungsfehler nach den Kommastellen ausgelöst. Und ich denke das dies ja nicht im Sinne eines funktionierenden Shops sein sollte.


    Wird denn dieser Fehler (sorry aber dazu gibt deine Antwort keinen Bezug) auch tatsächlich von dem Tool ausgebügelt?


    Vielen Dank
    Ralf

  • Du mischt mehrere völlig verschiedene Themen.


    Rundung, nochmal
    Das Distributiv gesetzt GILT NICHT ! Bitte den Wiki Eintrag und Foreneintrag von mir durchlesen. Ich brauche das nicht durchlesen, weil die Themen und Probleme uralt, bekannt und gelöst sind. Wenn du die Einträge durchgelesen hättest, dann würdest du das auch verstehen. Es gibt ja nicht ohne Grund 2 Rundungsmodi.



    "Zu meiner Problemstellung benötige ich eben keine 17 Steuersätze. "
    Ja das hab ich auch nicht geschrieben. Ich hab geschrieben, das unser VM problemlos mit 17 Steuersätzen umgehen kann und das wir MOSS benutzen. Wir haben auch unsere Vorsteuerprüfung 1a bestanden. Das Ding ist halt, ich habe das schon sehr oft erklärt und sag inzwischen, entweder man glaubt mir, oder halt nicht. Ich bin kein Steuerberater, ich darf nicht beraten.


    Link: http://forum.virtuemart.de/all…-warenkorb-rechnung-1981/
    Link: http://forum.virtuemart.de/all…bleme-mwst-warenkorb-953/
    Link: http://forum.virtuemart.de/all…mmastellen-rundungen-800/


    "Es wird einfach durch die Option "Rundung nur auf die Anzeige anwenden" ein Berechnungsfehler nach den Kommastellen ausgelöst. Und ich denke das dies ja nicht im Sinne eines funktionierenden Shops sein sollte."
    QOD, meine Links und Information wurden nicht durchgelesen.


    "Wird denn dieser Fehler (sorry aber dazu gibt deine Antwort keinen Bezug) auch tatsächlich von dem Tool ausgebügelt?"
    Doch, man muss die Antwort nur lesen. Es ist kein Fehler und ich erkläre das seit vielen, vielen Jahren, immer wieder neu. Es ist Mathematik der 6. Klasse, kein Witz. Man muss es nur mal richtig durchdenken und das Problem wirklich verstehen. Es gibt keine eindeutige Lösung, den Runden ist Physik und keine echte Mathematik.


    Wenn das Tool für 90 euro das Problem nicht löst => einfach an den Support schreiben (der bin ich) und das Problem wird behoben. VirtueMart Extensions läuft ohne irgendwelche Mods, das ist das Core VM mit anderem Template, mehr nicht.


    VM kann verschiedene Steuersätze pro Land und es stellt alles nach deutschem Gesetz richtig dar. Man kann das mit einem Proxy leicht überprüfen, die Preise ändern sich, je nachdem von welchem Land die IP ist.