Jump to content

[Résolu] Récupérer id_order dans un module


Recommended Posts

Bonjour à toute la communauté presta :) ,

 

Je sollicite votre aide pour récupérer la valeur de id_order utilisé lors de la génération d'un PDF au sein de mon module (celui ci ne fait pour l'instant qu'ajouter du texte, il est rataché au Hook DisplayPDFInvoice).

 

En effet je crée un module qui doit permettre d'afficher les taxes TPS et TVQ du québec sur la facture PDF.

 

public function hookDisplayPDFInvoice($params)
{
 $sql = 'SELECT * FROM '._DB_PREFIX_.'tax';
 if ($results = Db::getInstance()->ExecuteS($sql))
  foreach ($results as $row)
	  $totalShop2 = $row['rate'];
	$test4 = $this->context->language->iso_code;
	$test5 = $this->context->order->id_order;
 $sql = "SELECT id_order FROM ps_orders";
 $test = Db::getInstance()->executeS($sql) ;
 foreach($test as $row){$essai = $row["product_name"];}
$this->context->smarty->assign(
   array(
	   'my_module_name' => Configuration::get('MYMODULE_NAME'),
	   'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display'),
	   'my_invoice_tvq' => $this->l($test5) ,
	   'my_invoice_tps' => $this->l($totalShop2)
   )
  );

  return $this->display(__FILE__, 'mymodule.tpl');
}

 

Je souhaite récupérer la valeur de id_order pour l'utiliser dans ma requête, j'ai essayé $this->context->order->id_order, mais cela ne fonctionne pas.

 

Donc si quelqu'un a une idée n'hésitez pas à me faire signe ;)

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

Vu qu'on est sur une 1.5, voici le code qui le permettrait, éventuellement (à tester !)

 

$order_invoice = $params['object'];
if (!($order_invoice instanceof OrderInvoice))
return;
$id_order = (int)$order_invoice->id_order;

  • Like 1
Link to comment
Share on other sites

Merci beaucoup ! B)

 

Les 2 codes fonctionnent mais J.Danse tu a parlé de presta 1.5, tu veux dire que le bout de code ne fonctionnerai pas sur un presta 1.4 ?

 

De la même façon, comment pourrais-je faire pour récupérer la devise de la commande ?

 

Dès que tout ça sera fonctionnel je ferai un petit mémo car je trouve qu'il y a un manque de doc sur ce point :rolleyes:

 

Merci d'avance pour votre aide :D

Link to comment
Share on other sites

Tout à fait, je parle de la 1.5 parce que le modèle OrderInvoice n'existe pas en 1.4 ;-)

 

A noter que, oui, les deux codes fonctionnes: en réalité, l'un et l'autre ne sont que des ré-écritures différentes (en incluant un test dans le mien, mais pas forcément nécessaire).

 

Pour aller plus loin et récupérer la devise, on peut envisager ceci:

$order_invoice = $params['object'];
if (!($order_invoice instanceof OrderInvoice))
return;
$id_order = (int)$order_invoice->id_order;
$order = new Order($id_order);
$id_currency = $order->id_currency;
$currency = new Currency($id_currency);

  • Like 1
Link to comment
Share on other sites

Et pour la compatibilité avec PS1.4 le hook sera différent et la syntaxe également :

 

function hookPDFInvoice($params)
{
	$order = new Order($params['id_order']);
	$id_order = (int)$order->id;
	$currency = new Currency((int)$order->id_currency);
	ddd($currency); // pour voir le contenu de l'objet $currency
}

  • Like 1
Link to comment
Share on other sites

En tout cas merci beaucoup , c'est vraiment sympa de votre part :D

 

Euh par ailleurs, vous ne sauriez pas comment overrider un fichier .tpl depuis un module ?

 

J'aimerais juste overrider invoice.tpl par mafacture.tpl présent dans mon module. :o

 

Si jamais vous avez une idée faites moi signe B)

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

Je pense qu'on ferait mieux de laisser ce sujet à sa fin (puisque résolu) et de débuter un nouveau sujet.

 

Toutefois, en attendant, voici un élément de réponse.

 

Il n'y a pas vraiment de solutions miracles mais des possibilités du style:

  • Faire un override de HTMLTemplateInvoice en y incluant la méthode getTemplate() qui redirige vers le module ;
  • Faire une copie du fichier invoice.tpl présent dans le module vers le répertoire /pdf/ du thème ;
  • Faire la même chose (avec un autre nom de tpl) mais modifier la configuration PS_INVOICE_MODEL par ce nouveau nom;
  • ... :-)

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