読者です 読者をやめる 読者になる 読者になる

tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:個人取引先と法人取引先のデータ変換

個人取引先を有効化した後、既存の法人取引先データを個人取引先データに変換するには自分で変換作業を行う必要があります。また個人取引先としてデータ登録した後、法人取引先に変換することもできるようになっているみたいです。

f:id:tyoshikawa1106:20161225133137p:plain

法人取引先から個人取引先、および、個人取引先から法人取引先へ変更する方法


まず個人取引先を法人取引先に変換するのを試してみました。用意したデータはこんな感じ。
f:id:tyoshikawa1106:20161225133646p:plain

f:id:tyoshikawa1106:20161225133823p:plain


ヘルプによるとデータローダでレコードタイプを更新すればいいみたいです。今回は開発者コンソールからApexを実行して試してみます。
f:id:tyoshikawa1106:20161225134430p:plain

// 法人取引先のレコードタイプ取得
RecordType recordType = [SELECT Id FROM RecordType WHERE DeveloperName = 'Corporation'  AND SObjectType = 'Account' LIMIT 1];
// 変換したい個人取引先データを取得
Account personAccount = [SELECT Id FROM Account WHERE Id = '001p000000KYtZ4' LIMIT 1];
// 法人取引先のレコードタイプをセット
personAccount.RecordTypeId = recordType.Id;
// 更新
update personAccount;


実行結果は次のとおりです。無事に法人取引先に変換できました。取引先責任者のデータも登録されています。
f:id:tyoshikawa1106:20161225134557p:plain


ここで1つ注意点です。変換後に取引先と取引先責任者に分割されますが、取引先責任者のレコードタイプはセットされませんでした。個人→法人に変換する場合は取引先責任者のレコードタイプセット対応も必要になるみたいです。
f:id:tyoshikawa1106:20161225135038p:plain


それでは法人取引先から個人取引先に変換する場合です。こちらもレコードタイプを更新するだけで対応できるはずです。

// 個人取引先のレコードタイプ取得
RecordType recordType = [SELECT Id FROM RecordType WHERE DeveloperName = 'PersonAccount'  AND SObjectType = 'Account' LIMIT 1];
// 変換したい法人取引先データを取得
Account account = [SELECT Id FROM Account WHERE Id = '001p000000KYtZ4' LIMIT 1];
// 個人取引先のレコードタイプをセット
account.RecordTypeId = recordType.Id;
// 更新
update account;


変換前の取引先責任者に手動で値をセットしました。(Title項目とMobile項目です)
f:id:tyoshikawa1106:20161225135538p:plain


上記の変換処理を実行したところ、手動でセットされた値も含めて個人取引先に変換されました。
f:id:tyoshikawa1106:20161225135655p:plain


このようにレコードタイプを変更するだけで個人取引先と法人取引先のデータ変換が可能となっていました。あとはApexトリガやワークフロールールが実行されるかを確認しておくと良さそうです。法人→個人→法人と変換した場合会社名は保持されないことも覚えておくと良いと思います。