EspertoMagento.it

Soluzioni e strategie per e-commerce Magento!

Disabilitare l’auto-invoice di PayPal

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Autorizzo il trattamento dei miei dati personali, ai sensi degli art. 13 e 14 del GDPR - Regolamento UE 2016/679