iDempiere Web POSメニューの使い方|販売管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。
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メニューでできること
Section titled “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 Menu | U_WebMenu | 14項目 | メニューリンクの定義(リンク先・階層・分類) |
⚠️ 注意:
U_WebMenuの**データアクセスレベルは「システムのみ」**です。通常のクライアント(テナント)ロールでは編集できず、System ロールでのログインが必要になります。
基本操作手順
Section titled “基本操作手順”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["💾 保存"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”このウィンドウは iDempiere 13 標準ではメニューに登録されていません。利用する場合はシステム管理者がメニュー(AD_Menu)へウィンドウ ID 52000 を追加し、System ロールにアクセス権を付与する必要があります。
- System ロールでログインし、「新規」ボタンをクリック
- 必須項目を入力:
- 名称: メニューに表示する名前(120文字まで)
- Menu Link: リンク先 URL(510文字まで)
- Module: 所属モジュール名(120文字まで)
- Has SubMenu: 下位メニューを持つ場合にチェック(既定: N)
- 任意項目を入力:
- Parent Menu: 親メニュー(
U_WebMenuの自己参照) - Category: 分類名
- Image Link: アイコン画像の URL
- Position: 表示位置を示す文字列(10文字まで)
- シーケンス: 並び順
- 説明 / コメント: 補足説明・運用メモ
- Parent Menu: 親メニュー(
- 「保存」をクリック
💡 ヒント: 階層構造は「親側で
Has SubMenuをチェック」+「子側でParent Menuに親を指定」の両方で表現します。片方だけの設定では意図した階層になりません。
並び順の調整
Section titled “並び順の調整”同じ親を持つメニューの並びは「シーケンス」で制御します。既定値がないため、階層を使う場合は必ず入力してください。
項目リファレンス
Section titled “項目リファレンス”Web Menuタブ
Section titled “Web Menuタブ”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| クライアント | AD_Client_ID | 必須 | 選択 | テナント |
| 組織 | AD_Org_ID | 必須 | 選択 | 組織 |
| 名称 | Name | 必須 | 文字列(120) | メニュー表示名 |
| Menu Link | MenuLink | 必須 | 文字列(510) | リンク先 URL |
| Module | Module | 必須 | 文字列(120) | 所属モジュール |
| Has SubMenu | HasSubMenu | 必須 | チェック | 下位メニューの有無(既定: N) |
| Parent Menu | ParentMenu_ID | - | 選択 | 親メニュー(自己参照) |
| Category | Category | - | 文字列(120) | 分類名 |
| Image Link | ImageLink | - | 文字列(510) | アイコン画像の URL |
| Position | Position | - | 文字列(10) | 表示位置 |
| シーケンス | Sequence | - | 数値 | 並び順 |
| 説明 | Description | - | 文字列(200) | 補足説明 |
| コメント | Help | - | 文字列(2000) | 運用メモ |
| 有効 | IsActive | 必須 | チェック | 表示するか(既定: Y) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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 による自己参照で任意の深さを表現できますが、循環参照を防ぐ検証はコアに実装されていないため、登録時に注意が必要です。
業務フロー上の位置づけ
Section titled “業務フロー上の位置づけ”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メニュー)と右側(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 プラグイン由来の資産であることが明記されています。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MWebMenu.java(53行)、X_U_WebMenu.java(350行)
関連DBテーブル
Section titled “関連DBテーブル”U_WebMenu(Web メニュー)
Section titled “U_WebMenu(Web メニュー)”テーブル属性: 削除可(IsDeleteable=Y)/大量データ扱いなし/アクセスレベル=システムのみ/ビューではない。
| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| U_WebMenu_ID | ID | PK | Web メニューID | 主キー |
| U_WebMenu_UU | UUID(36) | N | UUIDキー | |
| AD_Client_ID | Table Direct | Y | クライアント | 既定 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定 @#AD_Org_ID@ |
| Name | String(120) | Y | 名称 | 識別子カラム |
| MenuLink | String(510) | Y | リンク先 URL | |
| Module | String(120) | Y | モジュール | |
| HasSubMenu | Yes-No | Y | サブメニュー有無 | 既定 'N' |
| ParentMenu_ID | Table | N | 親メニュー | 自己参照 |
| Category | String(120) | N | カテゴリ | |
| ImageLink | String(510) | N | アイコン画像 URL | |
| Position | String(10) | N | 表示位置 | |
| Sequence | Number | N | 並び順 | 既定値なし |
| Description | String(200) | N | 説明 | |
| Help | String(2000) | N | コメント | 型は String(Text ではない) |
| IsActive | Yes-No | Y | 有効 | 既定 'Y' |
erDiagram
U_WebMenu ||--o{ U_WebMenu : "parent - child"
U_WebMenu_ID を参照する外部テーブルは存在せず、自己参照(ParentMenu_ID)のみで完結しています。
ビジネスロジック
Section titled “ビジネスロジック”MWebMenu はコンストラクタのみを持つ空の実装クラスで、beforeSave() / afterSave() などのフックは一切オーバーライドしていません。保存時の挙動は PO の標準処理(必須チェック、文字列長制限、アクセスレベル=システムのみの制御)に従います。
メニュー階層の組み立て・循環参照チェック・並び順の解決はすべて画面側(Posterita プラグイン)の責務で、コアには実装されていません。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”非推奨クラスへの依存を避ける
Section titled “非推奨クラスへの依存を避ける”MWebMenu は forRemoval=true 指定の @Deprecated です。新規プラグインからこのクラスを参照すると、将来の iDempiere バージョンアップでコンパイルエラーになります。同等の機能が必要な場合は、独自テーブル+独自モデルクラスとして実装してください。
OSGi Model Validator(参考)
Section titled “OSGi Model Validator(参考)”既存データの整合性チェックが必要な場合に限り、以下のような 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; }}Callout
Section titled “Callout”U_WebMenu のカラムには AD 上の callout 定義がありません。
関連プロセス
Section titled “関連プロセス”このウィンドウには専用のプロセスボタンは定義されていません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”Web POSメニューは Posterita 由来の非推奨機能であり、ブラウザ版 POS を今から構築する場合は独自プラグインでの実装が前提になります。 標準の POS 端末・キーレイアウトを土台に、店舗業務に合わせた画面を OSGi プラグインとして安全に追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。