c64girl Posted August 13 Share Posted August 13 Ostatnio zastanawiałem się dlaczego presta nie ma walidacji NIP i że muszą być jakieś specjalne moduły pod to pisane. Doszedłem do wniosku że zrobię walidację w pliku prestashop. Oby komuś pomogło z debilami co wpisują 111111111 itd. Zmiana w pliku: /classes/Validate.php public static function isVatNumber($vat_number) { // Sprawdzamy, czy numer NIP składa się z 10 cyfr if (!preg_match('/^[0-9]{10}$/', $vat_number)) { return false; } // Przypisujemy numer NIP do zmiennej $nip = str_split($vat_number); // Sprawdzamy, czy NIP nie jest sekwencją tych samych cyfr if (preg_match('/^(\d)\1*$/', $vat_number)) { return false; } // Definiujemy wagi dla każdej cyfry NIP $weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]; // Obliczamy sumę kontrolną $sum = 0; foreach ($weights as $i => $weight) { $sum += $nip[$i] * $weight; } // Sprawdzamy, czy ostatnia cyfra jest zgodna z obliczoną sumą return ($sum % 11 === (int)$nip[9]); } 1 Link to comment Share on other sites More sharing options...
Yabber Posted August 13 Share Posted August 13 33 minutes ago, c64girl said: Ostatnio zastanawiałem się dlaczego presta nie ma walidacji NIP i że muszą być jakieś specjalne moduły pod to pisane. Po takiej modyfikacji, jaką proponujesz, nie można już uruchomić sprzedaży międzynarodowej. Moduły mają bardziej rozbudowane metody walidacji. Najpierw sprawdzają country z adresu i dopiero waliduja vat_number. Wiele z nich do walidacji wykorzystuje unijny serwer VIES. 1 Link to comment Share on other sites More sharing options...
c64girl Posted August 13 Author Share Posted August 13 1 hour ago, Yabber said: Po takiej modyfikacji, jaką proponujesz, nie można już uruchomić sprzedaży międzynarodowej. Moduły mają bardziej rozbudowane metody walidacji. Najpierw sprawdzają country z adresu i dopiero waliduja vat_number. Wiele z nich do walidacji wykorzystuje unijny serwer VIES. Tak, ta zmiana tylko i wyłącznie dla kogoś kto prowadzi firmę w PL i sprzedaje tylko na PL. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now