iDempiere 通貨の使い方|会計 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 会計の全体像: 会計の全体図 も合わせてご覧ください。
通貨ウィンドウは、伝票やレポートで使用するすべての通貨を定義するマスタです。ISO 4217 の通貨コード、通貨記号、金額の丸め精度(標準精度・原価計算精度)を管理し、為替レートタブで通貨間の換算レートも登録できます。
📌 ポイント: 使用する通貨は原則システムレベルで定義済みです。クライアントレベルで追加するのは統計用通貨など特殊なケースのみで、通常の運用では既存通貨の精度確認と為替レート登録が中心になります。
通貨でできること
Section titled “通貨でできること”- 通貨の定義(ISO通貨コード・通貨記号・説明)
- 金額の丸め精度の設定(標準精度)
- 原価計算に使う丸め精度の設定(原価計算精度)
- 通貨間の為替レート登録(為替レートタブ)
- 通貨記号・説明の多言語翻訳
通貨はシンプルな3タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 通貨 | C_Currency | 約8項目 | 通貨の基本定義(ISOコード・記号・精度) |
| 為替レート | C_Conversion_Rate | 約10項目 | この通貨を起点とする換算レート |
| 翻訳 | C_Currency_Trl | 約8項目 | 通貨記号・説明の翻訳 |
💡 ヒント: 為替レートの一括メンテナンスには専用の「通貨レート」ウィンドウもあります。通貨単位でレートを確認したい場合はこのウィンドウの為替レートタブが便利です。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>会計管理 > 会計設定 > 通貨"] --> B{目的}
B -->|精度の確認・変更| C["🔍 対象通貨を検索<br/>(例: JPY)"]
B -->|新しい通貨の追加| D["➕ 新規で ISO通貨コード<br/>・記号・精度を入力"]
C --> E["✏️ 標準精度・<br/>原価計算精度を確認"]
D --> F["💾 保存"]
E --> F
F --> G["💱 為替レートタブで<br/>換算レートを登録"]
G --> H["🔗 会計スキーマ・価格表<br/>から通貨を参照"]
⚠️ 注意: 標準精度は金額の丸めに直結します。日本円(JPY)は小数なし(精度0)、米ドル(USD)は小数2桁が一般的です。稼働後の精度変更は既存金額データとの不整合を招くため避けてください。
アクセス方法
Section titled “アクセス方法”メニューから「会計管理 > 会計設定 > 通貨」を開きます。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- ISO通貨コード: ISO 4217 の3文字コード(例:
JPY) - 通貨記号: 印刷等で使用する記号(例:
¥) - 説明: 通貨の説明(必須)
- 標準精度: 金額計算の丸め桁数(デフォルト
2、JPY は0) - 原価計算精度: 原価計算の丸め桁数(デフォルト
4)
- ISO通貨コード: ISO 4217 の3文字コード(例:
- 「保存」をクリック
為替レートの登録
Section titled “為替レートの登録”- 「為替レート」タブに移動
- レートを登録:
- 目標通貨: 換算先の通貨
- 通貨レートタイプ: 適用するレートタイプ(スポット等)
- 有効開始日 / 有効終了日: レートの適用期間
- 掛算レート: 元通貨に掛けて目標通貨額を求めるレート
- 「保存」をクリック(割算レートは自動計算されます)
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| ISO通貨コード | 必須 | 文字列 | ISO 4217 の3文字コード |
| 通貨記号 | - | 文字列 | 印刷用の通貨記号 |
| 説明 | 必須 | 文字列 | 通貨の説明 |
| 有効 | 必須 | チェック | レコードの有効フラグ |
| 標準精度 | 必須 | 整数 | 金額計算の丸め桁数(デフォルト 2) |
| 原価計算精度 | 必須 | 整数 | 原価計算の丸め桁数(デフォルト 4) |
全項目は 画面リファレンス: 通貨 を参照してください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 日本円で小数点以下の端数が出てしまいます
Section titled “Q. 日本円で小数点以下の端数が出てしまいます”JPY の「標準精度」が 0 になっているか確認してください。標準精度は MCurrency.getStdPrecision() として全モジュールの金額丸めに参照されます。原価計算ではより細かい「原価計算精度」(デフォルト4桁)が別に適用されます。
Q. 為替レートはこのウィンドウと「通貨レート」ウィンドウのどちらで登録すべきですか?
Section titled “Q. 為替レートはこのウィンドウと「通貨レート」ウィンドウのどちらで登録すべきですか?”どちらも同じ C_Conversion_Rate テーブルを編集するため結果は同じです。特定通貨のレートをまとめて見たい場合はこのウィンドウ、全通貨ペアを一覧管理したい場合は 通貨レート ウィンドウが適しています。
Q. 換算には掛算レートと割算レートのどちらが使われますか?
Section titled “Q. 換算には掛算レートと割算レートのどちらが使われますか?”換算計算に使用されるのは掛算レート(MultiplyRate)のみです。割算レートは表示用で、掛算レートを入力すると逆数が自動セットされます(AD 定義のリファレンスにも明記されています)。
Q. 通貨を無効化するとどうなりますか?
Section titled “Q. 通貨を無効化するとどうなりますか?”「有効」チェックを外すと新規伝票・価格表で選択できなくなります。既存データはそのまま保持されます。
🛠 技術仕様(開発者向け)
通貨マスタは C_Currency テーブル(アクセスレベル: System)に格納されます。MCurrency クラス(282行)は markImmutable() を持つイミュータブル・キャッシュ対応のマスタクラスで、MCurrency.get(ISOcode) / get(C_Currency_ID) によるキャッシュ参照が可能です。換算ロジック自体は MConversionRate が担います。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MCurrency {
+get(ISOcode) MCurrency$
+get(C_Currency_ID) MCurrency$
+getISO_Code(ctx, C_Currency_ID) String$
+getStdPrecision(ctx, C_Currency_ID) int$
+getCostingPrecision(ctx, C_Currency_ID) int$
+markImmutable() MCurrency
}
class X_C_Currency {
<<generated>>
}
class PO {
<<abstract>>
}
class MConversionRate {
+convert(ctx, amt, from, to, ...) BigDecimal$
+getRate(from, to, date, type, ...) BigDecimal$
}
MCurrency --|> X_C_Currency
X_C_Currency --|> PO
MCurrency ..> MConversionRate : 換算はこちら
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MCurrency.java
関連DBテーブル
Section titled “関連DBテーブル”C_Currency(通貨)
Section titled “C_Currency(通貨)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Currency_ID | ID | PK | 通貨ID | 主キー |
| ISO_Code | String | Y | ISO通貨コード | ISO 4217 |
| CurSymbol | String | N | 通貨記号 | 印刷用 |
| Description | String | Y | 説明 | |
| StdPrecision | Integer | Y | 標準精度 | デフォルト 2 |
| CostingPrecision | Integer | Y | 原価計算精度 | デフォルト 4 |
| RoundOffFactor | Number | Y | 丸め係数 | デフォルト 1 |
| IsEuro / IsEMUMember | YesNo | Y | ユーロ関連フラグ | デフォルト N |
関連テーブル: C_Conversion_Rate(為替レート)、C_Currency_Acct(通貨別勘定)、C_Currency_Trl(翻訳)
ビジネスロジック
Section titled “ビジネスロジック”MCurrency に beforeSave のカスタムロジックはなく(grep 確認済み)、静的ユーティリティが中心です:
getStdPrecision(ctx, C_Currency_ID): 金額丸め桁数の取得。受注・請求・仕訳など金額計算全般から参照されますgetCostingPrecision(ctx, C_Currency_ID): 原価計算用の丸め桁数の取得get(ISOcode): ISOコードからのキャッシュ参照。イミュータブルインスタンスを返します
通貨換算は MConversionRate.convert() / getRate() が実行します(詳細は 通貨レートの技術仕様 参照)。
拡張ポイント
Section titled “拡張ポイント”- Model Validator:
C_Currencyの変更監視(精度変更の禁止等)は ModelValidator のmodelChangeで実装できます - キャッシュ:
MCurrency.get()はキャッシュを返すため、繰り返し参照する処理では直接new MCurrency()せずキャッシュメソッドを使用してください - このテーブルにはカラム callout の定義はありません(為替レートタブの MultiplyRate / DivideRate には
CalloutEngine.rateが定義されています)
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”多通貨運用における精度・丸めルールや独自レート連携(外部APIからのレート自動取込等)は、OSGi プラグインでコア改変なしに実装できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。