Bonjour @lucietech,
C'est une demande très fréquente et vous avez raison, PrestaShop 1.7.4.4 ne propose pas nativement de restreindre les modes de paiement par transporteur directement dans les préférences générales.
Pour les groupes de clients, c'est plus simple : rendez-vous dans Paiement > Préférences. Ici, vous pouvez définir des restrictions par groupe de clients pour chaque module de paiement.
Pour la restriction par transporteur, cela nécessite une modification du code du module de paiement concerné. Dans votre cas, il s'agit du module 'Paiement à la livraison' (ps_cashondelivery). Voici comment vous pouvez procéder :
Identifier les IDs des transporteurs : Allez dans Livraison > Transporteurs et notez les IDs des transporteurs pour lesquels vous voulez masquer le paiement (par exemple, Mondial Relay, Chronopost points relais, etc.). Vous pouvez aussi les trouver directement dans votre base de données dans la table ps_carrier.
Modifier le module ps_cashondelivery :
Éditez le fichier modules/ps_cashondelivery/ps_cashondelivery.php.
Recherchez la méthode hookPaymentOptions($params).
À l'intérieur de cette méthode, vous pouvez ajouter une logique pour vérifier le transporteur sélectionné. Si le transporteur est dans votre liste interdite, le module ne retournera aucune option de paiement.
Voici un exemple de modification à ajouter au début de la méthode hookPaymentOptions :
public function hookPaymentOptions($params)
{
if (!$this->active) {
return;
}
$cart = $params['cart'];
$id_carrier = (int)$cart->id_carrier;
// Liste des IDs de transporteurs pour lesquels le paiement à la livraison est interdit
$forbidden_carriers_ids = [2, 5, 8]; // Remplacez par les IDs de vos transporteurs
if (in_array($id_carrier, $forbidden_carriers_ids)) {
Attention : Modifier directement le fichier d'un module core ou officiel peut rendre votre site vulnérable lors des mises à jour du module. Il est recommandé de faire une sauvegarde du fichier avant toute modification. Pour une solution plus propre et pérenne, il faudrait créer un module d'override pour ps_cashondelivery, mais pour un cas simple comme celui-ci, la modification directe est souvent utilisée sur des versions comme la 1.7.4.4.