Per qualsiasi ragione è possibile voler disabilitare la fatturazione automatica di Paypal. Per far questo è necessario modificare la funzione registerCaptureNotification che si occupa della creazione della notifica PayPal e della creazione dell’invoice. Questa funzione la potete trovare nel file app/code/core/Mage/Sales/Model/Order/Payment.php alla riga 283.
Modificate la dichiarazione della funzione aggiungendo il parametro $create_invoice (impostandolo di default a true):
public function registerCaptureNotification($amount, $create_invoice = true)
Ora sostituite il seguente codice php:
$invoice = $order->prepareInvoice()->register()->pay(); $order->addRelatedObject($invoice); $this->setCreatedInvoice($invoice);
con:
if( $create_invoice === true ) { $invoice = $order->prepareInvoice()->register()->pay(); $order->addRelatedObject($invoice); $this->setCreatedInvoice($invoice); } else { $order->sendNewOrderEmail(); }
Il parametro $create_invoice impostato a true di default permette alla funzione di non perdere le funzionalità base che potrebbero essere state usate in altre parti dell’applicazione e di cui non siamo a conoscenza.
Il passo successivo è modificare la chiamata della funzione registerCaptureNotification nel modulo PayPal. La funzione sulla quale agire è _registerPaymentCapture presente alla riga 291 del file app/code/core/Mage/Paypal/Model/Ipn.php.
L’operazione da fare è molto semplice, basta sostituire il seguente pezzo di codice:
->registerCaptureNotification($this->getIpnFormData('mc_gross'));
con:
->registerCaptureNotification($this->getIpnFormData('mc_gross'), false);
Nel caso in cui vogliate ripristinare la funzione di auto-invoice dovrete semplicemente rimuovere la variabile false presente nella chiamata della funzione registerCaptureNotification.
Adesso il vostro modulo PayPal non genererà più automaticamente le invoice!
21 commenti per “Disabilitare l’auto-invoice di PayPal”