iDempiere 資産振替の使い方|固定資産管理 操作マニュアル・技術仕様
📖 固定資産管理の全体像: 固定資産管理の全体図 も合わせてご覧ください。
資産振替は、固定資産に紐づく会計設定(資産勘定・減価償却累計額勘定・償却費勘定・売却益勘定・除却損勘定)を、新しい勘定科目へ付け替える(振替する)ためのウィンドウです。Step1 で資産を選択し、会計タブで現在の設定を確認、Step3 で新しい勘定科目を指定して処理します。
📌 ポイント: 「振替」の対象は保管場所や組織ではなく勘定科目です。完了処理で、転記日付を有効開始日(ValidFrom)とする新しい会計設定行(A_Asset_Acct)が作成され、以後の償却仕訳は新しい科目で計上されます。
資産振替でできること
Section titled “資産振替でできること”- 振替対象資産の選択(Step1: 資産マスタの参照)
- 現在の会計設定(会計スキーマ×転記タイプ別)の確認
- 新しい資産勘定・減価償却累計額勘定・償却費勘定の指定
- 新しい売却益勘定・除却損勘定の指定
- 貸借対照表残高の繰越(A_Transfer_Balance)の指定
- 伝票処理(DocAction)による振替の確定と新会計設定の作成
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Step1 Select Asset | A_Asset | 約38項目 | 振替対象資産の選択 |
| 会計 | A_Asset_Acct | 約20項目 | 現在の会計設定の確認 |
| Step3 Process Transfers | A_Asset_Transfer | 約20項目 | 新旧勘定科目の指定と振替実行 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 資産振替を開く<br/>(標準メニュー未登録・要割当)"] --> B["① Step1<br/>振替対象の資産を選択"]
B --> C["② 会計タブ<br/>現在の勘定設定を確認<br/>(会計スキーマ×転記タイプ)"]
C --> D["③ Step3<br/>新しい勘定科目を指定<br/>(資産・償却累計・償却費 等)"]
D --> E["📅 転記日付を入力<br/>(期間はCalloutで自動セット)"]
E --> F["▶ 伝票処理で完了"]
F --> G["✅ ValidFrom=転記日付の<br/>新しい会計設定行を作成"]
G --> H["📒 振替資産仕訳作成で<br/>GLへ転記"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”標準メニューには未登録のウィンドウです(AD_Window_ID: 53050)。使用する場合はシステム管理者がメニューまたはロールのウィンドウアクセスに割り当てます。
振替の実行手順
Section titled “振替の実行手順”- Step1 タブで対象資産のレコードに移動
- 会計 タブで現在の会計設定(旧勘定)を確認
- Step3 タブで振替内容を入力:
- 新しい勘定科目: 資産勘定(new)・減価償却累計額勘定(new)・償却費勘定(new)・売却益勘定(new)・除却損勘定(new)— いずれも必須。少なくとも 1 つは旧勘定と異なる科目を指定
- 転記日付: 振替の計上日(期間は Callout で自動セット)
- 貸借対照表を繰越(A_Transfer_Balance): 残高を新科目へ繰り越す場合にチェック(デフォルト Y)
- 伝票処理(完了)を実行
A_Asset_Transfer は DocStatus / DocAction を持つ伝票テーブルです。準備(Prepare)で厳密な前提チェック(下記 FAQ・技術仕様参照)が実行され、完了(Complete)で新しい会計設定行が作成されます。
項目リファレンス(Step3 Process Transfers タブ)
Section titled “項目リファレンス(Step3 Process Transfers タブ)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 資産 | 必須 | 検索 | 振替対象資産(Callout連動) |
| 会計スキーマ | 必須 | 選択 | 対象会計スキーマ |
| 転記タイプ | 必須 | リスト | 転記対象(デフォルト A) |
| 転記日付 | 必須 | 日付 | 振替の計上日(Calloutで期間セット) |
| 期間 | - | 選択 | 会計期間 |
| 資産勘定(新) | 必須 | 勘定 | 新しい資産勘定 |
| 減価償却累計額勘定(新) | 必須 | 勘定 | 新しい償却累計勘定 |
| 償却費勘定(新) | 必須 | 勘定 | 新しい償却費勘定 |
| 売却益勘定(新)/ 除却損勘定(新) | 必須 | 勘定 | 新しい処分損益勘定 |
| 貸借対照表を繰越 | 必須 | チェック | 残高繰越(デフォルト Y) |
| A_Transfer_Balance_IS | 必須 | チェック | 損益側の繰越フラグ |
| 処理中 | 必須 | チェック/ボタン | 伝票処理の実行 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 保存時に「@NotFound@ @C_Period_ID@」エラーになります
Section titled “Q. 保存時に「@NotFound@ @C_Period_ID@」エラーになります”beforeSave() が転記日付から会計期間を自動セットしますが、転記日付に対応する期間がカレンダーに存在しない場合はこのエラーになります。会計カレンダーの期間定義を確認してください。
Q. 完了時に「An account has been changed」エラーになります
Section titled “Q. 完了時に「An account has been changed」エラーになります”新旧の勘定科目がすべて同一です。prepareIt() は「少なくとも 1 つの勘定が変更されていること」をチェックしており、全科目が現在の設定と同じ場合はエラーになります。
Q. 完了時に「The accounts have been changed」エラーになります
Section titled “Q. 完了時に「The accounts have been changed」エラーになります”伝票作成後に、参照していた会計設定(A_Asset_Acct)側の勘定が別途変更されています。画面の旧勘定と実際の会計設定が一致しなくなったため処理を中断しています。最新の会計設定で伝票を作り直してください。
Q. 「Last day of month. Accounts will be changed next month」とは?
Section titled “Q. 「Last day of month. Accounts will be changed next month」とは?”償却ワークファイルの転記日付と伝票の転記日付が同一の場合のガードです。当日(償却計上日)での付替はできず、翌月からの科目変更として扱う必要があります。
Q. 償却処理との順序に決まりはありますか?
Section titled “Q. 償却処理との順序に決まりはありますか?”あります。prepareIt() は転記日付時点で償却済み(isDepreciated)の場合 AssetAlreadyDepreciatedException を投げ、未処理の償却明細が残っている場合もエラーにします。償却スケジュールの切れ目で振替してください。
🛠 技術仕様(開発者向け)
資産振替は A_Asset → A_Asset_Acct → A_Asset_Transfer の 3 階層タブで構成されます。MAssetTransfer クラス(305行)が DocAction 相当の処理(processIt / prepareIt / completeIt)を実装し、完了時に新しい MAssetAcct(258行)レコードを生成します。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MAssetTransfer {
+beforeSave(newRecord) boolean
+setC_Period_ID() void
+processIt(action) boolean
+prepareIt() String
+completeIt() String
}
class X_A_Asset_Transfer {
<<generated>>
}
class MAssetAcct {
+forA_Asset_ID(...) MAssetAcct
}
class MDepreciationWorkfile {
+isDepreciated(date) boolean
}
class PO {
<<abstract>>
}
MAssetTransfer --|> X_A_Asset_Transfer
X_A_Asset_Transfer --|> PO
MAssetTransfer --> MAssetAcct : creates new acct (ValidFrom=DateAcct)
MAssetTransfer --> MDepreciationWorkfile : precondition checks
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MAssetTransfer.java
関連DBテーブル
Section titled “関連DBテーブル”A_Asset_Transfer(資産振替)
Section titled “A_Asset_Transfer(資産振替)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| A_Asset_Transfer_ID | ID | PK | 振替ID | 識別子 |
| A_Asset_ID | Search | Y(親) | 対象資産 | callout: CalloutA_Asset_Transfer.asset |
| C_AcctSchema_ID | Table | Y | 会計スキーマ | |
| PostingType | List | Y | 転記タイプ | デフォルト ‘A’ |
| A_Period_Start / A_Period_End | Integer | Y(親) | 対象期間 | |
| A_Asset_Acct / A_Accumdepreciation_Acct / A_Depreciation_Acct | Account | N | 旧勘定(資産/償却累計/償却費) | 会計タブから転記 |
| A_Disposal_Revenue_Acct / A_Disposal_Loss_Acct | Account | N | 旧処分損益勘定 | |
| A_Asset_New_Acct / A_Accumdepreciation_New_Acct / A_Depreciation_New_Acct | Account | Y | 新勘定(資産/償却累計/償却費) | |
| A_Disposal_Revenue_New_Acct / A_Disposal_Loss_New_Acct | Account | Y | 新処分損益勘定 | |
| A_Transfer_Balance / A_Transfer_Balance_IS | YesNo | Y | 残高繰越/損益繰越 | デフォルト Y / - |
| A_Split_Percent | Number | Y(親) | 按分率 | デフォルト 1 |
| DateDoc / DateAcct | Date | N/Y | 伝票日付/転記日付 | callout: dateDoc / period |
| C_Period_ID | Table | N | 期間 | beforeSave で自動セット |
| DocStatus / DocAction | List / Button | Y | 伝票状態/アクション | ’DR’ / ‘CO’ |
| Posted / Processed / Processing | Button / YesNo | - | 転記/処理状態 |
テーブル属性: IsDeleteable=N、アクセスレベル 7(All)。
ビジネスロジック
Section titled “ビジネスロジック”beforeSave()
Section titled “beforeSave()”setC_Period_ID() を呼び、転記日付から MPeriod.get で期間を解決します。期間が見つからない場合は @NotFound@ @C_Period_ID@ の AdempiereException を送出します。
prepareIt() の検証チェーン
Section titled “prepareIt() の検証チェーン”MPeriod.testPeriodOpen(GL Journal として期間オープンチェック)MDepreciationWorkfile.isDepreciated(DateAcct)→ 償却済みなら AssetAlreadyDepreciatedException- 旧勘定の一致チェック: 画面の旧勘定と現在の
MAssetAcct.forA_Asset_ID(...)の勘定が 1 つでも不一致なら「The accounts have been changed」 - 変更有無チェック: 新勘定がすべて現在の勘定と同一なら「An account has been changed」(最低 1 科目の変更が必要)
- ワークファイル転記日付との同日チェック: 同日なら「Last day of month. Accounts will be changed next month」
MDepreciationExp.checkExistsNotProcessedEntries→ 未処理償却明細があればエラー
completeIt()
Section titled “completeIt()”- 現在の会計設定(
MAssetAcct)をPO.copyValuesで複製 - 新しい資産勘定・償却累計勘定をセット
- ValidFrom = 転記日付 で新しい A_Asset_Acct 行を保存
- Processed=Y、DocAction=Close、STATUS_Completed を返却
つまり旧行を書き換えるのではなく、有効開始日付きの新行を追加する履歴管理方式です。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”- 標準 Callout:
org.idempiere.fa.model.CalloutA_Asset_Transfer(asset / dateDoc)、CalloutGLJournal.period(DateAcct / C_Period_ID) - 振替時の承認フローや科目制限(特定勘定への振替禁止等)は Model Validator の
docValidate(TIMING_BEFORE_PREPARE / TIMING_BEFORE_COMPLETE)で拡張できます
関連プロセス
Section titled “関連プロセス”伝票処理(DocAction)は Step3 タブの処理ボタンから起動します。振替結果の GL 転記は振替資産仕訳作成のエントリ完了処理で行います。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”勘定科目体系の変更・組織再編に伴う固定資産の科目付替は、履歴を保った安全な移行設計が重要です。一括振替ツールの開発などもご相談ください。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。