Skip to content

iDempiere オークショントピックタイプの使い方|販売管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。

オークショントピックタイプは、入札トピックがどの形式のオークションとして扱われるかを決めるマスタです。オークション形式(アクションタイプ)、使用する価格表、参加費に相当するメンバーシップ品目、および出品対象の品目をここで定義し、その配下にカテゴリを紐づけます。

⚠️ 注意: この画面は iDempiere 13 標準では無効化されています(旧バージョンからの互換用)。標準メニューにも登録されていません。オークション関連テーブル(B_*)にはビジネスロジッククラスが存在せず、新規の業務設計での利用は推奨されません。

📌 ポイント: トピックタイプは AccessLevel=2クライアントレベル)のテーブルです。組織ごとに別々のトピックタイプを持つ設計にはなっておらず、テナント全体で共有される前提のマスタです。

オークショントピックタイプでできること

Section titled “オークショントピックタイプでできること”
  • オークション形式(アクションタイプ)の定義
  • オークションで使用する価格表の指定
  • 参加に必要なメンバーシップ品目の指定(参加費の価格決定に使用)
  • 出品対象となる品目の指定
  • タイプ配下のカテゴリ定義(分類の第 2 階層)
  • コメント/ヒント(Help)による運用メモの付与

オークショントピックタイプは 2 タブ構成です。

タブ名テーブル階層項目数役割
トピックタイプB_TopicType010項目オークション形式・価格表・品目
タイプカテゴリB_TopicCategory16項目タイプ配下のカテゴリ
graph TD
    subgraph "オークショントピックタイプ(Window ID: 308・標準では無効)"
        T1["🏷 トピックタイプ<br/>B_TopicType<br/>10項目"]
        T2["&nbsp;&nbsp;└ タイプカテゴリ<br/>&nbsp;&nbsp;&nbsp;&nbsp;B_TopicCategory<br/>&nbsp;&nbsp;&nbsp;&nbsp;6項目"]
    end
    T1 --> T2

オークショントピックタイプ(Window ID: 308・標準では無効) トピックタイプ B_TopicType 10項目   └ タイプカテゴリ     B_TopicCategory     6項目

💡 ヒント: 入札トピックはタイプとカテゴリの両方が必須項目です。トピックを作る前に、必ずこの画面でタイプと配下カテゴリを 1 組以上登録しておく必要があります。

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 を有効化する必要があります。

  1. 新規」ボタンをクリック
  2. 必須項目を入力:
    • 名称: トピックタイプ名(最大 60 文字)
    • アクションタイプ: オークション形式(リスト選択)
    • 価格表: 使用する価格表
    • メンバーシップ: 参加費の価格決定に使う品目
    • 品目: 出品対象の品目
  3. 任意項目(説明コメント(最大 2000 文字))を入力
  4. 保存」をクリック

⚠️ 注意: このタブは必須項目が多く、価格表・メンバーシップ・品目のすべてが必須 です。オークションを試しに触るだけの場合でも、事前に価格表と 2 種類の品目(メンバーシップ用・出品用)を用意しておく必要があります。

  1. タイプカテゴリ」タブに移動
  2. 新規」でカテゴリを追加
  3. 名称(必須)と 説明(任意)を入力
  4. 保存」をクリック
項目名カラム必須説明
クライアントAD_Client_ID必須選択テナント(自動セット)
組織AD_Org_ID必須選択組織(自動セット)
名称Name必須文字列(60)タイプ名(識別子)
説明Description-文字列(255)補足説明
コメントHelp-文字列(2000)運用上のヒント
有効IsActive必須チェック無効化する場合はチェックを外す
アクションタイプAuctionType必須リスト(1)オークション形式
価格表M_PriceList_ID必須選択使用する価格表
メンバーシップM_ProductMember_ID必須選択参加費の価格決定に使う品目
品目M_Product_ID必須選択出品対象の品目
項目名カラム必須説明
トピックタイプB_TopicType_ID必須選択親のトピックタイプ
名称Name必須文字列(60)カテゴリ名(識別子)
説明Description-文字列(255)補足説明
有効IsActive必須チェック無効化する場合はチェックを外す

全項目一覧はリファレンス参照

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"]

価格表 M_PriceList トピックタイプ B_TopicType 品目マスタ M_Product メンバーシップ品目 M_ProductMember タイプカテゴリ B_TopicCategory 入札トピック B_Topic 入札 / オファー B_Bid / B_Offer

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_TopicCategoryB_TopicType_ID を親に持つ 2 階層目までの構造で、カテゴリ同士の親子関係を表すカラム(自己参照)は存在しません。

Q. トピックタイプを組織ごとに分けられますか?

Section titled “Q. トピックタイプを組織ごとに分けられますか?”

テーブルの AccessLevel2(クライアントレベル)のため、組織単位で分離する設計にはなっていません。テナント全体で共有されるマスタとして扱ってください。

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

オークショントピックタイプはマスタデータ型のウィンドウ(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 の必須設定に限定されます。

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

<> +setAuctionType(String) void +setM_PriceList_ID(int) void +setM_ProductMember_ID(int) void +setM_Product_ID(int) void <> +setB_TopicType_ID(int) void +setName(String) void <> <> > PO X_B_TopicCategory --

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

カラム名必須説明備考
B_TopicType_IDIDPKトピックタイプID主キー
B_TopicType_UUUUIDNUUID
AD_Client_IDTable DirectYクライアントdefault @#AD_Client_ID@
AD_Org_IDTable DirectY組織default @#AD_Org_ID@
NameString(60)Y名称識別子(IsIdentifier=Y)
DescriptionString(255)N説明
HelpString(2000)Nコメント/ヒント
IsActiveYes-NoY有効default Y
AuctionTypeList(1)YアクションタイプAD 参照リスト
M_PriceList_IDTable DirectY価格表
M_ProductMember_IDSearchYメンバーシップ品目M_Product への参照
M_Product_IDSearchY品目出品対象

B_TopicCategory(タイプカテゴリ)

Section titled “B_TopicCategory(タイプカテゴリ)”
カラム名必須説明備考
B_TopicCategory_IDIDPKカテゴリID主キー
B_TopicCategory_UUUUIDNUUID
B_TopicType_IDTable DirectYトピックタイプFK
NameString(60)Y名称識別子
DescriptionString(255)N説明
IsActiveYes-NoY有効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"

type of topic category of topic auctioned product membership product

コア実装にビジネスロジックはありません。確認できる制約は次のとおりです。

  • 必須制約: 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 / UpdatedSYSDATE、クライアント/組織にコンテキスト変数(@#AD_Client_ID@ / @#AD_Org_ID@
  • カテゴリとタイプの整合チェックなし: 入札トピックで「タイプ A」と「タイプ B 配下のカテゴリ」という不整合な組合せを選んでも、コア側で検証されません

⚠️ 注意: B_TopicB_TopicType_IDB_TopicCategory_ID はそれぞれ独立した Table Direct 参照です。カテゴリが選択中のタイプに属するかを検証するロジックはコアに無いため、実運用するなら Callout または Model Validator での整合チェックが必須になります。

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

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

タイプとカテゴリの整合性を担保する例です。

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 型ではないため不要
}
}

B_TopicType / B_TopicCategory の各カラムには Callout が設定されていません(gw_column.tsv の callout 列がすべて空)。トピック画面でタイプ選択時にカテゴリの選択肢を絞り込みたい場合は、AD_Field の動的バリデーション(AD_Val_Rule)を設定するか、IColumnCallout を実装します。

このウィンドウに紐づく標準プロセスはありません。Processing / DocAction カラムを持たない純粋なマスタです。


オークション機能を活かすには、形式ごとの落札ルールや参加資格の判定を作り込む必要があります。標準テーブルをそのまま使うか、現行機能をベースに再設計するかの判断からご相談いただけます。

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

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