Jump to content

Walidacja NIP


c64girl

Recommended Posts

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]);
}

 

  • Like 1
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...