dimtac Posted May 22, 2013 Share Posted May 22, 2013 (edited) 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 May 23, 2013 by didipc (see edit history) Link to comment Share on other sites More sharing options...
Mellow Posted May 22, 2013 Share Posted May 22, 2013 Bonjour, essaye $params['object']->id_order $id_order = (int)$params['object']->id_order; (trouvé en regardant la structure du module dateofdelivery... ) 1 Link to comment Share on other sites More sharing options...
dimtac Posted May 22, 2013 Author Share Posted May 22, 2013 Je vais tester, merci d'avance, je vous tiens au courant Link to comment Share on other sites More sharing options...
J. Danse Posted May 22, 2013 Share Posted May 22, 2013 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; 1 Link to comment Share on other sites More sharing options...
dimtac Posted May 23, 2013 Author Share Posted May 23, 2013 Merci beaucoup ! 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 Merci d'avance pour votre aide Link to comment Share on other sites More sharing options...
J. Danse Posted May 23, 2013 Share Posted May 23, 2013 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); 1 Link to comment Share on other sites More sharing options...
Mellow Posted May 23, 2013 Share Posted May 23, 2013 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 } 1 Link to comment Share on other sites More sharing options...
dimtac Posted May 23, 2013 Author Share Posted May 23, 2013 (edited) En tout cas merci beaucoup , c'est vraiment sympa de votre part 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. Si jamais vous avez une idée faites moi signe Edited May 23, 2013 by didipc (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted May 23, 2013 Share Posted May 23, 2013 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now