Dynamics CRM でmoney 型フィールドを使用する場合の注意点の覚書を記載します。

動作の確認は、Windows Server 2003 Enterprise Edition 上に構築した、Dynamics CRM 4.0 Rollup 5 を適用済オールインワン環境で行っています。

1. money 型属性をエンティティに追加した場合の効果

money型フィールドを追加すると、エンティティに次の属性が追加されます。

  • exchangerate:為替レート(transactioncurrencyid で指定される通貨と基本通貨の為替レート)
  • transactioncurrencyid:通貨(エンティティレコードのmoney型フィールドを入力した場合のその通貨型)
  • money属性フィールドの論理名_base:money属性フィールドの基本通貨型(Dynamics インストール時に指定)での値

エンティティフォームにmoney 型属性のフィールドを追加して編集すると"金額フィールドに金額が入力されている場合、通貨が必要です。通貨を選択して、やり直してください。"というメッセージが表示されます。

これは、金額のフィールドに入力した値の通貨型が不明なためです。これは次の方法で回避できます。

方法1: ユーザの基本通貨を指定

Dynamics CRM にログインしているユーザの個人用オプションの設定で、下図のように、既定の通貨型を選択します。新規に作成するEntity レコードからこの設定は有効になります。通貨型が指定されずに作成されたmoney フィールドを持つ、エンティティの場合は、方法2の方法でエンティティレコードに対して通貨型を設定する必要があります。

方法2: 通貨フィールドをフォームに追加する

下図のように、エンティティのメインフォームのフィールドの追加から、money 型のフィールドが追加された際に、存在しない場合自動で作成される、通貨フィールド(transactioncurrencyid) をエンティティのメインフォームに追加し、通貨フィールドに、通貨を指定します。この方法では、通貨が指定されずに作成された場合も後から通貨を指定して編集できるようになります。

2. 為替レートや基本通貨型での値は編集できない

money 型のフィールドを作成すると、同時に基本通貨型でのmoney型のフィールド(_base という接尾辞の属性名) や exchangerate (読み取りのみ) をフォームに追加できます。このプロパティは変更できないので注意が必要です。

明示的にエンティティレコードの通貨レートや、基本通貨型での値をプログラム上からも変更することはできません。exchangerate などを指定して更新のCrmService を呼び出しても、値は反映されません。他システムからのデータ移行を行う場合はこの点を覚えておく必要があります。money型のレコードを登録すると関連するtransactionconrrency (通貨型)のエンティティレコード値の為替レートで自動的に基本の通貨での値と為替レートが設定されます。

Dynamics CRM SDK に付属するヘルプを確認しても、値を変更できないことを確認できなかったのですが、Web 上での説明では、たとえば、account (取引先企業) の creditlimit_base の説明(下記リンク参照) で次のように記述されています。Gets the base currency equivalent for the credit limit on the account.つまりSet(設定)はできると記載がありません。

account.creditlimit_base Property
http://msdn.microsoft.com/en-us/library/cc151375.aspx

同様に、 account の exchangerate の説明は、次のように説明があり、取得しかできないと説明があります。"Gets the exchange rate for the currency associated with the account with respect to the base currency."

一方、 account ( 取引先企業) の credit_limit の説明は、次のようにGetとSetが行えるという記述があります。Gets or sets the credit limit for the account.

なので、変更はできないと思います。そして、エンティティのレコードで設定された通貨にしたがって、基本通貨の値や為替レートが自動的にDynamics によって設定されます。

3. まとめ

今回の説明は以上です。通貨については詳しく知らなかったので覚書として記事を記載しました。

誤り、指摘点などがありましたらご連絡ください。