Skip to content

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.

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'); // true
NipValidator::isValid('PL 526-025-02-74'); // true
NipValidator::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.

ClaveValor por defectoDescripción
enabledtrueInterruptor principal del módulo
show_company_toggletrueSi se muestra la casilla “Compro como empresa”
niptrueSi se añade el campo NIP (omitido cuando polski-pro NipValidator está activo)
regonfalseSi se añade el campo REGON
ibanfalseSi 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]
));
  • Módulo KSeF (FREE) lee _billing_nip del pedido y detecta automáticamente los pedidos que requieren una factura electrónica.
  • Módulo de facturas (PRO) lee _billing_nip como nipBuyer al 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”.

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.