Ir al contenido

Request for quote (RFQ)

El módulo RFQ reemplaza “Añadir al carrito” por “Solicitar precio”. Los clientes envían solicitudes de presupuesto en lugar de comprar directamente. Útil para tiendas B2B y productos con precios individuales.

El módulo no tiene pantalla de ajustes. Sus ajustes viven en la opción polski_quote y la clave enabled dentro de ella es la que activa el módulo. En esta versión nada escribe esa opción, ni una pantalla del escritorio ni la ruta PUT /wp-json/polski-pro/v1/settings, así que hay que fijarla directamente.

Ajuste Opción de base de datos Valor predeterminado Descripción
Activar módulo polski_quote No Activa la funcionalidad de solicitud de presupuesto
Texto del botón polski_quote_button_text “Zapytaj o cenę” Texto mostrado en el botón
Mostrar en listados polski_quote_show_on_loops No Muestra el botón de solicitud en las páginas de archivo y categoría
Requerir inicio de sesión polski_quote_require_login No Requiere iniciar sesión antes de enviar una solicitud
Consentimiento de procesamiento polski_quote_consent Sí Añade una casilla de consentimiento RGPD al formulario

El formulario de solicitud de presupuesto contiene de forma predeterminada:

  • Nombre y apellidos - obligatorio
  • Dirección de correo electrónico - obligatorio, validación de formato
  • Teléfono - opcional
  • Cantidad - obligatorio, validación numérica
  • Mensaje - opcional, área de texto
  • Consentimiento RGPD - casilla de verificación, obligatorio si está activado

Tras activar el módulo, el botón “Añadir al carrito” se reemplaza por el botón de solicitud de presupuesto. Esto se aplica a:

  • Página de producto individual
  • Páginas de archivo y categoría (si la opción polski_quote_show_on_loops está activada)
  • Widgets y shortcodes de producto

El botón de solicitud de presupuesto puede colocarse en cualquier lugar mediante el shortcode:

[polski_quote_button product_id="123" text="Zapytaj o cenę" class="custom-class"]

Parámetros:

Parámetro Obligatorio Descripción
product_id No ID del producto (por defecto, el producto actual)
text No Texto del botón
class No Clases CSS adicionales

El formulario se envía de forma asíncrona (AJAX) sin recargar la página. Tras el envío, el cliente ve un mensaje de confirmación con el número de solicitud.

/**
* Filtruje dane zapytania ofertowego przed zapisem.
*
* @param array $quote_data Dane zapytania
* @param int $product_id ID produktu
* @param \WP_User $user Obiekt zalogowanego użytkownika lub pusty
*/
apply_filters('polski_pro/quote/before_save', array $quote_data, int $product_id, $user): array;

Ejemplo - añadir un campo personalizado:

add_filter('polski_pro/quote/before_save', function (array $quote_data, int $product_id, $user): array {
$quote_data['meta']['company_nip'] = sanitize_text_field($_POST['company_nip'] ?? '');
return $quote_data;
}, 10, 3);

Cada solicitud de presupuesto guarda información sobre el consentimiento:

  • Marca de tiempo del consentimiento otorgado
  • Dirección IP del cliente (con hash SHA-256)
  • Contenido del consentimiento en el momento de otorgarlo
  • Versión del formulario

Estos datos se almacenan en la tabla {prefix}_polski_quote_consents y pueden exportarse para fines de auditoría RGPD.

/**
* Akcja wywoływana po zapisaniu zgody.
*
* @param int $quote_id ID zapytania ofertowego
* @param array $consent Dane zgody
* @param string $ip_hash Zahashowany adres IP
*/
do_action('polski_pro/quote/consent_logged', int $quote_id, array $consent, string $ip_hash);

Las solicitudes de presupuesto están disponibles en el menú Polski > Solicitudes de cotización. La etiqueta del menú viene de la clave admin_page_title de la opción polski_quote y, sin valor propio, es “Solicitudes de cotización”. La lista contiene:

  • Número de solicitud
  • Datos del cliente (nombre, correo electrónico, teléfono)
  • Producto y cantidad
  • Estado (nueva, en curso, respondida, cerrada)
  • Fecha de envío
Estado Descripción
new Solicitud nueva, sin procesar
in_progress Presupuesto en preparación
replied Presupuesto enviado al cliente
accepted El cliente aceptó el presupuesto
rejected El cliente rechazó el presupuesto
closed Solicitud cerrada

Desde el panel, el administrador puede:

  1. Revisar los detalles de la solicitud
  2. Añadir una nota interna
  3. Establecer el precio presupuestado
  4. Enviar una respuesta por correo electrónico al cliente
  5. Convertir la solicitud en un pedido de WooCommerce

El módulo registra las siguientes plantillas de correo electrónico en WooCommerce:

Correo electrónico Destinatario Desencadenante
Nueva solicitud de presupuesto Administrador El cliente envía una solicitud
Confirmación de solicitud Cliente Envío de la solicitud
Respuesta al presupuesto Cliente El administrador envía un presupuesto
Cambio de estado de la solicitud Cliente Cambio de estado de la solicitud

Las plantillas de correo electrónico pueden sobrescribirse en el tema, en el directorio woocommerce/emails/:

  • polski-pro-quote-new.php
  • polski-pro-quote-confirmation.php
  • polski-pro-quote-reply.php
  • polski-pro-quote-status.php
/**
* Filtruje pola formularza zapytania ofertowego.
*
* @param array $fields Tablica pól formularza
* @param int $product_id ID produktu
*/
apply_filters('polski_pro/quote/form_fields', array $fields, int $product_id): array;

Ejemplo - añadir un campo de NIF:

add_filter('polski_pro/quote/form_fields', function (array $fields, int $product_id): array {
$fields['company_nip'] = [
'type' => 'text',
'label' => 'NIP firmy',
'required' => false,
'priority' => 35,
];
return $fields;
}, 10, 2);
/**
* Akcja wywoływana po zapisaniu zapytania ofertowego.
*
* @param int $quote_id ID zapytania
* @param array $quote_data Dane zapytania
*/
do_action('polski_pro/quote/submitted', int $quote_id, array $quote_data);

Ejemplo - envío a un CRM:

add_action('polski_pro/quote/submitted', function (int $quote_id, array $quote_data): void {
$crm_api = new MyCrmApi();
$crm_api->create_lead([
'name' => $quote_data['name'],
'email' => $quote_data['email'],
'product' => $quote_data['product_name'],
'qty' => $quote_data['quantity'],
]);
}, 10, 2);

El botón “Añadir al carrito” sigue mostrándose Compruebe si la opción polski_quote está activada. Vacíe la caché de los plugins de caché (WP Super Cache, W3 Total Cache, LiteSpeed Cache).

El formulario no se envía (error de AJAX) Revise la consola del navegador en busca de errores de JavaScript. Asegúrese de que el script polski-pro-quote.js esté cargado. Los conflictos con otros plugins pueden bloquear AJAX - desactive los demás plugins para identificar el conflicto.

Los correos electrónicos no se envían Compruebe la configuración de correo electrónico en WooCommerce > Ajustes > Correos electrónicos. Asegúrese de que las plantillas de Polski PRO estén activadas.

Esta página tiene únicamente carácter informativo y no constituye asesoramiento legal. Consulte a un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) proporcionado sin garantía.