iDempiere 見積依頼案件の使い方|購買管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 購買管理の全体像: 購買管理の全体図 も合わせてご覧ください。
見積依頼案件(RfQ Topic)は、見積依頼(RfQ)を送る仕入先候補のリストを、案件(テーマ)単位で管理するマスタです。「事務用品」「金属加工」といった案件を作り、そこに見積依頼先を登録しておくと、見積依頼伝票を起票したときに一括で見積回答伝票を作成・招待できます。
📌 ポイント: 見積依頼案件は見積依頼伝票の前提となるマスタです。案件に依頼先を登録していないと、見積依頼伝票から仕入先へ一斉に依頼を出すことができません。
見積依頼案件でできること
Section titled “見積依頼案件でできること”- 案件(テーマ)単位での見積依頼先リストの管理
- 依頼先(取引先・住所・担当者)の登録
- 購読日付(
SubscribeDate)・解除日付(OptOutDate)による依頼先の有効期間管理 - 品目・品目カテゴリによる「この依頼先はこの品目だけ」という絞り込み設定
- セルフサービス(
IsSelfService)による仕入先自身からの登録・変更の許可 - 印刷書式(
AD_PrintFormat_ID)の指定
見積依頼案件は 3 階層のタブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 見積依頼案件 | C_RfQ_Topic | 7項目 | 案件の基本情報(名称・説明・印刷書式) |
| 見積依頼者 | C_RfQ_TopicSubscriber | 9項目 | 案件に紐づく見積依頼先リスト |
| 見積品目制限 | C_RfQ_TopicSubscriberOnly | 7項目 | 依頼先ごとの対象品目/品目カテゴリの絞り込み |
💡 ヒント: 「見積品目制限」タブに 1 件もレコードを登録しない場合、その依頼先は見積依頼伝票の全明細に対して回答を求められます(タブ説明に明記)。特定の品目だけ扱う仕入先には、制限レコードを登録して絞り込みます。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>購買管理 > 見積依頼案件"] --> B["➕ 案件を新規作成<br/>名称・説明を入力"]
B --> C["👥 見積依頼者タブで<br/>仕入先を登録"]
C --> D{"品目を限定する?"}
D -->|限定しない| E["✅ 全明細に回答を求める"]
D -->|限定する| F["📦 見積品目制限タブで<br/>品目/品目カテゴリを登録"]
E --> G["💾 保存"]
F --> G
G --> H["🧾 見積依頼伝票で<br/>この案件を指定"]
H --> I["📧 見積回答伝票の作成・招待"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「購買管理 > 見積依頼案件」を開きます。
新規登録(案件)
Section titled “新規登録(案件)”- 「新規」ボタンをクリック
- 必須項目を入力:
- 名称(
Name): 案件名(例:事務用品調達)
- 名称(
- 必要に応じて設定:
- 説明(
Description) - セルフサービス(
IsSelfService): 仕入先自身による登録・変更を許可する場合にチェック - 印刷書式(
AD_PrintFormat_ID): 見積依頼書の帳票レイアウト
- 説明(
- 「保存」をクリック
見積依頼先の登録
Section titled “見積依頼先の登録”- 「見積依頼者」タブに移動
- 依頼先ごとにレコードを追加:
- 取引先(
C_BPartner_ID): 仕入先(必須) - 取引先住所(
C_BPartner_Location_ID): 送付先住所(必須) - ユーザー(
AD_User_ID): 担当者(メール送信先として使用) - 購読日付(
SubscribeDate): 依頼対象に加えた日付 - 解除日付(
OptOutDate): 依頼対象から外した日付
- 取引先(
- 「保存」をクリック
⚠️ 注意: 依頼先を外す場合は、レコードを削除するのではなく 解除日付(
OptOutDate) を設定するか「有効」チェックを外す運用が推奨されます。過去の見積依頼との関係を保ったまま除外できます。
品目制限の設定
Section titled “品目制限の設定”- 対象の見積依頼者を選択した状態で「見積品目制限」タブに移動
- 制限レコードを追加:
- 品目(
M_Product_ID): 特定品目に限定する場合 - 品目カテゴリ(
M_Product_Category_ID): カテゴリ単位で限定する場合 - 説明: 制限の理由など
- 品目(
- 複数登録すると、そのいずれかに該当する明細が対象になります
項目リファレンス
Section titled “項目リファレンス”見積依頼案件タブ
Section titled “見積依頼案件タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント |
| 組織 | 必須 | 選択 | 組織 |
| 名称 | 必須 | 文字列 | 案件名 |
| 説明 | - | 文字列 | 案件の説明 |
| 有効 | 必須 | チェック | レコードの有効フラグ |
| セルフサービス | 必須 | チェック | セルフサービスでの登録・変更を許可 |
| 印刷書式 | - | 選択 | 帳票レイアウト(既定 0) |
見積依頼者タブ
Section titled “見積依頼者タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 見積依頼案件 | 必須 | 選択 | 親の案件 |
| 取引先 | 必須 | 検索 | 見積依頼先の仕入先 |
| 取引先住所 | 必須 | 選択 | 依頼先住所 |
| ユーザー | - | 選択 | 依頼先の担当者 |
| 購読日付 | - | 日付 | 依頼対象に加えた日付 |
| 解除日付 | - | 日付 | 依頼対象から外した日付 |
| 有効 | 必須 | チェック | 有効フラグ |
見積品目制限タブ
Section titled “見積品目制限タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 見積依頼者情報 | 必須 | 選択 | 親の見積依頼者 |
| 品目 | - | 検索 | 対象品目 |
| 品目カテゴリ | - | 選択 | 対象品目カテゴリ |
| 説明 | - | 文字列 | 補足 |
| 有効 | 必須 | チェック | 有効フラグ |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 見積品目制限を登録しないとどうなりますか?
Section titled “Q. 見積品目制限を登録しないとどうなりますか?”その見積依頼者は、見積依頼伝票の全明細に対して回答を求められます(タブ説明: “If no product / category is entered, the subscriber is requested to answer requests for all lines in a RfQ”)。特定品目だけを扱う仕入先には制限レコードを登録してください。
Q. 品目とカテゴリの両方を登録できますか?
Section titled “Q. 品目とカテゴリの両方を登録できますか?”登録できます。MRfQTopicSubscriber.isIncluded(int M_Product_ID) が、その依頼者に紐づく制限レコード(C_RfQ_TopicSubscriberOnly)を走査して、指定品目が対象かどうかを判定します。品目そのものの一致に加え、品目カテゴリでの一致も対象になります。
Q. 依頼先を一時的に除外したいときは?
Section titled “Q. 依頼先を一時的に除外したいときは?”「有効」チェックを外すか、解除日付(OptOutDate)を設定します。レコードを削除すると履歴が失われるため、運用上は無効化を推奨します。
Q. セルフサービスとは何ですか?
Section titled “Q. セルフサービスとは何ですか?”IsSelfService は「セルフサービス経由での登録・変更を許可する」フラグです。仕入先自身がポータルから見積依頼案件の購読を管理する運用を想定した項目で、案件・依頼者の双方に用意されています。
Q. 案件を作らずに見積依頼はできますか?
Section titled “Q. 案件を作らずに見積依頼はできますか?”見積依頼伝票(C_RfQ)は見積依頼案件(C_RfQ_Topic_ID)が必須項目です。まず案件を作成し、依頼先を登録してから見積依頼伝票を起票してください。
- 見積依頼伝票(RfQ)の使い方
- 見積回答伝票(RfQ Response)の使い方
- 取引先マスタ(Business Partner)の使い方
- 品目マスタ(Product)の使い方
- 画面リファレンス: 見積依頼案件
🛠 技術仕様(開発者向け)
見積依頼案件は 3 つのテーブルで構成されます。C_RfQ_Topic(“Topic for Request for Quotations”、アクセスレベル 3)、C_RfQ_TopicSubscriber(“Request for Quotation Topic Subscriber”、アクセスレベル 3)、C_RfQ_TopicSubscriberOnly(“Include Subscriber only for certain products or product categories”、アクセスレベル 2)です。モデルクラスは MRfQTopic(108行)、MRfQTopicSubscriber(140行)、MRfQTopicSubscriberOnly(67行)で、いずれも Document 型ではないマスタ系クラスです。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MRfQTopic {
+getSubscribers() MRfQTopicSubscriber[]
}
class MRfQTopicSubscriber {
+getRestrictions(boolean requery) MRfQTopicSubscriberOnly[]
+isIncluded(int M_Product_ID) boolean
}
class MRfQTopicSubscriberOnly {
}
class X_C_RfQ_Topic {
<<generated>>
}
class PO {
<<abstract>>
}
MRfQTopic --|> X_C_RfQ_Topic
X_C_RfQ_Topic --|> PO
MRfQTopic --> MRfQTopicSubscriber : has many
MRfQTopicSubscriber --> MRfQTopicSubscriberOnly : has many
MRfQTopicSubscriber --> MRfQResponse : invited to
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MRfQTopic.java / MRfQTopicSubscriber.java / MRfQTopicSubscriberOnly.java
関連DBテーブル
Section titled “関連DBテーブル”C_RfQ_Topic(見積依頼案件)
Section titled “C_RfQ_Topic(見積依頼案件)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_RfQ_Topic_ID | ID | PK | 案件ID | 主キー |
| AD_Client_ID | Table Direct | Y | クライアント | default @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | default @#AD_Org_ID@ |
| Name | String | Y | 名称 | |
| Description | String | N | 説明 | |
| IsSelfService | Yes-No | Y | セルフサービス | |
| AD_PrintFormat_ID | Table Direct | N | 印刷書式 | default 0 |
| IsActive | Yes-No | Y | 有効 | default Y |
C_RfQ_TopicSubscriber(見積依頼者)
Section titled “C_RfQ_TopicSubscriber(見積依頼者)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_RfQ_TopicSubscriber_ID | ID | PK | 依頼者ID | 主キー |
| C_RfQ_Topic_ID | Table Direct | Y | 案件FK | 更新不可 |
| C_BPartner_ID | Search | Y | 取引先 | |
| C_BPartner_Location_ID | Table Direct | Y | 取引先住所 | |
| AD_User_ID | Table Direct | N | 担当者 | 招待メールの宛先 |
| SubscribeDate | Date | N | 購読日付 | |
| OptOutDate | Date | N | 解除日付 | |
| IsActive | Yes-No | Y | 有効 | default Y |
C_RfQ_TopicSubscriberOnly(見積品目制限)
Section titled “C_RfQ_TopicSubscriberOnly(見積品目制限)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_RfQ_TopicSubscriberOnly_ID | ID | PK | 制限ID |
| C_RfQ_TopicSubscriber_ID | Table Direct | Y | 依頼者FK |
| M_Product_ID | Search | N | 対象品目 |
| M_Product_Category_ID | Table Direct | N | 対象品目カテゴリ |
| Description | String | N | 説明 |
| IsActive | Yes-No | Y | 有効 |
erDiagram
C_RfQ_Topic ||--o{ C_RfQ_TopicSubscriber : "subscribers"
C_RfQ_TopicSubscriber ||--o{ C_RfQ_TopicSubscriberOnly : "product restrictions"
C_RfQ_TopicSubscriber }o--|| C_BPartner : "vendor"
C_RfQ_TopicSubscriberOnly }o--o| M_Product : "product"
C_RfQ_TopicSubscriberOnly }o--o| M_Product_Category : "category"
C_RfQ_Topic ||--o{ C_RfQ : "used by"
C_RfQ_TopicSubscriber ||--o{ C_RfQResponse : "responds"
ビジネスロジック
Section titled “ビジネスロジック”MRfQTopic.getSubscribers()
Section titled “MRfQTopic.getSubscribers()”案件に紐づく見積依頼者(C_RfQ_TopicSubscriber)を取得します。見積依頼伝票の「見積回答要求及び見積回答伝票作成」処理は、このリストを起点に見積回答伝票(C_RfQResponse)を生成します。
MRfQTopicSubscriber.isIncluded(int M_Product_ID)
Section titled “MRfQTopicSubscriber.isIncluded(int M_Product_ID)”指定した品目がその依頼者の対象範囲に含まれるかを判定します。判定には getRestrictions(boolean requery) で取得した制限レコード(C_RfQ_TopicSubscriberOnly)を使用します。
flowchart TD
A["isIncluded(M_Product_ID)"] --> B["getRestrictions() で制限を取得"]
B --> C{"制限レコードが 0 件?"}
C -->|Yes| D["対象に含める<br/>(全明細に回答を求める)"]
C -->|No| E{"品目 または 品目カテゴリが<br/>いずれかの制限に一致?"}
E -->|Yes| D
E -->|No| F["対象外"]
MRfQTopicSubscriberOnly(67行)は制限レコードを表すだけの薄いクラスで、独自のビジネスロジックは持ちません。判定ロジックは依頼者側(MRfQTopicSubscriber)に集約されています。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”いずれも Document 型ではないため、modelChange() で制御します。
public class CustomRfQTopicValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MRfQTopicSubscriber && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MRfQTopicSubscriber sub = (MRfQTopicSubscriber) po; // 例: 解除日付が購読日付より前にならないようにする if (sub.getOptOutDate() != null && sub.getSubscribeDate() != null && sub.getOptOutDate().before(sub.getSubscribeDate())) { throw new AdempiereException("解除日付は購読日付以降にしてください"); } } return null; }}Callout
Section titled “Callout”C_RfQ_Topic / C_RfQ_TopicSubscriber / C_RfQ_TopicSubscriberOnly の各カラムには標準の Callout(AD_Column.Callout)が設定されていません。取引先選択時に住所・担当者を自動補完したい場合は、独自 Callout を AD_Column に登録します。
依頼先抽出ロジックの拡張
Section titled “依頼先抽出ロジックの拡張”「どの仕入先に見積を出すか」の判定を独自条件(過去実績・評価点など)で行いたい場合は、isIncluded() の結果を利用する側(見積回答伝票の生成処理)をカスタムプロセスとして実装するのが安全です。
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| Create and Invite | 見積回答伝票を作成し、仕入先へ招待メールを送信 |
| Invite and Remind | 仕入先へ見積回答の招待・催促メールを送信 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”見積依頼先の選定基準(過去の納期実績・品質評価・与信)を仕組みに落とし込むと、相見積の質が安定します。 依頼先の自動抽出や仕入先ポータル連携は、OSGi プラグインで無理なく追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。