8

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

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

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

问候,

4

5 回答 5

17

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

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

有人设法清除了所有订单状态,这就是我很容易将它们取回的方式。

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

在运行任何类似上述的查询之前,请务必备份数据库!

于 2012-08-08T08:24:04.337 回答
9

以前的答案缺少更新“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>);
于 2014-10-03T10:08:20.127 回答
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')
于 2014-05-20T11:54:25.370 回答
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 脚本:

错误报告(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();
}
于 2012-04-27T05:43:22.433 回答
0

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

于 2015-04-02T07:58:32.347 回答