tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:個人取引先へのデータ変更と所有者の扱い

個人取引先を有効化するときに既存データの変換対応が必要になります。
f:id:tyoshikawa1106:20170104115453p:plain


その際に取引先と取引先責任者の所有者が異なるとどのような扱いになるか確認してみました。

取引先

f:id:tyoshikawa1106:20170104114133p:plain:w300

取引先責任者

f:id:tyoshikawa1106:20170104115230p:plain:w300


変換処理はこんな感じです。

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


結果はこちら。
f:id:tyoshikawa1106:20170104114550p:plain


下記エラーが発生して変換できませんでした。

Line: 8, Column: 1
System.DmlException: Update failed. First exception on row 0 with id 001p000000KrybFAAR; first error: INVALID_PERSON_ACCOUNT_OPERATION, account cannot be converted to person-account: []


所有者を同じにして変換処理を実行したところ正常に変換することができました。既存の取引先と取引先責任者を個人取引先に変換する場合は事前に所有者を同じにしておく必要があるみたいです。


個人を管理している場合、取引先責任者はメンテナンスされていても取引先は情報が古いままになっている可能性もあるので注意しておいた方がよさそうです。

その他の参考