Hola @fernando_iberia, @alejandrolab y @valeria9483.
Tenéis razón, PrestaShop 1.7.8.0 no ofrece una opción directa en el Back Office para restringir métodos de pago por transportista o por grupo de cliente. La lógica de filtrado es más bien básica en las preferencias de pago.
Para conseguir lo que necesitas, la solución pasa por crear un 'override' en la clase PaymentOptionsFinder. Esta clase es la encargada de obtener y preparar las opciones de pago que se muestran al cliente. Podemos extenderla para añadir nuestra lógica personalizada.
Deberás crear un archivo en override/classes/checkout/PaymentOptionsFinder.php (si no existe ya, si existe, añade la lógica en la clase existente) y modificar el método getPaymentOptions() para interceptar y eliminar el pago contra reembolso si se cumple la condición del transportista o del grupo de cliente.
Aquí te dejo un ejemplo de cómo podrías hacerlo. Asegúrate de sustituir ID_TRANSPORTISTA_INPOST y ID_GRUPO_RESTRINGIDO por los IDs reales que puedes encontrar en las secciones 'Transportistas' y 'Grupos de clientes' de tu Back Office respectivamente. El ID del módulo de pago contra reembolso suele ser 'ps_cashondelivery'.
class PaymentOptionsFinder extends PaymentOptionsFinderCore
{
public function getPaymentOptions()
{
$payment_options = parent::getPaymentOptions();
$cart = Context::getContext()->cart;
if (!Validate::isLoadedObject($cart)) {
return $payment_options;
}
$id_carrier = (int)$cart->id_carrier;
Después de subir este archivo, PrestaShop debería reconocer el override automáticamente. Prueba a simular un pedido con las condiciones que quieres restringir para verificar que funciona correctamente.