iDempiere 生産伝票の使い方|製造管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 製造管理の全体像: 製造管理の業務フロー全体図 も合わせてご覧ください。
生産伝票は、iDempiereの製造管理における中核機能です。BOM(部品表)に基づいて構成部品を消費し、完成品を入庫する一連の生産プロセスを管理します。
生産伝票は単一レベル生産を実現するためのシンプルな仕組みで、製造指図(Manufacturing Order)よりも軽量に運用できます。BOMに登録された構成部品が自動展開され、完了処理により在庫トランザクションが生成されます。
📌 ポイント: 生産伝票(M_Production)はシンプルな単一レベル生産向けです。複数工程・リソース管理・作業指示が必要な場合はManufacturing Order(PP_Order)の使用を検討してください。
生産伝票でできること
Section titled “生産伝票でできること”- BOMに基づく構成部品の自動展開(明細行の自動作成)
- 完成品の入庫と構成部品の出庫を同時処理
- ファントムBOM(中間組立品)の自動展開
- 生産計画(Production Plan)による複数品目の一括生産
- 原価差異のチェック(標準原価との差異検証)
graph TD
subgraph "Production(ウィンドウ 191)"
T1["🏭 Production Header(生産ヘッダー)<br/>M_Production<br/>20項目"]
T2["📋 Production Plan(生産計画)<br/>M_ProductionPlan<br/>9項目"]
T3["📝 Production Line(生産明細)<br/>M_ProductionLine<br/>12項目"]
end
T1 --> T2
T2 --> T3
📌 ポイント: 生産計画(Production Plan)タブは複数の完成品を1つの生産伝票で処理する場合に使用します。単品の生産であれば、ヘッダーで品目を直接指定するシンプルな運用が可能です。
| タブ名 | テーブル | 役割 | 主な入力項目 |
|---|---|---|---|
| 生産ヘッダー(Production Header) | M_Production | ヘッダー情報(品目・数量・日付等) | 品目、生産数量、移動日付、保管場所 |
| 生産計画(Production Plan) | M_ProductionPlan | 複数品目の生産計画(オプション) | 品目、計画数量 |
| 生産明細(Production Line) | M_ProductionLine | 構成部品と完成品の明細行 | 品目、使用数量、保管場所 |
生産伝票の操作フロー
Section titled “生産伝票の操作フロー”graph TD
A[BOM登録済みの品目を確認] --> B[生産ウィンドウを開く]
B --> C[新規ボタンをクリック]
C --> D[完成品・生産数量・<br/>移動日付・保管場所を入力して保存]
D --> E[明細行作成ボタンをクリック<br/>BOM自動展開]
E --> F[生産明細タブで<br/>数量・保管場所を確認・修正]
F --> G{修正あり?}
G -->|はい| F
G -->|いいえ| H[伝票処理 → 完了を実行]
H --> I[完成品の在庫増加]
H --> J[構成部品の在庫減少]
💡 ヒント: 「明細行作成」ボタンを複数回クリックすると明細行が重複して作成されます。必ず1回だけクリックし、結果を確認してから保管場所や数量を修正してください。
⚠️ 注意: 完了処理の前に構成部品の在庫が十分にあることを確認してください。在庫不足のまま完了処理を実行すると、在庫がマイナスになる可能性があります(マイナス在庫の許可設定による)。
生産伝票の基本操作手順
Section titled “生産伝票の基本操作手順”アクセス方法
Section titled “アクセス方法”メニューから「製造管理 > 製造管理 > 生産」を開きます。
- ツールバーの「新規」ボタンをクリック
- ヘッダー情報を入力:
- 品目: 生産する完成品を選択(BOM登録済みの品目)
- 生産数量: 生産する数量を入力
- 移動日付: 生産日を入力(デフォルト: 当日)
- 保管場所: 完成品の入庫先保管場所を選択
- 伝票タイプ: 「生産」を選択
- 「保存」をクリック
明細行の作成(BOM展開)
Section titled “明細行の作成(BOM展開)”- ヘッダー保存後、「明細行作成」ボタンをクリック
- BOMに登録された構成部品が自動展開され、明細行が作成される
- 完成品行(IsEndProduct=Y)と構成部品行が生成される
- 必要に応じて使用数量・保管場所を修正
伝票処理(生産完了)
Section titled “伝票処理(生産完了)”- 「生産」タブ(ヘッダー)に戻る
- 「伝票処理」ボタンをクリック
- アクション「完了(Complete)」を選択
- 「OK」をクリック
完了処理により以下が自動実行されます:
- 完成品の在庫増加(入庫トランザクション)
- 構成部品の在庫減少(出庫トランザクション)
- 伝票ステータスが「完了」に変更
項目リファレンス
Section titled “項目リファレンス”生産タブ(ヘッダー)
Section titled “生産タブ(ヘッダー)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 伝票番号 | 自動 | 文字列 | 生産伝票番号(自動採番) |
| 伝票タイプ | 必須 | 選択 | 生産伝票の種類 |
| 移動日付 | 必須 | 日付 | 生産実施日(デフォルト: 当日) |
| 品目 | 必須 | 検索 | 生産する完成品(BOM品目) |
| 生産数量 | 必須 | 数量 | 生産する数量 |
| 保管場所 | 必須 | 選択 | 完成品の入庫先保管場所 |
| BOM | - | 選択 | 使用するBOM(未指定時はデフォルトBOM) |
| 伝票状態 | 自動 | リスト | 起案、進行中、完了、取消 等 |
生産明細タブ
Section titled “生産明細タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 品目 | 必須 | 検索 | 構成部品または完成品 |
| 移動数量 | - | 数量 | 完成品の入庫数量(正値) |
| 使用数量 | - | 数量 | 構成部品の消費数量 |
| 計画数量 | 自動 | 数量 | BOMから計算された計画数量 |
| 保管場所 | 必須 | 選択 | 品目の入出庫先保管場所 |
| 完成品フラグ | 自動 | チェック | 完成品行かどうか |
伝票ステータスの遷移
Section titled “伝票ステータスの遷移”stateDiagram-v2
[*] --> 起案: 新規作成
起案 --> 進行中: prepareIt()
進行中 --> 完了: completeIt()
完了 --> クローズ: closeIt()
完了 --> 取消: voidIt()
起案 --> 無効: voidIt()
| ステータス | 説明 |
|---|---|
| 起案(Drafted) | 入力中。在庫変動なし |
| 進行中(InProgress) | 準備完了。BOM・原価の検証済み |
| 完了(Completed) | 生産完了。在庫トランザクション発行済み |
| 取消(Voided) | 取消。在庫トランザクションが逆仕訳される |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 明細行作成でエラーが出る場合は?
Section titled “Q. 明細行作成でエラーが出る場合は?”| エラー | 原因 | 対処法 |
|---|---|---|
| 「Non Bill Of Materials」 | 品目にBOMフラグが設定されていない | 品目マスタでBOMフラグをチェック |
| 「no BOM Components」 | BOM明細行が未登録 | BOMウィンドウで構成部品を登録 |
| 「Excessive difference in standard costs」 | 標準原価の差異が大きい | 原価要素を確認し、原価ロールアップを実行 |
Q. ファントムBOMとは何ですか?
Section titled “Q. ファントムBOMとは何ですか?”ファントムBOMは中間組立品を表します。生産伝票の明細行作成時に、ファントム品目は自動的に展開され、その構成部品が直接明細行に追加されます。ファントム品目自体の在庫移動は発生しません。
Q. 生産計画は何に使いますか?
Section titled “Q. 生産計画は何に使いますか?”生産計画(Production Plan)タブを使うと、1つの生産伝票で複数の完成品を同時に生産できます。「生産計画使用」フラグをオンにすると、ヘッダーの品目ではなく生産計画タブの品目ごとに明細行が展開されます。
業務フロー上の位置づけ
Section titled “業務フロー上の位置づけ”graph TD
A[BOM登録] -->|構成部品定義| B[生産伝票]
B -->|明細行作成| C[BOM展開]
C -->|完了処理| D[在庫トランザクション]
D --> E[完成品入庫]
D --> F[構成部品出庫]
関連する仕様書
Section titled “関連する仕様書”OSS ERP導入についてのご相談
Section titled “OSS ERP導入についてのご相談”iDempiereの生産管理は、BOMに基づく部品展開から在庫トランザクションまでを一元管理できる柔軟な機能を備えています。 製造業の生産プロセスを、オープンソースERPで効率化しませんか?
As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。
🛠 技術仕様(開発者向け)
生産伝票は Document 型の伝票で、M_Production テーブルに格納されます。MProduction クラス(1,100行)が中核ビジネスロジックを担い、DocAction インターフェースを実装しています。BOMに基づく構成部品の自動展開(createLines)と、完了処理時の在庫トランザクション生成(completeIt)が主要機能です。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MProduction {
+prepareIt() String
+completeIt() String
+voidIt() boolean
+closeIt() boolean
+createLines(boolean) int
+createLines(boolean, int) int
#createLines(boolean, MProduct, BigDecimal, int) int
+validateEndProduct(int) String
#isBom(int) String
}
class X_M_Production {
<<generated>>
}
class PO {
<<abstract>>
}
class DocAction {
<<interface>>
}
MProduction --|> X_M_Production
X_M_Production --|> PO
MProduction ..|> DocAction
MProduction --> MProductionLine : has many
MProduction --> MProductionPlan : has many (optional)
MProductionLine --> MProductionLineMA : has many
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MProduction.java(1,100行)
明細クラス: org.adempiere.base/src/org/compiere/model/MProductionLine.java(522行)
関連DBテーブル
Section titled “関連DBテーブル”M_Production(生産ヘッダー)
Section titled “M_Production(生産ヘッダー)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_Production_ID | ID | PK | 生産ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | |
| AD_Org_ID | TableDirect | Y | 組織 | |
| DocumentNo | String | Y | 伝票番号 | |
| C_DocType_ID | TableDirect | Y | 伝票タイプ | |
| DocStatus | List | Y | 伝票状態 | DR/IP/CO/CL/VO |
| DocAction | Button | Y | 伝票アクション | |
| MovementDate | Date | Y | 移動日付 | 生産実施日 |
| M_Product_ID | Search | N | 品目 | 完成品 |
| ProductionQty | Quantity | Y | 生産数量 | |
| M_Locator_ID | TableDirect | Y | 保管場所 | 完成品の入庫先 |
| PP_Product_BOM_ID | TableDirect | N | BOM | 使用するBOM |
| IsCreated | List | Y | 作成済み | Y=明細行作成済 |
| IsUseProductionPlan | YesNo | Y | 生産計画使用 | |
| Processed | YesNo | Y | 処理済み |
M_ProductionLine(生産明細)
Section titled “M_ProductionLine(生産明細)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| M_ProductionLine_ID | ID | PK | 明細ID |
| M_Production_ID | TableDirect | Y | ヘッダーFK |
| M_ProductionPlan_ID | TableDirect | N | 生産計画FK |
| Line | Integer | Y | 行番号 |
| M_Product_ID | Search | Y | 品目 |
| MovementQty | Quantity | Y | 移動数量(完成品は正、部品は負) |
| QtyUsed | Quantity | N | 使用数量 |
| PlannedQty | Quantity | Y | 計画数量 |
| M_Locator_ID | TableDirect | Y | 保管場所 |
| IsEndProduct | YesNo | Y | 完成品フラグ |
erDiagram
M_Production ||--o{ M_ProductionLine : "has"
M_Production ||--o{ M_ProductionPlan : "has (optional)"
M_ProductionPlan ||--o{ M_ProductionLine : "has"
M_Production }o--|| C_DocType : "references"
M_Production }o--|| M_Product : "references"
M_Production }o--|| M_Locator : "references"
M_Production }o--o| PP_Product_BOM : "references"
M_ProductionLine }o--|| M_Product : "references"
M_ProductionLine ||--o{ M_ProductionLineMA : "has"
M_ProductionLine }o--|| M_Locator : "references"
ビジネスロジック
Section titled “ビジネスロジック”createLines() - BOM展開
Section titled “createLines() - BOM展開”MProduction.createLines(boolean mustBeStocked, int PP_Product_BOM_ID) がBOM展開の起点です。
- 完成品の
MProductionLine(IsEndProduct=Y)を作成(移動数量=生産数量) PP_Product_BOMLineから構成部品を取得- 各構成部品について:
- ファントムBOM品目: 再帰的に
createLines()を呼び出し展開 - 通常品目: 消費用の
MProductionLineを作成(使用数量=BOM数量 x 生産数量)
- ファントムBOM品目: 再帰的に
- 在庫不足チェック(
mustBeStocked=trueの場合)
prepareIt() の主要処理
Section titled “prepareIt() の主要処理”ModelValidator.TIMING_BEFORE_PREPAREイベント発火- 会計期間のオープンチェック(
MPeriod.testPeriodOpen) - バックデート取引の許可チェック(
MAcctSchema.testBackDateTrxAllowed) - 明細行作成済みチェック(
IsCreated='Y'が必須) - 完成品のBOM検証(
validateEndProduct):- BOMフラグの確認
- BOM明細行の存在確認
- 標準原価差異のチェック
ModelValidator.TIMING_AFTER_PREPAREイベント発火
completeIt() の主要処理
Section titled “completeIt() の主要処理”ModelValidator.TIMING_BEFORE_COMPLETEイベント発火- 完成品行の存在チェック(
isHaveEndProduct) - 各明細行の在庫トランザクション処理(
processLines):- 完成品: 入庫(
M_Transactionの正値) - 構成部品: 出庫(
M_Transactionの負値) MProductionLineMAによる属性セット・ロット管理
- 完成品: 入庫(
- 生産計画使用時は計画単位で処理
ModelValidator.TIMING_AFTER_COMPLETEイベント発火
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”生産伝票に独自バリデーションや後処理を追加する方法:
public class CustomProductionValidator implements ModelValidator { @Override public String docValidate(PO po, int timing) { if (po instanceof MProduction) { MProduction production = (MProduction) po; if (timing == TIMING_BEFORE_COMPLETE) { // 例: 生産数量の上限チェック if (production.getProductionQty().compareTo( new BigDecimal("1000")) > 0) { return "生産数量が上限を超えています"; } } if (timing == TIMING_AFTER_COMPLETE) { // 例: 生産完了後の通知処理 sendProductionNotification(production); } } return null; }}IColumnCallout によるフィールド連動
Section titled “IColumnCallout によるフィールド連動”public class ProductionCallout implements IColumnCallout { @Override public String start(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value, Object oldValue) { // 例: 品目変更時にデフォルトBOMを自動セット if ("M_Product_ID".equals(mField.getColumnName())) { int productId = (Integer) value; MProduct product = MProduct.get(ctx, productId); MPPProductBOM bom = MPPProductBOM.getDefault( product, null); if (bom != null) { mTab.setValue("PP_Product_BOM_ID", bom.getPP_Product_BOM_ID()); } } return ""; }}関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiereの生産伝票は Model Validator や Callout で安全にカスタマイズできます。 BOM展開ロジックの拡張や、生産完了後の後処理追加もコア改変なしで実現可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。