Перейти до вмісту

NIP на касі

Корпоративні клієнти потребують поля NIP на касі, щоб отримати фактуру VAT. Плагін Polski for WooCommerce додає поле NIP з валідацією контрольної суми та перевіркою в базі GUS REGON. Дані компанії заповнюються автоматично.

Модуль NIP перевіряє номер на трьох рівнях:

  1. Валідація формату - перевірка, чи номер складається з 10 цифр
  2. Валідація контрольної суми - алгоритм перевірки контрольної цифри NIP
  3. Перевірка GUS REGON - перевірка в базі Головного управління статистики з автоматичним отриманням даних компанії

Перейдіть до WooCommerce > Ustawienia > Polski > Kasa і налаштуйте розділ “NIP”.

НалаштуванняЗначення за замовчуваннямОпис
Увімкнути поле NIPТакДодає поле NIP на сторінці каси
Поле обов’язковеНіЧи є NIP обов’язковим
Позиція поляПісля поля компаніїДе відображати поле NIP
Валідація контрольної сумиТакПеревіряє правильність номера NIP
Перевірка GUS REGONНіПеревіряє NIP у базі GUS
Автоматичне заповненняТакОтримує дані компанії з GUS

Поле NIP може відображатися:

  • Завжди - видиме для всіх клієнтів
  • Після позначення чекбокса “Хочу фактуру” - з’являється після позначення
  • Після введення назви компанії - з’являється, коли поле “Компанія” заповнене

Рекомендована опція - відображення після позначення чекбокса “Хочу фактуру” - вона найзрозуміліша для клієнта.

Валідація контрольної суми

Section titled “Валідація контрольної суми”

NIP валідується системою ваг. Остання цифра (контрольна) має відповідати результату обчислень з дев’яти попередніх цифр.

Ваги для послідовних цифр 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 цифр перед валідацією.

API GUS REGON вимагає ключа доступу. Плагін підтримує два середовища:

СередовищеURLКлючЗастосування
Тестовеhttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svcabcde12345abcde12345 (публічний тестовий ключ)Розробка й тестування
Продакшнhttps://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svcВласний ключ з GUSРобочий магазин

Отримання продакшн-ключа

Section titled “Отримання продакшн-ключа”
  1. Перейдіть на сторінку: https://api.stat.gov.pl/Home/BirIndex
  2. Зареєструйтеся й увійдіть
  3. Подайте заявку на доступ до API REGON
  4. Ключ буде надіслано на вказану e-mail адресу (час очікування: 1-3 робочі дні)

Налаштування в плагіні

Section titled “Налаштування в плагіні”
  1. Перейдіть до WooCommerce > Ustawienia > Polski > Kasa > NIP
  2. Увімкніть Перевірка GUS REGON
  3. Оберіть середовище: Тестове або Продакшн
  4. Вставте ключ API (для продакшн-середовища)
  5. Збережіть налаштування

Тестовий режим використовує публічний ключ GUS. Тестова база містить вигадані дані - у ній не перевіряються справжні NIP-и. Використовуйте його лише під час створення й тестування магазину.

Автоматичне отримання даних компанії

Section titled “Автоматичне отримання даних компанії”

Після перевірки NIP плагін автоматично заповнює поля форми:

Поле WooCommerceДані з GUS
Компанія (company)Назва компанії
Адреса 1Вулиця і номер
МістоНаселений пункт
Поштовий індексПоштовий індекс
ВоєводствоВоєводство

Клієнт бачить заповнені дані і може виправити їх перед замовленням.

Поведінка під час автоматичного заповнення

Section titled “Поведінка під час автоматичного заповнення”
  • Поля заповнюються лише якщо вони порожні або містять раніше отримані дані з GUS
  • Якщо клієнт вручну змінив дані, плагін не перезаписує зміни
  • Клієнт інформується повідомленням про отримання даних

Номер NIP зберігається як метадані замовлення:

  • ключ: _billing_nip
  • видимий у панелі адміністратора замовлення
  • доступний у шаблонах листів
  • експортований у звітах

Відображення NIP у замовленні

Section titled “Відображення NIP у замовленні”

NIP автоматично відображається:

  • у деталях замовлення (панель адміністратора)
  • у листі підтвердження замовлення
  • на сторінці “Мій обліковий запис > Замовлення”

Отримання NIP із замовлення

Section titled “Отримання NIP із замовлення”
$order = wc_get_order($order_id);
$nip = $order->get_meta('_billing_nip');
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];
}
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);

Перевірка GUS повертає помилку

Section titled “Перевірка GUS повертає помилку”
  1. Перевірте, чи ключ API правильний і активний
  2. Перевірте, чи сервер може встановити HTTPS-з’єднання з api.stat.gov.pl
  3. API GUS буває недоступним - плагін обробляє timeout і відображає відповідне повідомлення
  4. Переконайтеся, що розширення PHP SOAP встановлено на сервері

Поле NIP не відображається

Section titled “Поле NIP не відображається”
  1. Перевірте, чи модуль NIP увімкнено
  2. Перевірте налаштування умовного відображення
  3. Очистіть кеш (плагіни кешування можуть кешувати форму каси)

Дані компанії не заповнюються автоматично

Section titled “Дані компанії не заповнюються автоматично”
  1. Перевірте консоль браузера на наявність помилок AJAX
  2. Перевірте, чи endpoint REST API плагіна доступний
  3. Переконайтеся, що NIP правильний і компанія існує в базі GUS
Ця сторінка має виключно інформаційний характер і не є юридичною консультацією. Перед впровадженням проконсультуйтеся з юристом. Polski for WooCommerce є програмним забезпеченням з відкритим кодом (GPLv2), що надається без гарантій.