OSS Verfahren. Wie kann man den Steuersatz je Mitgliedsland ausgeben

Hallo,

wie richtet man shopware 5 für die neuen Regelung ab 1.7.2021 ein?
Wir haben versucht es über Kundengruppen zu machen und z.B. eine eigene Gruppe „Deutschland“ angelegt. Unter Steuern dann beim Standardsteuersatz (20% Österreich) eine neue Steuerregel für die Kundengruppe „Deutschland“ hinterlegt:
Name: Standard
Region: Deutschland
Land: Deutschland
Bundesland: alle
Steuersatz: 19%
Auf den Rechnungen wird auch bei einem Kunden mit Kundengruppe „Deutschland“ 20% MWSt. ausgegeben.
Außerdem müsste man dann jeden Kunden der länderspezifischen Kundengruppe zuordnen. Wir hatten es auch ohne neue Kundengruppe mit der selben Regel in der Standar Shopkunden-Gruppe probiert. Auch da werden weiterhin 20% auf der Rehcnung ausgegeben.
Wie kann man das lösen. Gibt es ein Plugin, dass es ähnlich shopware 6 löst?

Es funktioniert bei neuen Bestellungen, aber nicht bei bestehenden, mit denen wir zuvor getestet hatte.
Vorgangsweise für uns ist also je Mitgliedsland unter Steuern eine eigene Steuerregel mit dem jeweiligen Landessteuersatz anzulegen.
Zusätzlich wird man wohl noch dieses Plugin brauchen: Landestypische MwSt nach Herkunft anzeigen | Sprachen & Internationalisierung | Erweiterungen | Shopware Store

könnte nicht jemand mal (z.B. Shopware) den Dump der s_core_tax_rules posten? Der müsste doch bei allen Shopbetreibern ohne besondere Konstellationen oberhalb der 10.000 € Geringfügigkeitsschwelle annähernd gleich sein. Würde vielen Leuten eine Menge Arbeit ersparen.

Oder sich den Shop zerschiessen, weil sie nicht wissen, wie sie den Dump in die DB bekommen. Oder sich dabei IDs verändern, oder, oder, oder.
Ist doch nichts wildes, die entsprechenden Länder einzutragen.

Ich hab aktuell bei einem Kunden die EU-Steuersätze hinterlegt.

1;3;23;NULL;1;1;21.00;Österreich;1
2;3;23;NULL;4;1;10.00;Österreich;1
3;3;5;NULL;1;1;21.00;Belgien;1
4;3;5;NULL;4;1;6.00;Belgien;1
5;3;39;NULL;1;1;20.00;Bulgarien;1
6;3;39;NULL;4;1;9.00;Bulgarien;1
7;3;37;NULL;1;1;19.00;Zypern;1
8;3;37;NULL;4;1;5.00;Zypern;1
9;3;33;NULL;1;1;21.00;Tschechien;1
10;3;33;NULL;4;1;10.00;Tschechien;1
11;3;7;NULL;1;1;25.00;Dänemark;1
12;3;7;NULL;4;1;25.00;Dänemark;1
13;3;13;NULL;1;1;20.00;Estland;1
14;3;13;NULL;4;1;9.00;Estland;1
15;3;10;NULL;1;1;24.00;Griechenland;1
16;3;10;NULL;4;1;6.00;Griechenland;1
17;3;27;NULL;1;1;21.00;Spanien;1
18;3;27;NULL;4;1;10.00;Spanien;1
19;3;8;NULL;1;1;24.00;Finnland;1
20;3;8;NULL;4;1;10.00;Finnland;1
21;3;9;NULL;1;1;20.00;Frankreich;1
22;3;9;NULL;4;1;5.50;Frankreich;1
23;3;38;NULL;1;1;25.00;Kroatien;1
24;3;38;NULL;4;1;5.00;Kroatien;1
25;3;31;NULL;1;1;27.00;Ungarn;1
26;3;31;NULL;4;1;5.00;Ungarn;1
27;3;12;NULL;1;1;23.00;Irland;1
28;3;12;NULL;4;1;9.00;Irland;1
29;3;14;NULL;1;1;22.00;Italien;1
30;3;14;NULL;4;1;5.00;Italien;1
31;3;20;NULL;1;1;21.00;Litauen;1
32;3;20;NULL;4;1;5.00;Litauen;1
33;3;18;NULL;1;1;17.00;Luxemburg;1
34;3;18;NULL;4;1;8.00;Luxemburg;1
35;3;15;NULL;1;1;21.00;Lettland;1
36;3;15;NULL;4;1;12.00;Lettland;1
37;3;36;NULL;1;1;18.00;Malta;1
38;3;36;NULL;4;1;5.00;Malta;1
39;3;21;NULL;1;1;21.00;Niederlande;1
40;3;21;NULL;4;1;9.00;Niederlande;1
41;3;30;NULL;1;1;23.00;Polen;1
42;3;30;NULL;4;1;5.00;Polen;1
43;3;24;NULL;1;1;23.00;Portugal;1
44;3;24;NULL;4;1;6.00;Portugal;1
45;3;35;NULL;1;1;19.00;Rumänien;1
46;3;35;NULL;4;1;5.00;Rumänien;1
47;3;25;NULL;1;1;25.00;Schweden;1
48;3;25;NULL;4;1;6.00;Schweden;1
49;3;40;NULL;1;1;22.00;Slowenien;1
50;3;40;NULL;4;1;9.50;Slowenien;1
51;3;34;NULL;1;1;20.00;Slowakei;1
52;3;34;NULL;4;1;10.00;Slowakei;1

Für die die wissen was sie tun: Kopieren, in eine Textdatei pasten, als CSV speichern und die CSV in die _core_tax_rules importieren.

Vielleicht hilft es jemandem.

Grüße
Thorsten

1 Like

Ich knobel auch noch wie man den ganzen Mist in Shops importieren kann. Gerade bei Shop die mehrere Kundengruppen haben. Und wir betreuen mehrere Shops = echte scheiß Arbeit :frowning:

Auf eigene Gefahr. Und, countryID der Länder könnte von Shop zu Shop verschieden sein! Dieses Script beruht auf SW 5.7.1 und wird einfach im Hauptverzeichnis vom Ordner gelegt. Dieses Script ist nur für Steuersätze 19% (ID 1) und 7% (ID 4).

<?php
/*
ini_set('display_errors',1);
error_reporting(E_ALL);
*/

$db = include('config.php');
$dbi = mysqli_connect( $db['db']['host'], $db['db']['username'], $db['db']['password'], $db['db']['dbname'], $db['db']['port'] );
mysqli_query($dbi, "SET NAMES 'utf8'");

///////////////////////////////////////////////////////////

// Kundengruppen erfassen 
$sql = mysqli_query($dbi, "SELECT id FROM s_core_customergroups ORDER BY id ");

while ( $res = mysqli_fetch_assoc($sql) ) {

  $uid = $res['id'];

  echo " Gruppe $uid <br> ";

  $insertQuery = "
  INSERT INTO `s_core_tax_rules` 
  (`areaID`, `countryID`, `stateID`, `groupID`, `customer_groupID`, `tax`, `name`, `active`) 
  VALUES 
  (3, 5 , NULL, 1, $uid, 21.00, 'Belgien N', 1), 
  (3, 5 , NULL, 4, $uid, 6.00 , 'Belgien R', 1), 
  (3, 38, NULL, 1, $uid, 20.00, 'Bulgarien N', 1), 
  (3, 38, NULL, 4, $uid, 9.00 , 'Bulgarien R', 1), 
  (3, 7 , NULL, 1, $uid, 25.00, 'Dänemark N', 1), 
  (3, 7 , NULL, 4, $uid, 25.00, 'Dänemark R', 1), 
  (3, 39, NULL, 1, $uid, 20.00, 'Estland N', 1), 
  (3, 39, NULL, 4, $uid, 9.00 , 'Estland R', 1), 
  (3, 8 , NULL, 1, $uid, 24.00, 'Finnland N', 1), 
  (3, 8 , NULL, 4, $uid, 10.00, 'Finnland R', 1), 
  (3, 9 , NULL, 1, $uid, 20.00, 'Frankreich N', 1), 
  (3, 9 , NULL, 4, $uid, 5.50 , 'Frankreich R', 1), 
  (3, 10, NULL, 1, $uid, 24.00, 'Griechenland N', 1), 
  (3, 10, NULL, 4, $uid, 6.00 , 'Griechenland R', 1), 
  (3, 12, NULL, 1, $uid, 23.00, 'Irland N', 1), 
  (3, 12, NULL, 4, $uid, 9.00 , 'Irland R', 1), 
  (3, 14, NULL, 1, $uid, 22.00, 'Italien N', 1), 
  (3, 14, NULL, 4, $uid, 5.00 , 'Italien R', 1), 
  (3, 40, NULL, 1, $uid, 25.00, 'Kroatien N', 1), 
  (3, 40, NULL, 4, $uid, 5.00 , 'Kroatien R', 1), 
  (3, 41, NULL, 1, $uid, 21.00, 'Lettland N', 1), 
  (3, 41, NULL, 4, $uid, 12.00, 'Lettland R', 1), 
  (3, 42, NULL, 1, $uid, 21.00, 'Litauen N', 1), 
  (3, 42, NULL, 4, $uid, 5.00 , 'Litauen R', 1), 
  (3, 18, NULL, 1, $uid, 17.00, 'Luxemburg N', 1), 
  (3, 18, NULL, 4, $uid, 8.00 , 'Luxemburg R', 1), 
  (3, 43, NULL, 1, $uid, 18.00, 'Malta N', 1), 
  (3, 43, NULL, 4, $uid, 5.00 , 'Malta R', 1), 
  (3, 21, NULL, 1, $uid, 21.00, 'Niederlande N', 1), 
  (3, 21, NULL, 4, $uid, 9.00 , 'Niederlande R', 1), 
  (3, 23, NULL, 1, $uid, 21.00, 'Österreich N', 1), 
  (3, 23, NULL, 4, $uid, 10.00, 'Österreich R', 1), 
  (3, 30, NULL, 1, $uid, 23.00, 'Polen N', 1), 
  (3, 30, NULL, 4, $uid, 5.00 , 'Polen R', 1), 
  (3, 24, NULL, 1, $uid, 23.00, 'Portugal N', 1), 
  (3, 24, NULL, 4, $uid, 6.00 , 'Portugal R', 1), 
  (3, 35, NULL, 1, $uid, 19.00, 'Rumänien N', 1), 
  (3, 35, NULL, 4, $uid, 5.00 , 'Rumänien R', 1), 
  (3, 25, NULL, 1, $uid, 25.00, 'Schweden N', 1), 
  (3, 25, NULL, 4, $uid, 6.00 , 'Schweden R', 1), 
  (3, 34, NULL, 1, $uid, 20.00, 'Slowakei N', 1), 
  (3, 34, NULL, 4, $uid, 10.00, 'Slowakei R', 1),
  (3, 44, NULL, 1, $uid, 22.00, 'Slowenien N', 1), 
  (3, 44, NULL, 4, $uid, 9.50 , 'Slowenien R', 1), 
  (3, 27, NULL, 1, $uid, 21.00, 'Spanien N', 1), 
  (3, 27, NULL, 4, $uid, 10.00, 'Spanien R', 1), 
  (3, 33, NULL, 1, $uid, 21.00, 'Tschechien N', 1), 
  (3, 33, NULL, 4, $uid, 10.00, 'Tschechien R', 1), 
  (3, 31, NULL, 1, $uid, 27.00, 'Ungarn N', 1), 
  (3, 31, NULL, 4, $uid, 5.00 , 'Ungarn R', 1), 
  (3, 45, NULL, 1, $uid, 19.00, 'Zypern N', 1), 
  (3, 45, NULL, 4, $uid, 5.00 , 'Zypern R', 1);
  ";

  echo " Gruppe $insertQuery <br> ";

  // nur einmal einlesen!!!
  #mysqli_query($dbi, $insertQuery );

}

?>

Und jetzt kommt ein weiteres Problem, was mache ich wenn der Brutto Preis gleich bleiben soll obwohl die MwSt in den verschiedenen Ländern unterschiedlich ist?

Siehe