Jump to content

Problème d'extension de prestagiftsvouchers


Recommended Posts

Salut,

 

On m'a demandé d'étendre un module nommé prestagiftsvouchers qui permet de vendre des chèques cadeaux à des clients (un peu comme les cartes iTunes ou FNAC). Le problème, c'est que le code que je rajoute dans le module s'exécute de manière complètement chaotique, sans logique apparente. Il me semble qu'il est payant, je ne vais donc pas montrer directement le code du module, mais je vais vous donner du pseudo-code qui vous permettra de m'aider si vous le souhaitez.

 

A la suite de ce code dans le hook de paiement qui se charge d'utiliser le chèque cadeau comme moyen de paiement :

 

/* Code de base fonctionnel. */
$discount = getGiftVouchers( ... );
$cart->addDiscount($discount);

 

J'ai ajouté ce code pour générer une nouvelle réduction pour le client qui vaut $valeurDuChèqueCadeau - $montantCommande :

 

$total = $cart->getOrderTotal();
die("M. est un assassin !");
if ($total < $discount->value) {
die("F. est son frère");
$order = new Order(intval($params['id_order']));
$customer = new Customer($order->id_customer);
$currency = new Currency($order->id_currency);
$newDiscount = new Discount();
$newDiscount->id_discount_type = 2;
$newDiscount->value = $discount->value - $total;
$newDiscount->quantity = 1;
$newDiscount->quantity_per_user = 1;
$newDiscount->date_from = date('Y-m-d H:i:s', time());
$newDiscount->date_to = $discount->dateTo;
$newDiscount->name = 'GV' . Tools::passwdGen(8);
$newDiscount->cumulable = $discount->cumulable;
$newDiscount->cumulable_reduction = $discount->cumulable_reduction;
$newDiscount->description = 'CHEQUE CADEAU';
$newDiscount->id_customer = $order->id_customer;
$newDiscount->id_currency = $discount->currency;
$newDiscount->add(); /* Test d'erreur ? */

$data = array(
     '{customer_firstname}' => $customer->firstname,
	'{customer_lastname}' => $customer->lastname,
	'{giftvoucher_code}' => $newDiscount->name,
	'{giftvoucher_value}' => $newDiscount->value,
	'{giftvoucher_currency}' => $currency->sign
);

Mail::Send( ..., $data, ... );
}
else die("J. est son oncle");

 

Deux questions :

  1. Est-ce que le code d'ajout de réduction vous semble correct ?
  2. Le premier die("M. est un assassin") n'est jamais exécuté (!!). Pourtant, parfois, j'ai vu s'afficher "J est son oncle" dans la page du site. Je n'ai jamais réussi à avoir "F. est son frère". Sans toucher au code, avec deux codes de chèque cadeau valides, j'ai eu des messages différents. Je n'y comprend rien, y'a t-il un mécanisme de mise en cache qui se met au travers de ma route et qui fait que le code n'est pas exécuté ? Ou alors faut-il, par le back-office, dire à PrestaShop de "recharger" le module à chaque modification ?

Faites-moi savoir si vous avez besoin de plus de renseignements, il m'arrive de ne pas être très clair dans mes explications.

 

Cordialement,

Florian Simon

 

PS : Je suis nouveau sur PrestaShop, mais j'ai suivi une formation de développeur Web, je sais lire & écrire du code.

Edited by Florian Simon (see edit history)
Link to comment
Share on other sites

Le problème est à moitié résolu... Un problème de droits sur les fichiers était certainement la cause de cette exécution incompréhensible... Il me reste tout de même le problème du mail. Sauriez-vous me dire pourquoi l'envoi de mail ne marche pas alors que le même appel à Mail::send() caractère pour caractère fonctionne dans le hook updateOrderStatus ? Je n'y comprends plus rien :S

 

Cordialement,

Florian Simon

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...