特定の通貨で拠出を追加することはできません

私はセルビアのディナール(RSD)での寄付のインポートや追加がうまくいかないことに気付きました。私はAPI
Explorerを使用して貢献を作成しようとしましたが、投稿をインポートしようとしたときと同じエラーが発生します。

{"sequential":1,"financial_type_id":"Donation","total_amount":100,"contact_id":2,"currency":"RSD"}

“error_message”: “有効なコードではない通貨:”

私はそれから、動作しない他の通貨があることを知り、 civicrm_currency
テーブルのすべての通貨で寄付のあるファイルをインポートしようとしました。それは働かない3つの通貨がそこにあることが判明します。

影響を受ける通貨は以下のとおりです。

  • セルビア語ディナール(RSD)

  • ベネズエラボリバル(VEF)

  • アゼルバイジャン語マナット(AZN)

  • モザンビークMetical(MZN)

これらの通貨を使用してフォームから手動で投稿を追加しようとすると、CiviCRMは自分の選択を無視してデフォルトの通貨を使用します。

回避策があります。これらの影響を受ける通貨のいずれかをデフォルトとして設定し、インポート時にその通貨の通貨のフィールドを空白のままにしておくことができます(または、手動で投稿を追加するときはデフォルトのままにしておきます)。
CiviCRMは、あなたがデフォルトの通貨を使用していると想定し、それを正しくインポートまたは追加します。それでも、デフォルトで他の通貨(例:USD)を使用し、影響を受ける通貨で拠出を追加する場合は問題があります。

これを引き起こす原因は何ですか?

私は現在のバージョンのCiviCRMを使用しています(4.7.29)

ベストアンサー

これは好奇心が強いので、私はそれを追跡した。

Apparently the list of valid currencies predates the
civicrm_currency table. So right now the valid
currencies are hardcoded – you can see that in
/CRM/Core/Pseudoconstant.php around line 1077 – the
currencyCode() function.

迅速な回避策として、通貨をリストに追加することができます。しかし、正しい解決策は、この関数を変更して SELECT
name FROM civicrm_currency
の結果を返すことです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です