Skip to content

iDempiere 通貨の使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

通貨ウィンドウは、伝票やレポートで使用するすべての通貨を定義するマスタです。ISO 4217 の通貨コード、通貨記号、金額の丸め精度(標準精度・原価計算精度)を管理し、為替レートタブで通貨間の換算レートも登録できます。

📌 ポイント: 使用する通貨は原則システムレベルで定義済みです。クライアントレベルで追加するのは統計用通貨など特殊なケースのみで、通常の運用では既存通貨の精度確認と為替レート登録が中心になります。

  • 通貨の定義(ISO通貨コード・通貨記号・説明)
  • 金額の丸め精度の設定(標準精度)
  • 原価計算に使う丸め精度の設定(原価計算精度)
  • 通貨間の為替レート登録(為替レートタブ)
  • 通貨記号・説明の多言語翻訳

通貨はシンプルな3タブ構成です。

タブ名テーブル項目数役割
通貨C_Currency約8項目通貨の基本定義(ISOコード・記号・精度)
為替レートC_Conversion_Rate約10項目この通貨を起点とする換算レート
翻訳C_Currency_Trl約8項目通貨記号・説明の翻訳

💡 ヒント: 為替レートの一括メンテナンスには専用の「通貨レート」ウィンドウもあります。通貨単位でレートを確認したい場合はこのウィンドウの為替レートタブが便利です。

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) 新規で ISO通貨コード ・記号・精度を入力 標準精度・ 原価計算精度を確認 保存 為替レートタブで 換算レートを登録 会計スキーマ・価格表 から通貨を参照 目的 精度の確認・変更 新しい通貨の追加

⚠️ 注意: 標準精度は金額の丸めに直結します。日本円(JPY)は小数なし(精度0)、米ドル(USD)は小数2桁が一般的です。稼働後の精度変更は既存金額データとの不整合を招くため避けてください。

メニューから「会計管理 > 会計設定 > 通貨」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • ISO通貨コード: ISO 4217 の3文字コード(例: JPY
    • 通貨記号: 印刷等で使用する記号(例: ¥
    • 説明: 通貨の説明(必須)
    • 標準精度: 金額計算の丸め桁数(デフォルト 2、JPY は 0
    • 原価計算精度: 原価計算の丸め桁数(デフォルト 4
  3. 保存」をクリック
  1. 為替レート」タブに移動
  2. レートを登録:
    • 目標通貨: 換算先の通貨
    • 通貨レートタイプ: 適用するレートタイプ(スポット等)
    • 有効開始日 / 有効終了日: レートの適用期間
    • 掛算レート: 元通貨に掛けて目標通貨額を求めるレート
  3. 保存」をクリック(割算レートは自動計算されます)
項目名必須説明
ISO通貨コード必須文字列ISO 4217 の3文字コード
通貨記号-文字列印刷用の通貨記号
説明必須文字列通貨の説明
有効必須チェックレコードの有効フラグ
標準精度必須整数金額計算の丸め桁数(デフォルト 2)
原価計算精度必須整数原価計算の丸め桁数(デフォルト 4)

全項目は 画面リファレンス: 通貨 を参照してください。

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 が担います。

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 : 換算はこちら

+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 <> <> +convert(ctx, amt, from, to, ...) BigDecimal$ +getRate(from, to, date, type, ...) BigDecimal$ > X_C_Currency X_C_Currency --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MCurrency.java

カラム名必須説明備考
C_Currency_IDIDPK通貨ID主キー
ISO_CodeStringYISO通貨コードISO 4217
CurSymbolStringN通貨記号印刷用
DescriptionStringY説明
StdPrecisionIntegerY標準精度デフォルト 2
CostingPrecisionIntegerY原価計算精度デフォルト 4
RoundOffFactorNumberY丸め係数デフォルト 1
IsEuro / IsEMUMemberYesNoYユーロ関連フラグデフォルト N

関連テーブル: C_Conversion_Rate(為替レート)、C_Currency_Acct(通貨別勘定)、C_Currency_Trl(翻訳)

MCurrencybeforeSave のカスタムロジックはなく(grep 確認済み)、静的ユーティリティが中心です:

  • getStdPrecision(ctx, C_Currency_ID): 金額丸め桁数の取得。受注・請求・仕訳など金額計算全般から参照されます
  • getCostingPrecision(ctx, C_Currency_ID): 原価計算用の丸め桁数の取得
  • get(ISOcode): ISOコードからのキャッシュ参照。イミュータブルインスタンスを返します

通貨換算は MConversionRate.convert() / getRate() が実行します(詳細は 通貨レートの技術仕様 参照)。

  • Model Validator: C_Currency の変更監視(精度変更の禁止等)は ModelValidator の modelChange で実装できます
  • キャッシュ: MCurrency.get() はキャッシュを返すため、繰り返し参照する処理では直接 new MCurrency() せずキャッシュメソッドを使用してください
  • このテーブルにはカラム callout の定義はありません(為替レートタブの MultiplyRate / DivideRate には CalloutEngine.rate が定義されています)

多通貨運用における精度・丸めルールや独自レート連携(外部APIからのレート自動取込等)は、OSGi プラグインでコア改変なしに実装できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら