Oh, stelle gerade auch ein System-Modul fertig mit dieversen Features und autom. Anlegen der Steuerzonen, -Klassen und -Sätze und wollte das hier zur Verfügung stellen. Das lasse ich dann wohl erstmal..
Allerdings fiel mir im Zusammenhang mit der Arbeit Folgendes auf:
Da ich beim Bau des Modules nach einem Switch suchte damit ein Shop-Betreiber die Anwendung an- oder ausschalten und, für den Fall, daß nur Shop-Verkäufe zum Tragen kommen, auch auf automatisiertes Aktivieren bei Erreichen der "10.000 EUR"-Schwelle stellen kann, fiel mir auf, daß sobald die zusätzlichen Steuersätze angelegt sind schon Effekte auf den Shop wirken die nicht erwünscht sind, obwohl die neuen Zuordnungen für die DB-Tabelle
zones_to_geo_zone noch gar nicht gemacht wurden (
Backend => Steuerzonen => Details).
Das liegt daran, daß die Funktion
xtc_get_tax_rate() aus
/inc/xtc_get_tax_rate.inc.php etwas mir Unverständliches macht:
$tax_query = xtDBquery("SELECT sum(tax_rate) as tax_rate
FROM " . TABLE_TAX_RATES . " tr
LEFT JOIN " . TABLE_ZONES_TO_GEO_ZONES . " za
ON (tr.tax_zone_id = za.geo_zone_id)
LEFT JOIN " . TABLE_GEO_ZONES . " tz
ON (tz.geo_zone_id = tr.tax_zone_id)
WHERE (za.zone_country_id is null
OR za.zone_country_id = '0'
OR za.zone_country_id = '" . (int)$country_id . "')
AND (za.zone_id is null
OR za.zone_id = '0'
OR za.zone_id = '" . (int)$zone_id . "')
AND tr.tax_class_id = '" . (int)$class_id . "'
GROUP BY tr.tax_priority");
Warum fragt die Where-Clause auch nach
za.zone_country_id IS NULL
OR za.zone_country_id = '0'
anstatt lediglich nach
za.zone_country_id = ".(int)$country_id."
Es muß doch die Zuordnung in der DB-Tabelle
zones_to_geo_zones der Schlüssel sein und nicht das Anlegen der Steuersätze.
Die Query wie sie jetzt ist führt im Falle eines von mir beschriebenen Switches dazu, daß man sowohl die Steuersätze als auch die Zuordnung in der DB-Tabelle
zones_to_geo_zone beim Aktivieren anlegen und beim Deaktivieren wieder entfernen muß.
Sollen die erwähnten Where-Clauses dafür sorgen, daß es immer ein Fallback gibt wenn einem Steuersatz keine Steuerzone zugeordnet ist, bzw. das betroffene Land keiner Steuerzone ?
Falls ja, halte ich das für einen verwirrenden Weg.
Nebenbei gefragt: Ist die Sache mit den Priorities eigtl. noch aktuell ?
Warum wird eigtl. überhaupt
sum(tax_rate) verwendet und nicht einfach der eine zutreffende Steuersatz in der Query eruiert ?
Auch hier gilt, mag sein, daß ich die Steuerberechnung nicht ganz durchgeblickt habe.
@DerNachbar
Ich kann hier ausnahmsweise
Cookies Wunsch verstehen.
(Das "ausnahmsweise" ist nicht auf Cookie bezogen, denn ich kenne seinen Beweggrund ja nicht, sondern auf den Wunsch an sich. Oft werden ja Wünsche dieser Art aus Faulheit artikuliert, aber ich finde das gehört zu einem Modul der vorliegenden Art dazu).
Gruß,
noRiddle