Walidacja pola NIP – polski numer NIP w Prestashop 1.7

Walidacja pola NIP – polski numer NIP w Prestashop 1.7

W dzisiejszym artykule pokażemy w jaki sposób wprowadzić prostą walidację dla pola NIP w Prestashop 1.7. Polski numer NIP to 10 cyfr bez spacji i myślników – wprowadzimy walidację wobec powyższego założenia.

Standardowo w Prestashop 1.7 pole NIP (vat_number) nie jest dobrze walidowane. Doprowadza to do sytuacji gdzie klient podczas realizacji zamówienia może wpisać w to pole cokolwiek. Bardzo często zdarza się, że klienci korzystają z funkcji autouzupełniania danych w przeglądarce i w tym polu lądują zupełnie niepożądane informacje adresowe jak. np. nazwa województwa czy nazwa kraju. Nie jest to pożądana sytuacja w szczególności jeśli korzystamy z integratorów Prestashop 1.7 z różnymi programami księgowymi czy systemami ERP, zamówienia mają wówczas problem z odpowiednim zapisem po stronie takich programów / systemów.

Jedziemy!

Ta dość drobna modyfikacja będzie rozgrywać się w plikach classes/validate.php oraz classes/address.php, Można tutaj pokusić się oczywiście o nadpisania (overrides) tych 2 plików i zrobić to w 100% jak należy, natomiast my wyjątkowo aby uzyskać pożądany efekt edytowaliśmy bezpośrednio te pliki.

W classes/validate.php musimy utworzyć funkcję walidacji dla zmiennej $vat_number.

/**
* Validate VAT Number
*/

public static function isVatNumber($vat_number)
{
return preg_match('/^[0-9]{10}$/', $vat_number);
} 

Wklejamy tą funkcję w całości tuż przed inną funkcją walidującą isSiret.

Natomiast w classes/address.php szukamy i modyfikujemy w całości linijkę kodu dotyczącą pola vat_number, ta linia będzie miała początkowo poniższy kształt:

'vat_number' => ['type' => self::TYPE_STRING, 'validate' => 'isGenericName'],

natomiast po naszej modyfikacji będzie wyglądać jak poniżej:

'vat_number' => ['type' => self::TYPE_STRING, 'validate' => 'isVatNumber', 'size' => 10],

Gotowe, Teraz wystarczy wyczyścić pamięć podręczną sklepu i zmiana wejdzie w życie. Od tej pory pole NIP w Prestashop 1.7 jest już poprawnie walidowane zgodnie z polskim standardem (tj. 10 cyfr). To czy walidacja działa możemy sprawdzić wpisując w to pole np. mniejszą ilość cyfr niż 10. Wyświetlona zostanie adnotacja “Nieprawidłowy format”.

UWAGA!
Jeżeli wprowadzasz walidację na istniejącym sklepie powinieneś skorygować wprowadzone już NIP-y klientów w bazie danych sklepu. W tym celu skorzystaj z phpMyAdmin, w tabeli ps_address skoryguj odpowiednie wiersze kolumny vat_number zgodnie z nową formułą.

Jak widać modyfikacja jest bardzo prosta a uzyskany efekt w 100% spełnia nasze założenia. Dziękujemy za Twoją obecność – bądź na bieżąco, już niebawem kolejne tutoriale Prestashop!

Przewiń do góry