Hola @ramon_sevilla60 y @teresa_moda. Ramón tiene razón, el comportamiento por defecto de PrestaShop en la sección de métodos de pago es bastante limitado en cuanto a estas restricciones. No hay una opción directa en el panel de administración para asociar métodos de pago a transportistas específicos o a grupos de clientes.
La solución más limpia y recomendada para esto en PrestaShop 8.2.7 es intervenir a través del hookPaymentOptions. Este hook te permite modificar la lista de opciones de pago disponibles en el checkout antes de que se muestren al cliente. Necesitarías una pequeña modificación de código, que se puede implementar en un módulo personalizado si ya tienes uno, o creando uno muy simple para este propósito.
Aquí te dejo un fragmento de código que ilustra la lógica básica dentro de un método hookPaymentOptions:
foreach ($payment_options as $key => $option) {
if ($option->getModuleName() === 'ps_cashondelivery') {
if ($cart->id_carrier == (int)Configuration::get('PS_CARRIER_INPOST_ID')) {
unset($payment_options[$key]);
}
// Para grupos de clientes, necesitarías cargar el cliente y verificar sus grupos
// if (in_array(ID_GRUPO_MAYORISTA, $customer_groups_ids)) { unset($payment_options[$key]); }
}
}
return $payment_options;
En este ejemplo, PS_CARRIER_INPOST_ID sería el ID del transportista de InPost que quieres restringir. Puedes obtener el ID exacto desde la tabla ps_carrier o desde la configuración del transportista en el Back Office. Para la restricción por grupo de clientes, el proceso es similar, pero debes obtener los grupos del cliente actual y comparar sus IDs. Ten en cuenta que es una modificación de código, por lo que requiere conocimientos de PHP.