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):
[php]
public function registerCaptureNotification($amount, $create_invoice = true)
[/php]
Ora sostituite il seguente codice php:
[php]
$invoice = $order->prepareInvoice()->register()->pay();
$order->addRelatedObject($invoice);
$this->setCreatedInvoice($invoice);
[/php]
con:
[php]
if( $create_invoice === true ) {
$invoice = $order->prepareInvoice()->register()->pay();
$order->addRelatedObject($invoice);
$this->setCreatedInvoice($invoice);
}
else {
$order->sendNewOrderEmail();
}
[/php]
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:
[php]
->registerCaptureNotification($this->getIpnFormData(‘mc_gross’));
[/php]
con:
[php]
->registerCaptureNotification($this->getIpnFormData(‘mc_gross’), false);
[/php]
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”