Skip to content

B2B checkout fields

Polski 1.13.0 fügt dem WooCommerce-Checkout einen optionalen Satz von B2B-Feldern hinzu: einen Umschalter “Kauf als Unternehmen” sowie NIP-, REGON- und IBAN-Felder. Die Felder erscheinen im klassischen WooCommerce-Checkout (Filter woocommerce_billing_fields), werden in Standard-Bestell-Metadaten gespeichert und ohne weitere Konfiguration vom KSeF-Modul und vom Rechnungsmodul in Pro gelesen.

Checkbox polski_buying_as_company am Anfang des Rechnungsbereichs. Standardmäßig nicht aktiviert - die Zeilen für NIP, REGON und IBAN bleiben ausgeblendet, bis der Kunde sie anhakt. Der Zustand des Umschalters wird in den Bestell-Metadaten _polski_buying_as_company (yes / no) gespeichert.

Die Ein-/Ausblendlogik ist als Inline-JavaScript umgesetzt - keine Build-Pipeline und keine zusätzliche Frontend-Abhängigkeit. Das Skript lauscht außerdem auf das jQuery-Ereignis updated_checkout, sodass es auch nach asynchronen Fragment-Aktualisierungen des Checkout-Blocks funktioniert.

Feld billing_nip, validiert gegen den polnischen NIP-Prüfsummenalgorithmus (10 Ziffern, Gewichte 6, 5, 7, 2, 3, 4, 5, 6, 7, Modulo 11). Akzeptierte Eingabeformate: 1234567890, 123-456-78-90, 123 456 78 90 und PL1234567890 (das Präfix wird vor der Validierung entfernt). Der Wert wird in normalisierter Form (10 Ziffern) unter den Bestell-Metadaten _billing_nip gespeichert.

Die Validierung in PHP nutzt die neue statische Hilfsklasse Polski\Util\NipValidator:

use Polski\Util\NipValidator;
NipValidator::isValid('5260250274'); // true
NipValidator::isValid('PL 526-025-02-74'); // true
NipValidator::normalize('PL 526-025-02-74'); // '5260250274'
NipValidator::format('5260250274'); // '526-025-02-74'

Wenn Polski\Pro\Validation\NipValidator aus polski-pro aktiv ist, überspringt FREE die eigene NIP-Registrierung, um ein doppeltes billing_nip-Feld zu vermeiden. REGON und IBAN werden von FREE immer hinzugefügt.

Optionales Feld billing_regon (standardmäßig deaktiviert). Akzeptiert 9 oder 14 Ziffern (kurzer / langer REGON). Regex-Prüfung: /^\d{9}$|^\d{14}$/. Gespeichert in den Bestell-Metadaten _billing_regon.

Optionales Feld billing_iban (standardmäßig deaktiviert). Strukturelle Plausibilitätsprüfung: 2-buchstabiges Länderpräfix + 2 Prüfziffern + 11-30 alphanumerische Zeichen im Rumpf, Gesamtlänge 15-34. Die strikte Mod-97-Prüfung wird bewusst den Integratoren überlassen (zum Beispiel einem Zahlungs-Gateway-Plugin). Gespeichert in den Bestell-Metadaten _billing_iban.

SchlüsselStandardBeschreibung
enabledtrueHauptschalter für das Modul
show_company_toggletrueOb die Checkbox “Kauf als Unternehmen” angezeigt wird
niptrueOb das NIP-Feld hinzugefügt wird (übersprungen, wenn polski-pro NipValidator aktiv ist)
regonfalseOb das REGON-Feld hinzugefügt wird
ibanfalseOb das IBAN-Feld hinzugefügt wird

REGON und IBAN über update_option aktivieren:

update_option('polski_b2b', array_merge(
(array) get_option('polski_b2b', []),
['regon' => true, 'iban' => true]
));
  • KSeF-Modul (FREE) liest _billing_nip aus der Bestellung und erkennt automatisch Bestellungen, die eine E-Rechnung erfordern.
  • Rechnungsmodul (PRO) liest _billing_nip als nipBuyer bei der Erstellung von Faktura VAT und Korrekturrechnungen.
  • AI Feed für Rechnungen (PRO) stellt Rechnungen als Markdown mit NIP-Feldern im Block “Parties” bereit.

NIP, REGON und IBAN werden im Bestellbildschirm zum Block “Billing details” hinzugefügt (woocommerce_admin_billing_fields). Sie werden an derselben Stelle bearbeitet wie die Rechnungsadresse des Kunden.

Ab Polski 1.14.0 werden NIP / REGON / IBAN über die WooCommerce-API woocommerce_register_additional_checkout_field (WC 8.6+) registriert. Eine einzige Registrierung deckt sowohl den klassischen Checkout als auch den Block-Checkout (Cart & Checkout Blocks) ab. Die Validierung läuft auf beiden Seiten.

Die WC-API speichert die Werte unter den Bestell-Metadaten _wc_billing/polski/nip, _wc_billing/polski/regon, _wc_billing/polski/iban. Polski spiegelt sie automatisch auf die Legacy-Schlüssel _billing_nip, _billing_regon, _billing_iban (Aktion woocommerce_set_additional_field_value), sodass die KSeF- und Pro-Rechnungsmodule die Daten ohne Änderungen lesen.

Shops mit einem WooCommerce älter als 8.6 nutzen weiterhin den nur klassischen Registrierungspfad (woocommerce_billing_fields) mit dem Umschalter “Kauf als Unternehmen” und Inline-JavaScript.