2011-07-14 12 views
2

Magentoで顧客アカウントをマージする方法はありますか?私は電子メールが壊れている(つまり彼らが言う)顧客を持っているので、彼らは新しいアカウントを作成しました。私は古い顧客の歴史を新しいものにマージすることができたいと思います。これは可能ですか?magentoのお客様をマージする

答えて

0

(実際には払い戻しをしない)1つのアカウントの注文を払い戻すことができます。そうすれば、データベースを直接変更した場合には起こり得ない活動のペーパートレイルが得られます。

また、この人物はうまくいかない可能性がありますか?彼らはあなたがどれほど確信しているのですか?単に自分のペットの名前や秘密の質問を知っているだけで、彼らは最初の人のfacebookページを見たことが証明されます。電子メールが「壊れた」という意味ではどういう意味ですか?

+0

yuck。解決策が見つかった場合は、回答を追加します。 –

1

MySQLストアドルーチンを作成する権限があり、自由にinformation_schemaデータベースを持っていると仮定すると、次のコードは顧客をマージします。ルーチンを作成した後は、顧客のentity_idをパラメータとして実行する必要があることに注意してください。

drop procedure if exists merge_customers; 
delimiter // 
create procedure merge_customers(
    id1 int unsigned, -- the customer to keep 
    id2 int unsigned) -- the record to delete 
begin 
declare done int default false; 
declare tbl_name, col_name varchar(255); 
declare c cursor for 
    select table_name, column_name 
    from information_schema.key_column_usage 
    where table_schema = database() 
    and referenced_table_name = 'customer_entity' 
    and referenced_column_name = 'entity_id'; 
declare continue handler for not found set done = true; 
open c; 
read_loop: loop 
    fetch c into tbl_name, col_name; 
    if done then 
    leave read_loop; 
    end if; 
    set @str = concat(
    'UPDATE IGNORE ', tbl_name, 
    ' SET ', col_name, ' = ', id1, 
    ' WHERE ', col_name, ' = ', id2 
); 
    prepare stmt from @str; 
    execute stmt; 
    deallocate prepare stmt; 
end loop; 
close c; 
delete from customer_entity where entity_id = id2; 
end// 
delimiter; 
0

私は同じことを探しています。間違いなく必要な拡張機能。

私は現在、両方のテーブルsales_flat_order & sales_flat_order_gridにphpMyAdminを手動Customer_IDを変更。顧客IDは、顧客セクションの2番目の列Magento Adminで確認できます。

しかし、それは非常に時間がかかります、誰かがモジュールを書くことができれば、私はそれを支払うでしょう。

関連する問題