コンテンツにスキップ

iDempiere 品目マスタの使い方|在庫管理 操作マニュアル・技術仕様

品目マスタは、組織で使用するすべての品目(商品・サービス・資材)を定義するマスタデータです。販売品目、製造で使用する原材料、購買品目のすべてがここで管理されます。

品目マスタは iDempiere の中核マスタであり、受注・発注・出荷・請求・在庫・会計のすべての業務で参照されます。

📖 在庫管理の全体像: 在庫管理の業務フロー全体図 も合わせてご覧ください。

  • 商品・サービス・資材の情報登録
  • 品目カテゴリによる分類管理
  • 販売価格・仕入価格の設定(複数価格表対応)
  • BOM(部品構成表)の定義
  • 在庫情報の照会(現在庫数量、保管場所)
  • 仕入先情報(複数仕入先対応)
  • 品目属性(ロット、シリアル番号等)の管理
  • 会計パラメータの設定
  • 代替品目・関連品目の定義
  • 在庫補充ルールの設定

🖥️ インタラクティブ画面レイアウト: AD メタデータから自動生成した 品目マスタの全タブ・全フィールド レイアウト(HTML版) で、実際の画面配置をご確認いただけます。

画面レイアウト(ヘッダータブ)

Section titled “画面レイアウト(ヘッダータブ)”
┌─ 品目マスタ(Product)───────────────────────────────────────────────────┐
│ │
│ クライアント [▼ Table Direct] 組織 [▼ Table Direct] │
│ 検索キー [________________] 名前 [________________] │
│ 説明 [_______________________________________________] │
│ │
│ ── 基本情報 ────────────────────────────────────────────────────────── │
│ 品目カテゴリ [▼ Table Direct] 品目タイプ [▼ List] │
│ 数量単位 [▼ Table Direct] 税カテゴリ [▼ Table Direct] │
│ 在庫管理 [☐] 販売 [☐] 購買 [☐] BOM [☐] │
│ │
│ ── 属性・分類 ──────────────────────────────────────────────────────── │
│ 属性セット [▼ Table Direct] 属性セットインスタンス [▼] │
│ 製品コード [________________] UPC/EAN [________________] │
│ 重量 [_________] 容量 [_________] │
│ │
│ [品目] [BOM] [代替品] [購買情報] [価格] [会計] [在庫] ...他8タブ │
└──────────────────────────────────────────────────────────────────────────┘

📌 ポイント: この図はADメタデータ(AD_Field.XPosition, IsSameLine)から再現した実際のUI配置です。画面は2カラム構成で、左列(XPosition=1)と右列(XPosition=4)にフィールドが配置されます。

タブが多い(14タブ)ため、主要タブのみ図示します。

graph TD
    subgraph "品目マスタウィンドウ(Window ID: 140)"
        T1["📦 品目<br/>M_Product<br/>62項目"]
        T2["📋 BOM<br/>PP_Product_BOM<br/>13項目"]
        T2a["&nbsp;&nbsp;└ Components<br/>&nbsp;&nbsp;&nbsp;&nbsp;PP_Product_BOMLine<br/>&nbsp;&nbsp;&nbsp;&nbsp;10項目"]
        T3["🏭 購買情報<br/>M_Product_PO<br/>26項目"]
        T4["💴 価格<br/>M_ProductPrice<br/>8項目"]
        T5["📒 会計<br/>M_Product_Acct<br/>18項目"]
        T6["📊 在庫状況<br/>M_Storage<br/>11項目"]
        TN["...他8タブ<br/>(代替品目・関連品目・補充ルール<br/>取引先・在庫台帳・翻訳・UOM変換・原価)"]
    end
    T1 --> T2
    T2 --> T2a
    T1 --> T3
    T1 --> T4
    T1 --> T5
    T1 --> T6
    T1 --> TN

品目マスタウィンドウ(Window ID: 140) 品目 M_Product 62項目 BOM PP_Product_BOM 13項目   └ Components     PP_Product_BOMLine     10項目 購買情報 M_Product_PO 26項目 価格 M_ProductPrice 8項目 会計 M_Product_Acct 18項目 在庫状況 M_Storage 11項目 ...他8タブ (代替品目・関連品目・補充ルール 取引先・在庫台帳・翻訳・UOM変換・原価)

📌 ポイント: 品目マスタは14タブで構成されており、iDempiere の中で最も多くの関連情報を持つマスタの一つです。業務要件に応じて必要なタブのみ設定してください。

タブ名テーブル役割
品目マスタM_Product基本情報(名称・カテゴリ・タイプ等)
BOMPP_Product_BOM部品構成表のヘッダー
ComponentsPP_Product_BOMLineBOMの構成部品
代替品目M_Substitute代替品目の定義
関連品目M_RelatedProduct関連品目(アップセル等)
在庫補充M_Replenish補充ルール(発注点・安全在庫等)
購買情報M_Product_PO仕入先別の購買情報
取引先C_BPartner_Product取引先別品目情報
価格M_ProductPrice価格表ごとの価格
会計M_Product_Acct会計パラメータ
在庫取引管理台帳M_Transaction在庫トランザクション履歴
現在庫数量管理台帳M_Storage保管場所別の在庫数量
graph TD
    A["① メニューから<br/>品目マスタを開く"] --> B["② 新規ボタンで<br/>基本情報を入力<br/>(品目タイプ・カテゴリ・単位)"]
    B --> C["③ 価格タブで<br/>価格表ごとの<br/>単価を登録"]
    C --> D["④ 購買情報タブで<br/>仕入先・リードタイム<br/>を設定"]
    D --> E["⑤ 必要に応じて<br/>BOM・補充ルール等<br/>追加タブを設定"]
    E --> F["⑥ 保存<br/>(各画面で伝票作成時に選択可能に)"]

① メニューから 品目マスタを開く ② 新規ボタンで 基本情報を入力 (品目タイプ・カテゴリ・単位) ③ 価格タブで 価格表ごとの 単価を登録 ④ 購買情報タブで 仕入先・リードタイム を設定 ⑤ 必要に応じて BOM・補充ルール等 追加タブを設定 ⑥ 保存 (各画面で伝票作成時に選択可能に)

💡 ヒント: 品目カテゴリを先に登録しておくと、会計パラメータの初期値が自動セットされ、登録作業が効率化されます。

メニューから「在庫管理 > 品目マスタ(標準)」を開きます。

⚠️ 注意: 品目タイプ(Item / Service / Resource 等)は登録後に変更できません。特に「Item(在庫品)」と「Service(サービス)」の選択は在庫管理の有無に直結するため、登録前に必ず確認してください。

  1. 新規」ボタンをクリック
  2. 基本情報を入力:
    • 検索キー: 品目コード(ユニーク)
    • 名称: 品目名
    • 品目カテゴリ: カテゴリを選択(会計パラメータの初期値が決まる)
    • 品目タイプ: 品目(Item)、サービス(Service)、資源(Resource)等
    • 数量単位: 在庫管理の基本単位
    • 税カテゴリ: 適用する税カテゴリ
  3. 必要に応じて追加情報を入力:
    • 在庫管理: 在庫管理する場合にチェック
    • 販売対象: 販売可能な場合にチェック
    • 購買対象: 購買可能な場合にチェック
    • 属性セット: ロット・シリアル番号管理する場合に選択
  4. 保存」をクリック
  1. 価格」タブに移動
  2. 各価格表に対して価格を登録:
    • 価格表バージョン: 対象の価格表バージョン
    • 定価: 標準小売価格
    • 標準単価: 標準販売単価
    • 最低価格: 最低販売価格(これ以下では販売不可)
  1. 購買情報」タブに移動
  2. 仕入先ごとの購買情報を登録:
    • 仕入先: 仕入先を選択
    • 仕入先品目コード: 仕入先側の品目コード
    • 最低発注数量: 最小発注ロット
    • 仕入単価: 仕入先の販売単価
    • 納品リードタイム: 発注から納品までの日数
項目名必須説明
検索キー必須文字列品目コード(ユニーク識別子)
名称必須文字列品目名
品目カテゴリ必須選択品目の分類カテゴリ
品目タイプ必須リストItem(在庫品)、Service、Resource 等
数量単位必須選択基本数量単位(個、kg、m 等)
税カテゴリ必須選択税計算のカテゴリ
在庫管理-チェック在庫数量を管理するか
販売対象-チェック販売可能か
購買対象-チェック購買可能か
属性セット-選択ロット・シリアル番号等の属性管理
重量-数値品目の重量
容量-数値品目の容量
タイプ在庫管理用途例
Item(品目)あり商品、原材料、完成品
Service(サービス)なしコンサルティング、保守サービス
Resource(資源)なし会議室、機材(リソース予約)
Expense Type(経費)なし旅費、交通費

品目マスタの「アクティブ」チェックを外します。無効化した品目は新規伝票で選択できなくなりますが、既存データはそのまま保持されます。

Q. 在庫数量はどこで確認できますか?

Section titled “Q. 在庫数量はどこで確認できますか?”

「現在庫数量管理台帳」タブで倉庫・保管場所ごとの在庫数量を確認できます。また、メニュー「在庫管理 > 在庫トランザクション」フォームで詳細な入出庫履歴を照会できます。


As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。

OSS ERP導入サービスの詳細はこちら


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

画面レイアウト(ヘッダータブ)

Section titled “画面レイアウト(ヘッダータブ)”
┌─ 品目マスタ(Product)───────────────────────────────────────────────────┐
│ │
│ クライアント [▼ Table Direct] 組織 [▼ Table Direct] │
│ 検索キー [________________] 名前 [________________] │
│ 説明 [_______________________________________________] │
│ │
│ ── 基本情報 ────────────────────────────────────────────────────────── │
│ 品目カテゴリ [▼ Table Direct] 品目タイプ [▼ List] │
│ 数量単位 [▼ Table Direct] 税カテゴリ [▼ Table Direct] │
│ 在庫管理 [☐] 販売 [☐] 購買 [☐] BOM [☐] │
│ │
│ ── 属性・分類 ──────────────────────────────────────────────────────── │
│ 属性セット [▼ Table Direct] 属性セットインスタンス [▼] │
│ 製品コード [________________] UPC/EAN [________________] │
│ 重量 [_________] 容量 [_________] │
│ │
│ [品目] [BOM] [代替品] [購買情報] [価格] [会計] [在庫] ...他8タブ │
└──────────────────────────────────────────────────────────────────────────┘

📌 ポイント: この図はADメタデータ(AD_Field.XPosition, IsSameLine)から再現した実際のUI配置です。画面は2カラム構成で、左列(XPosition=1)と右列(XPosition=4)にフィールドが配置されます。

品目マスタはマスタデータ型のウィンドウで、M_Product テーブルに格納されます。品目(物品、サービス、リソース等)の基本情報を管理し、販売・購買・在庫・製造の全業務モジュールから参照される中核マスタです。MProduct クラス(1,204行)は ImmutablePOSupport を実装し、キャッシュによる高速参照をサポートしています。Document 型ではありません。

classDiagram
    class MProduct {
        +beforeSave() boolean
        +afterSave() boolean
        +getProductType() String
        +isBOM() boolean
        +isStocked() boolean
        +get(ctx, M_Product_ID) MProduct
    }
    class X_M_Product {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class ImmutablePOSupport {
        <<interface>>
    }
    MProduct --|> X_M_Product
    X_M_Product --|> PO
    MProduct ..|> ImmutablePOSupport
    MProduct --> MProductPrice : has many
    MProduct --> MProductBOM : has many
    MProduct --> MStorageOnHand : inventory

+beforeSave() boolean +afterSave() boolean +getProductType() String +isBOM() boolean +isStocked() boolean +get(ctx, M_Product_ID) MProduct <> <> <> > X_M_Product X_M_Product --

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

📌 ポイント: MProduct クラスは ImmutablePOSupport を実装しており、MProduct.get(ctx, M_Product_ID) でキャッシュ経由の高速参照が可能です。品目情報を繰り返し参照する処理(明細行の一括処理など)では、DB クエリを毎回発行せずこのキャッシュメソッドを使用してください。キャッシュの無効化は MProduct.get()reload=true オプションで行います。

カラム名必須説明備考
M_Product_IDIDPK品目ID主キー
AD_Client_IDTableDirectYクライアント
AD_Org_IDTableDirectY組織
ValueStringY検索キーUNIQUE
NameStringY品目名
DescriptionTextN説明
ProductTypeListY品目タイプI=物品, S=サービス, R=リソース, E=経費
M_Product_Category_IDTableDirectY品目カテゴリ会計設定の基準
C_UOM_IDTableDirectY単位基本単位
C_TaxCategory_IDTableDirectY税カテゴリ
IsStockedYesNoY在庫管理対象
IsBOMYesNoYBOM(部品表)
IsPurchasedYesNoY購買品目
IsSoldYesNoY販売品目
IsSummaryYesNoYサマリー品目
IsActiveYesNoYアクティブ
M_AttributeSet_IDTableDirectN属性セットロット/シリアル管理
M_Locator_IDTableDirectNデフォルトロケーター
WeightNumberN重量
VolumeNumberN容積
UnitsPerPackIntegerN荷姿入数
カラム名必須説明
M_Product_IDIDPK品目FK
C_BPartner_IDSearchPK仕入先FK
VendorProductNoStringN仕入先品番
PriceListAmountN仕入定価
PricePOAmountN仕入標準単価
DeliveryTime_PromisedIntegerN納期(日数)
Order_MinQuantityN最小発注数量
Order_PackQuantityN発注単位数量
erDiagram
    M_Product ||--o{ M_ProductPrice : "pricing"
    M_Product ||--o{ M_Product_PO : "vendor info"
    M_Product ||--o{ M_Product_BOM : "BOM"
    M_Product ||--o{ M_StorageOnHand : "inventory"
    M_Product ||--o{ M_Replenish : "replenishment"
    M_Product }o--|| M_Product_Category : "category"
    M_Product }o--|| C_UOM : "unit"
    M_Product }o--o| M_AttributeSet : "attributes"
    M_ProductPrice }o--|| M_PriceList_Version : "price list"
    M_Product ||--o{ C_OrderLine : "ordered"
    M_Product ||--o{ M_InOutLine : "shipped/received"
    M_Product ||--o{ C_InvoiceLine : "invoiced"

vendor info price list shipped/received

MProduct.beforeSave() の主要処理:

  1. 検索キーの一意性チェック: Value の重複チェック
  2. 在庫管理の整合性: サービス品目(ProductType=S)は IsStocked=N に強制
  3. UOM の整合性: 基本単位の妥当性チェック
  4. BOM の整合性: BOMフラグ変更時の影響チェック
  5. 属性セットの整合性: 在庫管理品目の属性セット設定検証
  1. 新規品目の場合、デフォルトの会計設定を自動生成(M_Product_Acct
  2. 品目カテゴリの会計テンプレートから勘定科目を設定
  3. 価格表への自動登録(設定がある場合)

⚠️ 注意: afterSave() で生成される M_Product_Acct は品目カテゴリの会計テンプレートから自動コピーされます。品目カテゴリを後から変更しても既存品目の M_Product_Acct は自動更新されません。カテゴリ変更後に会計設定も一括更新したい場合は専用のカスタムプロセスが必要です。

タイプコード在庫管理説明
物品I (Item)有形の商品・部品
サービスS (Service)不可役務・工事等
リソースR (Resource)不可人的・設備リソース
経費E (Expense)不可経費項目

品目に IsBOM=Y を設定すると、M_Product_BOM テーブルで構成部品を定義可能:

  • 親品目と子品目の階層構造
  • 数量・単位の定義
  • BOM展開による所要量計算

M_Replenish テーブルで倉庫ごとの補充ルールを定義:

  • 補充タイプ: 最小/最大在庫、発注点、カスタム
  • 補充元: 購買発注、在庫移動
  • ReplenishReport プロセスで補充提案を自動生成

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

Section titled “拡張ポイント(カスタマイズ箇所)”

品目マスタに独自バリデーションを追加する最も安全な方法:

public class CustomProductValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof MProduct) {
MProduct product = (MProduct) po;
if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) {
// 例: 品目名の命名規則チェック
if (product.getValue() != null && !product.getValue().matches("[A-Z]{2}-\\d{6}")) {
throw new AdempiereException("品目コードは「XX-000000」形式で入力してください");
}
}
}
return null;
}
}

IPricingRule インターフェースを実装することで、独自の価格計算ロジック(数量割引、得意先別価格等)を追加可能。

🔧 カスタマイズ: IPricingRule は OSGi サービスとして登録することで、コアの価格計算エンジン(MPriceListVersion / MProductPrice)を変更せずにカスタムルールを追加できます。実装参考: org.adempiere.base/src/org/adempiere/model/IPricingRule.java。数量割引・得意先グループ別価格・期間限定価格などに活用できます。

ロット番号、シリアル番号、有効期限等を M_AttributeSet / M_AttributeSetInstance で管理。品目単位で追跡レベルを設定可能。

💡 ヒント: 属性セット(M_AttributeSet)の追跡レベルには「なし」「ロット」「シリアル」「両方」があります。追跡レベルを変更すると既存の M_AttributeSetInstance レコードに影響する場合があります。変更前に既存在庫がゼロであることを確認してから実施してください。

プロセス名説明
品目コピー既存品目をベースに新規品目を作成
BOM展開BOM構成品の階層展開
補充レポート補充対象品目の一覧と発注提案
価格一括更新価格表の一括更新処理

iDempiereの品目マスタは Model Validator や Callout で安全にカスタマイズできます。 品目コード体系、価格計算、属性管理をコア改変なしで拡張可能です。

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

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