MwSt. Bezug von Lieferadresse auf Rechnungsadresse abändern (B2B-Shop)

Guten Tag liebe Shopware Freunde, 

als B2B Shop beliefern wir viele Länder. EU-Länder als auch Drittländer. Natürlich haben wir verschiedene Versandoptionen, die je nach Lieferadresse zum tragen kommen – soweit alles tip top. Wenn es dann um die MwSt. geht, gibt es Probleme:

Wir haben den Shop für EU und Drittländer so eingestellt, dass die MwSt. nur berechnet und ausgewiesen wird, wenn keine USt-ID hinterlegt ist. Diese Funktion haben wir natürlich nicht für DE aktiv, da bekommt jeder seine MwSt. ausgewiesen. 

Folgendes Problem tritt auf: Wir haben Kunden, die bestellen bei uns für verschiedene Filialen. Diese Filialen sind in aller Welt verteilt, die Rechnung geht jedoch immer z.B. nach Österreich. Das Rechnungstragende Unternehmen (aus Österreich) hat bei uns logischerweise eine gültige USt-ID hinterlegt. Die einzelnen Filialen die beliefert werden, sind als abweichende Lieferadressen gepflegt. Die Lieferadressen haben jedoch keine USt-ID hinterlegt (wozu auch, sie werden nur beliefert). 

Da Shopware die Mwst. Berechnung bei einer abweichenden Lieferanschrift jedoch von der Liefernaschrift abhängig macht, bekommt der Rechnungsträger wieder die MwSt. auf die Rechnung gepackt – und das ist ein Problem.

Gibt es in Shopware die Möglichkeit, die USt-ID immer anhand der Rechnungsadresse zu prüfen und nicht anhand der Lieferadresse?

Ich freue mich über jeden Tipp.

Vielen Dank

ELL

Haben das selbe Problem, dafür gibt es bereits einige Tickets:

https://issues.shopware.com/issues/SW-16704

https://issues.shopware.com/issues/SW-16255 

https://issues.shopware.com/issues/SW-18182

Es scheint ein shopware-Bug zu sein, dass es ein Ust-ID Feld in der Lieferadresse gibt. Ich finde es auch ziemlich sinnfrei. Es heißt im letzten Ticket zumindest “Die Umsetzung erfolgt in einem der nächsten Releases.” ^^

Nicht die Rechnungsadresse sonder der Erfüllungsort (=Lieferland) ist ausschlaggebend für die Berechnung der MwSt. Wenn dann auch noch Reversed Charge ins Spiel kommt wird’s lustig :slight_smile:

Beispiele: Rechnung AT, Lieferung AT, UstId. vorhanden => Keine MwSt.

Rechnung AT, Lieferung AT, UstId nicht vorhanden => MwSt.

Rechnung DE, Lieferung AT, UstId vorhanden => Keine MwSt.

Rechnung AT, Lieferung DE => MwSt.

1 Like

korrekt. Trotzdem muss der Kunde (z.B. AT) beim Anlegen seines Kundenkontos bei einer abweichenende Lieferadresse (auch in AT) dort auch die Ust-ID angeben, sonst erfolgt eine (auch im Backend) unumkehrbare MwSt-Berechnung. Das Ust-Id Feld ist aber beim Anlegen der Lieferadresse witzigerweise nicht zu sehen, sondern erst, wenn er die Lieferadressen nachträglich bearbeitet! 

 Das könnte man über ein kleines Plugin lösen. Ob das für alle Fälle eure Probleme behebt, kann ich da nicht beurteilen, sollte aber das angesprochene Problem lösen:

subscribeEvent(
            'Shopware_Modules_Admin_GetUserData_FilterResult',
            'onFilterUserData'
        );
        return true;
    }
    /**
     * @param Enlight_Event_EventArgs $args
     * @return array
     */
    public function onFilterUserData($args)
    {
        $userData = $args->getReturn();

        /**
         * Wenn In der Lieferadresse keine Umsatzsteuer-ID hinterlegt ist
         * und das Lieferland auf "Steuerfrei für Unternehmen steht"
         * und in der Rechnungsadresse eine Umsatzsteuer-ID hinterlegt ist
         * und das Rechnungsland auf "Steuerfrei für Unternehmen steht"
         * dann ersetze die UmsatzsteuerID aus der Lieferadresse mit der aus der Rechnungsadresse
         */



        if (empty($userData['shippingaddress']['ustid']) && $userData['additional']['countryShipping']['taxfree_ustid'] == 1
            && !empty($userData['billingaddress']['ustid']) && $userData['additional']['country']['taxfree_ustid'] == 1) {
            $userData['shippingaddress']['ustid'] = $userData['billingaddress']['ustid'];
        }

        return $userData;
    }
}

 Einfach einen Ordner /engine/Shopware/Plugins/Community/Frontend/SwagUseBillingUstId anlegen und eine Bootstrap.php mit dem Inhalt von oben.

3 Likes

Danke für die fixe Antwort! Funktioniert bei leerer Ust-ID in der Lieferanschrift leider noch immer nicht. Habe ich etwas übersehen?

  • Ordner SwagUseBillingUstId angelegt

  • Bootstrap.php mit obigem Inhalt gefüllt und da gespeichert

  • sicherheitshalber kompletten Shopcache geleert und Themes neu kompiliert

  • Testkunden mit RG-Adresse in AT samt Ust-ID angelegt und Lieferadresse AT ohne Ust-ID

  • “Steuerfrei für Unternehmen” ist für AT aktiviert

—> im Warenkorb werden 19% berechnet :frowning: Gehe ich nun in die Lieferadresse und gebe eine Ust-ID ein, findet keine MwSt-Berechnung mehr statt

Hatte das selbst natürlich auch mal getestet, da funktionierte es. Bin Mittwoch wieder im Office und teste da gerne nochmal. Hast du dich über das Frontend registriert?

hmm, merkwürdig. Ja, übers Frontend.

Danke vorab!

Installiert hast du das Plugin aber auch über den Plugin-Manager?

1 Like

so, das ist mir jetzt etwas peinlich…da liegt das schlüpfrige Scheißerchen ja ganz unten im Plugin Manager. Jetzt geht es!!

Dachte ich müsse es

a) im Plugin Manager über „Plugin hochladen“ (was nicht funktionierte) oder

b) gar nicht erst installieren, weil es bereits so greift

Herr Naczenski, ich/wir danke Ihnen! :-) 

 

ps: aus dem Kundenkonto heraus ist eine „Bestellung im Backend erstellen“ jedoch nach wie vor in allen Konstallationen nicht steuerfrei möglich.

  1. RG-Adresse = AT (mit Ust-ID) / Lieferadresse = RG-Adresse = steuerpflichtig

2. RG-Adresse = AT (mit Ust-ID) / Lieferadresse = AT (ohne Ust-ID) = steuerpflichtig

3. RG-Adresse = AT (mit Ust-ID) / Lieferadresse = AT (mit Ust-ID) = steuerpflichtig

@Moritz Naczenski schrieb:

 Das könnte man über ein kleines Plugin lösen. Ob das für alle Fälle eure Probleme behebt, kann ich da nicht beurteilen, sollte aber das angesprochene Problem lösen:

http://www.shopware.de)
/
class Shopware_Plugins_Frontend_SwagUseBillingUstId_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
/
*

  • @return bool
    /
    public function install()
    {
    $this->subscribeEvent(
    ‘Shopware_Modules_Admin_GetUserData_FilterResult’,
    ‘onFilterUserData’
    );
    return true;
    }
    /
    *
  • @param Enlight_Event_EventArgs $args
  • @return array
    */
    public function onFilterUserData($args)
    {
    $userData = $args->getReturn();

/**

  • Wenn In der Lieferadresse keine Umsatzsteuer-ID hinterlegt ist
  • und das Lieferland auf “Steuerfrei für Unternehmen steht”
  • und in der Rechnungsadresse eine Umsatzsteuer-ID hinterlegt ist
  • und das Rechnungsland auf “Steuerfrei für Unternehmen steht”
  • dann ersetze die UmsatzsteuerID aus der Lieferadresse mit der aus der Rechnungsadresse
    */

if (empty($userData[‘shippingaddress’][‘ustid’]) && $userData[‘additional’][‘countryShipping’][‘taxfree_ustid’] == 1
&& !empty($userData[‘billingaddress’][‘ustid’]) && $userData[‘additional’][‘country’][‘taxfree_ustid’] == 1) {
$userData[‘shippingaddress’][‘ustid’] = $userData[‘billingaddress’][‘ustid’];
}

return $userData;
}
}

 Einfach einen Ordner /engine/Shopware/Plugins/Community/Frontend/SwagUseBillingUstId anlegen und eine Bootstrap.php mit dem Inhalt von oben.

Wird das noch im Core behoben? Das ist ja kein triviales Problem. Im Issue Tracker steht dieses Thema auf “not scheduled”. Wir haben ständig solche Fälle, dass wir Bestellungen in einem Land haben, wo in der Rechnungsadresse eine UID Nummer hinterlegt ist, die Sendung aber an eine private Adresse verschickt wird und der Rechnungsempfänger auf einmal MwSt. zahlen muss. Wir haben dadurch schon 3 Kunden verloren.

Hier ist das Ticket was bearbeitet wird; Shopware Issuetracker

Guten TAg,

das Problem existiert bei der Version 5.7.6 ja immernoch. Das Plugin lässt sich leider so nicht installieren, es kommt folgender Fehler im Backend

BlockzitatError

Uncaught Error: Class ‚Shopware_Plugins_Frontend_SwagUseBillingUstId_Bootstrap‘ not found in /var/www/clients/client0/web10/web/engine/Shopware/Components/Plugin/Namespace.php:145
Stack trace:
#0 /var/www/clients/client0/web10/web/engine/Shopware/Bundle/PluginInstallerBundle/Service/LegacyPluginInstaller.php(264): Shopware_Components_Plugin_Namespace->initPlugin(‚SwagUseBillingU…‘, Object(Enlight_Config))
#1 /var/www/clients/client0/web10/web/engine/Shopware/Bundle/PluginInstallerBundle/Service/InstallerService.php(309): Shopware\Bundle\PluginInstallerBundle\Service\LegacyPluginInstaller->refreshPluginList(Object(DateTimeImmutable))
#2 /var/www/clients/client0/web10/web/engine/Shopware/Controllers/Backend/PluginManager.php(330): Shopware\Bundle\PluginInstallerBundle\Service\InstallerService->refreshPluginList()
#3 /var/www/clients/client0/web10/web/engine/Library/Enlight/Controller/Action.php(182): Shopware\Controllers\Backend\PluginManager->localListingAction()
#4 /var/www/clients/client0/web10/web/engine/

File:/ var/ www/ clients/ client0/ web10/ web/ engine/ Shopware/ Components/ Plugin/ Namespace.php

Wie könnenwir das Problem beheben, oder gibt es ein aktuelles Plugin dafür?

Beste Grüße
Strandkorbwerk