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):
1 2 3 |
public function registerCaptureNotification($amount, $create_invoice = true) |
Ora sostituite il seguente codice php:
1 2 3 4 5 |
$invoice = $order->prepareInvoice()->register()->pay(); $order->addRelatedObject($invoice); $this->setCreatedInvoice($invoice); |
con:
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 2 3 |
->registerCaptureNotification($this->getIpnFormData('mc_gross')); |
con:
1 2 3 |
->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”