Hola @mateomoda, entiendo perfectamente la necesidad. Es una funcionalidad muy demandada en entornos B2B y, como bien señalan, PrestaShop no la ofrece de forma nativa en su flujo de checkout estándar.
Para conseguir algo aproximado sin un módulo específico, podemos combinar varias estrategias:
Grupos de Clientes B2B: Crea un grupo específico para tus clientes B2B. Ve a Parámetros de la tienda > Clientes > Grupos. Esto te permitirá aplicar reglas diferenciadas.
Restricción de Métodos de Pago: Para este grupo B2B, desactiva todos los métodos de pago existentes. Ve a Pagos > Preferencias y desmarca el grupo 'Clientes B2B' para cada método de pago. Así, los clientes B2B no podrán finalizar el pedido con un pago.
Modificación del Template del Checkout: Aquí es donde la cosa se pone técnica. Necesitarás sobrescribir el template de la página de pago para cambiar el texto del botón 'Confirmar pedido' a 'Solicitar cotización'. El archivo principal es themes/classic/templates/checkout/checkout.tpl (o el equivalente en tu tema hijo). Dentro de este archivo, deberás buscar la sección donde se renderiza el botón final de confirmación de pedido (normalmente en el hook displayPaymentByClick). Podrías añadir una condición Smarty para mostrar un texto diferente si el cliente pertenece al grupo B2B (por ejemplo, usando {$customer.id_default_group}).
Por ejemplo, podrías buscar algo como:
<button type="submit" class="btn btn-primary form-control-submit" data-link-action="save-payment">
{l s='Place order' d='Shop.Theme.Actions'}
</button>
Y cambiarlo por una lógica que compruebe el grupo del cliente y muestre 'Solicitar cotización' en su lugar.
Captura del Pedido y Notificación: Una vez que el cliente pulsa el botón 'Solicitar cotización', como no hay método de pago, el pedido no se generará con un estado normal. Esto requeriría un desarrollo personalizado (un override del OrderConfirmationController o un pequeño módulo) para interceptar el carrito, guardarlo como un pedido con un estado personalizado (por ejemplo, 'Cotización Pendiente', que puedes crear en Pedidos > Estados), y enviar una notificación al administrador.
La generación de un PDF con la cotización sería un paso adicional que también requeriría desarrollo a medida, ya que implicaría tomar los datos del carrito/pedido y renderizarlos en un formato PDF, lo cual no está previsto para este tipo de flujo en PrestaShop.
La clave es la combinación de la restricción de pagos con la modificación visual y la lógica backend para capturar el carrito. Es el enfoque más 'nativo' sin recurrir a módulos de terceros específicos para cotizaciones.