d.iandoli75 Posted February 24, 2020 Share Posted February 24, 2020 (edited) Buongiorno, Sto lavorando su un modulo personalizzato con cui creo ordini o fatture in un gestionale sul cloud tramite delle chiamate API. Nel file principale ho un metodo 'afterHook' in cui controllo se nella chiamata API devo creare un ordine o una fattura: public function afterHook($order, $isInvoice){ $orderId = $order->id; $my_api_url = $this->baseUrl.'/api/v0.3/SaveDocument'; $send_data = array(); $send_data['apiKey'] = Configuration::get('PS_MYSERVICE_API'); if ($order->total_paid != 0) $send_data['xml'] = $this->createInvoiceXml($orderId, $isInvoice); // non inserisce ordine a zero $dataReturned = $this->curlDownload($my_api_url, http_build_query($send_data)); $docIdMyService = explode('</docId>', explode('<docId>', $dataReturned)[1])[0]; if(!empty($docIdMyService)){ if (!$isInvoice) { $query = 'UPDATE ' . _DB_PREFIX_ . 'orders SET docIdOrderMyService=\'' . $docIdMyService . '\' WHERE id_order=\'' . $orderId . '\';'; Db::getInstance()->Execute($query); $this->downloadDocument($docIdMyService, $orderId, false); } else { $query = 'UPDATE ' . _DB_PREFIX_ . 'orders SET docIdMyService=\'' . $docIdMyService . '\' WHERE id_order=\'' . $orderId . '\';'; Db::getInstance()->Execute($query); $this->downloadDocument($docIdMyService, $orderId, true); } } Usando gli hooks 'displayAdminOrderTabOrder' e 'displayAdminOrderContentOrder' ho aggiunto al dettaglio dell'ordine una tab che contiene le informazioni sullo stato dell'ordine nel gestionale: due colonne in cui so se per quell'ordine o per quella fattura è stato creato il documento corrispondente sul gestionale. Qui sotto il template che utilizzo attualmente (admin_content_order.tpl): <div class="tab-pane" id="Fattura24"> <table> <thead> <tr> <td style="padding-left: 20px;"><strong>{l s='Stato ordine' mod='mymodule'} </strong></td> <td style="padding-left: 20px;"><strong>{l s='Stato fattura' mod='mymodule'} </strong></td> </tr> </thead> <tr> <td style="padding-left: 20px;">{$mymodule_order}</td> <td style="padding-left: 20px;">{$mymodule_invoice}</td> </tr> <tr> <td style="padding-left: 20px;"> {if $mymodule_order_docId ==''} <button type="submit" name="submit_order" id="submit_order" class="btn btn-primary" onclick="saveOrder()">Salva ordine</button> {/if} </td> <td style="padding-left: 20px;"> {if $mymodule_invoice_docId == ''} <button type="submit" name="submit_invoice" id="submit_invoice" class="btn btn-primary" onclick="saveInvoice()">Salva fattura</button> {/if} </td> </tr> </table> </div> Grazie a smarty riesco a visualizzare i pulsanti con le condizioni giuste, ma vorrei associare l'azione "saveOrder" e "saveInvoice" al comando 'afterHook' per creare l'ordine o la fattura a seconda dell'id del pulsante. Pensavo ad una chiamata ajax, ma poiché sono un niubbo: qualcuno può darmi qualche suggerimento? Grazie Davide Edited March 9, 2020 by d.iandoli75 comportamento non corretto (see edit history) Link to comment Share on other sites More sharing options...
d.iandoli75 Posted February 24, 2020 Author Share Posted February 24, 2020 (edited) Avevo postato una soluzione che utilizzava le smartyfunctions, ma poi mi sono accorto che la funzione viene chiamata ogni volta che si aggiorna la pagina. A questo punto la cosa migliore credo sia una chiamata ajax alla funzione. Qualcuno sa darmi un'indicazione? Grazie Edited March 9, 2020 by d.iandoli75 metodo precedente non corretto (see edit history) 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