iDempiere オークショントピックタイプの使い方|販売管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。
オークショントピックタイプは、入札トピックがどの形式のオークションとして扱われるかを決めるマスタです。オークション形式(アクションタイプ)、使用する価格表、参加費に相当するメンバーシップ品目、および出品対象の品目をここで定義し、その配下にカテゴリを紐づけます。
⚠️ 注意: この画面は iDempiere 13 標準では無効化されています(旧バージョンからの互換用)。標準メニューにも登録されていません。オークション関連テーブル(
B_*)にはビジネスロジッククラスが存在せず、新規の業務設計での利用は推奨されません。
📌 ポイント: トピックタイプは
AccessLevel=2(クライアントレベル)のテーブルです。組織ごとに別々のトピックタイプを持つ設計にはなっておらず、テナント全体で共有される前提のマスタです。
オークショントピックタイプでできること
Section titled “オークショントピックタイプでできること”- オークション形式(アクションタイプ)の定義
- オークションで使用する価格表の指定
- 参加に必要なメンバーシップ品目の指定(参加費の価格決定に使用)
- 出品対象となる品目の指定
- タイプ配下のカテゴリ定義(分類の第 2 階層)
- コメント/ヒント(Help)による運用メモの付与
オークショントピックタイプは 2 タブ構成です。
| タブ名 | テーブル | 階層 | 項目数 | 役割 |
|---|---|---|---|---|
| トピックタイプ | B_TopicType | 0 | 10項目 | オークション形式・価格表・品目 |
| タイプカテゴリ | B_TopicCategory | 1 | 6項目 | タイプ配下のカテゴリ |
graph TD
subgraph "オークショントピックタイプ(Window ID: 308・標準では無効)"
T1["🏷 トピックタイプ<br/>B_TopicType<br/>10項目"]
T2[" └ タイプカテゴリ<br/> B_TopicCategory<br/> 6項目"]
end
T1 --> T2
💡 ヒント: 入札トピックはタイプとカテゴリの両方が必須項目です。トピックを作る前に、必ずこの画面でタイプと配下カテゴリを 1 組以上登録しておく必要があります。
基本操作手順
Section titled “基本操作手順”graph TD
A["⚙️ 前提: 価格表と品目を先に登録"] --> B["➕ トピックタイプを新規作成<br/>(名称)"]
B --> C["🔨 アクションタイプを選択<br/>(オークション形式)"]
C --> D["💴 価格表を指定"]
D --> E["🎟 メンバーシップ品目を指定<br/>(参加費の価格決定に使用)"]
E --> F["📦 対象品目を指定"]
F --> G["💾 保存"]
G --> H["📂 タイプカテゴリタブで<br/>カテゴリを登録"]
H --> I["📌 入札トピックで<br/>タイプ・カテゴリを選択可能に"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”標準メニューには登録されていません(*(標準メニュー未登録 / 間接使用)*)。参照する場合はシステム管理者権限で「ウィンドウ・タブ・フィールド」から AD_Window_ID: 308 を有効化する必要があります。
新規登録(トピックタイプ)
Section titled “新規登録(トピックタイプ)”- 「新規」ボタンをクリック
- 必須項目を入力:
- 名称: トピックタイプ名(最大 60 文字)
- アクションタイプ: オークション形式(リスト選択)
- 価格表: 使用する価格表
- メンバーシップ: 参加費の価格決定に使う品目
- 品目: 出品対象の品目
- 任意項目(説明・コメント(最大 2000 文字))を入力
- 「保存」をクリック
⚠️ 注意: このタブは必須項目が多く、価格表・メンバーシップ・品目のすべてが必須 です。オークションを試しに触るだけの場合でも、事前に価格表と 2 種類の品目(メンバーシップ用・出品用)を用意しておく必要があります。
タイプカテゴリの登録
Section titled “タイプカテゴリの登録”- 「タイプカテゴリ」タブに移動
- 「新規」でカテゴリを追加
- 名称(必須)と 説明(任意)を入力
- 「保存」をクリック
項目リファレンス
Section titled “項目リファレンス”トピックタイプタブ
Section titled “トピックタイプタブ”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| クライアント | AD_Client_ID | 必須 | 選択 | テナント(自動セット) |
| 組織 | AD_Org_ID | 必須 | 選択 | 組織(自動セット) |
| 名称 | Name | 必須 | 文字列(60) | タイプ名(識別子) |
| 説明 | Description | - | 文字列(255) | 補足説明 |
| コメント | Help | - | 文字列(2000) | 運用上のヒント |
| 有効 | IsActive | 必須 | チェック | 無効化する場合はチェックを外す |
| アクションタイプ | AuctionType | 必須 | リスト(1) | オークション形式 |
| 価格表 | M_PriceList_ID | 必須 | 選択 | 使用する価格表 |
| メンバーシップ | M_ProductMember_ID | 必須 | 選択 | 参加費の価格決定に使う品目 |
| 品目 | M_Product_ID | 必須 | 選択 | 出品対象の品目 |
タイプカテゴリタブ
Section titled “タイプカテゴリタブ”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| トピックタイプ | B_TopicType_ID | 必須 | 選択 | 親のトピックタイプ |
| 名称 | Name | 必須 | 文字列(60) | カテゴリ名(識別子) |
| 説明 | Description | - | 文字列(255) | 補足説明 |
| 有効 | IsActive | 必須 | チェック | 無効化する場合はチェックを外す |
トピックタイプの位置づけ
Section titled “トピックタイプの位置づけ”graph TD
A["価格表<br/>M_PriceList"] --> B["トピックタイプ<br/>B_TopicType"]
C["品目マスタ<br/>M_Product"] --> B
D["メンバーシップ品目<br/>M_ProductMember"] --> B
B --> E["タイプカテゴリ<br/>B_TopicCategory"]
B --> F["入札トピック<br/>B_Topic"]
E --> F
F --> G["入札 / オファー<br/>B_Bid / B_Offer"]
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. メニューにこの画面が見当たりません。
Section titled “Q. メニューにこの画面が見当たりません。”iDempiere 13 標準ではこのウィンドウは無効化されており、メニューにも登録されていません。オークション機能全体(B_* テーブル群)が旧バージョンからの互換用として残されているためです。
Q. アクションタイプ(AuctionType)にはどんな値がありますか?
Section titled “Q. アクションタイプ(AuctionType)にはどんな値がありますか?”AuctionType は 1 文字のリスト型カラムで、選択肢は AD の参照リストで管理されています。ソースコード上の定数定義からは値を確定できなかったため、実際の選択肢は稼働中のシステムで「参照」→ 該当リストの内容を確認してください(要確認)。
Q. メンバーシップと品目の違いは何ですか?
Section titled “Q. メンバーシップと品目の違いは何ですか?”M_ProductMember_ID は「トピックタイプの参加費(メンバーシップ料金)の価格を決定するための品目」、M_Product_ID は「オークションの対象となる品目」です。いずれも M_Product への参照ですが、役割が異なります。どちらも必須項目のため、参加費を取らない運用でもダミーの品目登録が必要になります。
Q. カテゴリは階層化できますか?
Section titled “Q. カテゴリは階層化できますか?”できません。B_TopicCategory は B_TopicType_ID を親に持つ 2 階層目までの構造で、カテゴリ同士の親子関係を表すカラム(自己参照)は存在しません。
Q. トピックタイプを組織ごとに分けられますか?
Section titled “Q. トピックタイプを組織ごとに分けられますか?”テーブルの AccessLevel が 2(クライアントレベル)のため、組織単位で分離する設計にはなっていません。テナント全体で共有されるマスタとして扱ってください。
🛠 技術仕様(開発者向け)
オークショントピックタイプはマスタデータ型のウィンドウ(AD_Window_ID: 308)で、B_TopicType(ヘッダー)と B_TopicCategory(明細)から構成されます。両テーブルとも AccessLevel=2(クライアントレベル)/IsDeleteable=Y / IsHighVolume=N です。
M クラス(ビジネスロジッククラス)は存在しません。 提供されるのは自動生成クラス X_B_TopicType / X_B_TopicCategory とインターフェース I_B_TopicType / I_B_TopicCategory のみで、beforeSave() / afterSave() によるコア側の検証・派生処理はありません。制約は DB のカラム定義と AD の必須設定に限定されます。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_B_TopicType {
<<generated>>
+setAuctionType(String) void
+setM_PriceList_ID(int) void
+setM_ProductMember_ID(int) void
+setM_Product_ID(int) void
}
class X_B_TopicCategory {
<<generated>>
+setB_TopicType_ID(int) void
+setName(String) void
}
class PO {
<<abstract>>
}
class I_B_TopicType {
<<interface>>
}
X_B_TopicType --|> PO
X_B_TopicCategory --|> PO
X_B_TopicType ..|> I_B_TopicType
X_B_TopicType --> X_B_TopicCategory : has many
X_B_TopicType --> X_B_Topic : referenced by
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_B_TopicType.java / X_B_TopicCategory.java
関連DBテーブル
Section titled “関連DBテーブル”B_TopicType(トピックタイプ)
Section titled “B_TopicType(トピックタイプ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| B_TopicType_ID | ID | PK | トピックタイプID | 主キー |
| B_TopicType_UU | UUID | N | UUID | |
| AD_Client_ID | Table Direct | Y | クライアント | default @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | default @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 識別子(IsIdentifier=Y) |
| Description | String(255) | N | 説明 | |
| Help | String(2000) | N | コメント/ヒント | |
| IsActive | Yes-No | Y | 有効 | default Y |
| AuctionType | List(1) | Y | アクションタイプ | AD 参照リスト |
| M_PriceList_ID | Table Direct | Y | 価格表 | |
| M_ProductMember_ID | Search | Y | メンバーシップ品目 | M_Product への参照 |
| M_Product_ID | Search | Y | 品目 | 出品対象 |
B_TopicCategory(タイプカテゴリ)
Section titled “B_TopicCategory(タイプカテゴリ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| B_TopicCategory_ID | ID | PK | カテゴリID | 主キー |
| B_TopicCategory_UU | UUID | N | UUID | |
| B_TopicType_ID | Table Direct | Y | トピックタイプFK | 親 |
| Name | String(60) | Y | 名称 | 識別子 |
| Description | String(255) | N | 説明 | |
| IsActive | Yes-No | Y | 有効 | default Y |
erDiagram
B_TopicType ||--o{ B_TopicCategory : "categories"
B_TopicType ||--o{ B_Topic : "type of topic"
B_TopicCategory ||--o{ B_Topic : "category of topic"
B_TopicType }o--|| M_PriceList : "pricing"
B_TopicType }o--|| M_Product : "auctioned product"
B_TopicType }o--|| M_Product : "membership product"
ビジネスロジック
Section titled “ビジネスロジック”コア実装にビジネスロジックはありません。確認できる制約は次のとおりです。
- 必須制約:
Name/AuctionType/M_PriceList_ID/M_ProductMember_ID/M_Product_IDが NOT NULL - 参照整合性:
B_TopicCategory.B_TopicType_IDおよびB_Topic.B_TopicType_ID/B_Topic.B_TopicCategory_IDの外部キー - 既定値:
IsActive='Y'、Created/UpdatedにSYSDATE、クライアント/組織にコンテキスト変数(@#AD_Client_ID@/@#AD_Org_ID@) - カテゴリとタイプの整合チェックなし: 入札トピックで「タイプ A」と「タイプ B 配下のカテゴリ」という不整合な組合せを選んでも、コア側で検証されません
⚠️ 注意:
B_TopicのB_TopicType_IDとB_TopicCategory_IDはそれぞれ独立した Table Direct 参照です。カテゴリが選択中のタイプに属するかを検証するロジックはコアに無いため、実運用するなら Callout または Model Validator での整合チェックが必須になります。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”タイプとカテゴリの整合性を担保する例です。
public class CustomTopicValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (MTable.getTableName(po.getCtx(), po.get_Table_ID()).equals("B_Topic")) { if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) { int typeId = po.get_ValueAsInt("B_TopicType_ID"); int catId = po.get_ValueAsInt("B_TopicCategory_ID"); int catTypeId = DB.getSQLValue(po.get_TrxName(), "SELECT B_TopicType_ID FROM B_TopicCategory WHERE B_TopicCategory_ID=?", catId); if (typeId != catTypeId) { throw new AdempiereException("カテゴリが選択したトピックタイプに属していません"); } } } return null; }
@Override public String docValidate(PO po, int timing) { return null; // B_TopicType は Document 型ではないため不要 }}Callout
Section titled “Callout”B_TopicType / B_TopicCategory の各カラムには Callout が設定されていません(gw_column.tsv の callout 列がすべて空)。トピック画面でタイプ選択時にカテゴリの選択肢を絞り込みたい場合は、AD_Field の動的バリデーション(AD_Val_Rule)を設定するか、IColumnCallout を実装します。
関連プロセス
Section titled “関連プロセス”このウィンドウに紐づく標準プロセスはありません。Processing / DocAction カラムを持たない純粋なマスタです。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”オークション機能を活かすには、形式ごとの落札ルールや参加資格の判定を作り込む必要があります。標準テーブルをそのまま使うか、現行機能をベースに再設計するかの判断からご相談いただけます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。