gpt4 book ai didi

php - 以编程方式将 Magento 订单标记为已完成

转载 作者:可可西里 更新时间:2023-11-01 12:41:52 25 4
gpt4 key购买 nike

当我从第三方服务收到特定响应时,我正在尝试将“正在处理”订单标记为已完成。我已为此设置好一切,但唯一的问题是订单仍处于“处理中”状态。

我正在生成发票(不过我认为我不需要这个,因为每个项目在 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();

虽然这似乎并没有这样做 - 我没有从这段代码中得到任何错误,但订单仍在处理中。在后台我仍然可以看到订单顶部的“发货”按钮,并且每件商品都处于“已开票”状态。

如有任何提示,我们将不胜感激。

最佳答案

尝试

$order->setStateUnprotected('complete',
'complete',
'Order marked as complete automatically',
false);

此方法在app/code/local/Mage/Sales/Model/Order.php(在v1.6.1中)

938:    public function setStateUnprotected($state, $status = false, $comment = '', $isCustomerNotified = null)

在 Magento 1.7.0.0 中,此方法已被删除。试试这个:

    $order->setData('state', "complete");
$order->setStatus("complete");
$history = $order->addStatusHistoryComment('Order marked as complete automatically.', false);
$history->setIsCustomerNotified(false);
$order->save();

关于php - 以编程方式将 Magento 订单标记为已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com