加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 以编程方式将Magento订单标记为完整

发布时间:2020-12-13 18:25:32 所属栏目:PHP教程 来源:网络整理
导读:当我从第三方服务获得某个响应时,我正在尝试将“处理”订单标记为完成.我已经为此设置了所有设置,但唯一的问题是订单处于处理状态. 我正在生成发票(我不认为我需要这个,因为每个项目在Magento后端都标记为“已开发票”)和这样的货件: $order = Mage::getMod
当我从第三方服务获得某个响应时,我正在尝试将“处理”订单标记为完成.我已经为此设置了所有设置,但唯一的问题是订单处于处理状态.

我正在生成发票(我不认为我需要这个,因为每个项目在Magento后端都标记为“已开发票”)和这样的货件:

$order = Mage::getModel('sales/order')... (etc)
$shipment = $order->prepareShipment($quantities);
$shipment->register();
$shipment->setOrder($order);
$shipment->save();

$invoice = $order->prepareInvoice($quantities);
$invoice->register();
$invoice->setOrder($order);
$invoice->save();

这似乎并没有这样做 – 我从这段代码中得不到任何错误,但订单仍然是处理.在后端,我仍然可以看到订单顶部的“发货”按钮,每个项目都处于“已开票”状态.

任何提示将非常感谢.

你可以看看 this article(俄语).

以下是文章中的代码:

$order = $observer->getEvent()->getOrder();

if (!$order->getId()) {
    return false;
}

if (!$order->canInvoice()) {
    return false;
}

$savedQtys = array();
$invoice = Mage::getModel('sales/service_order',$order)->prepareInvoice($savedQtys);
if (!$invoice->getTotalQty()) {
    return false;
}
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
$invoice->register();

$invoice->getOrder()->setCustomerNoteNotify(false);
$invoice->getOrder()->setIsInProcess(true);

$transactionSave = Mage::getModel('core/resource_transaction')
    ->addObject($invoice)
    ->addObject($invoice->getOrder());

$transactionSave->save();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读