Hola @joaquin24. Entiendo perfectamente tu necesidad, es un escenario común para reducir el riesgo de devoluciones. Como bien indican @felix_vlc69 y @gonzaloshop, las opciones nativas del Back Office en PrestaShop 9.0.1 son insuficientes para esto, ya que las restricciones se aplican a nivel de módulo de pago y no dinámicamente según el valor del carrito o el historial del cliente.
La solución más limpia y recomendada es utilizar el hookPaymentOptions. Este hook permite modificar las opciones de pago disponibles en el checkout justo antes de que se muestren al cliente. Puedes crear un pequeño módulo personalizado que implemente este hook.
Aquí tienes un ejemplo de cómo podrías deshabilitar el Contra Reembolso si el total del carrito supera los 1000 EUR:
// Dentro del método hookPaymentOptions de tu módulo personalizado
public function hookPaymentOptions($params)
{
/** @var Cart $cart */
$cart = $params['cart'];
$payment_options = $params['payment_options'];
$filtered_options = [];
if ($cart->getOrderTotal() > 1000) {
foreach ($payment_options as $option) {
if ($option->getModuleName() !== 'ps_cashondelivery') {
Este código iría dentro de la clase principal de tu módulo personalizado, asegurándote de que tu módulo esté instalado y activo. Cuando el total del carrito exceda 1000 EUR, este código filtrará y eliminará la opción 'Contra Reembolso' (cuyo nombre de módulo es ps_cashondelivery) de la lista de opciones de pago.
Para el caso de clientes nuevos o no verificados, puedes extender la lógica en el mismo hook. Por ejemplo, podrías verificar si el cliente ($params['customer']) tiene 0 pedidos ($customer->nb_orders === 0) o si su fecha de registro ($customer->date_add) es muy reciente. Si se cumple esa condición, aplicarías el mismo filtro para eliminar el Contra Reembolso.