サードパーティの支払いゲートウェイが注文のキャンセル済み注文ステータスを保留に変更したため、保留中の注文が永久に残るという問題が発生しています。
クライアントと電話で話していたところ、クレジット カードに問題があるとのことだったので、注文をキャンセルしました。バックエンドが銀行から通知を受け取ると、保留に変わりました。
それで、もう一度キャンセルすることはありますか?おそらくSQL経由ですか?
よろしく、
私はエンタープライズを実行しており、次の方法でそれを行うことができました:
UPDATE sales_flat_order_grid SET status = 'processing';
UPDATE sales_flat_order SET state = 'processing', status = 'processing';
誰かがすべての注文ステータスを消去したので、簡単に元に戻すことができました.
もちろん、特定のレコードを更新したい場合WHERE entity_id = '12345'
は、クエリの最後にまたは何かを追加します。
上記のようなクエリを実行する前に、必ずデータベースをバックアップしてください。
以前の回答には、「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>);
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')
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 は注文増分 ID です また $order = Mage::getModel('sales/order')->load($id);//id は注文 ID です if ($order->getId()) { $order->cancel()->save(); }