Jump to content

Edit History

cryoth

cryoth

Je viens de réussir à mettre en place mon système de paiement avec suppression des réductions, je partage la démarche pour ceux qui se retrouveraient dans le même cas.

Au final j'ai opté pour un override de la classe CartRule :

// === Code ajouté au début de la fonction checkValidity() de CartRule ===
$isSubscriptionLive = Db::getInstance()->getValue('
  SELECT count(*)
  FROM ' . _DB_PREFIX_ . 'ogone_cloned_cart
  WHERE id_cart = ' . (int) $context->cart->id . '
  AND id_customer = ' . (int) $context->cart->id_customer . '
');

// Si abonnement est en cours et 1er versement déjà effectué
if($isSubscriptionLive > 0){
	return false;
}

// === Code exécuté au moment du clone de mon panier ===
// Ajout du nouveau cart à la liste pour pouvoir l'identifier comme non affecté par les réductions
$result = Db::getInstance()->insert('ogone_cloned_cart', array(
  'id_ogone_cloned' => NULL,
  'id_cart' => (int) $new_cart->id,
  'id_initial_cart' => (int) $subscription->id_cart,
  'id_customer' => (int) $new_cart->id_customer,
  'date_add' => date('Y-m-d H:i:s')
));

Les données passent par une table faite spécialement pour l'occasion et qui permettent à checkValidity() de savoir si le panier dois ou non recevoir une réduction

 

En espérant que ça servira à certains, Enjoy

cryoth

cryoth

Je viens de réussir à mettre en place mon système de paiement avec suppression des réductions, je partage la démarche pour ceux se retrouveraient dans le même cas.

Au final j'ai opté pour un override de la classe CartRule :

// === Code ajouté au début de la fonction checkValidity() de CartRule ===
$isSubscriptionLive = Db::getInstance()->getValue('
  SELECT count(*)
  FROM ' . _DB_PREFIX_ . 'ogone_cloned_cart
  WHERE id_cart = ' . (int) $context->cart->id . '
  AND id_customer = ' . (int) $context->cart->id_customer . '
');

// Si abonnement est en cours et 1er versement déjà effectué
if($isSubscriptionLive > 0){
	return false;
}

// === Code exécuté au moment du clone de mon panier ===
// Ajout du nouveau cart à la liste pour pouvoir l'identifier comme non affecté par les réductions
$result = Db::getInstance()->insert('ogone_cloned_cart', array(
  'id_ogone_cloned' => NULL,
  'id_cart' => (int) $new_cart->id,
  'id_initial_cart' => (int) $subscription->id_cart,
  'id_customer' => (int) $new_cart->id_customer,
  'date_add' => date('Y-m-d H:i:s')
));

Les données passent par une table faite spécialement pour l'occasion et qui permettent à checkValidity() de savoir si le panier dois ou non recevoir une réduction

 

En espérant que ça servira à certains, Enjoy

×
×
  • Create New...