Jump to content
d.iandoli75

Eseguire una funzione php da un template

Recommended Posts

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 by d.iandoli75
comportamento non corretto (see edit history)

Share this post


Link to post
Share on other sites

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 by d.iandoli75
metodo precedente non corretto (see edit history)

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More