ゲスト注文を Magento の既存のアカウントにリンクしたいと考えています。これを達成するためにどのテーブルのどのフィールドを変更する必要があるか誰かが知っていますか?
もっと簡単な方法はありますか?
ゲスト注文を Magento の既存のアカウントにリンクしたいと考えています。これを達成するためにどのテーブルのどのフィールドを変更する必要があるか誰かが知っていますか?
もっと簡単な方法はありますか?
これも効きそうです..
$order_id = 5; // Your Order ID
$customer_id = 7; //Customer ID
$_order = Mage::getModel('sales/order')->load($order_id);
if($_order->getCustomerId() == NULL){
$_order->setCustomerId($customer_id);
$_order->save();
}
If you are on Magento >= 1.4.1, you can run that in your database :
UPDATE sales_flat_order
SET customer_id = YOUR_CUSTOMER_ID_HERE
WHERE entity_id = YOUR_ORDER_ID_HERE AND customer_id IS NULL
You will also need to upgrade the "grid" table :
UPDATE sales_flat_order_grid
SET customer_id = YOUR_CUSTOMER_ID_HERE
WHERE entity_id = YOUR_ORDER_ID_HERE AND customer_id IS NULL
バックエンドからは、エンティティ ID よりも注文から increment_id を取得する方が簡単なので、次の 2 つのクエリを使用することをお勧めします。
UPDATE sales_flat_order
SET customer_id = YOUR_CUSTOMER_ID_HERE, customer_is_guest=0, customer_group_id = YOUR_CUSTOMER_GROUP_ID_HERE
WHERE increment_id = YOUR_INCREMENT_ID_HERE AND customer_id IS NULL
UPDATE sales_flat_order_grid
SET customer_id = YOUR_CUSTOMER_ID_HERE,
WHERE increment_id = YOUR_INCREMENT_ID_HERE AND customer_id IS NULL
RS が投稿した内容を拡張するには:
管理者の注文画面にメンバーが属するグループを反映させたい場合は、さらに数行必要です。
$customer_id = xxxx; //Customer ID
$order_increment_id = xxxxxxxxx; //Admin order increment id
$_order = Mage::getModel('sales/order')->loadByIncrementId($order_increment_id);
if($_order->getCustomerId() == NULL){
$_order->setCustomerId($customer_id);
}
if($_order->getCustomerIsGuest() == "1"){
$_order->setCustomerIsGuest(0);
}
if($_order->getCustomerGroupId() == "0"){
$_order->setCustomerGroupId(1);
}
$_order->save();