Magento:订单有发票(已生成)但“总到期”> 0

时间:2012-03-15 14:03:28

标签: php magento invoice

我有一个现场Magento 1.5.0.1网店,有以下问题:

我们已收到订单,该订单已通过iDEAL(荷兰在线支付服务)支付,并且已在付款成功时自动生成发票。我们还在银行帐户中收到了这笔款项。

唯一的问题是,我们无法完成订单,因为'总到期'字段的数量高于0(零)。这必须是我们的iDEAL模块中的一个错误(将在另一个时刻处理)。

有没有办法在Total due字段设置为0时'强制'将此特定订单设为'完成'?

显然,这样做的PHP代码示例非常受欢迎(我自己也是程序员)。

1 个答案:

答案 0 :(得分:2)

这可能会对你有帮助。

我们的一个模块示例:

$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
if ($order->getTotalPaid() == 0) {
    $invoice = $order->prepareInvoice();
    $invoice->register()->capture();
    Mage::getModel('core/resource_transaction')
        ->addObject($invoice)
        ->addObject($invoice->getOrder())
        ->save();
    $order->save();

检查付款是否尚未注册(用户可以通过多次点击发送多个成功请求),然后创建发票,注册,捕获并保存发票和订单。

编辑1

private function markOrderPayd($incrementId, $status) {
        $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
        if ($order->getTotalPaid() == 0) {
            ... 
            $order->save();
            $invoice = $order->prepareInvoice();
            $invoice->register()->capture();
            ...
            Mage::getModel('core/resource_transaction')
                ->addObject($invoice)
                ->addObject($invoice->getOrder())
                ->save();
            $order->save();
            ...

        } else {
            ...
            $order->save();
        }
}

我猜您没有任何支票,因此会生成2张发票。