B2B checkout fields
Polski 1.13.0 añade un conjunto opcional de campos B2B al checkout de WooCommerce: un interruptor “Compro como empresa” y los campos NIP, REGON e IBAN. Los campos aparecen en el checkout clásico de WooCommerce (filtro woocommerce_billing_fields), se guardan en los metadatos estándar del pedido y los leen el módulo KSeF y el módulo de facturas de pro sin configuración adicional.
Interruptor “Compro como empresa”
Section titled “Interruptor “Compro como empresa””Casilla polski_buying_as_company situada al principio de la sección de facturación. Desmarcada por defecto - las filas de NIP, REGON e IBAN permanecen ocultas hasta que el cliente la marca. El estado del interruptor se guarda en los metadatos del pedido _polski_buying_as_company (yes / no).
La lógica de mostrar u ocultar está implementada como JavaScript en línea - sin pipeline de compilación ni dependencia adicional en el frontend. El script también escucha el evento updated_checkout de jQuery, por lo que funciona tras las actualizaciones asíncronas de fragmentos del bloque de checkout.
Campo billing_nip validado con el algoritmo de suma de control del NIP polaco (10 dígitos, pesos 6, 5, 7, 2, 3, 4, 5, 6, 7, módulo 11). Formatos de entrada aceptados: 1234567890, 123-456-78-90, 123 456 78 90 y PL1234567890 (el prefijo se elimina antes de la validación). El valor se almacena en forma normalizada (10 dígitos) en los metadatos del pedido _billing_nip.
La validación en PHP usa la nueva clase de utilidad estática Polski\Util\NipValidator:
use Polski\Util\NipValidator;
NipValidator::isValid('5260250274'); // trueNipValidator::isValid('PL 526-025-02-74'); // trueNipValidator::normalize('PL 526-025-02-74'); // '5260250274'NipValidator::format('5260250274'); // '526-025-02-74'Cuando está activo el Polski\Pro\Validation\NipValidator de polski-pro, FREE omite su propio registro de NIP para evitar un campo billing_nip duplicado. FREE siempre añade REGON e IBAN.
Campo opcional billing_regon (desactivado por defecto). Acepta 9 o 14 dígitos (REGON corto / largo). Comprobación regex: /^\d{9}$|^\d{14}$/. Se guarda en los metadatos del pedido _billing_regon.
Campo opcional billing_iban (desactivado por defecto). Comprobación estructural de coherencia: prefijo de país de 2 letras + 2 dígitos de control + 11-30 caracteres alfanuméricos en el cuerpo, longitud total 15-34. La verificación estricta mod-97 se deja intencionadamente a los integradores (por ejemplo, un plugin de pasarela de pago). Se guarda en los metadatos del pedido _billing_iban.
Ajustes (polski_b2b)
Section titled “Ajustes (polski_b2b)”| Clave | Valor por defecto | Descripción |
|---|---|---|
enabled | true | Interruptor principal del módulo |
show_company_toggle | true | Si se muestra la casilla “Compro como empresa” |
nip | true | Si se añade el campo NIP (omitido cuando polski-pro NipValidator está activo) |
regon | false | Si se añade el campo REGON |
iban | false | Si se añade el campo IBAN |
Activar REGON e IBAN mediante update_option:
update_option('polski_b2b', array_merge( (array) get_option('polski_b2b', []), ['regon' => true, 'iban' => true]));Integración con otros módulos
Section titled “Integración con otros módulos”- Módulo KSeF (FREE) lee
_billing_nipdel pedido y detecta automáticamente los pedidos que requieren una factura electrónica. - Módulo de facturas (PRO) lee
_billing_nipcomonipBuyeral generar la Faktura VAT y las facturas de corrección. - AI Feed para facturas (PRO) expone las facturas como Markdown con los campos NIP en el bloque “Parties”.
Visualización en el administrador
Section titled “Visualización en el administrador”NIP, REGON e IBAN se añaden al bloque “Billing details” en la pantalla del pedido (woocommerce_admin_billing_fields). Se editan en el mismo lugar que la dirección de facturación del cliente.
Compatibilidad con el checkout por bloques
Section titled “Compatibilidad con el checkout por bloques”A partir de Polski 1.14.0, NIP / REGON / IBAN se registran mediante la API de WooCommerce woocommerce_register_additional_checkout_field (WC 8.6+). Un único registro cubre tanto el checkout clásico como el checkout por bloques (Cart & Checkout Blocks). La validación se ejecuta en ambos lados.
La API de WC almacena los valores en los metadatos del pedido _wc_billing/polski/nip, _wc_billing/polski/regon, _wc_billing/polski/iban. Polski los refleja automáticamente en las claves heredadas _billing_nip, _billing_regon, _billing_iban (acción woocommerce_set_additional_field_value), de modo que los módulos KSeF y de facturas de pro leen los datos sin cambios.
Las tiendas con WooCommerce anterior a 8.6 siguen usando la vía de registro solo clásica (woocommerce_billing_fields) con el interruptor “Compro como empresa” y JavaScript en línea.