iDempiere 予約購入タイプの使い方|販売管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。
予約購入タイプ(Subscription Type)は、定期購読・保守契約などの「更新サイクル」を定義するマスタです。頻度タイプ(日・時・分)と頻度(回数)の組み合わせで更新間隔を表し、予約購入(C_Subscription)から参照されます。
⚠️ 注意: このウィンドウ(AD_Window_ID: 317)は iDempiere 13 標準では無効化されており、標準メニューにも登録されていません(旧バージョンからの互換用)。新規の業務設計で定期課金・サブスクリプションを扱う場合は、この画面ではなく受注伝票の定期作成や外部の課金基盤との連携を検討してください。
📌 ポイント: 頻度タイプの選択肢は 日(D)・時(H)・分(M)の3つだけです。「月次」「年次」といった暦ベースの単位は存在しないため、月額契約は「30日」「365日」のように日数へ換算して登録することになります。
予約購入タイプでできること
Section titled “予約購入タイプでできること”- 更新サイクル(頻度タイプ+頻度)の定義
- 予約購入レコードへの更新間隔の割り当て
- 説明欄による契約種別の補足記載
- 「有効」チェックによる利用停止(過去データは保持)
予約購入タイプは単一タブのシンプルなマスタです。
graph TD
subgraph "予約購入タイプウィンドウ(Window ID: 317)"
T1["🔁 予約購入タイプ<br/>C_SubscriptionType<br/>7項目"]
end
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 予約購入タイプ | C_SubscriptionType | 7項目 | 更新頻度の定義(頻度タイプ・頻度) |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 ウィンドウを開く<br/>(標準メニュー未登録のため<br/>ロール設定でメニュー追加が必要)"] --> B["➕ 新規ボタンをクリック"]
B --> C["✏️ 名称を入力<br/>(例: 月次保守契約)"]
C --> D["🔁 頻度タイプを選択<br/>日 / 時 / 分"]
D --> E["🔢 頻度を入力<br/>(例: 30)"]
E --> F["💾 保存"]
F --> G["🔗 予約購入で<br/>予約タイプとして選択可能に"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”このウィンドウは iDempiere 13 標準ではメニューに登録されていません。利用する場合はシステム管理者がメニュー(AD_Menu)へウィンドウ ID 317 を追加し、ロールにアクセス権を付与する必要があります。
- 「新規」ボタンをクリック
- 基本情報を入力:
- 名称(必須): 更新サイクル名(例:
30日更新、年次更新) - 説明: 補足説明(255文字まで)
- 頻度タイプ(必須):
日/時/分から選択 - 頻度(必須): 数値(例: 頻度タイプ=日、頻度=30 で30日ごと)
- 名称(必須): 更新サイクル名(例:
- 「保存」をクリック
💡 ヒント: 月額契約を表現する場合は「頻度タイプ=日、頻度=30」、年額契約は「頻度タイプ=日、頻度=365」とするのが一般的です。ただし暦月の末日差(28〜31日)は吸収されないため、正確な暦月更新が必要な業務ではこの画面だけでは要件を満たせません。
項目リファレンス
Section titled “項目リファレンス”予約購入タイプタブ
Section titled “予約購入タイプタブ”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| クライアント | AD_Client_ID | 必須 | 選択 | テナント |
| 組織 | AD_Org_ID | 必須 | 選択 | 組織 |
| 名称 | Name | 必須 | 文字列(60) | 予約購入タイプの名称 |
| 説明 | Description | - | 文字列(255) | 補足説明 |
| 頻度タイプ | FrequencyType | 必須 | リスト | D=日、H=時、M=分 |
| 頻度 | Frequency | 必須 | 整数 | 更新間隔の数値 |
| 有効 | IsActive | 必須 | チェック | 選択肢として使用するか(既定: Y) |
頻度タイプの選択肢
Section titled “頻度タイプの選択肢”| 表示 | コード | 意味 |
|---|---|---|
| 日 | D | Day(日単位) |
| 時 | H | Hour(時間単位) |
| 分 | M | Minute(分単位) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「月次」「年次」の頻度タイプはありませんか?
Section titled “Q. 「月次」「年次」の頻度タイプはありませんか?”ありません。X_C_SubscriptionType に定義されている定数は FREQUENCYTYPE_Day(D)、FREQUENCYTYPE_Hour(H)、FREQUENCYTYPE_Minute(M)の3つのみです(AD_Reference_ID=221)。月次・年次は日数換算で表現してください。
Q. 予約購入タイプを設定すると、更新日が自動計算されますか?
Section titled “Q. 予約購入タイプを設定すると、更新日が自動計算されますか?”自動計算されません。C_SubscriptionType には M クラス(ビジネスロジック実装クラス)が存在せず、自動生成された X_C_SubscriptionType のみが提供されています。予約購入の更新日付(RenewalDate)・支払済有効期限(PaidUntilDate)は手入力または独自プロセスでの更新が前提です。
Q. 頻度に 0 を入力できますか?
Section titled “Q. 頻度に 0 を入力できますか?”Frequency は必須カラムですが最小値・最大値の制約は AD 上定義されていないため、DB レベルでは 0 も保存できます。業務上は意味を持たないため、Model Validator で下限チェックを追加することを推奨します。
Q. このウィンドウは今後も使えますか?
Section titled “Q. このウィンドウは今後も使えますか?”iDempiere 13 標準では無効化された画面です。テーブル(C_SubscriptionType / C_Subscription)自体は残っていますが、コアの機能追加は行われていません。長期運用を前提とするサブスクリプション管理には、独自プラグインまたは外部サービス連携を推奨します。
🛠 技術仕様(開発者向け)
予約購入タイプはマスタデータ型のウィンドウ(AD_Window_ID: 317)で、C_SubscriptionType テーブルに格納されます。専用の M クラスは存在せず、AD から自動生成された X_C_SubscriptionType(235行)のみが提供されています。生成クラスはアクセサ(getter / setter)と FrequencyType のリスト定数だけを持ち、独自の検証・計算ロジックは実装されていません。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_C_SubscriptionType {
<<generated>>
+setFrequencyType(String)
+getFrequencyType() String
+setFrequency(int)
+getFrequency() int
+setName(String)
}
class PO {
<<abstract>>
}
class I_C_SubscriptionType {
<<interface>>
}
X_C_SubscriptionType --|> PO
X_C_SubscriptionType ..|> I_C_SubscriptionType
X_C_Subscription --> X_C_SubscriptionType : renewal cycle
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_C_SubscriptionType.java
関連DBテーブル
Section titled “関連DBテーブル”C_SubscriptionType(予約購入タイプ)
Section titled “C_SubscriptionType(予約購入タイプ)”テーブル属性: 削除可(IsDeleteable=Y)/大量データ扱いなし/アクセスレベル=クライアント/ビューではない。
| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_SubscriptionType_ID | ID | PK | 予約購入タイプID | 主キー |
| C_SubscriptionType_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(60) | Y | 名称 | 識別子カラム |
| Description | String(255) | N | 説明 | |
| FrequencyType | List(1) | Y | 頻度タイプ | D=Day, H=Hour, M=Minute(AD_Reference_ID=221) |
| Frequency | Integer | Y | 頻度 | 更新間隔 |
| IsActive | Yes-No | Y | 有効 | 既定 Y |
| Created / CreatedBy | Date+Time / Search | Y | 作成日時・作成者 | 既定 SYSDATE |
| Updated / UpdatedBy | Date+Time / Search | Y | 更新日時・更新者 | 既定 SYSDATE |
erDiagram
C_SubscriptionType ||--o{ C_Subscription : "renewal cycle"
C_Subscription ||--o{ C_Subscription_Delivery : "deliveries"
C_Subscription }o--|| C_BPartner : "subscriber"
C_Subscription }o--|| M_Product : "subscribed product"
ビジネスロジック
Section titled “ビジネスロジック”M クラスが存在しないため、コアに固有のビジネスロジックはありません。保存時の挙動は PO の標準処理(必須チェック、Name 60文字制限、リスト値の妥当性チェック、アクセスレベル制御)に従います。更新日の自動計算やスケジュール生成はコアに実装されていません。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”public class CustomSubscriptionTypeValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof X_C_SubscriptionType && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { X_C_SubscriptionType st = (X_C_SubscriptionType) po; // 例: 頻度は1以上を必須とする if (st.getFrequency() < 1) { throw new AdempiereException("頻度は1以上で入力してください"); } } return null; }}暦月更新への拡張
Section titled “暦月更新への拡張”暦月ベース(毎月末日、毎月同日など)の更新サイクルが必要な場合は、FrequencyType のリスト(AD_Reference_ID=221)へ値を追加するのではなく、独自テーブルまたは追加カラムを持つプラグインとして実装し、更新日計算を担うスケジューラ(AD_Scheduler)プロセスを併せて提供する設計を推奨します。
Callout
Section titled “Callout”C_SubscriptionType のカラムには AD 上の callout 定義がありません。
関連プロセス
Section titled “関連プロセス”このウィンドウには専用のプロセスボタンは定義されていません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiere 標準の予約購入タイプは日・時・分の単純な間隔しか持たないため、月額・年額のサブスクリプション課金をそのまま扱うことはできません。 暦月更新・自動請求生成・解約処理などをOSGiプラグインとして追加すれば、コア改変なしにサブスクリプション業務を実装できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。