コンテンツにスキップ

iDempiere 資産有効化/除却の使い方|固定資産管理 操作マニュアル・技術仕様

📖 固定資産管理の全体像: 固定資産管理の全体図 も合わせてご覧ください。

資産有効化/除却(Asset Activation/Disposal)は、固定資産の除却・売却・休止(保全)・一部除却と、除却済み資産の再有効化を1つの画面で処理する伝票です。対象資産の状態に応じて除却/有効化が自動で切り替わり、除却時は取得原価・償却累計額から除却損(費用)を自動計算します。

📌 ポイント: この画面は対象資産が「除却済みか否か」で動作が変わります。未除却の資産を選ぶと除却処理、除却済みの資産を選ぶと再有効化処理になります。取得原価・償却累計額は資産の償却ワークファイルから自動転記されるため、手入力は不要です。

  • 固定資産の全部除却(Simple)・下取り除却(Trade)
  • 一部除却(Partial Retirement: 除却額を指定した按分処理)
  • 資産の保全/休止(Preservation)への状態変更
  • 除却済み資産の再有効化(Activation)
  • 除却額に応じた償却累計額(delta)と除却損(費用)の自動計算
  • 除却理由(売却・廃棄・盗難・寄付等)の記録

単一タブのシンプルな伝票ウィンドウです(AD_Window_ID: 53114)。

タブ名テーブル項目数役割
Asset Disposal/ActivationA_Asset_Disposed25項目対象資産・除却方法・金額・伝票処理の全情報
graph TD
    A["🚀 メニューから開く<br/>資産管理 > Splits Transfers and Disposals ><br/>Asset Activation/Disposal"] --> B["➕ 新規作成<br/>資産を選択"]
    B --> C["🔄 Asset Cost・償却累計額が<br/>ワークファイルから自動転記"]
    C --> D{資産の状態}
    D -->|未除却 → 除却処理| E{Disposed Method}
    D -->|除却済み → 再有効化| F["♻️ Activation Method = Activation<br/>資産状態を Activated に戻す"]
    E -->|Simple / Trade| G["🗑️ 全部除却<br/>(除却額=取得原価で自動計算)"]
    E -->|Partial Retirement| H["✂️ 一部除却<br/>Disposal Amount を入力"]
    E -->|Preservation| I["⏸️ 保全/休止<br/>(状態変更のみ)"]
    G --> J["📅 処理日付・除却理由を入力"]
    H --> J
    I --> J
    F --> K["✅ 伝票完了(Complete)"]
    J --> K
    K --> L["📒 転記(Posted)"]

メニューから開く 資産管理 > Splits Transfers and Disposals > Asset Activation/Disposal 新規作成 資産を選択 Asset Cost・償却累計額が ワークファイルから自動転記 Activation Method = Activation 資産状態を Activated に戻す 全部除却 (除却額=取得原価で自動計算) 一部除却 Disposal Amount を入力 ⏸ 保全/休止 (状態変更のみ) 処理日付・除却理由を入力 伝票完了(Complete) 転記(Posted) 資産の状態 Disposed Method 未除却 → 除却処理 除却済み → 再有効化 Simple / Trade Partial Retirement

⚠️ 注意: 転記日付の時点で当期の減価償却が既に処理済みの資産は除却できません(資産は先に償却済みエラーになります)。償却転記前に除却伝票を完了させるか、翌期首日付で処理してください。

メニューから「資産管理 > Splits Transfers and Disposals > Asset Activation/Disposal」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 対象資産を選択:
    • 資産: 除却対象の資産(資産マスタ
    • 選択すると Asset Cost(取得原価)・Accumulated Depreciation(償却累計額)・資産状態が自動転記されます
  3. 除却情報を入力:
    • 処理日付: 除却日(転記日付と連動)
    • Disposed Method: Simple(単純除却)/ Trade(下取り)/ Partial Retirement(一部除却)/ Preservation(保全)
    • Disposal Amount: 除却額(一部除却の場合に指定。全部除却は取得原価が自動セット)
    • Disposed Reason: 売却・廃棄・スクラップ・盗難・寄付など(任意)
  4. 費用(除却損)と Accumulated Depreciation (delta) は除却額から自動計算されます
  5. 保存」をクリック
  1. Asset Disposed Process」(伝票アクション)ボタンで「完了」を実行
  2. 完了処理で以下が自動実行されます:
    • 除却: 資産状態を「除却済(Disposed)」または「保全(Preservation)」に変更、除却レコード生成
    • 再有効化: 資産状態を「有効(Activated)」に変更
  3. 転記」ボタンで会計仕訳を生成

再有効化(除却済み資産の復活)

Section titled “再有効化(除却済み資産の復活)”

除却済みの資産を選択すると画面は有効化モードになります。Activation Method = Activation(初期値)のまま伝票を完了すると、資産状態が「有効(Activated)」に戻ります。

主要項目のみ記載します。全25項目の一覧は 画面リファレンス を参照してください。

項目名必須説明
伝票番号必須文字列伝票の一意番号
資産必須検索対象資産(選択時に原価・累計額を自動転記)
伝票日付 / 転記日付必須日付初期値は当日。処理日付と連動
処理日付必須日付除却の基準日
Disposed Method必須リストSimple / Trade / Partial Retirement / Preservation 等
Disposal Amount必須金額除却額(初期値 0、最小値 0)
Disposed Reason-リスト売却・廃棄・スクラップ・盗難・寄付等
廃棄-チェック資産の除却済みフラグ(資産から自動転記)
Asset Cost-金額取得原価(ワークファイルから自動転記)
Accumulated Depreciation必須金額償却累計額(自動転記)
Accumulated Depreciation (delta)必須金額除却対象分の償却累計額(自動計算)
費用必須数値除却損 = 除却額 − 累計額delta(自動計算)
転記タイプ必須リストActual 等(初期値 A)
Asset Status-リスト資産状態(自動転記)
伝票状態 / Asset Disposed Process-リスト/ボタンDocStatus(初期値 起票)と伝票アクション
転記必須ボタン転記状態・仕訳照会

Q. 除却と再有効化はどうやって切り替えるのですか?

Section titled “Q. 除却と再有効化はどうやって切り替えるのですか?”

切り替え操作は不要です。対象資産の「廃棄(IsDisposed)」フラグで自動判定され、未除却の資産なら除却処理(Disposed Method を使用)、除却済みの資産なら再有効化処理(Activation Method を使用)になります。

Q. 一部だけ除却するにはどうしますか?

Section titled “Q. 一部だけ除却するにはどうしますか?”

Disposed Method に「Partial Retirement」を選択し、Disposal Amount に除却する金額を入力します。償却累計額の除却分(delta)は「累計額 × 除却額 ÷ 取得原価」で按分計算され、費用(除却損)は「除却額 − 累計額delta」で自動算出されます。

Q. 完了時に「資産は既に償却済み」のようなエラーになります

Section titled “Q. 完了時に「資産は既に償却済み」のようなエラーになります”

転記日付の時点で当期の減価償却が処理済みの場合、除却伝票は完了できません(準備処理で償却ワークファイルの状態を検証します)。未処理の償却エントリが残っている場合も同様にブロックされます。償却転記との順序を調整してください。

Q. Disposed Method の選択肢を選んだのにエラーになるものがあります

Section titled “Q. Disposed Method の選択肢を選んだのにエラーになるものがあります”

iDempiere 13 標準の完了処理が実装しているのは Simple / Trade / Partial Retirement / Preservation の4方式です。それ以外(Cash / Trade w/Cash 等)はリスト定義には存在しますが、選択して完了すると未サポートエラー(AssetNotSupportedException)になります。

Q. 費用(除却損)を手で修正できますか?

Section titled “Q. 費用(除却損)を手で修正できますか?”

費用と Accumulated Depreciation (delta) は除却額の入力時に callout で自動計算されます。全部除却(Simple / Trade)では完了時に取得原価・累計額で上書きされるため、手修正は反映されません。

🛠 技術仕様(開発者向け)

資産有効化/除却は Document 型(DocAction 対応)の伝票で、A_Asset_Disposed テーブル(アクセスレベル 3: Client+Org)に格納されます。MAssetDisposed クラス(522行)が除却/有効化の分岐処理・按分計算・資産状態変更を担います。

classDiagram
    class MAssetDisposed {
        +createAssetDisposed(MInvoiceLine) MAssetDisposed$
        +updateFromAsset(I_A_Asset_Disposed) void$
        +setA_Disposal_Amt(I_A_Asset_Disposed) void$
        +prepareIt() String
        +completeIt() String
        +isDisposal() boolean
        +getAsset() MAsset
    }
    class X_A_Asset_Disposed {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    MAssetDisposed --|> X_A_Asset_Disposed
    X_A_Asset_Disposed --|> PO
    MAssetDisposed ..|> DocAction
    MAssetDisposed --> MAsset : changes status
    MAssetDisposed --> MDepreciationWorkfile : reads cost and depr

+createAssetDisposed(MInvoiceLine) MAssetDisposed$ +updateFromAsset(I_A_Asset_Disposed) void$ +setA_Disposal_Amt(I_A_Asset_Disposed) void$ +prepareIt() String +completeIt() String +isDisposal() boolean +getAsset() MAsset <> <> <> > X_A_Asset_Disposed X_A_Asset_Disposed --

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

カラム名必須説明備考
A_Asset_Disposed_IDIDPK資産除却ID主キー・識別子
AD_Client_ID / AD_Org_IDTableDirectYクライアント / 組織
DocumentNoString(30)Y伝票番号
A_Asset_IDSearchY資産FKcallout: CalloutA_Asset_Disposed.asset
DateDoc / DateAcctDateY伝票日付 / 転記日付初期値 @Date@、callout: date
A_Disposed_DateDateY処理日付callout: date
A_Activation_MethodList(2)Y有効化方法’AA’=Activation、初期値 ‘AA’
A_Disposed_MethodList(2)Y除却方法’S’/‘T1’/‘PD’/‘PR’/‘C’/‘C_’/‘S_’/‘T2’
A_Disposed_ReasonList(10)N除却理由’C’寄付/‘D’破損/‘S’廃棄/‘S1’売却/‘S2’下取売却/‘T’盗難
A_Disposal_AmtAmountY除却額初期値 0・最小 0、callout: amt
A_Asset_CostAmountN取得原価ワークファイルから自動転記
A_Accumulated_DeprAmountY償却累計額自動転記、callout: amt
A_Accumulated_Depr_DeltaAmountY累計額(除却分)按分自動計算、初期値 0
ExpenseNumberY費用(除却損)自動計算、callout: amt
A_ProceedsAmountN売却収入
A_Asset_Trade_IDSearchN下取り資産FK
IsDisposedYesNoN除却済みフラグ資産から自動転記
A_Asset_StatusList(2)N資産状態’NW’/‘AC’/‘DP’/‘DI’/‘PR’/‘RE’/‘SO’
PostingTypeListY転記タイプ初期値 ‘A’、callout: asset
C_Invoice_ID / C_InvoiceLine_IDSearchN請求書FK売却請求書からの生成用
C_Period_IDTableN会計期間
DocStatus / DocActionList / ButtonN伝票状態 / アクション初期値 ‘DR’ / ‘CO’
IsApproved / Posted / ProcessedYesNo / Button / YesNoY承認 / 転記 / 処理済
  1. 転記日付の会計期間オープンチェック(伝票ベースタイプ: GL Document)
  2. updateFromAsset(this): 資産から IsDisposed / A_Asset_Status / AD_Org_ID を、償却ワークファイルから Asset Cost / Accumulated Depreciation を再転記して保存。値が変化した場合は AssetStatusChangedException(画面表示が古い状態での処理を防止)
  3. 転記日付時点で当期償却済みなら AssetAlreadyDepreciatedException
  4. 未処理の償却エントリ(MDepreciationExp)が存在すればエラー

isDisposal()(= 資産の IsDisposed が false)で除却/有効化を分岐します。

モードMethod処理
有効化Activation (‘AA’)資産状態 → Activated。それ以外の方法は未サポート例外
除却Preservation (‘PR’)資産状態 → Preservation(状態変更のみ)
除却Simple (‘S’) / Trade (‘T1’)資産状態 → Disposed。除却額=取得原価・delta=累計額・費用=除却額−delta を強制セットし createDisposal()
除却Partial Retirement (‘PD’)入力された除却額のまま createDisposal()(按分除却)
除却上記以外 (‘C’/‘C_’/‘S_’/‘T2’ 等)AssetNotSupportedException

一部除却時の自動計算ロジック:

coef = A_Disposal_Amt / A_Asset_Cost (12桁精度・四捨五入)
A_Accumulated_Depr_Delta = A_Accumulated_Depr × coef (2桁丸め)
Expense = A_Disposal_Amt − A_Accumulated_Depr_Delta

createAssetDisposed(MInvoiceLine): 売上請求書明細(資産売却)から除却伝票を自動生成します。

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”
カラムCallout
A_Asset_ID / PostingTypeorg.idempiere.fa.model.CalloutA_Asset_Disposed.asset(資産情報の転記)
DateDoc / DateAcct / A_Disposed_DateCalloutA_Asset_Disposed.date(日付連動)
A_Disposal_Amt / A_Accumulated_Depr / ExpenseCalloutA_Asset_Disposed.amt(按分計算)
AD_Client_IDorg.compiere.model.CalloutGLJournal.period(期間セット)

Document 型のため docValidate の TIMING_BEFORE_PREPARE / AFTER_PREPARE / BEFORE_COMPLETE / AFTER_COMPLETE が利用できます。除却理由の必須化や、一定金額以上の除却に承認を要求するといった制御をコア改変なしで追加できます。

@Override
public String docValidate(PO po, int timing) {
if (po instanceof MAssetDisposed && timing == TIMING_BEFORE_COMPLETE) {
MAssetDisposed ad = (MAssetDisposed) po;
// 例: Disposed Reason 未入力なら完了不可にする
}
return null;
}

除却の承認フローや除却理由の必須化などの統制要件は、Model Validator でコア改変なしに実装できます。

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

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