iDempiere 減価償却仕訳転記の使い方|固定資産管理 操作マニュアル・技術仕様
📖 固定資産管理の全体像: 固定資産管理の全体図 も合わせてご覧ください。
減価償却仕訳転記(Post Depreciation Entry)は、減価償却ワークファイル作成で生成した償却費レコードを伝票としてまとめ、総勘定元帳(GL)へ転記するための伝票ウィンドウです。月次の減価償却計上の最終ステップを担います。
📌 ポイント: この伝票を「完了」させると、明細(Records タブ)の未処理償却費レコードが一括処理されます。転記日付が対象期間の範囲外の明細が 1 件でもあるとエラーになるため、期間と明細の日付整合を先に確認してください。
減価償却仕訳転記でできること
Section titled “減価償却仕訳転記でできること”- 償却費レコード(A_Depreciation_Exp)の伝票への取りまとめ
- 伝票完了(DocAction)による償却費の一括処理
- 会計スキーマ・転記タイプ(実績/予算/税務等)別の仕訳計上
- 転記ボタンによる GL への転記(Posted ステータス管理)
- 明細ごとの借方/貸方勘定・償却額の確認
親子 2 タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Create Depreciation Entry | A_Depreciation_Entry | 約17項目 | 伝票ヘッダ(伝票タイプ・期間・会計スキーマ・伝票処理) |
| Records | A_Depreciation_Exp | 約14項目 | 償却費明細(資産・金額・借方/貸方勘定) |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>資産管理 > Depreciation Processing ><br/>Post Depreciation Entry"] --> B["➕ 新規で伝票ヘッダを入力<br/>(伝票タイプ・会計スキーマ・期間)"]
B --> C["📅 伝票日付・転記日付を確認<br/>(Callout で期間が自動セット)"]
C --> D["📋 Records タブで<br/>対象の償却費明細を確認"]
D --> E["▶️ Process Depreciation Entry<br/>(伝票アクション: 完了)"]
E --> F{"明細の転記日付は<br/>期間内か?"}
F -->|Yes| G["✅ 明細を一括処理<br/>(Processed=Y)"]
F -->|No| H["❌ エラー<br/>期間外の日付"]
G --> I["📮 転記ボタンで GL へ転記"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「資産管理 > Depreciation Processing > Post Depreciation Entry」を開きます。
- ツールバーの「新規」ボタンをクリック
- 伝票ヘッダを入力:
- 伝票タイプ: 減価償却用の伝票タイプを選択
- 会計スキーマ: 転記先の会計スキーマ
- 転記タイプ: 実績(A)等を選択(既定値
A) - 伝票日付 / 転記日付: 既定はログイン日付。転記日付から期間が自動セット
- Entry Type: 償却エントリの種別
- 「保存」をクリック
- 「Records」タブで処理対象の明細(資産・費用・借方/貸方勘定)を確認
伝票処理(DocAction/DocStatus)
Section titled “伝票処理(DocAction/DocStatus)”- ヘッダの「Process Depreciation Entry」ボタン(伝票アクション)で「完了」を実行
- 完了時に未処理明細が 1 件ずつ処理され、
Processed=Yになります - 完了後、「転記」ボタンで GL への転記状態を確認・実行します
⚠️ 注意: この伝票は完了後の「無効化(Void)」「再有効化(Re-Activate)」「逆仕訳(Reverse)」がいずれも実装されていません(後述の技術仕様参照)。完了操作は明細内容を十分確認してから実行してください。
項目リファレンス
Section titled “項目リファレンス”Create Depreciation Entry タブ(主要項目)
Section titled “Create Depreciation Entry タブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 伝票番号 | 必須 | 文字列 | 伝票の連番 |
| 伝票タイプ | 必須 | 選択 | 伝票のルールを決めるタイプ |
| Entry Type | - | リスト | 償却エントリ種別 |
| 転記タイプ | 必須 | リスト | 実績・予算・税務等(既定値 A) |
| 会計スキーマ | 必須 | 選択 | 転記先の会計ルール |
| 伝票日付 | 必須 | 日付 | 伝票の日付 |
| 転記日付 | 必須 | 日付 | 会計日付(期間の自動セット元) |
| 期間 | 必須 | 選択 | 対象会計期間 |
| 伝票状態 | 自動 | リスト | DR(起票)→ CO(完了)等 |
| 承認済み | 自動 | チェック | 完了時に暗黙承認 |
| 転記 | 自動 | ボタン | GL 転記状態 |
Records タブ(主要項目)
Section titled “Records タブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 資産 | 必須 | 検索 | 償却対象の資産 |
| Entry Type | 必須 | リスト | 償却エントリ種別 |
| 費用 | 必須 | 金額 | 当期償却費 |
| Expense (fiscal) | 必須 | 金額 | 税務上の償却費 |
| Account (debit) | - | 勘定 | 借方勘定(償却費) |
| Account (credit) | - | 勘定 | 貸方勘定(減価償却累計額) |
| Asset Period | 必須 | 整数 | 資産の償却期間番号 |
| 転記日付 | - | 日付 | 明細の会計日付 |
| 処理済み | 自動 | チェック | 処理状況 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 完了時に「The date is not within this Period」エラーになります
Section titled “Q. 完了時に「The date is not within this Period」エラーになります”明細(A_Depreciation_Exp)の転記日付がヘッダの期間(C_Period_ID)の範囲外です。completeIt() は全明細に対して期間内チェックを行い、範囲外の明細があると例外を投げます。明細の転記日付またはヘッダの期間を修正してください。
Q. 完了した伝票を取り消せますか?
Section titled “Q. 完了した伝票を取り消せますか?”取り消せません。MDepreciationEntry では voidIt() / reverseCorrectIt() / reverseAccrualIt() / reActivateIt() がすべて false を返す実装(未サポート)です。誤って完了した場合は、逆方向の調整仕訳を別途起票する運用が必要です。
Q. 完了前に承認は必要ですか?
Section titled “Q. 完了前に承認は必要ですか?”伝票アクションから承認を明示的に実行しなくても、completeIt() 内で未承認の場合は暗黙的に approveIt()(承認済みセット)が実行されます。承認ワークフローを挟みたい場合は Model Validator 等での制御が必要です。
Q. 期間がクローズしているとどうなりますか?
Section titled “Q. 期間がクローズしているとどうなりますか?”prepareIt() で MPeriod.testPeriodOpen() による期間オープンチェックが実行されます。対象組織・伝票タイプに対して期間が開いていない場合、完了処理はエラーになります。
🛠 技術仕様(開発者向け)
減価償却仕訳転記は A_Depreciation_Entry(ヘッダ・削除可・アクセスレベル 3)と A_Depreciation_Exp(明細・削除可・アクセスレベル 3)で構成される Document 型伝票です。MDepreciationEntry クラス(432行)が DocAction を実装し、明細処理は MDepreciationExp クラス(373行)が担います。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MDepreciationEntry {
+setC_Period_ID() void
+getLinesIterator(onlyNotProcessed) Iterator
+processIt(processAction) boolean
+prepareIt() String
+completeIt() String
+voidIt() boolean
+deleteFacts(depexp) void
}
class X_A_Depreciation_Entry {
<<generated>>
}
class DocAction {
<<interface>>
}
class MDepreciationExp {
+createEntry(...) MDepreciationExp
+createDepreciation(...) Collection
+process() void
+checkExistsNotProcessedEntries(...) void
+getNotProcessedEntries(...) List
}
class PO {
<<abstract>>
}
MDepreciationEntry --|> X_A_Depreciation_Entry
X_A_Depreciation_Entry --|> PO
MDepreciationEntry ..|> DocAction
MDepreciationEntry --> MDepreciationExp : has many (Records)
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDepreciationEntry.java / MDepreciationExp.java
関連DBテーブル
Section titled “関連DBテーブル”A_Depreciation_Entry(減価償却仕訳ヘッダ)
Section titled “A_Depreciation_Entry(減価償却仕訳ヘッダ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| A_Depreciation_Entry_ID | ID | PK | 主キー | |
| DocumentNo | String | Y | 伝票番号 | |
| C_DocType_ID | TableDirect | Y | 伝票タイプ | |
| A_Entry_Type | List | N | エントリ種別 | |
| PostingType | List | Y | 転記タイプ | 既定値 ‘A’ |
| C_AcctSchema_ID | TableDirect | Y | 会計スキーマ | |
| C_Currency_ID | TableDirect | Y | 通貨 | 既定値 @$C_Currency_ID@ |
| DateDoc | Date | Y | 伝票日付 | Callout: CalloutEngine.dateAcct |
| DateAcct | Date | Y | 転記日付 | Callout: CalloutGLJournal.period |
| C_Period_ID | Table | Y | 期間 | Callout: CalloutGLJournal.period |
| DocStatus | List | Y | 伝票状態 | 既定値 ‘DR’ |
| DocAction | Button | Y | 伝票アクション | 既定値 ‘CO’ |
| IsApproved | YesNo | Y | 承認済み | 既定値 @#IsCanApproveOwnDoc@ |
| Posted | Button | Y | 転記状態 | 既定値 ‘N’ |
| Processed | YesNo | Y | 処理済み |
A_Depreciation_Exp(償却費明細・主要カラム)
Section titled “A_Depreciation_Exp(償却費明細・主要カラム)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| A_Depreciation_Exp_ID | ID | PK | 主キー | |
| A_Depreciation_Entry_ID | Search | N | 仕訳ヘッダ FK | |
| A_Asset_ID | Search | Y | 資産 | |
| A_Entry_Type | List | Y | エントリ種別 | |
| Expense | Amount | Y | 償却費 | 既定値 0 |
| Expense_F | Amount | Y | 償却費(税務) | 既定値 0 |
| DR_Account_ID | Account | N | 借方勘定 | |
| CR_Account_ID | Account | N | 貸方勘定 | |
| A_Period | Integer | Y | 資産期間番号 | |
| A_Accumulated_Depr | Amount | N | 減価償却累計額 | |
| A_Asset_Remaining | Amount | N | 残存額 | |
| A_Asset_Addition_ID | Search | N | 資産追加 FK | |
| A_Asset_Disposed_ID | Search | N | 資産除却 FK | |
| Processed | YesNo | Y | 処理済み |
ビジネスロジック
Section titled “ビジネスロジック”prepareIt()
Section titled “prepareIt()”- Model Validator(TIMING_BEFORE_PREPARE)の実行
MPeriod.testPeriodOpen()による期間オープンチェック(転記日付・伝票タイプ・組織)- Model Validator(TIMING_AFTER_PREPARE)の実行後、
DocAction='CO'をセットしInProgressを返却
completeIt()
Section titled “completeIt()”- 未 prepare の場合は
prepareIt()を再実行 - 未承認なら暗黙承認(
approveIt()) getLinesIterator(true)で未処理明細のみを走査し、明細ごとに個別トランザクション(Trx.run)で処理:- 明細の
DateAcctがヘッダ期間(MPeriod.isInPeriod())の範囲外ならAssetExceptionを送出 MDepreciationExp.process()を実行
- 明細の
- 1 件でもエラーがあれば
AssetArrayExceptionに集約して送出 - Model Validator(TIMING_AFTER_COMPLETE)実行後、
Processed=Y/DocAction='CL'をセット
取消系アクションは未サポート
Section titled “取消系アクションは未サポート”voidIt() / closeIt()(close は可)以外の取消系はすべて未実装です:
| アクション | 実装 |
|---|---|
| voidIt() | false を返す(不可) |
| reverseCorrectIt() | false を返す(不可) |
| reverseAccrualIt() | false を返す(不可) |
| reActivateIt() | false を返す(不可) |
また、静的メソッド deleteFacts(MDepreciationExp) により明細単位の会計ファクト削除がサポートされています。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”- Model Validator: Document 型のため
docValidate()の TIMING_BEFORE/AFTER_PREPARE、TIMING_AFTER_COMPLETE がフック可能です。完了前の承認強制や明細検証の追加に使用します。 - Callout: ヘッダの
DateDoc(CalloutEngine.dateAcct)、DateAcct/C_Period_ID(CalloutGLJournal.period)が標準設定済みです。 - 勘定科目の差し替え: 明細の
DR_Account_ID/CR_Account_IDは明細単位で保持されるため、Model Validator で保存時に独自の科目決定ロジックを注入できます。
関連プロセス
Section titled “関連プロセス”このウィンドウはヘッダの DocAction ボタン(Process Depreciation Entry)で処理します。リファレンスページに独立した関連プロセスの登録はありません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”減価償却仕訳は取消系アクションが標準未実装のため、承認フローの強制や誤処理防止のガードを Model Validator で追加する運用が有効です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。