En fait, j'ai travaillé directement sur le plugin Alphauserpoints (fonction getPointsEarned) en ne sélectionnant pas des produits qui ont une caractéristique particulière. Ainsi, il faut recalculer le total de la commande à partir des ligne de commandes, donc de produit. Cela me permet de mettre en place ma restriction rapidement en attendant de faire les choses plus proprement (définition dans la configuration du plugin de la caractéristique à tester et ses valeurs).
Ci-joint le code modifié pour information (en fait j'ai ajouté un foreach pour tester product->order_product_options[1]->characteristic_id). Par contre, cela ne peut pas fonctionner si les points gagnés intègrent aussi les frais de livraison, car le détail des frais de livraison n'est pas ventilé par ligne de commande/produit.
//--
if(!empty($order->cart->products)) {
$productsabo = &$order->cart->products;
} else {
$productsabo = &$order->products;
}
//--
if(!empty($cart->full_total->prices[0]->price_value_with_tax)) {
if($method->payment_params->shippingpoints==1) {
$calculatedPrice = $cart->full_total->prices[0]->price_value_with_tax - @$cart->coupon->discount_value;
} else {
$calculatedPrice = $cart->total->prices[0]->price_value_with_tax - @$cart->coupon->discount_value;
}
} else {
if($method->payment_params->shippingpoints==1) {
$calculatedPrice = $order->order_full_price;
} else {
//--
foreach ($productsabo as $productabo) {
if ($productabo->order_product_options[1]->characteristic_id != "13") {
$calculatedPrice += $productabo->order_product_total_price;
}
}
//--
}
}