tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:組織で個人取引先を有効化しているかの判別方法

個人取引先はB2Cの顧客情報を管理するための仕組みです。Salesforceのサポートに問い合わせを行い有効化してもらうことで利用可能になります。この機能を有効化後に法人取引先か個人取引先か判別したい場合はIsPersonAccount項目で判別できます。
f:id:tyoshikawa1106:20190816075643p:plain


これで法人取引先のみ取得対象にする、個人取引先のみ取得対象とするといった判定処理を実行できます。ただし、IsPersonAccount項目は個人取引先機能を有効化した組織でのみ利用可能な項目です。有効化していない場合は宣言しても存在しない項目としてエラーとなります。
f:id:tyoshikawa1106:20190816075829p:plain


この問題の解決方ですが組織での個人取引先有効化の判別方法を調べて公開してくれている方がいらっしゃいました。
f:id:tyoshikawa1106:20190816080021p:plain

https://wedgecommerce.com/check-person-account-enabled-apex/


Schema処理で項目の存在チェックを行って判別する方法です。
f:id:tyoshikawa1106:20190816080043p:plain

public class CheckPersonAccount {
    public boolean getIsPerson(){
        return Schema.sObjectType.Account.fields.getMap().containsKey( 'isPersonAccount' );
    }
}


実行例です。
f:id:tyoshikawa1106:20190816080335p:plain

Boolean result = Schema.sObjectType.Account.fields.getMap().containsKey('isPersonAccount');
System.debug('個人取引先項目の有無 = ' + result);
個人取引先有効の組織

f:id:tyoshikawa1106:20190816080406p:plain

個人取引先無効の組織

f:id:tyoshikawa1106:20190816080511p:plain


通常のカスタマイズの場合はここまで考慮する必要は無いのですが、AppExchangeなど不特定多数での組織での運用を行うアプリケーションの場合は、きちんと判別を行い有効の有無によって制御を行う必要がでてくると思います。