Jump to content

Récupérer données en base pour template mail order_conf


Recommended Posts

Bonjour,

 

J'ai un module que me permet de déclarer des plages de livraison. Ce module transmet un email de confirmation avec la date et l'heure de livraison séparément. 

 

J'aimerais récupérer ces informations pour les intégrer directement dans le mail order_conf.

 

Après maintes tentatives infructueuse :

 

  • copier tous le code correspondant du module dans paymentModule-validateOrder
  • copier une partie du code en effectuant des modifications

 

Je pense que la solution plus simple serait de récupérer directement les informations dans la base avec un simple requête et les passer dans le template mail.

 

J'ai effectué cela, mais ca ne fonctionne pas : 

 

$resultpdc = Db::getInstance()->getRow('
SELECT pd.`id_planning_delivery_carrier`, pd.`id_planning_delivery_carrier_slot`, pd.`date_delivery`, c.`id_carrier`
FROM `'._DB_PREFIX_.'planning_delivery_carrier` pd
LEFT JOIN `'._DB_PREFIX_.'cart` c ON (pd.`id_cart` = c.`id_cart`)
WHERE pd.`id_cart` = '.(int)$this->context->cart->id);


$date_delivery = (date)$resultpdc['date_delivery'];
$delivery_slot = (date)$resultpdc['id_planning_delivery_carrier_slot'];
 
J'ai l'erreur suivante :
 
Parse error: syntax error, unexpected '$resultpdc' (T_VARIABLE)
 
J'ai également placé les déclarations suivantes : 
 
// Construct order detail table for the email
$product_var_tpl = array(
'{date_delivery}' => $date_delivery,
'{delivery_slot}' => $delivery_slot
)


// Send an e-mail to customer (one order = one email)
$data = array(
'{date_delivery}' => $date_delivery,
'{delivery_slot}' => $delivery_slot
)
Si quelqu'un peut m'aider à corriger mes erreurs, merci d'avance.

 

Link to comment
Share on other sites

Je l'ai sollicité pour savoir d'ou récupérer l'information et ou la transmettre. Il n'en fera pas plus. 

 

Mon post aujourd'hui est tourné sur l’implémentation de ce code par mes propres moyens.

 

Avez-vous donc des conseils utiles pour m'aider ? 

Link to comment
Share on other sites

Salut,

 

Bon sans le module en effet ca va etre compliqué de t'aider...

 

 

Tu as placé ce code dans classes > PaymentModule.php ?

 

Je mettrais ceci dans PaymentModule.php juste avant $data = array( :

$resultpdc = Db::getInstance()->getRow('
SELECT pd.`id_planning_delivery_carrier`, pd.`id_planning_delivery_carrier_slot`, pd.`date_delivery`, c.`id_carrier`
FROM `'._DB_PREFIX_.'planning_delivery_carrier` pd
LEFT JOIN `'._DB_PREFIX_.'cart` c ON (pd.`id_cart` = c.`id_cart`)
WHERE pd.`id_cart` = '.(int)$this->context->cart->id);

$date_delivery = Tools::displayDate($resultpdc['date_delivery']);
$delivery_slot = Tools::displayDate($resultpdc['id_planning_delivery_carrier_slot']);

Et dans $data = array( tu ajoutes :

'{date_delivery}' => $date_delivery,
'{delivery_slot}' => $delivery_slot,

Piste non testée ! Fais une sauvegarde !!!

Link to comment
Share on other sites

Hello ! 

 

Désolé du retard :

 

 

Bonjour,

 

c'est réellement un date ce truc ?

$delivery_slot = (date)$resultpdc['id_planning_delivery_carrier_slot'];

dans ce cas c’est bien étrange comme clé de valeur.

 

Alors effectivement, c'est pas un type date, mais un type Int(10). my bad.

 

en faite, la date est récupéré comme ça dans le module : 

 

'delivery_slot' => PlanningDeliverySlotByCarrier::getNameById($result['id_planning_delivery_carrier_slot']

 

@anteverce je test ton code mais il faut que j'ajuste la deuxième variable du coup.

 

 

Est-ce que je peux appeler la fonction (si c'est bien ça?)  PlanningDeliverySlotByCarrier::getNameById depuis PaymentModule.php ? 

 

merci !

Link to comment
Share on other sites

Re !

 

J'ai réussi !

 

j'ai testé d'inclure la classe dans paymentModule, sans succès. --> require_once(dirname(modules/planningdeliverybycarrier).'/PlanningDeliverySlotByCarrier.php');

 

Alors j'ai carrément copier le code de la classe du module dans PaymentModule.php !

 

Merci pour votre aide ! j'ai appris de nouvelle chose par la même occasion :)
  • Like 1
Link to comment
Share on other sites

Avant de le mettre en SOLVED, j'aimerai aller plus loin et mettre le code que j'ai fais dans l'override, plutôt que dans la classe même. 

 

Car j'ai remarqué qu'en upgrade de version prestashop les modifs dans ce genre de fichier sont perdu...

 

Merci !

Link to comment
Share on other sites

  • 3 weeks later...

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...