iDempiere 価格表の使い方|在庫管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 在庫管理の全体像: 在庫管理の業務フロー全体図 も合わせてご覧ください。
価格表は、品目の販売価格・仕入価格を定義するマスタです。伝票の通貨と税の扱い(税込/税抜)は価格表で決まり、受注・発注・請求書の明細行に単価を自動セットします。「価格表 → 価格表バージョン → 品目価格」の3階層で構成され、日付の異なる価格改定をバージョンとして並行管理できます。
📌 ポイント: 伝票に適用されるのは「伝票日付以前で最も新しい有効開始日を持つバージョン」です。価格改定は既存バージョンを書き換えるのではなく、新しい有効開始日のバージョンを追加するのが基本です。
価格表でできること
Section titled “価格表でできること”- 品目ごとの3価格(営業定価・実績価格・限度価格)の管理
- 価格表バージョンによる期間別の価格改定管理(有効開始日ベース)
- 割引スキーマ(プライスリストスキーマ)を使った品目価格の自動生成
- 販売用/購買用価格表の使い分け(通貨・税込/税抜の指定)
- 限度価格を下回る販売を防ぐ限度価格チェック
- 取引先・数量分岐ごとの個別価格設定(取引先別分岐価格)
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 価格表 | M_PriceList | 約12項目 | ヘッダー(名称・通貨・税込・販売用・限度価格チェック等) |
| バージョン | M_PriceList_Version | 約10項目 | 有効開始日ごとの価格セット。プライスリストスキーマと自動作成ボタン |
| 品目価格 | M_ProductPrice | 約8項目 | 品目ごとの3価格(営業定価・実績価格・限度価格) |
| 取引先別分岐価格設定 | M_ProductPriceVendorBreak | 約10項目 | 取引先×数量分岐ごとの個別価格 |
| 翻訳 | M_PriceList_Version_Trl / M_PriceList_Trl | 各数項目 | 多言語対応の翻訳 |
💡 ヒント: 品目価格はこの画面から手入力もできますが、品目数が多い場合はバージョンタブの「品目価格自動作成」ボタンで一括生成するのが実務の基本です。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>在庫管理 > 品目マスタ管理 > 価格表"] --> B["➕ 価格表ヘッダーを登録<br/>(名称・通貨・販売用/購買用・税込)"]
B --> C["📅 バージョンタブで<br/>有効開始日と<br/>プライスリストスキーマを設定"]
C --> D{価格の入力方法}
D -->|自動生成| E["⚙️ 品目価格自動作成ボタン<br/>(ベース価格表 or 購買情報から計算)"]
D -->|手入力| F["✏️ 品目価格タブで<br/>品目ごとに3価格を入力"]
E --> G["🔍 品目価格タブで<br/>生成結果を確認・微調整"]
F --> H["💾 保存"]
G --> H
H --> I["🔗 取引先マスタに<br/>販売/購買価格表として設定"]
アクセス方法
Section titled “アクセス方法”メニューから「在庫管理 > 品目マスタ管理 > 価格表」を開きます。
新規登録(価格表ヘッダー)
Section titled “新規登録(価格表ヘッダー)”- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 名称: 価格表名(例:
標準販売価格表) - 通貨: 価格表の通貨(伝票の通貨がこれで決まります)
- 販売用価格表: 販売用ならチェック(外すと購買用)
- 税込: 価格に税を含める場合にチェック
- 価格精度: 価格の小数桁数(デフォルト2)
- 限度価格チェック: 限度価格未満の価格入力を禁止する場合にチェック
- 名称: 価格表名(例:
- 「保存」をクリック
バージョンの作成と品目価格の自動生成
Section titled “バージョンの作成と品目価格の自動生成”- 「バージョン」タブに移動し「新規」
- 以下を入力:
- 名称: バージョン名(デフォルトは当日日付)
- 有効開始日: このバージョンが有効になる日(この日を含む)
- プライスリストスキーマ: 価格計算ルール(必須)
- ベース価格表: 計算元にする既存バージョン(未指定なら品目の購買情報が計算元)
- 「保存」後、「品目価格自動作成」ボタンを実行
- 「品目価格」タブで生成された3価格を確認し、必要に応じて個別修正
品目価格の手入力
Section titled “品目価格の手入力”- 「品目価格」タブで「新規」
- 品目を選択し、3価格を入力:
- 営業定価(PriceList): いわゆる定価・希望小売価格
- 実績価格(PriceStd): 伝票に既定でセットされる標準単価
- 限度価格(PriceLimit): 下限価格(限度価格チェック有効時はこれ未満で伝票エラー)
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | 価格表の名称 |
| 通貨 | 必須 | 選択 | 価格表の通貨。伝票通貨がこれで決まる |
| 販売用価格表 | 必須 | チェック | ON=販売用、OFF=購買用 |
| 税込 | 必須 | チェック | 価格に税を含むか |
| 価格精度 | 必須 | 整数 | 価格の小数桁数(デフォルト2) |
| 限度価格チェック | 必須 | チェック | 限度価格未満の価格を許可しない |
| デフォルト | 必須 | チェック | 既定の価格表として使用 |
| ベース価格表 | - | 選択 | この価格表に品目が無い場合に参照する価格表 |
バージョンタブ
Section titled “バージョンタブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | バージョン名(デフォルト=当日日付) |
| 有効開始日 | 必須 | 日付 | この日(当日を含む)から有効 |
| プライスリストスキーマ | 必須 | 選択 | 価格自動生成の計算ルール |
| ベース価格表 | - | 選択 | 計算元バージョン。未指定なら品目の購買情報を使用 |
| 品目価格自動作成 | - | ボタン | 品目価格を一括生成するプロセスを起動 |
全項目は 全項目一覧はリファレンス参照 をご覧ください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 伝票にはどのバージョンの価格が適用されますか?
Section titled “Q. 伝票にはどのバージョンの価格が適用されますか?”伝票日付以前(ValidFrom <= 伝票日付)の有効なバージョンのうち、有効開始日が最も新しいものが自動選択されます。未来日付のバージョンを事前に登録しておけば、その日から自動的に新価格へ切り替わります。
Q. 品目価格自動作成の計算元は何ですか?
Section titled “Q. 品目価格自動作成の計算元は何ですか?”バージョンで「ベース価格表」を指定した場合はそのバージョンの品目価格、未指定の場合は品目マスタの購買情報(M_Product_PO)の価格が計算元になります。計算元価格にプライスリストスキーマの計算ルール(割増・割引・丸め)を適用して3価格を生成します。
Q. 価格表に登録の無い品目を伝票で選ぶとどうなりますか?
Section titled “Q. 価格表に登録の無い品目を伝票で選ぶとどうなりますか?”ヘッダーの「ベース価格表」が設定されていれば、そちらの価格が代わりに参照されます。ベース価格表も無ければ価格が取得できず、明細で価格0のまま手入力が必要になります。
Q. 限度価格チェックはどこで効きますか?
Section titled “Q. 限度価格チェックはどこで効きますか?”「限度価格チェック」が ON の価格表を使う伝票では、明細単価が限度価格(PriceLimit)を下回ると保存・完了時にエラーになります。値引き権限の統制に利用できます。
Q. 取引先別分岐価格設定タブは何に使いますか?
Section titled “Q. 取引先別分岐価格設定タブは何に使いますか?”同じ品目でも「この取引先には」「この数量(分岐値)以上なら」この3価格、という個別価格を定義するタブです。取引先を空欄にすれば全取引先共通の数量分岐価格になります。
🛠 技術仕様(開発者向け)
価格表は M_PriceList(ヘッダー)→ M_PriceList_Version(バージョン)→ M_ProductPrice(品目価格)の3階層マスタです。モデルクラスは MPriceList(377行)、MPriceListVersion(211行)、MProductPrice(213行)で、いずれもキャッシュ参照用の markImmutable() を持ちます。M_ProductPriceVendorBreak は生成クラス X_M_ProductPriceVendorBreak のみ(M クラス無し)。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MPriceList {
+get(M_PriceList_ID) MPriceList
+getDefault(ctx, IsSOPriceList) MPriceList
+getPricePrecision(ctx, M_PriceList_ID) int
+getPriceListVersion(Timestamp valid) MPriceListVersion
+getStandardPrecision() int
}
class MPriceListVersion {
+getPriceList() MPriceList
+getProductPrice(boolean refresh) MProductPrice[]
+setName() void
}
class MProductPrice {
+get(ctx, PLV_ID, Product_ID) MProductPrice
+setPrices(PriceList, PriceStd, PriceLimit) void
}
class X_M_ProductPriceVendorBreak {
<<generated>>
}
class PO {
<<abstract>>
}
MPriceList --|> PO
MPriceList --> MPriceListVersion : has many
MPriceListVersion --> MProductPrice : has many
MPriceListVersion --> X_M_ProductPriceVendorBreak : has many
MPriceListVersion --> MDiscountSchema : calculation rule
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MPriceList.java / MPriceListVersion.java / MProductPrice.java
関連DBテーブル
Section titled “関連DBテーブル”M_PriceList(価格表)
Section titled “M_PriceList(価格表)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_PriceList_ID | ID | PK | 価格表ID | 主キー |
| Name | String(60) | Y | 名称 | 識別子 |
| C_Currency_ID | TableDirect | Y | 通貨 | 伝票通貨を決定 |
| IsSOPriceList | YesNo | Y | 販売用価格表 | |
| IsTaxIncluded | YesNo | Y | 税込 | |
| EnforcePriceLimit | YesNo | Y | 限度価格チェック | |
| PricePrecision | Integer | Y | 価格精度 | デフォルト2 |
| IsDefault | YesNo | Y | デフォルト | |
| BasePriceList_ID | Table | N | ベース価格表 | 品目未登録時のフォールバック |
M_PriceList_Version(価格表バージョン)
Section titled “M_PriceList_Version(価格表バージョン)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_PriceList_Version_ID | ID | PK | バージョンID | |
| M_PriceList_ID | TableDirect | Y | 価格表FK | 親リンク |
| Name | String(60) | Y | 名称 | デフォルト @#Date@ |
| ValidFrom | Date | Y | 有効開始日 | デフォルト @#Date@ |
| M_DiscountSchema_ID | Table | Y | プライスリストスキーマ | 価格生成ルール |
| M_Pricelist_Version_Base_ID | Table | N | ベース価格表バージョン | 計算元 |
| ProcCreate | Button | N | 品目価格自動作成 | M_PriceList_Create 起動 |
M_ProductPrice(品目価格)
Section titled “M_ProductPrice(品目価格)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| M_PriceList_Version_ID | TableDirect | Y | バージョンFK(親) |
| M_Product_ID | Search | Y | 品目FK |
| PriceList | Costs+Prices | Y | 営業定価 |
| PriceStd | Costs+Prices | Y | 実績価格(標準単価) |
| PriceLimit | Costs+Prices | Y | 限度価格 |
M_ProductPriceVendorBreak(取引先別分岐価格)
Section titled “M_ProductPriceVendorBreak(取引先別分岐価格)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| M_PriceList_Version_ID | TableDirect | Y | バージョンFK |
| M_Product_ID | Search | Y | 品目FK |
| C_BPartner_ID | Search | N | 取引先(空欄=全取引先) |
| BreakValue | Number | Y | 分岐値(この値以上で適用) |
| PriceList / PriceStd / PriceLimit | Costs+Prices | Y | 3価格 |
erDiagram
M_PriceList ||--o{ M_PriceList_Version : "versions"
M_PriceList_Version ||--o{ M_ProductPrice : "product prices"
M_PriceList_Version ||--o{ M_ProductPriceVendorBreak : "BP break prices"
M_PriceList_Version }o--|| M_DiscountSchema : "calculation rule"
M_ProductPrice }o--|| M_Product : "product"
M_PriceList ||--o{ C_BPartner : "default price list"
M_PriceList ||--o{ C_Order : "determines currency/tax"
ビジネスロジック
Section titled “ビジネスロジック”バージョン選択(MPriceList.getPriceListVersion)
Section titled “バージョン選択(MPriceList.getPriceListVersion)”伝票日付に対する適用バージョンは次の条件で決定されます(ソース確認済み):
M_PriceList_ID=? AND TRUNC(ValidFrom)<=? -- 伝票日付ORDER BY ValidFrom DESC -- 最初の1件(最も新しい有効開始日)有効フラグ ON のレコードのみ対象です。該当バージョンが無い場合は null(価格取得不可)になります。
品目価格自動作成(M_PriceList_Create プロセス)
Section titled “品目価格自動作成(M_PriceList_Create プロセス)”バージョンタブの「品目価格自動作成」ボタンは M_PriceList_Create(543行、org.adempiere.base.process/src/org/compiere/process/M_PriceList_Create.java)を起動します。主要処理:
- 購買情報のクレンジング:
M_Product_POの NULL 価格を 0 に補正し、PricePO未設定ならPriceLastPOをコピー。現在の仕入先(IsCurrentVendor)が1件も無い品目には仕入先を自動設定 - 対象品目の抽出: プライスリストスキーマの明細行(
M_DiscountSchemaLine)ごとに、ベース価格表バージョン(未指定時はM_Product_PO)から対象品目を抽出 - 価格計算: スキーマ行の変換ルール(割増・割引・丸め)を適用して営業定価・実績価格・限度価格を生成
📌 ポイント: 価格生成に使うのは割引スキーマの「明細行(M_DiscountSchemaLine)」で、受発注時の値引計算に使う「割引条件設定(M_DiscountSchemaBreak)」とはテーブルが異なります。詳細は 割引スキーマ を参照してください。
価格参照(MProductPrice.get)
Section titled “価格参照(MProductPrice.get)”明細行の価格取得は MProductPrice.get(ctx, M_PriceList_Version_ID, M_Product_ID, trxName) で「バージョン×品目」の交差レコードを取得します。MPriceList.get() / getDefault() はキャッシュ経由の高速参照に対応しています。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”IPricingRule(価格計算エンジンの差し替え)
Section titled “IPricingRule(価格計算エンジンの差し替え)”IPricingRule インターフェースを OSGi サービスとして実装すると、標準の価格解決(価格表バージョン→品目価格)をコア改変なしで拡張できます。得意先グループ別価格・期間限定価格などに活用できます。
Model Validator
Section titled “Model Validator”M_ProductPrice の登録・変更に独自制約(例: 実績価格が限度価格を下回らないことの強制チェック)を追加する場合は ModelValidator の modelChange で TYPE_BEFORE_NEW / TYPE_BEFORE_CHANGE をフックします。このウィンドウの各テーブルに標準の Callout はありません(AD 定義確認済み)。
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| 品目価格自動作成(M_PriceList_Create) | ベース価格表または購買情報からスキーマ適用で品目価格を一括生成 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiereの価格表は IPricingRule や Model Validator により、独自の価格決定ロジックをコア改変なしで組み込めます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。