【问题标题】:Change order status in Magento via SQL通过 SQL 在 Magento 中更改订单状态
【发布时间】:2012-04-26 17:31:25
【问题描述】:

我遇到了一个问题,我的第三方支付网关已将订单的已取消订单状态更改为待处理,因此我现在永远被待处理订单所困扰。

我正在与客户通话,他说信用卡有问题,所以我取消了她的订单,当后端收到银行通知时,它变成了待处理。

那么有没有办法再次取消呢?也许通过 SQL?

问候,

【问题讨论】:

    标签: sql magento


    【解决方案1】:

    我正在经营企业,并设法做到了:

    UPDATE sales_flat_order_grid SET status = 'processing';  
    UPDATE sales_flat_order SET state = 'processing', status = 'processing';
    

    有人设法清除了所有订单状态,这就是我能够轻松取回它们的方式。

    当然,如果您想更新特定记录,您可以在查询末尾添加WHERE entity_id = '12345' 或其他任何内容。

    并且在运行上述任何查询之前始终备份数据库!

    【讨论】:

      【解决方案2】:

      以前的答案缺少更新“sales_flat_order_grid”表的请求。 如果问题仍然有效,完整的请求是:

      UPDATE sales_flat_order_grid SET status = 'canceled' WHERE increment_id = <order_increment_id>;
      UPDATE sales_flat_order SET state='canceled', status='canceled' WHERE increment_id =<order_increment_id> (or WHERE entity_id = <order_id>);
      

      【讨论】:

        【解决方案3】:

        向 Silas 答案添加信息:您可能需要在销售状态历史记录中插入新状态。

        INSERT INTO sales_flat_order_status_history (`parent_id`,`is_customer_notified`,`is_visible_on_front`,`comment`,`status`,`entity_name`,`created_at`) VALUES (YOUR_ORDER_ID,0,0,'',NEW_STATUS_CODE,'order','2014-05-20 11:42:29')
        

        【讨论】:

        • 父ID是什么意思?
        【解决方案4】:

        SQL 呢:

        UPDATE sales_flat_order SET state="canceled", status="canceled" WHERE entity_id = {order id should be here} AND increment_id = {order increment id should be here}
        

        在此查询中,您应该指定 entity_id 或 increment_id 或两者。如你所愿。

        警告

        在更改某些内容之前备份您的数据库。我没有时间分析与订单相关的数据库结构和约束。

        PHP 怎么样:

        从根文件夹运行以下 PHP 脚本:

        错误报告(E_ALL); ini_set('display_errors', 1); require_once('app/Mage.php'); 法师::app('admin'); $order = Mage::getModel('sales/order')->loadByIncrementId($id);//id是你的订单增量id 或者 $order = Mage::getModel('sales/order')->load($id);//id是你的订单id if ($order->getId()) { $order->cancel()->save(); }

        【讨论】:

        • 谢谢!!使用 SQL 不起作用,但通过 PHP 做起来轻而易举;)
        【解决方案5】:

        请考虑更改订单状态/状态是不够的:您还应该取消商品和金额信息,加入sales_flat_order_item

        【讨论】:

          最近更新 更多