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