通过SQL在Magento中更改订单状态

时间:2012-04-26 17:31:25

标签: sql magento

我遇到问题我的第三方支付网关已将订单的已取消订单状态更改为待处理状态,因此现在我暂时无法处理待处理的订单。

我通过电话与客户说他信用卡有问题,所以我取消了她的订单,当后端收到通知表格银行后,它又改为待定。

那么无论如何要取消它吗?也许通过SQL?

此致

5 个答案:

答案 0 :(得分:16)

我正在运营企业,并成功实现:

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

有人设法擦除了所有订单状态,这就是我如何能够轻松取回订单状态。

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

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

答案 1 :(得分:8)

以前的答案缺少更新' 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>);

答案 2 :(得分:1)

向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')

答案 3 :(得分:0)

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脚本:

error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('app/Mage.php');
Mage::app('admin');
$order = Mage::getModel('sales/order')->loadByIncrementId($id);//id is you order increment id 
OR
$order = Mage::getModel('sales/order')->load($id);//id is you order id 
if ($order->getId()) {
    $order->cancel()->save();
}

答案 4 :(得分:0)

请注意,更改订单状态/状态不够:您还应该取消项目和金额信息,加入sales_flat_order_item