Durch die starke Integration von PayPal in Magento, ist es bei PayPal Standard als Zahlungsart leider nicht möglich die Erstattungen aus PayPal zu beeinflussen oder zu unterdrücken. Sobald man in PayPal eine Erstattung für eine Zahlung vollzieht - egal ob ganz oder nur teilweise - erhält der Magento Shop eine Rückmeldung von PayPal und es wird automatisch eine vollständige Gutschrift erzeugt.
Dieses Verhalten ist besonders dann ärgerlich, wenn der Kunde nur einzelne Produkte zurückgegeben hat und der Shop Betreiber nur eine Teilerstattung vorgenommen hat
Leider ist dieses Verhalten jedoch nicht über eine einfache Anpassung der Magento Konfiguration veränderbar. Man muss hier wie folgt vorgehen:
#fffSie können ein Panel verwenden, um wichtige Schritte hervorzuheben.
/** Disable PayPal Refund
*
$serviceModel = Mage::getModel('sales/service_order', $order);
if ($invoice) {
if ($invoice->getBaseTotalRefunded() > 0) {
$adjustment = array('adjustment_positive' => $amount);
} else {
$adjustment = array('adjustment_negative' => $baseGrandTotal - $amount);
}
$creditmemo = $serviceModel->prepareInvoiceCreditmemo($invoice, $adjustment);
if ($creditmemo) {
$totalRefunded = $invoice->getBaseTotalRefunded() + $creditmemo->getBaseGrandTotal();
$this->setShouldCloseParentTransaction($invoice->getBaseGrandTotal() <= $totalRefunded);
}
} else {
if ($order->getBaseTotalRefunded() > 0) {
$adjustment = array('adjustment_positive' => $amount);
} else {
$adjustment = array('adjustment_negative' => $baseGrandTotal - $amount);
}
$creditmemo = $serviceModel->prepareCreditmemo($adjustment);
if ($creditmemo) {
$totalRefunded = $order->getBaseTotalRefunded() + $creditmemo->getBaseGrandTotal();
$this->setShouldCloseParentTransaction($order->getBaseGrandTotal() <= $totalRefunded);
}
}
$creditmemo->setPaymentRefundDisallowed(true)
->setAutomaticallyCreated(true)
->register()
->addComment(Mage::helper('sales')->__('Credit memo has been created automatically'))
->save();
$this->_updateTotals(array(
'amount_refunded' => $creditmemo->getGrandTotal(),
'base_amount_refunded_online' => $amount
));
$this->setCreatedCreditmemo($creditmemo);
* End // Disable PayPal Refund
**/