Magento-贝宝争议自动创建信用备忘录

Magento-贝宝争议自动创建信用备忘录,magento,paypal,Magento,Paypal,首先,我使用的是Magento 1.7 问题是,如果有人打开PayPal争议,Magento内部也会创建一封信用备忘录电子邮件,并向客户发送一封电子邮件,告知他们已经退款,但他们没有退款。相反,贝宝只是在纠纷解决之前扣留资金 当我们解决争议时,信用备忘录仍然存在,我们无法删除或取消它 有人知道如何防止这种情况发生吗 谢谢 Marek我发现,在从v1.4.0.1升级到v1.7.0.2后,在较新版本的Magento中,这是一个恼人的错误。我认为它是在v1.4.2.0左右出现的。有这么多的方法可以出错

首先,我使用的是Magento 1.7

问题是,如果有人打开PayPal争议,Magento内部也会创建一封信用备忘录电子邮件,并向客户发送一封电子邮件,告知他们已经退款,但他们没有退款。相反,贝宝只是在纠纷解决之前扣留资金

当我们解决争议时,信用备忘录仍然存在,我们无法删除或取消它

有人知道如何防止这种情况发生吗

谢谢


Marek

我发现,在从v1.4.0.1升级到v1.7.0.2后,在较新版本的Magento中,这是一个恼人的错误。我认为它是在v1.4.2.0左右出现的。有这么多的方法可以出错,我不知道为什么他们认为添加它是一个好主意

驱动此操作的代码位于/app/code/core/Mage/Sales/Model/Order/Payment.php中Mage\u Sales\u Model\u Order\u Payment类的registerRefundNotification()方法中

按照timpea的修复方法,您只需要重载registerRefundNotification()并注释掉有问题的部分,在v1.7.0.2中,这将是下面的部分

$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);
$serviceModel=Mage::getModel('销售/服务订单',$order);
若有($发票){
如果($invoice->getbasetotalreturned()>0){
$adjustment=数组('adjustment\u positive'=>$amount);
}否则{
$adjustment=array('adjustment_negative'=>$baseGrandTotal-$amount);
}
$creditmemo=$serviceModel->prepareInvoiceCreditmemo($invoice,$adjustment);
如果($creditmemo){
$TotalReturned=$invoice->GetBaseTotalReturned()+$creditmemo->getBaseGrandTotal();
$this->setShouldCloseParentTransaction($invoice->getBaseGrandTotal()GetBaseTotalReturned()>0){
$adjustment=数组('adjustment\u positive'=>$amount);
}否则{
$adjustment=array('adjustment_negative'=>$baseGrandTotal-$amount);
}
$creditmemo=$serviceModel->prepareCreditmemo($adjustment);
如果($creditmemo){
$TotalReturned=$order->GetBaseTotalReturned()+$creditmemo->getBaseGrandTotal();
$this->setShouldCloseParentTransaction($order->getBaseGrandTotal()setPaymentReturnDisallowed(true)
->setAutomaticallyCreated(真)
->寄存器()
->addComment(Mage::helper('sales')->(信用备忘录已自动创建))
->save();
$this->\u updateTotals(数组(
“退款金额”=>$creditmemo->getGrandTotal(),
“基本金额在线退款”=>美元金额
));
$this->setCreatedCreditmemo($creditmemo);

谢谢!我们将尝试一下!