iDempiere 減価償却方法の使い方|固定資産管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 固定資産管理の全体像: 固定資産管理の全体図 も合わせてご覧ください。
減価償却方法(Depreciation Methods)は、システムで利用可能な減価償却の計算方式(Depreciation Functions)を定義・確認するマスタウィンドウです。ここに登録された償却タイプ(DepreciationType)が、資産グループ・資産の償却計算時に呼び出される計算ロジックを決定します。
📌 ポイント: 償却タイプのコード(SL 等)はソースコード内の計算メソッドと 1:1 で対応しています。画面から行を追加しただけでは新しい計算方式は動作せず、対応する計算実装(IDepreciationMethod)が必要です。
減価償却方法でできること
Section titled “減価償却方法でできること”- 利用可能な償却計算方式の一覧確認
- 償却タイプコード(DepreciationType)と名称の管理
- 説明文による計算方式の文書化
- 有効フラグによる利用可否の制御
シンプルな 1 タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Depreciation Functions | A_Depreciation | 約6項目 | 償却計算方式の定義(名称・タイプ・説明) |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>資産管理 > Depreciation Setup ><br/>Depreciation Methods"] --> B["🔍 標準登録済みの<br/>償却方式を確認<br/>(SL=定額法 等)"]
B --> C{"新しい計算方式が<br/>必要?"}
C -->|No| D["✅ 資産グループ・資産の<br/>償却設定で方式を選択"]
C -->|Yes| E["🛠 IDepreciationMethod 実装を<br/>OSGi プラグインで開発"]
E --> F["➕ 新規で償却タイプを登録<br/>(Name・DepreciationType)"]
F --> D
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「資産管理 > Depreciation Setup > Depreciation Methods」を開きます。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- Name: 償却方式の名称(必須)
- DepreciationType: 計算ロジックと対応するタイプコード(必須・10文字)
- 説明: 計算方式の説明
- 「保存」をクリック
⚠️ 注意: タイプコードに対応する計算実装が存在しない場合、償却計算時に
AssetNotSupportedExceptionが発生します。新規コードの追加は計算実装とセットで行ってください。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント |
| 組織 | 必須 | 選択 | 対象組織 |
| Name | 必須 | 文字列 | 償却方式の名称 |
| DepreciationType | 必須 | 文字列 | 計算ロジック対応コード(例: SL) |
| 説明 | - | 文字列 | 計算方式の説明 |
| 有効 | 必須 | チェック | 利用可否 |
標準実装されている償却タイプ
Section titled “標準実装されている償却タイプ”ソースコード(MDepreciation.invoke())で分岐が実装されている償却タイプは以下の通りです。
| タイプコード | 計算メソッド | 内容 |
|---|---|---|
| SL | apply_SL | 定額法(Straight Line) |
| ARH_VAR | apply_ARH_VAR | 可変償却(ARHIPAC 実装) |
| ARH_AD1 | apply_ARH_AD1 | 加速償却 1(ARHIPAC 実装) |
| ARH_AD2 | apply_ARH_AD2 | 加速償却 2(ARHIPAC 実装) |
| ARH_ZERO | apply_ARH_ZERO | 償却なし(最終期調整も不要) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 定率法は使えますか?
Section titled “Q. 定率法は使えますか?”標準の MDepreciation に組み込みで実装されている分岐は上表の 5 タイプです。日本の定率法をコード分岐に頼らず追加する場合は、IDepreciationMethod インターフェースの OSGi 実装として計算ロジックを登録します。
Q. 画面で行を追加したのに償却計算がエラーになります
Section titled “Q. 画面で行を追加したのに償却計算がエラーになります”DepreciationType に対応する計算実装が見つからない場合、MDepreciation.invoke() は AssetNotSupportedException を送出します。タイプコードと計算実装(組み込み分岐または IDepreciationMethod)の対応を確認してください。
Q. 登録済みの方式を変更するとすぐ反映されますか?
Section titled “Q. 登録済みの方式を変更するとすぐ反映されますか?”MDepreciation はイミュータブルキャッシュ(markImmutable() / 静的 get())を持つため、コード上はキャッシュ経由で参照されます。変更が即時反映されない場合はキャッシュリセットを実施してください。
🛠 技術仕様(開発者向け)
減価償却方法は A_Depreciation テーブル(削除可・アクセスレベル 7)に格納されるマスタです。MDepreciation クラス(520行)が償却タイプごとの計算ディスパッチを実装し、ImmutablePOSupport 相当のキャッシュ(markImmutable()・静的 get())を提供します。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MDepreciation {
+get(A_Depreciation_ID) MDepreciation
+get(depreciationType) MDepreciation
+getPrecision() int
+requireLastPeriodAdjustment() boolean
+invoke(assetwk, assetAcct, period, accumDep, method) BigDecimal
+canInvoke(...) boolean
+markImmutable() MDepreciation
}
class X_A_Depreciation {
<<generated>>
}
class IDepreciationMethod {
<<interface>>
+caclulateDepreciation(dto) BigDecimal
}
class MDepreciationWorkfile {
+getA_Asset_Cost() BigDecimal
+getA_Accumulated_Depr() BigDecimal
}
class PO {
<<abstract>>
}
MDepreciation --|> X_A_Depreciation
X_A_Depreciation --|> PO
MDepreciation ..> IDepreciationMethod : delegates if provided
MDepreciation ..> MDepreciationWorkfile : calculates for
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDepreciation.java
関連DBテーブル
Section titled “関連DBテーブル”A_Depreciation(減価償却方法)
Section titled “A_Depreciation(減価償却方法)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| A_Depreciation_ID | ID | PK | 主キー | |
| AD_Client_ID | TableDirect | Y | クライアント | |
| AD_Org_ID | TableDirect | Y | 組織 | |
| Name | String | Y | 名称 | 120文字 |
| DepreciationType | String | Y | 償却タイプコード | 10文字 |
| Description | String | N | 説明 | |
| Text | Memo | N | 詳細説明 | |
| Processed | YesNo | Y | 処理済み | 既定値 N |
| IsActive | YesNo | Y | 有効 |
ビジネスロジック
Section titled “ビジネスロジック”invoke() — 償却額計算のディスパッチ
Section titled “invoke() — 償却額計算のディスパッチ”invoke(MDepreciationWorkfile, MAssetAcct, A_Current_Period, Accum_Dep, IDepreciationMethod) の処理:
canInvoke()チェック(false なら 0 を返却)IDepreciationMethodが渡された場合:DepreciationDTO(取得原価・残存価額・耐用月数・供用開始日・累計償却額等)を組み立ててcaclulateDepreciation(dto)に委譲- 渡されない場合は
DepreciationTypeの文字列で組み込みメソッドへ分岐(SL / ARH_VAR / ARH_AD1 / ARH_AD2 / ARH_ZERO) - 未知のタイプは
AssetNotSupportedExceptionを送出 - 結果を
getPrecision()桁で HALF_UP 丸め
requireLastPeriodAdjustment()
Section titled “requireLastPeriodAdjustment()”償却タイプが ARH_ZERO 以外の場合に true を返し、最終期の端数調整(帳簿価額との差額調整)が必要であることを示します。
MDepreciation.get(ctx, id) / get(ctx, depreciationType) はイミュータブルキャッシュ経由で取得します。タイプコードによる逆引き(get(String))があるため、償却計算のホットパスで DB クエリを繰り返さない設計です。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”IDepreciationMethod の OSGi 実装(推奨)
Section titled “IDepreciationMethod の OSGi 実装(推奨)”コア改変なしで独自の償却計算(日本の定率法・級数法等)を追加する標準的な方法です:
public class DecliningBalanceMethod implements IDepreciationMethod { @Override public BigDecimal caclulateDepreciation(DepreciationDTO dto) { // dto.totalAmount(取得原価), dto.salvage(残存価額), // dto.useFullLife(耐用月数), dto.accumulatedCost(償却累計)等から // 当期償却費を算出して返す return expense; }}DepreciationDTO には period / salvage / totalAmount / useFullLife(月数)/ inServiceDate / accountDate / accumulatedCost / startPeriodDepreciation / scale が渡されます。
Model Validator
Section titled “Model Validator”A_Depreciation の保存時にタイプコードの命名規則や実装存在チェックを追加できます。このテーブルに標準 Callout はありません。
関連プロセス
Section titled “関連プロセス”リファレンスページ・メニューに関連プロセスの登録はありません(参照系マスタ)。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”日本の税制に沿った定率法・一括償却資産・少額減価償却資産の特例などは、IDepreciationMethod の実装プラグインとして追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。