WooCommerce NIP Field
Lekka wtyczka WordPress/WooCommerce dodająca opcjonalne pole NIP do klasycznego checkoutu WooCommerce.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/swider8814/woocommerce-nip/archive/refs/heads/master.zipReadme
WooCommerce NIP Field
Lekka wtyczka WordPress/WooCommerce dodająca opcjonalne pole NIP do danych rozliczeniowych klienta i klasycznego checkoutu WooCommerce.
Zakres
Wtyczka obsługuje wyłącznie polski NIP w danych rozliczeniowych WooCommerce i klasycznym checkoutcie. Nie integruje się z GUS/REGON, nie pobiera danych firmy automatycznie i nie dodaje konfiguracji w panelu administracyjnym.
Funkcje
- Dodaje pole
billing_nipw danych rozliczeniowych. - Pole NIP jest opcjonalne.
- Jeśli NIP jest wpisany, wymagana jest też nazwa firmy.
- Waliduje polski NIP: dokładnie 10 cyfr, poprawna suma kontrolna i brak wartości placeholderowych typu
1111111111. - Dodaje NIP do edycji adresu rozliczeniowego w panelu klienta.
- Podpowiada zapisany NIP w checkoutcie dla zalogowanego klienta.
- Zapisuje NIP w profilu klienta po checkoutcie.
- Zapisuje NIP w meta zamówienia jako
_billing_nip. - Pokazuje NIP w szczegółach zamówienia w panelu WooCommerce.
- Pokazuje NIP w adresie rozliczeniowym zamówienia, np. na
order-received, w szczegółach zamówienia w koncie klienta i w mailach WooCommerce. - Pokazuje NIP w podglądzie adresu rozliczeniowego w koncie klienta.
- Deklaruje zgodność z WooCommerce HPOS.
- Ładuje minimalny JavaScript tylko na stronie checkout.
Wymagania
- WordPress
- WooCommerce
- Klasyczny checkout WooCommerce
- PHP 8.0 lub nowszy
Pliki
woocommerce-nip.php- cały kod wtyczki: rejestracja hooków, pola rozliczeniowe, walidacja, zapis meta, wyświetlanie w adresach, adminie i mailach.README.md- dokumentacja projektu.LICENSE- licencja GPL-2.0-or-later..gitignore- lokalne ignorowane pliki.
Instalacja
- Skopiuj katalog
woocommerce-nipdowp-content/plugins/. - Włącz wtyczkę
WooCommerce NIP Fieldw panelu WordPress. - Upewnij się, że sklep używa klasycznego checkoutu WooCommerce.
- Przetestuj checkout z pustym NIP, poprawnym NIP i błędnym NIP.
Zachowanie checkoutu
Pole NIP jest dodawane do sekcji rozliczeniowej po polu billing_company. Jeśli pole firmy nie istnieje, NIP jest dodawany na końcu pól rozliczeniowych.
Puste pole NIP nie blokuje zamówienia. Jeśli klient wpisze NIP:
- wartość musi zawierać dokładnie 10 cyfr,
- numer musi mieć poprawną sumę kontrolną,
- pole
billing_companymusi być uzupełnione.
Błędy walidacji są przypisane do pól billing_nip i billing_company, aby WooCommerce mógł wskazać klientowi właściwe miejsce formularza.
Dla zalogowanego klienta checkout podpowiada NIP zapisany wcześniej w billing_nip. Skrypt checkoutu ogranicza NIP do cyfr i 10 znaków oraz przywraca zapisane wartości pól rozliczeniowych, jeśli zewnętrzny skrypt motywu wyczyści je po załadowaniu strony.
Konto klienta
Pole NIP jest dodawane do edycji adresu rozliczeniowego w „Moje konto”. Przy zapisie adresu używana jest ta sama walidacja NIP i firmy co w checkoutcie.
Zapisany NIP jest widoczny w podglądzie adresu rozliczeniowego w koncie klienta.
Dane zamówienia
Po poprawnym złożeniu zamówienia NIP jest zapisywany w meta zamówienia:
_billing_nip
Wartość jest widoczna:
- w szczegółach zamówienia w panelu WooCommerce,
- w adresie rozliczeniowym zamówienia na stronie
order-received, - w adresie rozliczeniowym zamówienia w koncie klienta,
- w adresie rozliczeniowym w mailach WooCommerce.
Hooki i funkcje
Wtyczka rejestruje się po plugins_loaded, ale kończy działanie, jeśli klasa WooCommerce nie jest dostępna.
Główne punkty integracji:
woocommerce_checkout_fields- dodanie pola NIP.woocommerce_checkout_get_value- wczytanie zapisanego NIP do checkoutu.woocommerce_billing_fields- dodanie pola NIP do formularza adresu rozliczeniowego klienta.woocommerce_my_account_my_address_formatted_address- pokazanie NIP w podglądzie adresu rozliczeniowego klienta.woocommerce_order_formatted_billing_address- pokazanie NIP w adresie rozliczeniowym zamówienia.woocommerce_order_get_formatted_billing_address- awaryjne dopisanie NIP do finalnego adresu rozliczeniowego.woocommerce_after_checkout_validation- walidacja NIP i firmy.woocommerce_after_save_address_validation- walidacja NIP przy zapisie adresu rozliczeniowego w koncie.woocommerce_checkout_create_order- zapis_billing_nip.woocommerce_checkout_update_user_meta- zapisbilling_nipw profilu klienta po checkoutcie.woocommerce_admin_order_data_after_billing_address- wyświetlanie NIP w adminie.wp_enqueue_scripts- inline JS tylko na checkoutcie.before_woocommerce_init- deklaracja zgodności z HPOS.
Najważniejsze funkcje:
woocommerce_nip_add_checkout_field()- buduje i wstawia polebilling_nip.woocommerce_nip_get_checkout_field_value()- podpowiada zapisany NIP w checkoutcie.woocommerce_nip_add_billing_address_field()- dodaje NIP do formularza adresu rozliczeniowego.woocommerce_nip_add_my_account_address_nip()- pokazuje NIP w podglądzie adresu rozliczeniowego klienta.woocommerce_nip_add_order_billing_address_nip()- pokazuje NIP w adresie rozliczeniowym zamówienia.woocommerce_nip_add_formatted_order_billing_address_nip()- dopisuje NIP do finalnego adresu, jeśli nie trafił tam wcześniej.woocommerce_nip_validate_checkout_field()- waliduje relację NIP/firma.woocommerce_nip_get_validation_errors()- współdzieli reguły walidacji dla checkoutu i konta klienta.woocommerce_nip_validate_billing_address_field()- waliduje NIP przy zapisie adresu rozliczeniowego.woocommerce_nip_is_valid()- sprawdza format i sumę kontrolną polskiego NIP.woocommerce_nip_save_order_meta()- zapisuje poprawny NIP w meta zamówienia.woocommerce_nip_save_customer_billing_nip()- zapisuje poprawny NIP w profilu klienta.woocommerce_nip_enqueue_checkout_script()- ogranicza wpisywanie NIP do cyfr i 10 znaków oraz chroni wypełnione pola checkoutu przed wyczyszczeniem przez frontend.
Testowanie ręczne
Minimalna lista kontroli przed wydaniem:
- Włącz WooCommerce i klasyczny checkout.
- Złóż zamówienie bez NIP - zamówienie powinno przejść.
- Złóż zamówienie z poprawnym NIP i nazwą firmy - NIP powinien zapisać się w zamówieniu.
- Złóż zamówienie z poprawnym NIP bez nazwy firmy - checkout powinien pokazać błąd firmy.
- Złóż zamówienie z błędnym NIP - checkout powinien pokazać błąd NIP.
- Sprawdź, czy NIP jest widoczny w panelu zamówienia.
- Sprawdź, czy NIP jest widoczny na stronie
order-received. - Sprawdź, czy NIP jest widoczny w szczegółach zamówienia w koncie klienta.
- Sprawdź, czy NIP jest widoczny w adresie rozliczeniowym maila WooCommerce, a nie jako osobne pole meta.
- Zapisz NIP w adresie rozliczeniowym konta i sprawdź, czy podpowiada się w checkoutcie.
- Sprawdź checkout z włączonym HPOS.
Przykładowy poprawny NIP testowy:
8567346215
Sprawdzenie składni
Przed commitem uruchom:
php -l woocommerce-nip.php
Wydanie
- Zaktualizuj nagłówek
Versionwwoocommerce-nip.php, jeśli zmienia się wersja. - Uruchom
php -l woocommerce-nip.php. - Przejdź checklistę testów ręcznych.
- Zacommituj zmianę.
- Wypchnij branch do GitHuba.
- Opcjonalnie dodaj tag wersji.
Zasady zmian
- Utrzymuj wtyczkę bez zależności zewnętrznych, chyba że jest to konieczne.
- Nie dodawaj integracji GUS/REGON bez osobnej decyzji projektowej.
- Zachowuj zgodność z klasycznym checkoutem WooCommerce.
- Przy zmianach walidacji testuj puste pole, błędny NIP i poprawny NIP.
- Przy zmianach danych zamówienia zachowaj meta key
_billing_nip, jeśli nie ma zaplanowanej migracji.
Licencja
GPL-2.0-or-later