Opened 3 years ago
Closed 3 years ago
#2266 closed Bug/Fehler (fixed)
Datenbankstruktur in zones_to_geo_zones anpassen an neue Steuerberechnung seit 2.0.7.1
| Reported by: | Owned by: | somebody | |
|---|---|---|---|
| Priority: | normal | Milestone: | modified-shop-2.0.8.0 |
| Component: | Installer | Version: | 2.0.7.2 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
Bis Version 2.0.7.0 wurde bei der Steuerberechnung in den Dateien
/shoproot/inc/xtc_get_tax_description.inc.php
/shoproot/inc/xtc_get_tax_rate.inc.php
jeweils das Datenbankfeld zone_id in Tabelle zones_to_geo_zones sowohl gegen "IS NULL" als auch gegen die Zahl "0" verglichen, um den passenden Steuersatz zu ermitteln.
In den geänderten SQL-Queries ab Version 2.0.7.1 wird nur noch gegen Zahl "0" verglichen, bei Feldwert "NULL" wird kein Steuersatz ermittelt.
Die Datenbankstruktur lässt den Wert NULL für die Spalte "zone_id" explizit zu, siehe /shoproot/installer/includes/sql/modified.sql :
CREATE TABLE zones_to_geo_zones ( association_id INT(11) NOT NULL AUTO_INCREMENT, zone_country_id INT(11) NOT NULL, zone_id INT NULL, geo_zone_id INT NULL, last_modified DATETIME NULL, date_added DATETIME NOT NULL, PRIMARY KEY (association_id), KEY idx_geo_zone_id (geo_zone_id), KEY idx_zone_country_id (zone_country_id) );
Entsprechend der Codeänderung sollte die Spalte in der Datenbank auch als "NOT NULL" definiert werden, d.h. "zone_id INT NOT NULL". Komplette Struktur:
CREATE TABLE zones_to_geo_zones ( association_id INT(11) NOT NULL AUTO_INCREMENT, zone_country_id INT(11) NOT NULL, zone_id INT NOT NULL, geo_zone_id INT NULL, last_modified DATETIME NULL, date_added DATETIME NOT NULL, PRIMARY KEY (association_id), KEY idx_geo_zone_id (geo_zone_id), KEY idx_zone_country_id (zone_country_id) );
Die Anpassung ist bei historisch gewachsenen Datenbanken nicht nur akademisch, in meinem Fall war bei genau einem Land der Wert NULL statt Zahl 0 gesetzt, entsprechend wurde für dieses Land keine Steuer berechnet.

In 14634: