iDempiere 見込顧客の担当者の使い方|販売管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。
見込顧客の担当者(リード)は、まだ取引先として登録されていない見込み客の連絡先を管理する画面です。獲得経路(リードソース)と商談ステータス(リードステータス)を記録し、「Convert Lead」ボタン1つで取引先・取引先住所・営業案件を一括生成して商談プロセスへ引き渡せます。
📌 ポイント: リードは
AD_UserテーブルにIsSalesLead=Y(またはIsVendorLead=Y)を立てたレコードです。変換プロセスを実行すると両フラグがNに落ち、リードステータスがC(Converted)に変わるため、一覧から自動的に外れます。
見込顧客の担当者でできること
Section titled “見込顧客の担当者でできること”- 取引先未登録の見込み客を、氏名・会社名・住所・連絡先とともに登録する
- リードソース(獲得経路)を9種類の区分から選択して記録する
- リードステータス(商談段階)で新規・作業中・変換済み・失効・再利用を管理する
- 見込顧客(
IsSalesLead)と仕入見込先(IsVendorLead)を区別する - 営業活動タブでタスク・メール・電話・面談を記録する
- 「Convert Lead」で取引先・取引先住所・営業案件を一括生成する
- 変換時に想定金額・想定完了日・営業ステージ・通貨・担当者を指定する
ヘッダー1タブ+営業活動の子タブという2タブ構成です。
| タブ名 | テーブル | 階層 | 項目数 | 役割 |
|---|---|---|---|---|
| 見込顧客の担当者 | AD_User | 0 | 約25項目 | リードの基本情報・連絡先・ソース/ステータス |
| 営業活動(アクティビティ) | C_ContactActivity | 1 | 11項目 | タスク・メール・電話・面談の記録 |
graph TD
T1["🌱 見込顧客の担当者<br/>AD_User<br/>約25項目"]
T2["📅 営業活動(アクティビティ)<br/>C_ContactActivity<br/>11項目"]
T1 --> T2
T1 --> T3["🔄 Convert Lead<br/>(変換プロセス)"]
T3 --> T4["🏢 取引先<br/>C_BPartner"]
T3 --> T5["🎯 営業案件<br/>C_Opportunity"]
💡 ヒント: リードには「住所(
C_Location_ID)」と「BP Address(BP_Location_ID)」の2つの住所欄があります。前者は個人の連絡先住所、後者は勤務先企業の住所です。変換時にはそれぞれ別の取引先住所レコードとして作成されます。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>販売管理 > 見込顧客管理 > 見込顧客の担当者"] --> B["➕ 新規<br/>名称を入力(必須)"]
B --> C["🏷 見込顧客 / Vendor Lead<br/>のいずれかにチェック"]
C --> D["📮 取引先名称・住所・<br/>Eメール・電話番号を入力"]
D --> E["📊 リードソース・<br/>リードステータスを選択"]
E --> F["💾 保存"]
F --> G["📅 営業活動タブで<br/>接触履歴を記録"]
G --> H{"商談化した?"}
H -->|No| I["🔁 リードステータスを<br/>作業中/失効に更新"]
H -->|Yes| J["🔄 Convert Lead ボタンを実行"]
J --> K["📝 想定金額・想定完了日・<br/>営業ステージを入力"]
K --> L["✅ 取引先・住所・営業案件が<br/>自動生成される"]
L --> M["👤 以後は「得意先(顧客)の担当者」<br/>画面で管理"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「販売管理 > 見込顧客管理 > 見込顧客の担当者」を開きます(AD_Window_ID: 53153)。
- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- クライアント / 組織: 対象テナント・組織
- 名称: 見込み客の氏名(最大60文字)
- 見込顧客 または Vendor Lead: いずれかにチェック
- 連絡先情報を入力:
- 取引先名称(
BPName): 勤務先の会社名(変換時の取引先名になります) - 住所 / BP Address: 個人の住所・勤務先の住所
- Eメール / 電話番号 / 電話番号2 / FAX
- 役職: 役職マスタから選択
- 取引先名称(
- 分類情報を入力:
- リードソース: 獲得経路
- リードソース補足説明: 経路の詳細
- リードステータス: 商談段階
- リードステータス補足説明: 状況の詳細
- 営業活動(
C_Campaign_ID): 獲得元のキャンペーン - 社内担当者: 担当する営業
- 「保存」をクリック
リードソースとリードステータス
Section titled “リードソースとリードステータス”| リードソース | コード |
|---|---|
| Cold Call(飛び込み架電) | CC |
| Conference(カンファレンス) | CN |
| Existing Customer(既存顧客) | EC |
| Email(メール) | EL |
| Employee(従業員紹介) | EM |
| Partner(パートナー) | PT |
| Trade Show(展示会) | TS |
| Word of Mouth(口コミ) | WM |
| Web Site(Web サイト) | WS |
| リードステータス | コード | 意味 |
|---|---|---|
| New | N | 新規獲得・未着手 |
| Working | W | 対応中 |
| Converted | C | 変換済み(プロセスが自動セット) |
| Expired | E | 失効 |
| Recycled | R | 再利用(再アプローチ対象) |
見込顧客の変換(Convert Lead)
Section titled “見込顧客の変換(Convert Lead)”- 変換したいリードを表示し、「Convert Lead」ボタンをクリック
- パラメータを入力:
- CreateOpportunity: 営業案件を作成するか(既定 = はい)
- OpportunityAmt: 想定受注金額
- ExpectedCloseDate: 想定完了日(未指定時は当日)
- C_SalesStage_ID: 営業ステージ(未指定時は検索キー最小のステージが自動選択)
- SalesRep_ID: 担当営業(未指定時はリードの担当者、それもなければログインユーザー)
- C_Currency_ID: 通貨(未指定時はコンテキストの通貨)
- Description: 案件の説明
- 実行すると次が自動生成されます:
- 取引先: 取引先テンプレートをコピーし、取引先名称(なければ氏名)を名前としてセット
- 取引先住所: リードの住所・BP Address からそれぞれ作成
- 営業案件: 指定金額・営業ステージ・確率・通貨・キャンペーンをセット
- リード側は
IsSalesLead=N/IsVendorLead=N/LeadStatus=Cに更新されます
⚠️ 注意: 変換は一度きりです。既に取引先が紐付いていて見込顧客・仕入見込先フラグがどちらも外れているリードを再変換しようとすると、「Lead already converted」というエラーになります。
項目リファレンス
Section titled “項目リファレンス”見込顧客の担当者タブ(主要項目)
Section titled “見込顧客の担当者タブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列(60) | 見込み客の氏名 |
| 見込顧客 | 必須 | チェック | 販売側のリードか(既定値 N) |
| Vendor Lead | 必須 | チェック | 仕入側のリードか(既定値 N) |
| 検索キー | - | 文字列(40) | 任意のリードコード |
| 取引先 | - | 検索 | 変換後にセットされる取引先 |
| 取引先名称 | - | 文字列(60) | 勤務先の会社名。変換時の取引先名 |
| 住所 | - | 住所 | 個人の連絡先住所 |
| BP Address | - | 住所 | 勤務先企業の住所 |
| Eメール | - | 文字列(60) | メールアドレス(形式チェックあり) |
| 電話番号 / 電話番号2 / FAX | - | 文字列(40) | 連絡先 |
| 役職 | - | 選択 | 役職(C_Job) |
| 生年月日 | - | 日付 | 誕生日 |
| 営業活動 | - | 選択 | 獲得元キャンペーン(C_Campaign) |
| 社内担当者 | - | 選択 | 担当する営業 |
| リードソース | - | リスト | 獲得経路(9種) |
| リードソース補足説明 | - | テキスト(255) | 経路の詳細 |
| リードステータス | - | リスト | N / W / C / E / R |
| リードステータス補足説明 | - | テキスト(255) | 状況の詳細 |
| コメント | - | テキスト | 詳細メモ |
| Convert Lead | - | ボタン | 変換プロセスの起動 |
営業活動(アクティビティ)タブ
Section titled “営業活動(アクティビティ)タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 営業活動タイプ | 必須 | リスト | TA=タスク / EM=メール / PC=電話 / ME=面談 |
| 説明 | 必須 | 文字列(255) | 活動内容の要約 |
| 開始日付 | 必須 | 日時 | 既定値 SYSDATE |
| 終了日付 | - | 日時 | 活動の終了日時 |
| 社内担当者 | - | 選択 | 自社の営業担当 |
| 営業案件 | - | 選択 | 変換時に自動で付け替えられます |
| 完成 | - | チェック | 活動が完了したか |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「Lead already converted」というエラーが出ます
Section titled “Q. 「Lead already converted」というエラーが出ます”ConvertLead プロセスは冒頭で「見込顧客でも仕入見込先でもなく、かつ取引先が既に紐付いている」場合に AdempiereUserError("Lead already converted") を投げます。変換済みのリードは再変換できません。新たな商談は営業案件(Opportunity)として直接作成してください。
Q. 変換すると取引先の名前は何になりますか?
Section titled “Q. 変換すると取引先の名前は何になりますか?”「取引先名称」(BPName)が入力されていればその値、空であれば「名称」(氏名)が取引先名になります。取引先そのものは MBPartner.getTemplate() で取得した取引先テンプレートをコピーして作成されるため、支払条件や価格表などの既定値はテンプレート側の設定が引き継がれます。
Q. 顧客と仕入先のどちらとして登録されますか?
Section titled “Q. 顧客と仕入先のどちらとして登録されますか?”リードのフラグがそのまま引き継がれます。IsSalesLead=Y なら取引先の「得意先」(IsCustomer)が Y に、IsVendorLead=Y なら「仕入先」(IsVendor)が Y になります。両方チェックしておけば両方の属性を持つ取引先が作成されます。
Q. 営業ステージを指定しないとどうなりますか?
Section titled “Q. 営業ステージを指定しないとどうなりますか?”prepare() の中で、同一クライアントの有効な営業ステージのうち検索キー(Value)が最小のものが自動選択されます。営業案件の確率(Probability)は、選ばれた営業ステージの Probability から取得されます。取得できない場合は 0 がセットされます。
Q. 営業案件を作らずに取引先だけ作れますか?
Section titled “Q. 営業案件を作らずに取引先だけ作れますか?”できます。プロセスパラメータ「CreateOpportunity」を「いいえ」にすると、取引先と取引先住所のみが作成されます。この場合、営業活動の案件への付け替えも行われません。
Q. 変換すると営業活動の履歴はどうなりますか?
Section titled “Q. 変換すると営業活動の履歴はどうなりますか?”営業案件を作成する場合、そのリードに紐づく有効な C_ContactActivity レコードが Query で全件取得され、C_Opportunity_ID に新しい営業案件がセットされて保存されます。履歴は失われず、案件単位で追跡できるようになります。
Q. メールアドレスの形式エラーが出ます
Section titled “Q. メールアドレスの形式エラーが出ます”リードも AD_User テーブルのレコードなので、MUser.beforeSave() のメール形式検証(IDEMPIERE-1409)が適用されます。不正な形式では保存できません。
Q. 変換後もこのウィンドウに表示されますか?
Section titled “Q. 変換後もこのウィンドウに表示されますか?”変換時に IsSalesLead / IsVendorLead がともに N になるため、リードとしての抽出条件から外れます。以後は「得意先(顧客)の担当者」画面で管理してください。
🛠 技術仕様(開発者向け)
見込顧客の担当者はマスタデータ型のウィンドウ(AD_Window_ID: 53153)で、ヘッダーは AD_User、子タブは C_ContactActivity テーブルに格納されます。「得意先(顧客)の担当者」(AD_Window_ID: 53152)と同一テーブルを扱い、IsSalesLead / IsVendorLead フラグとタブの表示項目で用途を分けています。
モデルクラスは MUser(1,193行)、変換処理は ConvertLead(215行、SvrProcess を継承)が担います。C_ContactActivity は生成クラス X_C_ContactActivity(364行)のみです。Document 型ではありません。
テーブル属性: AD_User はアクセスレベル 7(すべて)・削除可・大量データ扱い(IsHighVolume=Y)、C_ContactActivity はアクセスレベル 3・削除可です。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MUser {
+isSalesLead() boolean
+isVendorLead() boolean
+getBPName() String
+setLeadStatus(String) void
#beforeSave(boolean) boolean
}
class ConvertLead {
<<process>>
#prepare() void
#doIt() String
}
class SvrProcess {
<<abstract>>
}
class X_AD_User {
<<generated>>
}
class PO {
<<abstract>>
}
MUser --|> X_AD_User
X_AD_User --|> PO
ConvertLead --|> SvrProcess
ConvertLead --> MUser : reads lead
ConvertLead --> MBPartner : creates
ConvertLead --> MBPartnerLocation : creates
ConvertLead --> MOpportunity : creates
ConvertLead --> X_C_ContactActivity : re-links
パッケージ: org.compiere.model / org.compiere.process
ソースファイル: org.adempiere.base/src/org/compiere/model/MUser.java、org.adempiere.base.process/src/org/compiere/process/ConvertLead.java
関連DBテーブル
Section titled “関連DBテーブル”AD_User(リード関連カラム)
Section titled “AD_User(リード関連カラム)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| AD_User_ID | ID | Y | ユーザーID | 主キー |
| Name | String(60) | Y | 名称 | |
| Value | String(40) | N | 検索キー | |
| IsSalesLead | Yes-No | Y | 見込顧客 | 既定値 N。変換で N に |
| IsVendorLead | Yes-No | Y | Vendor Lead | 既定値 N。変換で N に |
| LeadSource | List(10) | N | リードソース | AD_Reference_ID=53415 |
| LeadSourceDescription | Text(255) | N | リードソース補足説明 | |
| LeadStatus | List(10) | N | リードステータス | AD_Reference_ID=53416 |
| LeadStatusDescription | Text(255) | N | リードステータス補足説明 | |
| BPName | String(60) | N | 取引先名称 | 変換時の取引先名 |
| C_Location_ID | Location | N | 住所 | 個人住所 |
| BP_Location_ID | Location | N | BP Address | 勤務先住所 |
| C_BPartner_ID | Search | N | 取引先 | 変換でセット |
| C_Campaign_ID | Table Direct | N | 営業活動 | 案件へ引き継がれる |
| SalesRep_ID | Table | N | 社内担当者 | 案件へ引き継がれる |
| Processing | Button | N | Convert Lead | プロセス起動ボタン |
X_AD_User に定義された定数:
| 種別 | 定数 | 値 |
|---|---|---|
| ソース | LEADSOURCE_ColdCall / Conference / ExistingCustomer / Email / Employee / Partner / TradeShow / WordOfMouth / WebSite | CC / CN / EC / EL / EM / PT / TS / WM / WS |
| ステータス | LEADSTATUS_New / Working / Converted / Expired / Recycled | N / W / C / E / R |
erDiagram
AD_User ||--o{ C_ContactActivity : "activities"
AD_User }o--o| C_Location : "personal address"
AD_User }o--o| C_Campaign : "source campaign"
AD_User }o--o| C_BPartner : "converted to"
C_BPartner ||--o{ C_BPartner_Location : "locations"
C_BPartner ||--o{ C_Opportunity : "opportunities"
C_Opportunity ||--o{ C_ContactActivity : "re-linked activities"
C_SalesStage ||--o{ C_Opportunity : "stage / probability"
ビジネスロジック
Section titled “ビジネスロジック”ConvertLead プロセスの処理フロー
Section titled “ConvertLead プロセスの処理フロー”flowchart TD
A["doIt()"] --> B{"AD_User_ID > 0?"}
B -->|No| C["FillMandatoryException"]
B -->|Yes| D{"isSalesLead()==false かつ<br/>isVendorLead()==false かつ<br/>C_BPartner_ID != 0?"}
D -->|Yes| E["AdempiereUserError<br/>Lead already converted"]
D -->|No| F["MBPartner.getTemplate()<br/>→ 取引先をコピー生成"]
F --> G["BPName または Name を<br/>取引先名にセット<br/>IsCustomer=isSalesLead<br/>IsVendor=isVendorLead"]
G --> H["lead.setC_BPartner_ID()"]
H --> I{"C_Location_ID != 0?"}
I -->|Yes| J["住所をコピーし<br/>BPartnerLocation を作成<br/>電話/電話2/FAX を転記"]
I -->|No| K
J --> K{"BP_Location_ID != 0?"}
K -->|Yes| L["勤務先住所をコピーし<br/>BPartnerLocation を作成"]
K -->|No| M
L --> M{"CreateOpportunity?"}
M -->|No| Q
M -->|Yes| N["MOpportunity 生成<br/>金額・完了日・ステージ・<br/>確率・通貨・担当・キャンペーン"]
N --> O["その Lead の<br/>C_ContactActivity を全件取得"]
O --> P["各活動に<br/>C_Opportunity_ID をセット"]
P --> Q["IsSalesLead=N<br/>IsVendorLead=N<br/>LeadStatus=C"]
Q --> R["@OK@"]
既定値の決定ロジック
Section titled “既定値の決定ロジック”| パラメータ | 未指定時の既定値 |
|---|---|
| ExpectedCloseDate | 現在日時 |
| OpportunityAmt | Env.ZERO |
| C_SalesStage_ID | 同一クライアントの有効な営業ステージのうち Value が最小のもの(prepare() 内の SQL で決定) |
| Probability | 選択された営業ステージの Probability。取得不可なら Env.ZERO |
| C_Currency_ID | コンテキストの Env.C_CURRENCY_ID |
| SalesRep_ID | リードの SalesRep_ID → なければコンテキストの Env.SALESREP_ID |
prepare() は MUser.Table_ID == getTable_ID() の場合、レコード ID(getRecord_ID())を AD_User_ID として採用します。ウィンドウのボタンから起動した場合はこの経路になるため、パラメータでの明示指定は不要です。未知のパラメータが渡された場合は MProcessPara.validateUnknownParameter() が呼ばれます。
保存時の検証
Section titled “保存時の検証”リードも MUser のため、beforeSave() のメール形式検証・パスワード関連の一意性検証・パスワードルール検証が適用されます。詳細は 得意先(顧客)の担当者の技術仕様 を参照してください。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”AD_User / C_ContactActivity には Callout(AD_Column.Callout)が定義されていません。リード固有の制約は Model Validator で追加します。
public class LeadValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MUser && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MUser lead = (MUser) po; if (lead.isSalesLead()) { // 例: 見込顧客にはリードソースを必須にする if (Util.isEmpty(lead.getLeadSource())) throw new AdempiereException("見込顧客にはリードソースの入力が必要です"); // 例: 変換済みステータスへの手動変更を禁止する if (MUser.LEADSTATUS_Converted.equals(lead.getLeadStatus()) && !lead.is_ValueChanged("C_BPartner_ID")) throw new AdempiereException("変換済みステータスは Convert Lead プロセスでのみ設定できます"); } } return null; }
@Override public String docValidate(PO po, int timing) { return null; // AD_User は Document 型ではないため不要 }}変換処理そのものを差し替えたい場合は、ConvertLead を継承した独自プロセスクラスを作成し、AD のプロセス定義(AD_Process.Classname)を独自クラスに向ける方法があります。ConvertLead は @org.adempiere.base.annotation.Process アノテーションで OSGi プロセスとして登録されています。
関連プロセス
Section titled “関連プロセス”| プロセス名 | クラス | 説明 |
|---|---|---|
| Convert Lead | org.compiere.process.ConvertLead | 見込顧客を取引先・取引先住所・営業案件へ変換し、営業活動を案件へ付け替える(215行) |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”リードから商談・受注までの流れは、獲得経路の粒度やステータス遷移のルールを自社の営業プロセスに合わせて設計することで精度が大きく変わります。 変換ロジックの拡張や外部 MA ツールからのリード取り込みも、OSGi プロセスとしてコア改変なしに実装できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。