Modify

Opened 7 years ago

Last modified 6 years ago

#1581 new Aufgabe

VAT-Validation-Klasse hard-codierte Country-Liste

Reported by: noRiddle Owned by: somebody
Priority: normal Milestone: modified-shop-2.1.0.0
Component: Shop Version: 2.0.4.2
Keywords: Cc:
Blocked By: Blocking:

Description

In der /includes/classes/vat_validation.php ist im folgenden switch-Block die EU-Countries-Liste hard-codiert aufgeführt:

     switch ($country_iso_code) {
        case 'AT':
        case 'BE':
        ...
          $t_result = $this->checkVatID_EU($vatNumber, $country_iso_code);
          break;
        default:
          $t_result = 8; //unknown country
          break;
      }

Ich bin der Meinung, daß man das ändern sollte, damit bliebe man flexiber (z.B. würde bei Brexit ein DB-Update ausreichen).

Z.B. so:
Im construct()

    $this->eu_countries = array();
    $eu_countries_qu = xtc_db_query("SELECT c.countries_iso_code_2
                                       FROM countries c
                                       JOIN zones_to_geo_zones ztgz
                                         ON ztgz.zone_country_id = c.countries_id
                                      WHERE ztgz.geo_zone_id = 5
                                   ORDER BY c.countries_iso_code_2");
    while($eu_countries_arr = xtc_db_fetch_array($eu_countries_qu)) {
        $this->eu_countries[] = $eu_countries_arr['countries_iso_code_2'];
    }

und im switch dann

      swith(true) {
        in_array($country_iso_code, $this->eu_countries):
          $t_result = $this->checkVatID_EU($vatNumber, $country_iso_code);
          break;
        default:
          $t_result = 8; //unknown country
          break;
      }

oder schlicht mit if else .

Oder ist die Gefahr zu groß, daß einer etwas bei den Steuerzonen und deren Länderzuordnung ändert, sodaß die geo_zone_id nicht mehr 5 ist ?

Gruß,
noRiddle

Attachments (0)

Change History (5)

comment:1 by Torsten Riemer, 7 years ago

Component: AdminShop
Reporter: changed from anonymous to noRiddle
Version: 2.0.4.2

comment:2 by FräuleinGarn, 7 years ago

Kann es sein, dass Kroatien in der Datei fehlt? Oben in der Liste der EU Länder ist es enthalten, aber weiter unten, wo für jedes EU Land nochmal einzeln Code steht, da ist Kroatien nicht mehr dabei. Vielleicht Zusammenhang zum bereits geschlossenen Ticket #1537?

Und was ist mit Monaco, die wie EU behandelt werden? Sollten die da vielleicht auch mit rein?

Last edited 7 years ago by Torsten Riemer (previous) (diff)

comment:3 by anonymous, 7 years ago

In der Tat fehlt HR in der Funktion validate_vatid_offline().
Diese genannte Funktion erklärt allerdings auch in gewisser Weise warum die EU-Countries-Liste hard-codiert ist.
Die Funktion validate_vatid_offline() prüft die VATID auf Plausibilität und das ist bei den diversen Ländern u.U. nicht gleich, was eine Hard-Codierung in diesem Fall ja unvermeidbar macht.

Aufgrund dieser Erkenntnis ändere ich meine Meinung dahingehend, daß man um's Hard-Codieren zwar nicht herum kommt, daß man die Liste der Countries jedoch

  1. trotzdem zentraler im construct() bestimmen sollte und
  2. in der Funktion validate_vatid_offline() irgendwie abfangen sollte wenn ein $country im Array der zentral im construct() definierten Country-Liste vergessen wurde (wie genau habe ich mom. auch keine Idee).

Ich werde demnächst wahrscheinlich eine alternative VATID-Prüfung bauen die ein anderes Portal (Bundeszentralamt für Steuern) als Validierung benutzt und auch u.A. die Rechtsform der Firma mit überprüft.

Zu Monaco und Weiteren mache ich einen eigenen Thread auf. Da gibt es einige Fragen zu.

Gruß,
noRiddle

comment:4 by anonymous, 7 years ago

Der angekündigte Thread findet sich hier:
https://www.modified-shop.org/forum/index.php?topic=39972.msg361298#msg361298

Auch in Ticket #1576 habe ich, aufgrund des Zusammenhanges und der besseren Übersicht, den Thread verlinkt.

Gruß,
noRiddle

Version 0, edited 7 years ago by anonymous (next)

comment:5 by Gerhard Waldemair, 6 years ago

Milestone: modified-shop-2.1.0.0

Modify Ticket

Action
as new The owner will remain somebody.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.