NIP на касі
Корпоративні клієнти потребують поля NIP на касі, щоб отримати фактуру VAT. Плагін Polski for WooCommerce додає поле NIP з валідацією контрольної суми та перевіркою в базі GUS REGON. Дані компанії заповнюються автоматично.
Можливості
Section titled “Можливості”Модуль NIP перевіряє номер на трьох рівнях:
- Валідація формату - перевірка, чи номер складається з 10 цифр
- Валідація контрольної суми - алгоритм перевірки контрольної цифри NIP
- Перевірка GUS REGON - перевірка в базі Головного управління статистики з автоматичним отриманням даних компанії
Налаштування
Section titled “Налаштування”Перейдіть до WooCommerce > Ustawienia > Polski > Kasa і налаштуйте розділ “NIP”.
Основні налаштування
Section titled “Основні налаштування”| Налаштування | Значення за замовчуванням | Опис |
|---|---|---|
| Увімкнути поле NIP | Так | Додає поле NIP на сторінці каси |
| Поле обов’язкове | Ні | Чи є NIP обов’язковим |
| Позиція поля | Після поля компанії | Де відображати поле NIP |
| Валідація контрольної суми | Так | Перевіряє правильність номера NIP |
| Перевірка GUS REGON | Ні | Перевіряє NIP у базі GUS |
| Автоматичне заповнення | Так | Отримує дані компанії з GUS |
Умовне відображення
Section titled “Умовне відображення”Поле NIP може відображатися:
- Завжди - видиме для всіх клієнтів
- Після позначення чекбокса “Хочу фактуру” - з’являється після позначення
- Після введення назви компанії - з’являється, коли поле “Компанія” заповнене
Рекомендована опція - відображення після позначення чекбокса “Хочу фактуру” - вона найзрозуміліша для клієнта.
Валідація контрольної суми
Section titled “Валідація контрольної суми”NIP валідується системою ваг. Остання цифра (контрольна) має відповідати результату обчислень з дев’яти попередніх цифр.
Алгоритм
Section titled “Алгоритм”Ваги для послідовних цифр NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7
NIP: 1234567890Сума = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214Залишок = 214 mod 11Якщо залишок == остання цифра NIP → NIP правильнийПлагін валідує NIP на стороні клієнта (JavaScript) і сервера (PHP). Серверна валідація завжди активна - її неможливо обійти.
Обробка форматів введення
Section titled “Обробка форматів введення”Плагін приймає NIP у різних форматах:
1234567890- самі цифри123-456-78-90- з дефісами123 456 78 90- з пробіламиPL1234567890- з префіксом країни
Усі формати нормалізуються до 10 цифр перед валідацією.
Перевірка GUS REGON
Section titled “Перевірка GUS REGON”Налаштування API
Section titled “Налаштування API”API GUS REGON вимагає ключа доступу. Плагін підтримує два середовища:
| Середовище | URL | Ключ | Застосування |
|---|---|---|---|
| Тестове | https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svc | abcde12345abcde12345 (публічний тестовий ключ) | Розробка й тестування |
| Продакшн | https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svc | Власний ключ з GUS | Робочий магазин |
Отримання продакшн-ключа
Section titled “Отримання продакшн-ключа”- Перейдіть на сторінку: https://api.stat.gov.pl/Home/BirIndex
- Зареєструйтеся й увійдіть
- Подайте заявку на доступ до API REGON
- Ключ буде надіслано на вказану e-mail адресу (час очікування: 1-3 робочі дні)
Налаштування в плагіні
Section titled “Налаштування в плагіні”- Перейдіть до WooCommerce > Ustawienia > Polski > Kasa > NIP
- Увімкніть Перевірка GUS REGON
- Оберіть середовище: Тестове або Продакшн
- Вставте ключ API (для продакшн-середовища)
- Збережіть налаштування
Тестовий режим
Section titled “Тестовий режим”Тестовий режим використовує публічний ключ GUS. Тестова база містить вигадані дані - у ній не перевіряються справжні NIP-и. Використовуйте його лише під час створення й тестування магазину.
Автоматичне отримання даних компанії
Section titled “Автоматичне отримання даних компанії”Після перевірки NIP плагін автоматично заповнює поля форми:
| Поле WooCommerce | Дані з GUS |
|---|---|
| Компанія (company) | Назва компанії |
| Адреса 1 | Вулиця і номер |
| Місто | Населений пункт |
| Поштовий індекс | Поштовий індекс |
| Воєводство | Воєводство |
Клієнт бачить заповнені дані і може виправити їх перед замовленням.
Поведінка під час автоматичного заповнення
Section titled “Поведінка під час автоматичного заповнення”- Поля заповнюються лише якщо вони порожні або містять раніше отримані дані з GUS
- Якщо клієнт вручну змінив дані, плагін не перезаписує зміни
- Клієнт інформується повідомленням про отримання даних
Зберігання NIP
Section titled “Зберігання NIP”Номер NIP зберігається як метадані замовлення:
- ключ:
_billing_nip - видимий у панелі адміністратора замовлення
- доступний у шаблонах листів
- експортований у звітах
Відображення NIP у замовленні
Section titled “Відображення NIP у замовленні”NIP автоматично відображається:
- у деталях замовлення (панель адміністратора)
- у листі підтвердження замовлення
- на сторінці “Мій обліковий запис > Замовлення”
Програмний доступ
Section titled “Програмний доступ”Отримання NIP із замовлення
Section titled “Отримання NIP із замовлення”$order = wc_get_order($order_id);$nip = $order->get_meta('_billing_nip');Валідація NIP у PHP
Section titled “Валідація NIP у PHP”function validate_nip(string $nip): bool { $nip = preg_replace('/[^0-9]/', '', $nip);
if (strlen($nip) !== 10) { return false; }
$weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]; $sum = 0;
for ($i = 0; $i < 9; $i++) { $sum += (int) $nip[$i] * $weights[$i]; }
return ($sum % 11) === (int) $nip[9];}Hook валідації
Section titled “Hook валідації”add_filter('polski/checkout/validate_nip', function (bool $is_valid, string $nip): bool { // Додаткова логіка валідації // напр. перевірка у списку заблокованих NIP-ів $blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) { return false; }
return $is_valid;}, 10, 2);Найчастіші проблеми
Section titled “Найчастіші проблеми”Перевірка GUS повертає помилку
Section titled “Перевірка GUS повертає помилку”- Перевірте, чи ключ API правильний і активний
- Перевірте, чи сервер може встановити HTTPS-з’єднання з api.stat.gov.pl
- API GUS буває недоступним - плагін обробляє timeout і відображає відповідне повідомлення
- Переконайтеся, що розширення PHP SOAP встановлено на сервері
Поле NIP не відображається
Section titled “Поле NIP не відображається”- Перевірте, чи модуль NIP увімкнено
- Перевірте налаштування умовного відображення
- Очистіть кеш (плагіни кешування можуть кешувати форму каси)
Дані компанії не заповнюються автоматично
Section titled “Дані компанії не заповнюються автоматично”- Перевірте консоль браузера на наявність помилок AJAX
- Перевірте, чи endpoint REST API плагіна доступний
- Переконайтеся, що NIP правильний і компанія існує в базі GUS