iDempiere プロジェクト(期間設定なし)の使い方|プロジェクト管理 操作マニュアル・技術仕様
📖 プロジェクト管理の全体像: プロジェクト管理の全体図 も合わせてご覧ください。
プロジェクト(期間設定なし)は、フェーズ・タスクによる工程管理を使わず、明細(Lines)と発行(Issues)だけでプロジェクトを管理するウィンドウです。受注案件や作業指示(Work Order)の計画数量・金額を明細で管理し、「発行」で材料・工数をプロジェクトへ払い出して原価を計上します。
📌 ポイント: フェーズ管理を使う標準の プロジェクト ウィンドウとテーブルは同じ
C_Projectです。プロジェクトタイプのテンプレート(フェーズ・タスク)を使わない案件は、こちらのシンプルな明細ベース運用が向いています。
プロジェクト(期間設定なし)でできること
Section titled “プロジェクト(期間設定なし)でできること”- 案件単位の計画金額・計画数量・計画マージンの管理
- 明細(品目・品目カテゴリ単位)ごとの計画・委託・請求実績の追跡
- プロジェクト発行(Issue)による在庫払出と原価計上(入出荷・経費明細・在庫から)
- 「詳細コピー」による他プロジェクトからの明細コピー
- 「注文書作成」ボタンによるプロジェクトからの発注生成
- 会計タブでのプロジェクト資産科目・仕掛科目(WIP)の設定
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| プロジェクト(期間設定なし) | C_Project | 約35項目 | ヘッダ(取引先・通貨・計画/実績金額・各種ボタン) |
| 詳細 | C_ProjectLine | 約24項目 | 明細(品目・計画単価・計画数量・実績) |
| 発行 | C_ProjectIssue | 約17項目 | 材料・工数の払出伝票(DocStatus あり) |
| 会計 | C_Project_Acct | 約7項目 | 会計スキーマ別の資産・仕掛科目 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>プロジェクト管理 > プロジェクト(期間設定なし)"] --> B["➕ 新規でヘッダを入力<br/>(検索キー・名称・通貨・取引先)"]
B --> C["📝 詳細タブで明細を登録<br/>(品目・計画数量・計画単価)"]
C --> D{実行段階}
D -->|発注が必要| E["🛒 注文書作成ボタンで<br/>発注伝票を生成"]
D -->|材料・工数を投入| F["📦 発行タブで払出を登録し<br/>伝票処理ボタンで完了<br/>→ 在庫減・原価計上"]
E --> G["🏁 プロジェクトクローズ"]
F --> G
アクセス方法
Section titled “アクセス方法”メニューから「プロジェクト管理 > プロジェクト(期間設定なし)」を開きます。
- ツールバーの「新規」ボタンをクリック
- ヘッダ情報を入力: 検索キー(一意)・名称・通貨(必須)・取引先・請求ルール・倉庫(発行時のデフォルト)
- 価格表バージョンを設定すると、通貨は価格表の通貨に自動セットされます
- 「保存」をクリック
- 「詳細」タブで明細を登録: 品目(または品目カテゴリ)・計画数量・計画単価
- 計画金額は「計画数量 × 計画単価」で保存時に自動計算されます(手入力不可)
- 「価格取得」ボタンでプロジェクトの価格表から単価を取得できます
伝票処理(発行タブ)
Section titled “伝票処理(発行タブ)”発行タブは DocStatus / DocAction を持つ伝票型のタブです。
- 「発行」タブで払出を登録: 移動日付(会計期間チェック対象)・品目・属性セットインスタンス・保管場所・移動数量
- 「Process Project Issue」ボタンで**完了(Complete)**を実行 → 在庫品目なら在庫が減少し、在庫トランザクションが記録されます
- 「転記」ボタンで会計仕訳の転記状態を確認できます
| 伝票アクション | 動作 |
|---|---|
| 完了(Complete) | 在庫払出・在庫トランザクション生成・プロジェクトバランス更新 |
| 逆仕訳-修正 | 元の移動日付で反対仕訳の発行を自動生成 |
| 逆仕訳-未収未払 | 当日日付で反対仕訳の発行を自動生成 |
項目リファレンス(主要項目)
Section titled “項目リファレンス(主要項目)”プロジェクト(期間設定なし)タブ
Section titled “プロジェクト(期間設定なし)タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 検索キー | 必須 | 文字列(40) | プロジェクトコード(一意) |
| 名称 | 必須 | 文字列(60) | プロジェクト名 |
| 通貨 | 必須 | 選択 | プロジェクト通貨(価格表設定時に自動連動) |
| 取引先 / 取引先住所 | - | 検索 | 顧客と納入先 |
| 計画金額 / 計画数量 / 計画マージン | 必須 | 金額/数量 | 計画値 |
| 委託金額 / 委託数量 | 必須 | 金額/数量 | (法的)コミット値 |
| 請求金額 / 請求数量 | 自動 | 金額/数量 | 請求実績(更新不可の集計値) |
| プロジェクトバランス | 自動 | 金額 | プロジェクト残高 |
| 請求ルール | 必須 | リスト | 請求方法(デフォルト: なし) |
| 詳細コピー / 注文書作成 / プロジェクトクローズ | - | ボタン | コピー・発注生成・クローズ処理 |
| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 移動日付 | 必須 | 日付 | 払出日(期間クローズチェック対象) |
| 品目 | 必須 | 検索 | 払い出す品目 |
| 属性セットインスタンス | 必須 | 属性 | ロット・シリアル等 |
| 保管場所 | 必須 | ロケーター | 払出元の保管場所 |
| 移動数量 | 必須 | 数量 | 払出数量 |
| 伝票状態 / 転記 | 自動 | リスト/ボタン | DocStatus(デフォルト: ドラフト)と会計転記状態 |
| 入出荷明細 / 経費明細 | - | 検索 | 「プロジェクトへの発行」プロセス経由で作成した場合の元伝票参照 |
詳細タブ・会計タブを含む 全項目一覧はリファレンス参照。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 明細の「計画金額」を直接修正できません
Section titled “Q. 明細の「計画金額」を直接修正できません”MProjectLine.beforeSave() が保存のたびに「計画数量 × 計画単価」で計画金額を上書きします(ソース実装仕様)。金額を変えたい場合は計画数量または計画単価を修正してください。計画マージンも品目の下限価格(または品目カテゴリの計画マージン)から自動計算されます。
Q. 発行の完了時に「Storage not updated」やマイナス在庫エラーが出ます
Section titled “Q. 発行の完了時に「Storage not updated」やマイナス在庫エラーが出ます”発行の完了処理は保管場所の実在庫から払出数量を引き落とします。在庫不足時、マイナス在庫を許可しない保管場所では NegativeInventoryDisallowedException が発生します。在庫の受入を先に処理するか、払出元の保管場所を見直してください。
Q. 完了済みの発行を取り消すには?
Section titled “Q. 完了済みの発行を取り消すには?”発行は伝票型のため削除ではなく逆仕訳で取り消します。「逆仕訳-修正」は元の移動日付、「逆仕訳-未収未払」は当日日付で反対方向の発行を自動生成し、元伝票は「逆仕訳済み」状態になります。移動日付の会計期間がクローズ済みの場合は逆仕訳-未収未払を使用してください。
Q. サービス品目を発行するとどうなりますか?
Section titled “Q. サービス品目を発行するとどうなりますか?”在庫管理対象でない品目(IsStocked=N)の場合、在庫の増減や在庫トランザクションは発生せず、処理済みフラグとプロジェクトバランスの更新のみが行われます(MProjectIssue の実装仕様)。工数・経費の原価計上に使えます。
Q. 標準の「プロジェクト」ウィンドウとどちらを使うべきですか?
Section titled “Q. 標準の「プロジェクト」ウィンドウとどちらを使うべきですか?”フェーズ・タスクによる工程管理を使うなら プロジェクト、品目明細ベースのシンプルな案件・作業指示管理ならこちらが適しています。テーブルは共通のため、後から運用を変えることも可能です。
🛠 技術仕様(開発者向け)
プロジェクト(期間設定なし)(AD_Window_ID: 286)は、C_Project(MProject: 470行)をヘッダに、C_ProjectLine(MProjectLine: 330行)・C_ProjectIssue(MProjectIssue: 596行)・C_Project_Acct(生成クラス X_C_Project_Acct のみ)で構成されます。ヘッダ・明細はマスタ型ですが、発行(C_ProjectIssue)は DocAction を実装した伝票型で、在庫トランザクションと会計転記の対象です。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MProject {
+getLines() MProjectLine[]
+getIssues() MProjectIssue[]
+copyDetailsFrom(MProject) int
#beforeSave() / afterSave()
}
class MProjectLine {
+getLimitPrice() BigDecimal
#beforeSave() / afterSave()
}
class MProjectIssue {
+processIt(action) boolean
+completeIt() String
+reverseCorrectIt() / reverseAccrualIt()
}
class DocAction {
<<interface>>
}
class PO {
<<abstract>>
}
MProject --|> PO
MProjectLine --|> PO
MProjectIssue --|> PO
MProjectIssue ..|> DocAction
MProject --> MProjectLine : has many
MProject --> MProjectIssue : has many
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MProject.java / MProjectLine.java / MProjectIssue.java
関連DBテーブル
Section titled “関連DBテーブル”C_Project(プロジェクト・主要カラム)
Section titled “C_Project(プロジェクト・主要カラム)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Project_ID | ID | PK | プロジェクトID | 主キー |
| Value / Name | String | Y | 検索キー / 名称 | 検索キーは一意 |
| C_Currency_ID | TableDirect | Y | 通貨 | 価格表設定時に自動連動 |
| C_ProjectType_ID | Button | N | プロジェクトタイプ | ボタン(セット処理起動) |
| ProjectCategory | List(1) | N | プロジェクトカテゴリ | デフォルト N |
| ProjInvoiceRule | List(1) | Y | 請求ルール | デフォルト - |
| PlannedAmt / PlannedQty / PlannedMarginAmt | Amount/Qty | Y | 計画値 | |
| CommittedAmt / CommittedQty | Amount/Qty | Y | 委託値 | |
| InvoicedAmt / InvoicedQty | Amount/Qty | Y | 請求実績 | 更新不可(集計値) |
| ProjectBalanceAmt | Amount | Y | プロジェクト残高 | |
| CopyFrom / GenerateTo / Processing | Button | N | 詳細コピー / 注文書作成 / クローズ |
C_ProjectLine(詳細・主要カラム)
Section titled “C_ProjectLine(詳細・主要カラム)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_ProjectLine_ID | ID | PK | 明細ID | 主キー |
| C_Project_ID | TableDirect | Y | 親プロジェクト | 親リンク |
| Line | Integer | Y | 明細番号 | デフォルト @SQL=MAX(Line)+10 |
| M_Product_ID / M_Product_Category_ID | Search/TableDirect | N | 品目 / 品目カテゴリ | マージン計算の基準 |
| PlannedPrice | Costs+Prices | Y | 計画単価 | Callout: CalloutProject.planned |
| PlannedQty | Quantity | Y | 計画数量 | デフォルト 1、Callout 同上 |
| PlannedAmt / PlannedMarginAmt | Amount | Y | 計画金額 / マージン | beforeSave で自動計算 |
| C_Order_ID / C_OrderPO_ID | Search | N | 受注 / 発注伝票 | 生成・関連付け |
C_ProjectIssue(発行・主要カラム)
Section titled “C_ProjectIssue(発行・主要カラム)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_ProjectIssue_ID | ID | PK | 発行ID | 主キー |
| C_Project_ID | TableDirect | Y | 親プロジェクト | 親リンク |
| MovementDate | Date | Y | 移動日付 | 期間クローズチェック対象 |
| M_Product_ID / M_AttributeSetInstance_ID | Search/Attribute | Y | 品目 / 属性インスタンス | |
| M_Locator_ID | Locator | Y | 保管場所 | 払出元 |
| MovementQty | Quantity | Y | 移動数量 | |
| M_InOutLine_ID / S_TimeExpenseLine_ID | Search | N | 入出荷明細 / 経費明細 | 発行元参照 |
| DocStatus / DocAction | List/Button | Y | 伝票状態 / アクション | デフォルト DR / CO |
| Reversal_ID | Search | N | 逆仕訳ID | 逆仕訳ペアの相互参照 |
C_Project_Acct は「プロジェクト × 会計スキーマ」ごとに PJ_Asset_Acct(プロジェクト資産科目)と PJ_WIP_Acct(仕掛科目)を保持します。
erDiagram
C_Project ||--o{ C_ProjectLine : "lines"
C_Project ||--o{ C_ProjectIssue : "issues"
C_Project ||--o{ C_Project_Acct : "accounting"
C_ProjectLine }o--o| C_ProjectIssue : "issue link"
C_ProjectIssue ||--o{ M_Transaction : "creates"
C_Project }o--o| C_ProjectType : "type"
ビジネスロジック
Section titled “ビジネスロジック”MProject.beforeSave() / afterSave()
Section titled “MProject.beforeSave() / afterSave()”beforeSave:AD_User_ID=-1(会計ディメンション用サマリ)を 0 に補正。M_PriceList_Version_ID変更時は価格表の通貨をC_Currency_IDへ自動セットafterSave: 新規時にinsert_Accounting("C_Project_Acct", "C_AcctSchema_Default")で会計タブのレコードを自動生成し、プロジェクトツリー(TREETYPE_Project)へノード登録。検索キー・名称変更時はMAccount.updateValueDescription()で勘定組合せの説明も更新afterDelete: ツリーノードを削除
MProjectLine.beforeSave()
Section titled “MProjectLine.beforeSave()”PlannedAmt = PlannedQty × PlannedPriceを毎回再計算- 計画マージン: 品目指定時は「計画単価 − 価格表の下限価格」× 数量、品目カテゴリ指定時はカテゴリの計画マージン × 数量
- プロジェクトタスク指定時はタスクからフェーズを、フェーズ指定時はフェーズからプロジェクトを逆引きしてセット
afterSave/afterDeleteでupdateHeader()によりヘッダの合計値を更新
MProjectIssue の伝票処理(doComplete)
Section titled “MProjectIssue の伝票処理(doComplete)”flowchart TD
A[completeIt] --> B{品目あり? / 期間オープン?}
B -->|No| ERR[エラー返却]
B -->|Yes| C{在庫管理品目?}
C -->|No| D[Processed=Y<br/>バランス更新のみ]
C -->|Yes| E[M_Transaction 生成<br/>MovementType=WorkOrderPlus]
E --> F[MMPolicy FiFo/LiFo に従い<br/>MStorageOnHand から引落]
F -->|在庫不足+マイナス禁止| G[NegativeInventoryDisallowedException]
F -->|OK| H[トランザクション保存<br/>updateBalanceAmt]
- 逆仕訳(
reverseCorrectIt/reverseAccrualIt)は反対数量の発行を自動生成し、Reversal_IDで相互参照。元伝票・逆仕訳ともDocStatus=Reversedになります process()メソッドは iDempiere 13 で@Deprecated(削除予定)となり、processIt(DocAction.ACTION_Complete)の使用が正式ルートです
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”標準 Callout
Section titled “標準 Callout”| カラム | Callout | 動作 |
|---|---|---|
| C_ProjectLine.PlannedPrice / PlannedQty | org.compiere.model.CalloutProject.planned | 単価・数量変更時に計画金額を再計算 |
OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”発行は Document 型のため、docValidate でタイミング制御が可能です:
@Overridepublic String docValidate(PO po, int timing) { if (po instanceof MProjectIssue && timing == TIMING_BEFORE_COMPLETE) { MProjectIssue issue = (MProjectIssue) po; // 例: 計画数量を超える払出をブロック if (issue.getMovementQty().compareTo(issue.getParent().getPlannedQty()) > 0) return "計画数量を超える払出はできません"; } return null;}関連プロセス
Section titled “関連プロセス”| プロセス/ボタン | 説明 |
|---|---|
| 詳細コピー(CopyFrom) | 他プロジェクトの明細・フェーズ・タスクをコピー(MProject.copyDetailsFrom) |
| 注文書作成(GenerateTo) | プロジェクトから発注伝票を生成 |
| プロジェクトクローズ(Processing) | プロジェクトのクローズ処理 |
| 価格取得(DoPricing) | プロジェクト価格表から明細単価を取得 |
| Process Project Issue(DocAction) | 発行の完了・逆仕訳処理 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”プロジェクトの発行・原価計上は Model Validator と Callout で安全に拡張できます。払出上限チェック、独自の請求ルール、プロジェクト帳票など、コア改変なしで業務要件に対応可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。