Nachdem ich als pauschalierender Landwirt jetzt jährlich mit Änderungen des Steuersatzes konfrontiert werde, habe ich mich heute hingesetzt und eine feine SQL-Lösung ausgetüftelt, wie ich den Steuersatz ändern kann und die Brutto-Preise beibehalten. Vor dem Ausführen natürlich eine Datenbank-Sicherung erstellen. Verbesserungsvorschläge oder Hinweise auf Fehler sind gerne gesehen! Code: SET @Steuersatz_ALT = 1.09, @Steuersatz_NEU = 1.084, @tax_class_id=4 ; -- in Tabelle tax_rates nachschauen, welche tax_rates_id(s) wie angepasst werden sollen und wie die zugehörige tax_class_id lautet, entsprechend die Werte hier und in den Variablen oben anpassen UPDATE tax_rates SET tax_rate = 8.4, tax_description = '8.4% MwSt.' WHERE tax_rates_id IN (8,9) AND tax_class_id = @tax_class_id; -- bitte prüfen, wie viele Tabellen vorhanden sind (ist abhängig von der Anzahl der Kundengruppen), und ggf. Zeilen hinzufügen oder löschen UPDATE personal_offers_by_customers_status_1 SET personal_offer = round(round(personal_offer *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); UPDATE personal_offers_by_customers_status_2 SET personal_offer = round(round(personal_offer *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); UPDATE personal_offers_by_customers_status_3 SET personal_offer = round(round(personal_offer *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); -- UPDATE personal_offers_by_customers_status_4 SET personal_offer = round(round(personal_offer *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); -- ab hier sollten keine Anpassungen mehr nötig sein: UPDATE products SET products_price = ROUND(ROUND(products_price * @Steuersatz_ALT, 4) / @Steuersatz_NEU, 4) WHERE products_tax_class_id = @tax_class_id; UPDATE products_attributes SET options_values_price = round(round(options_values_price *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); -- products_options_values.value_price : Wert ist brutto UPDATE products_properties_combis SET combi_price = round(round(combi_price *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); UPDATE products_properties_combis_defaults SET combi_price = round(round(combi_price *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id); -- products_properties_index.values_price : Wert ist brutto -- properties_values.value_price : Wert ist brutto -- nicht getestet, da Angebote bisher nicht benutzt UPDATE specials SET specials_new_products_price=round(round(specials_new_products_price *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) WHERE products_id in (SELECT products_id FROM products WHERE products_tax_class_id = @tax_class_id) and ( expires_date is NULL OR expires_date > CURRENT_DATE() ) ; Um herauszufinden, welche Versandkosten angepasst werden müssen, folgenden SQL-Befehl ausführen: Code: SELECT * FROM gx_configurations where `key` like CONCAT('configuration/MODULE_SHIPPING_','%', '_TAX_CLASS') and `value` =@tax_class_id; Solange ein fester Betrag hinterlegt ist, lässt sich dieser z.B. so anpassen: Code: UPDATE gx_configurations SET `value` = round(round(`value` *@Steuersatz_ALT, 4)/@Steuersatz_NEU, 4) where `key` like 'configuration/MODULE_SHIPPING_FLAT_COST' and `value` <> '' ; Nur mit Bordmitteln von SQL lassen sich die Strings mit Gewichtsstaffelungen meines Wissen nicht aufteilen, dass müsste man mit PHP erledigen. Da Preisanpassungen bei den Versandkosten sowieso häufiger sind, habe ich in meiner Tabellenkalkulation, mit der ich selbige kalkuliere, auch Formeln verwendet, die mir diese Strings erzeugen. Diese füge ich dann manuell ein.