コンテンツにスキップ

iDempiere Web POSメニューの使い方|販売管理 操作マニュアル・技術仕様

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

Web POSメニュー(Web POS Menu)は、ブラウザ版 POS 画面のメニューリンクを動的に生成するための定義テーブルです。メニュー名・リンク先 URL・アイコン画像・所属モジュール・親メニューを登録し、画面側でメニュー構造を組み立てます。

⚠️ 注意: このウィンドウ(AD_Window_ID: 52000)は iDempiere 13 標準では無効化されており、標準メニューにも登録されていません。モデルクラス MWebMenu にも @Deprecated(since="13", forRemoval=true) が付与されており、将来のバージョンで削除される予定です。新規の業務設計での利用は避けてください。

📌 ポイント: このテーブルは Posterita(ブラウザ版 POS プラグイン)由来の資産です。iDempiere 13 で標準提供されている店頭販売機能は POS 端末POS キーレイアウトであり、Web POSメニューはそれらとは別系統の仕組みです。

  • Web POS 画面に表示するメニュー項目の登録
  • リンク先 URL(Menu Link)とアイコン画像 URL(Image Link)の指定
  • 親メニュー(Parent Menu)の指定による階層構造の構築
  • サブメニュー有無(Has SubMenu)フラグによる展開制御
  • モジュール(Module)・カテゴリ(Category)による分類
  • 表示位置(Position)と並び順(シーケンス)の指定

Web POSメニューは単一タブのシステムマスタです。

graph TD
    subgraph "Web POSメニューウィンドウ(Window ID: 52000)"
        T1["🌐 Web Menu<br/>U_WebMenu<br/>14項目"]
    end

Web POSメニューウィンドウ(Window ID: 52000) Web Menu U_WebMenu 14項目

タブ名テーブル項目数役割
Web MenuU_WebMenu14項目メニューリンクの定義(リンク先・階層・分類)

⚠️ 注意: U_WebMenu の**データアクセスレベルは「システムのみ」**です。通常のクライアント(テナント)ロールでは編集できず、System ロールでのログインが必要になります。

graph TD
    A["🔑 System ロールでログイン<br/>(アクセスレベル=システムのみ)"] --> B["🚀 ウィンドウを開く<br/>(標準メニュー未登録のため<br/>メニュー追加が必要)"]
    B --> C["📂 先に親メニューを登録<br/>Has SubMenu をチェック"]
    C --> D["➕ 子メニューを新規登録"]
    D --> E["✏️ 名称・Menu Link・<br/>Module を入力"]
    E --> F["📂 Parent Menu で親を選択"]
    F --> G["🎨 Image Link・Position・<br/>シーケンスを設定"]
    G --> H["💾 保存"]

System ロールでログイン (アクセスレベル=システムのみ) ウィンドウを開く (標準メニュー未登録のため メニュー追加が必要) 先に親メニューを登録 Has SubMenu をチェック 子メニューを新規登録 名称・Menu Link・ Module を入力 Parent Menu で親を選択 Image Link・Position・ シーケンスを設定 保存

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

このウィンドウは iDempiere 13 標準ではメニューに登録されていません。利用する場合はシステム管理者がメニュー(AD_Menu)へウィンドウ ID 52000 を追加し、System ロールにアクセス権を付与する必要があります。

  1. System ロールでログインし、「新規」ボタンをクリック
  2. 必須項目を入力:
    • 名称: メニューに表示する名前(120文字まで)
    • Menu Link: リンク先 URL(510文字まで)
    • Module: 所属モジュール名(120文字まで)
    • Has SubMenu: 下位メニューを持つ場合にチェック(既定: N)
  3. 任意項目を入力:
    • Parent Menu: 親メニュー(U_WebMenu の自己参照)
    • Category: 分類名
    • Image Link: アイコン画像の URL
    • Position: 表示位置を示す文字列(10文字まで)
    • シーケンス: 並び順
    • 説明 / コメント: 補足説明・運用メモ
  4. 保存」をクリック

💡 ヒント: 階層構造は「親側で Has SubMenu をチェック」+「子側で Parent Menu に親を指定」の両方で表現します。片方だけの設定では意図した階層になりません。

同じ親を持つメニューの並びは「シーケンス」で制御します。既定値がないため、階層を使う場合は必ず入力してください。

項目名カラム必須説明
クライアントAD_Client_ID必須選択テナント
組織AD_Org_ID必須選択組織
名称Name必須文字列(120)メニュー表示名
Menu LinkMenuLink必須文字列(510)リンク先 URL
ModuleModule必須文字列(120)所属モジュール
Has SubMenuHasSubMenu必須チェック下位メニューの有無(既定: N)
Parent MenuParentMenu_ID-選択親メニュー(自己参照)
CategoryCategory-文字列(120)分類名
Image LinkImageLink-文字列(510)アイコン画像の URL
PositionPosition-文字列(10)表示位置
シーケンスSequence-数値並び順
説明Description-文字列(200)補足説明
コメントHelp-文字列(2000)運用メモ
有効IsActive必須チェック表示するか(既定: Y)

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

Q. iDempiere 13 でこの機能を使うべきですか?

Section titled “Q. iDempiere 13 でこの機能を使うべきですか?”

推奨されません。モデルクラス MWebMenu には @Deprecated(since="13", forRemoval=true) が付与されており、将来のバージョンで削除される予定です。ブラウザ版 POS のメニューを構築する場合は、独自プラグインとして実装してください。

Q. U_WebMenu は何のためのテーブルですか?

Section titled “Q. U_WebMenu は何のためのテーブルですか?”

ソースのライセンスヘッダによると、Posterita Ltd が開発した「Posterita Web-Based POS and Adempiere Plugin」(2007年、GPL v2)由来のテーブルです。ブラウザ版 POS 画面のメニューリンクを DB 定義から動的生成するために設けられました。

Q. 標準の POS 端末画面とは連携しますか?

Section titled “Q. 標準の POS 端末画面とは連携しますか?”

しません。U_WebMenu を参照するカラムは他テーブルに存在せず、POS 端末C_POS)や POS キーレイアウトC_POSKeyLayout)とは独立した仕組みです。

Q. なぜクライアントロールで編集できないのですか?

Section titled “Q. なぜクライアントロールで編集できないのですか?”

U_WebMenu のデータアクセスレベルが「システムのみ」に設定されているためです。テナント固有のメニュー定義を持たせる設計にはなっていません。

Q. 階層の深さに制限はありますか?

Section titled “Q. 階層の深さに制限はありますか?”

AD 上の制限はありません。ParentMenu_ID による自己参照で任意の深さを表現できますが、循環参照を防ぐ検証はコアに実装されていないため、登録時に注意が必要です。

graph TD
    A["🌐 Web POSメニュー<br/>U_WebMenu<br/>(Posterita 由来・非推奨)"] --> B["🖱 ブラウザ版 POS 画面<br/>メニュー動的生成"]
    C["🖥 POS 端末<br/>C_POS<br/>(標準)"] --> D["🛒 POS フォーム"]
    E["⌨️ POS キーレイアウト<br/>C_POSKeyLayout"] --> C
    D --> F["📋 受注伝票"]

Web POSメニュー U_WebMenu (Posterita 由来・非推奨) ブラウザ版 POS 画面 メニュー動的生成 POS 端末 C_POS (標準) POS フォーム ⌨ POS キーレイアウト C_POSKeyLayout 受注伝票

📌 ポイント: 左側(Web POSメニュー)と右側(POS 端末)は接点のない別系統です。標準機能として運用するのは右側の系統になります。


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

Web POSメニューは U_WebMenu テーブル1つで構成されるウィンドウ(AD_Window_ID: 52000)です。MWebMenu クラス(53行)が存在しますが、コンストラクタ3つ(ID / UUID / ResultSet)のみで独自ロジックは一切持ちません。クラス宣言には @Deprecated(since="13", forRemoval=true) が付与されています。実体は自動生成の X_U_WebMenu(350行)で、PO を継承し I_U_WebMenu / I_Persistent を実装します。Document 型ではありません。

ソースのライセンスヘッダは「Product: Posterita Web-Based POS and Adempiere Plugin / Copyright (C) 2007 Posterita Ltd」(GPL v2)であり、Posterita プラグイン由来の資産であることが明記されています。

classDiagram
    class MWebMenu {
        <<deprecated>>
        +MWebMenu(Properties, int, String)
        +MWebMenu(Properties, String, String)
        +MWebMenu(Properties, ResultSet, String)
    }
    class X_U_WebMenu {
        <<generated>>
        +setMenuLink(String)
        +getMenuLink() String
        +setModule(String)
        +isHasSubMenu() boolean
        +getParentMenu() I_U_WebMenu
        +setSequence(BigDecimal)
    }
    class PO {
        <<abstract>>
    }
    class I_U_WebMenu {
        <<interface>>
    }
    MWebMenu --|> X_U_WebMenu
    X_U_WebMenu --|> PO
    X_U_WebMenu ..|> I_U_WebMenu
    X_U_WebMenu --> X_U_WebMenu : parent menu

<> +MWebMenu(Properties, int, String) +MWebMenu(Properties, String, String) +MWebMenu(Properties, ResultSet, String) <> +setMenuLink(String) +getMenuLink() String +setModule(String) +isHasSubMenu() boolean +getParentMenu() I_U_WebMenu +setSequence(BigDecimal) <> <> > X_U_WebMenu X_U_WebMenu --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MWebMenu.java(53行)、X_U_WebMenu.java(350行)

テーブル属性: 削除可(IsDeleteable=Y)/大量データ扱いなし/アクセスレベル=システムのみ/ビューではない。

カラム名必須説明備考
U_WebMenu_IDIDPKWeb メニューID主キー
U_WebMenu_UUUUID(36)NUUIDキー
AD_Client_IDTable DirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定 @#AD_Org_ID@
NameString(120)Y名称識別子カラム
MenuLinkString(510)Yリンク先 URL
ModuleString(120)Yモジュール
HasSubMenuYes-NoYサブメニュー有無既定 'N'
ParentMenu_IDTableN親メニュー自己参照
CategoryString(120)Nカテゴリ
ImageLinkString(510)Nアイコン画像 URL
PositionString(10)N表示位置
SequenceNumberN並び順既定値なし
DescriptionString(200)N説明
HelpString(2000)Nコメント型は String(Text ではない)
IsActiveYes-NoY有効既定 'Y'
erDiagram
    U_WebMenu ||--o{ U_WebMenu : "parent - child"

parent - child

U_WebMenu_ID を参照する外部テーブルは存在せず、自己参照(ParentMenu_ID)のみで完結しています。

MWebMenu はコンストラクタのみを持つ空の実装クラスで、beforeSave() / afterSave() などのフックは一切オーバーライドしていません。保存時の挙動は PO の標準処理(必須チェック、文字列長制限、アクセスレベル=システムのみの制御)に従います。

メニュー階層の組み立て・循環参照チェック・並び順の解決はすべて画面側(Posterita プラグイン)の責務で、コアには実装されていません。

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

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

非推奨クラスへの依存を避ける

Section titled “非推奨クラスへの依存を避ける”

MWebMenuforRemoval=true 指定の @Deprecated です。新規プラグインからこのクラスを参照すると、将来の iDempiere バージョンアップでコンパイルエラーになります。同等の機能が必要な場合は、独自テーブル+独自モデルクラスとして実装してください。

既存データの整合性チェックが必要な場合に限り、以下のような Model Validator が使えます。

public class CustomWebMenuValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof X_U_WebMenu
&& (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
X_U_WebMenu menu = (X_U_WebMenu) po;
// 例: 自分自身を親に指定させない
if (menu.getParentMenu_ID() == menu.getU_WebMenu_ID()
&& menu.getU_WebMenu_ID() > 0) {
throw new AdempiereException("自分自身を親メニューに指定できません");
}
}
return null;
}
}

U_WebMenu のカラムには AD 上の callout 定義がありません。

このウィンドウには専用のプロセスボタンは定義されていません。


Web POSメニューは Posterita 由来の非推奨機能であり、ブラウザ版 POS を今から構築する場合は独自プラグインでの実装が前提になります。 標準の POS 端末・キーレイアウトを土台に、店舗業務に合わせた画面を OSGi プラグインとして安全に追加できます。

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

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