# ⑥ 業務ロジック — SOD Order: 10 methods

| 項目 | 内容 |
|---|---|
| 完全修飾名 | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| レイヤー | CC（Common Component、パッケージ名およびクラス名から判定） |
| モジュール | common（パッケージ名：com.fujitsu.futurity.bp.custom.commonより） |


<style>
.mermaid { display: flex !important; justify-content: center !important; overflow-x: auto !important; overflow-y: hidden; background: #f9f9f9; padding: 20px; border-radius: 8px; margin: 0 auto; }
.mermaid svg { max-width: 100% !important; height: auto !important; width: fit-content !important; margin: 0 auto; }
.node rect { fill: #e1f5fe !important; stroke: #01579b !important; }
.label { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>

<a id="method-addSODHPCapaChg"></a>
### addSODHPCapaChg()

---

#### 1. 役割

Myホームページのホームページ容量変更に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、ユーザデータ（inMap）から必要な情報を取得し、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークにホームページ容量変更のオーダ情報を登録します。  
このロジックは「ホームページ容量変更」業務において、オプションサービス契約（Myホームページ）の変更をSODとして登録するための標準的な処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODHPCapaChg（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| S2["Step2: （1） オーダ発行条件登録（即時発行）"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = op_svc_kei_no_hp\n- sbop_svc_kei_no = ''\n- mlad = ''\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '04' （WEB）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（ホームページ容量変更）"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '123' （WEB・ホームページ容量変更）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '123'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = op_svc_kei_no_hp\n- opsvkei_gadtm = op_gadtm_hp\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、下記2処理を行う。
    - (1) オーダ発行条件登録
        - `inMap`に必要なフィールドを設定（サービス契約内訳番号、オプションサービス契約番号、メールアドレス、オーダ種別コード（ネット）、サービスオーダコード（WEB）、要求種別コード（変更）、オーダ発行条件コード（即時発行）、同一処理番号）。
        - `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録
        - `inMap`にホームページ容量変更用のフィールドを再設定（オーダ内容コード（WEB・ホームページ容量変更）、関連契約番号・世代登録年月日時分秒等）。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODHPCapaChg` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODHPCapaChg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L19984)

> 📌 ユーザデータ情報

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 2 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_hp);` // オプションサービス契約番号（Ｍｙホームページ） |
| 3 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 4 | 📋 SET | `inMap.put("mlad", "");` // メールアドレス |
| 5 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 6 | 📋 SET | `inMap.put("svc_order_cd", "04");` // サービスオーダコード（WEB） |
| 7 | 📋 SET | `inMap.put("yokyu_sbt_cd", "04");` // 要求種別コード（変更） |
| 8 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 9 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 10 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 11 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 12 | 📋 SET | `inMap.put("odr_naiyo_cd", "123");` // オーダ内容コード（WEB・ホームページ容量変更） |
| 13 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 14 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 15 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_hp);` // オプションサービス契約番号（Ｍｙホームページ） |
| 16 | 📋 SET | `inMap.put("opsvkei_gadtm", op_gadtm_hp);` // オプションサービス契約世代登録年月日時分秒（Myホームページ） |
| 17 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 18 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 19 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 20 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 21 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 22 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 1 blocks (1 depth levels)

### executeOdrHakkoJokenAdd()

---

#### 1. 役割

オーダ発行条件の登録処理を行うメソッドです。  
具体的には、入力パラメータから上りマッピングを作成し、サービスコンポーネント呼出部品（ServiceComponentRequestInvoker）を生成、SC呼出を実行し、下りマッピングで結果をparamへ反映します。  
本メソッドは複数のSOD関連メソッドから呼ばれる共通の登録用ロジックです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["executeOdrHakkoJokenAdd（handle, param）"] --> S1["Step1: editInMsg_EKK1081D010CBS（param）で上りマッピング作成"]
  S1 --> S2["Step2: ServiceComponentRequestInvokerインスタンス生成"]
  S2 --> S3["Step3: scCall.run（paramMap, handle）でSC呼出"]
  S3 --> S4["Step4: editResultRP_EKK1081D010CBS（result, param）で下りマッピング"]
  S4 --> RET["return param"]
```

**処理ステップ詳細:**

1. `editInMsg_EKK1081D010CBS(param)`で上りデータマッピングを作成。
2. `ServiceComponentRequestInvoker`をインスタンス化。
3. `scCall.run(paramMap, handle)`でSC呼出を実行。
4. `editResultRP_EKK1081D010CBS(result, param)`で結果をparamに反映。
5. `param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | CBS経由SC | EKK1081D010CBS | KK_T_ODR_HAKKO_JOKEN, KK_T_ODR_INF_SKSI_WK | オーダ発行条件登録実行処理<br> <br> オーダ発行条件登録サービスIFを実行します。<br> <br> 【使用する… |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → executeOdrHakkoJokenAdd` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `addSOD` | private | オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条… |
| 2 | `addSODDupNew` | private | ダイヤルアップの新規登録処理<br> <br> ダイヤルアップの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登… |
| 3 | `addSODEmailNew` | private | Eメールの新規登録処理<br> <br> Eメールの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 4 | `addSODFtthNew` | private | FTTH認証の新規登録処理<br> <br> FTTH認証の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 … |
| 5 | `addSODHPAccessAdd` | private | Myホームページ：アクセス分析の登録処理<br> <br> Myホームページ：アクセス分析の登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> … |
| 6 | `addSODHPCapaChg` | private | Myホームページ：HP容量の変更処理<br> <br> Myホームページ：HP容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ… |
| 7 | `addSODHPNew` | private | Myホームページの新規登録処理<br> <br> Myホームページの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 8 | `addSODMailAliasAdd` | private | Eメール：エイリアスの登録処理<br> <br> Eメール：エイリアスの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 9 | `addSODMailCapaChg` | private | Eメール：メールボックス容量の変更処理<br> <br> Eメール：メールボックス容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オ… |
| 10 | `addSODMListNew` | private | メーリングリストの新規登録処理<br> <br> メーリングリストの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 11 | `addSODMRTChgRTSta` | private | 多機能ルーター設定・変更（ルーター機能・新規）処理<br> <br> 使用中の多機能ルーターに対してのルーター機能の新規について、<br> オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br… |
| 12 | `addSODTelNew` | private | 光電話の新規登録処理<br> <br> 光電話の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 13 | `addSODTelVAChange` | private | 光電話・VA変更処理<br> <br> VAの出荷について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 14 | `addSODUQWIMAXKaitoriNew` | private | UQ WIMAXの買取時の新規登録処理<br> <br> UQ WIMAXの買取時の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> ※CUIとDEVで内訳情報、機器情報共に同じものが設定されているため、機器提供… |
| 15 | `addSODUQWIMAXNew` | private | UQ WIMAXの新規登録処理<br> <br> UQ WIMAXの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> CUI<br> ・オーダ発行条件登録<br> ・オ… |
| 16 | `addSODVirusChkAdd` | private | Eメール：ウィルスチェックの登録処理<br> <br> Eメール：ウィルスチェックの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ… |
| 17 | `addSODWiFiChg` | private | Wi-Fiスポットの変更処理<br> <br> Wi-Fiスポットの変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登… |
| 18 | `addSODWiFiNew` | private | Wi-Fiスポットの新規登録処理<br> <br> Wi-Fiスポットの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成… |
| 19 | `addTakinoSOD` | private | 多機能ルーター向けオーダ オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF… |
| 20 | `tsuikabunAddSOD` | private | 追加分のオーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF】<br> ・オー… |
### executeOdrInfoSakseiWkAdd()

---

#### 1. 役割

オーダ情報作成ワーク登録処理を行うメソッドです。  
具体的には、入力パラメータから上りマッピングを作成し、サービスコンポーネント呼出部品（ServiceComponentRequestInvoker）を生成、SC呼出を実行し、下りマッピングで結果をparamへ反映します。  
本メソッドは複数のSOD関連メソッドから呼ばれる共通の登録用ロジックです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["executeOdrInfoSakseiWkAdd（handle, param）"] --> S1["Step1: editInMsg_EKK1551D010CBS（param）で上りマッピング作成"]
  S1 --> S2["Step2: ServiceComponentRequestInvokerインスタンス生成"]
  S2 --> S3["Step3: scCall.run（paramMap, handle）でSC呼出"]
  S3 --> S4["Step4: editResultRP_EKK1551D010CBS（result, param）で下りマッピング"]
  S4 --> RET["return param"]
```

**処理ステップ詳細:**

1. `editInMsg_EKK1551D010CBS(param)`で上りデータマッピングを作成。
2. `ServiceComponentRequestInvoker`をインスタンス化。
3. `scCall.run(paramMap, handle)`でSC呼出を実行。
4. `editResultRP_EKK1551D010CBS(result, param)`で結果をparamに反映。
5. `param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | CBS経由SC | EKK1551D010CBS | - | オーダ情報作成ワーク登録実行処理<br> <br> オーダ情報作成ワーク登録サービスIFを実行します。<br> <br>… |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → executeOdrInfoSakseiWkAdd` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `addSOD` | private | オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条… |
| 2 | `addSODDupNew` | private | ダイヤルアップの新規登録処理<br> <br> ダイヤルアップの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登… |
| 3 | `addSODEmailNew` | private | Eメールの新規登録処理<br> <br> Eメールの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 4 | `addSODFtthNew` | private | FTTH認証の新規登録処理<br> <br> FTTH認証の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 … |
| 5 | `addSODHPAccessAdd` | private | Myホームページ：アクセス分析の登録処理<br> <br> Myホームページ：アクセス分析の登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> … |
| 6 | `addSODHPCapaChg` | private | Myホームページ：HP容量の変更処理<br> <br> Myホームページ：HP容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ… |
| 7 | `addSODHPNew` | private | Myホームページの新規登録処理<br> <br> Myホームページの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 8 | `addSODMailAliasAdd` | private | Eメール：エイリアスの登録処理<br> <br> Eメール：エイリアスの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 9 | `addSODMailCapaChg` | private | Eメール：メールボックス容量の変更処理<br> <br> Eメール：メールボックス容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オ… |
| 10 | `addSODMListNew` | private | メーリングリストの新規登録処理<br> <br> メーリングリストの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワー… |
| 11 | `addSODMRTChgRTSta` | private | 多機能ルーター設定・変更（ルーター機能・新規）処理<br> <br> 使用中の多機能ルーターに対してのルーター機能の新規について、<br> オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br… |
| 12 | `addSODTelNew` | private | 光電話の新規登録処理<br> <br> 光電話の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 13 | `addSODTelVAChange` | private | 光電話・VA変更処理<br> <br> VAの出荷について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登録 <br> |
| 14 | `addSODUQWIMAXKaitoriNew` | private | UQ WIMAXの買取時の新規登録処理<br> <br> UQ WIMAXの買取時の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> ※CUIとDEVで内訳情報、機器情報共に同じものが設定されているため、機器提供… |
| 15 | `addSODUQWIMAXNew` | private | UQ WIMAXの新規登録処理<br> <br> UQ WIMAXの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> CUI<br> ・オーダ発行条件登録<br> ・オ… |
| 16 | `addSODVirusChkAdd` | private | Eメール：ウィルスチェックの登録処理<br> <br> Eメール：ウィルスチェックの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ… |
| 17 | `addSODWiFiChg` | private | Wi-Fiスポットの変更処理<br> <br> Wi-Fiスポットの変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成ワーク登… |
| 18 | `addSODWiFiNew` | private | Wi-Fiスポットの新規登録処理<br> <br> Wi-Fiスポットの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br> <br> 【使用するサービスIF】<br> ・オーダ発行条件登録<br> ・オーダ情報作成… |
| 19 | `addTakinoSOD` | private | 多機能ルーター向けオーダ オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF… |
| 20 | `tsuikabunAddSOD` | private | 追加分のオーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br> <br> 渡されたオーダ内容コードから、必要な情報をマッピングして<br> 各オーダテーブルへの登録を行う。<br> <br> 【使用するサービスIF】<br> ・オー… |
### addSODTelVAChange()

---

#### 1. 役割

光電話用VA機器変更に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、ユーザデータ（inMap）からサービス契約内訳番号や機器提供サービス契約番号などの情報を取得し、  
(1) オーダ発行条件（機器提供開始条件）を登録し、  
(2) オーダ情報作成ワークに「光電話・VA変更」のオーダ情報を登録します。  
このロジックは「光電話用VA機器の変更」業務においてSOD発行のための標準的な処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODTelVAChange（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| S2["Step2: （1） オーダ発行条件登録（機器提供開始条件）"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_TEL = '2' （電話）\nSVC_ODR_CD_TEL_VA_CHG_ODR = 'Z3' （光電話・VA変更オーダ）\nYOKYU_SBT_CD_NEW = '02' （新規）\nODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN = '13' （機器提供開始条件）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = svc_kei_ucwk_no[0]\n- op_svc_kei_no = ''\n- sbop_svc_kei_no = ''\n- mlad = ''\n- order_sbt_cd = '2' （電話）\n- svc_order_cd = 'Z3' （光電話・VA変更オーダ）\n- yokyu_sbt_cd = '02' （新規）\n- odr_hakko_joken_cd = '13' （機器提供開始条件）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（光電話・VA変更）"]
  S6 -.-> NOTE_S6["ODR_NAIYO_CD_257 = '257' （光電話・VA変更）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '257'\n- svc_kei_ucwk_no = svc_kei_ucwk_no[0]\n- svkeiuw_gadtm = svc_kei_ucwk_gadtm[0]\n- op_svc_kei_no = ''\n- opsvkei_gadtm = ''\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = kktk_svc_kei_no[0]\n- kktsvkei_gadtm = kktk_svc_kei_gadtm[0]\n- huka_inf_kei_no = htelno_svkeiuw_no\n- huka_inf_kei_gadtm = htelno_svkeiuw_gadtm"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、下記2処理を行う。
    - (1) オーダ発行条件登録（機器提供開始条件）
        - `inMap`にサービス契約内訳番号（svc_kei_ucwk_no）、オーダ種別コード（電話）、サービスオーダコード（光電話・VA変更オーダ）、要求種別コード（新規）、オーダ発行条件コード（機器提供開始条件）などを設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（光電話・VA変更）
        - `inMap`にオーダ内容コード（光電話・VA変更）、サービス契約内訳番号・世代登録年月日時分秒、機器提供サービス契約番号などを再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODTelVAChange` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `htelNoAddOdrCtrl` | private | 光電話番号追加オーダ制御処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `addSODTelVAChange()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L20288)

> 📌 ユーザデータ情報

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);` // サービス契約内訳番号 |
| 2 | 📋 SET | `inMap.put("op_svc_kei_no", "");` // オプションサービス契約番号 |
| 3 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 4 | 📋 SET | `inMap.put("mlad", "");` // メールアドレス |
| 5 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);` // オーダ種別コード（電話） [➔ ORDER_SBT_CD_TEL="2"] |
| 6 | 📋 SET | `inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ODR_CD_TEL_VA_CHG_ODR);` // サービスオーダコード（光電話・VA変更オーダ） [➔ SVC_ODR_CD_TEL_VA_CHG_ODR="Z3"] |
| 7 | 📋 SET | `inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);` // 要求種別コード（新規） [➔ YOKYU_SBT_CD_NEW="02"] |
| 8 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN);` // オーダ発行条件コード（機器提供開始条件） [➔ ODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN="13"] |
| 9 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 10 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 11 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 12 | 📋 SET | `inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_257);` // オーダ内容コード（光電話・VA変更） [➔ ODR_NAIYO_CD_257="257"] |
| 13 | 📋 SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);` // サービス契約内訳番号 |
| 14 | 📋 SET | `inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);` // サービス契約内訳世代登録年月日時分秒 |
| 15 | 📋 SET | `inMap.put("op_svc_kei_no", "");` // オプションサービス契約番号（Ｍｙホームページ） |
| 16 | 📋 SET | `inMap.put("opsvkei_gadtm", "");` // オプションサービス契約世代登録年月日時分秒（Myホームページ） |
| 17 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 18 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 19 | 📋 SET | `inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);` // 機器提供サービス契約番号 |
| 20 | 📋 SET | `inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);` // 機器提供サービス契約世代登録年月日時分秒 |
| 21 | 📋 SET | `inMap.put("huka_inf_kei_no", this.htelno_svkeiuw_no);` // 付加情報契約番号（サービス契約内訳番号） [➔ htelno_svkeiuw_no="null"] |
| 22 | 📋 SET | `inMap.put("huka_inf_kei_gadtm", this.htelno_svkeiuw_gadtm);` // 付加情報契約世代登録年月日時分秒（サービス契約内訳世代登録年月日時分秒） [➔ htelno_svkeiuw_gadtm="null"] |
| 23 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 24 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 1 blocks (1 depth levels)

### addSODHPAccessAdd()

---

#### 1. 役割

Myホームページのアクセス分析登録に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、ユーザデータ（inMap）から必要な情報を取得し、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークにアクセス分析登録のオーダ情報を登録します。  
このロジックは「ホームページアクセス分析」業務において、オプションサービス契約（Myホームページ）の登録をSODとして登録するための標準的な処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODHPAccessAdd（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| S2["Step2: （1） オーダ発行条件登録（即時発行）"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = op_svc_kei_no_hp\n- sbop_svc_kei_no = ''\n- mlad = ''\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '04' （WEB）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（アクセス分析登録）"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '124' （WEB・アクセス分析登録）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '124'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = op_svc_kei_no_hp\n- opsvkei_gadtm = op_gadtm_hp\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、下記2処理を行う。
    - (1) オーダ発行条件登録
        - `inMap`に必要なフィールドを設定（サービス契約内訳番号、オプションサービス契約番号、メールアドレス、オーダ種別コード（ネット）、サービスオーダコード（WEB）、要求種別コード（変更）、オーダ発行条件コード（即時発行）、同一処理番号）。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録
        - `inMap`にアクセス分析登録用のフィールドを再設定（オーダ内容コード（WEB・アクセス分析登録）、関連契約番号・世代登録年月日時分秒等）。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODHPAccessAdd` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODHPAccessAdd()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L20041)

> 📌 ユーザデータ情報

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 2 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_hp);` // オプションサービス契約番号（Ｍｙホームページ） |
| 3 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 4 | 📋 SET | `inMap.put("mlad", "");` // メールアドレス |
| 5 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 6 | 📋 SET | `inMap.put("svc_order_cd", "04");` // サービスオーダコード（WEB） |
| 7 | 📋 SET | `inMap.put("yokyu_sbt_cd", "04");` // 要求種別コード（変更） |
| 8 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 9 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 10 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 11 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 12 | 📋 SET | `inMap.put("odr_naiyo_cd", "124");` // オーダ内容コード（WEB・アクセス分析登録） |
| 13 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 14 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 15 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_hp);` // オプションサービス契約番号（Ｍｙホームページ） |
| 16 | 📋 SET | `inMap.put("opsvkei_gadtm", op_gadtm_hp);` // オプションサービス契約世代登録年月日時分秒（Myホームページ） |
| 17 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 18 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 19 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 20 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 21 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 22 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 1 blocks (1 depth levels)

### addSODVirusChkAdd()

---

#### 1. 役割

メールウイルスチェック追加に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、複数のメールアドレス・オプションサービス契約ごとに、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークに「メール・ウイルスチェック登録」のオーダ情報を登録します。  
このロジックは「メールアドレス単位でウイルスチェックサービスを追加」する場合の標準的なSOD発行処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODVirusChkAdd（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| FOR1["for each メールウイルスチェック対象（sbop_svckeino_mlvirus_map）"]
  FOR1 --> S2["Step2: （1） オーダ発行条件登録"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = op_svc_kei_no_ml\n- sbop_svc_kei_no = ''\n- mlad = メールアドレス\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '03' （メール）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（メール・ウイルスチェック登録）"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '114' （メール・ウイルスチェック登録）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '114'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = op_svc_kei_no_ml\n- opsvkei_gadtm = オプションサービス契約世代登録年月日時分秒\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、メールウイルスチェック対象ごとにforループで処理。
    - (1) オーダ発行条件登録
        - `inMap`にサービス契約内訳番号（空）、オプションサービス契約番号（op_svc_kei_no_ml）、メールアドレス、オーダ種別コード（ネット）、サービスオーダコード（メール）、要求種別コード（変更）、オーダ発行条件コード（即時発行）、同一処理番号を設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（メール・ウイルスチェック登録）
        - `inMap`にオーダ内容コード（メール・ウイルスチェック登録）、関連契約番号・世代登録年月日時分秒等を再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODVirusChkAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODVirusChkAdd()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L19918)

> 📌 ユーザデータ情報

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### · Block 1.1 — 🔁 FOR `(for)` (L19921)

> 📌 ST1-2012-0000319 2012/08/20 start

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `Map.Entry<String, String[]> entry = (Map.Entry)it.next();` |
| 2 | 📦 VAR | `String op_svc_kei_no_ml = entry.getKey().split(SEP)[0];` |
| 3 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 4 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_ml);` // オプションサービス契約番号（Ｅメール） |
| 5 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 6 | 📋 SET | `inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[1]);` // メールアドレス |
| 7 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 8 | 📋 SET | `inMap.put("svc_order_cd", "03");` // サービスオーダコード（メール） |
| 9 | 📋 SET | `inMap.put("yokyu_sbt_cd", "04");` // 要求種別コード（変更） |
| 10 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 11 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 12 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 13 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 14 | 📋 SET | `inMap.put("odr_naiyo_cd", "114");` // オーダ内容コード（メール・ウイルスチェック登録） |
| 15 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 16 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 17 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_ml);` // オプションサービス契約番号（Ｅメール） |
| 18 | 📋 SET | `inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[0]);` // オプションサービス契約世代登録年月日時分秒（Ｅメール） |
| 19 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 20 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 21 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 22 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 23 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 24 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 2 blocks (2 depth levels)

### addSODMListNew()

---

#### 1. 役割

メーリングリスト新規登録に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、複数のメーリングリスト（オプションサービス契約番号）ごとに、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークに「ML・登録」のオーダ情報を登録します。  
このロジックは「メーリングリストを新規で追加」する場合の標準的なSOD発行処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODMListNew（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| FOR1["for each メーリングリスト（op_svc_kei_no_mlist_map）"]
  FOR1 --> S2["Step2: （1） オーダ発行条件登録"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = entry.getKey（）\n- sbop_svc_kei_no = ''\n- mlad = ''\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '05' （ML）\n- yokyu_sbt_cd = '02' （新規）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（ML・登録）"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '129' （ML・登録）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '129'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = entry.getKey（）\n- opsvkei_gadtm = entry.getValue（）\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、メーリングリストごとにforループで処理。
    - (1) オーダ発行条件登録
        - `inMap`にサービス契約内訳番号（空）、オプションサービス契約番号、メールアドレス（空）、オーダ種別コード（ネット）、サービスオーダコード（ML）、要求種別コード（新規）、オーダ発行条件コード（即時発行）、同一処理番号を設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（ML・登録）
        - `inMap`にオーダ内容コード（ML・登録）、関連契約番号・世代登録年月日時分秒等を再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODMListNew` | `executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)`<br>`executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODMListNew()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L19658)

> 📌 ユーザデータ情報

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### · Block 1.1 — 🔁 FOR `(for)` (L19661)

> 📌 ST1-2012-0000319 2012/08/20 start

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `Map.Entry<String, String> entry = (Map.Entry)it.next();` |
| 2 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 3 | 📋 SET | `inMap.put("op_svc_kei_no", entry.getKey());` // オプションサービス契約番号（メーリングリスト） |
| 4 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 5 | 📋 SET | `inMap.put("mlad", "");` // メールアドレス |
| 6 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 7 | 📋 SET | `inMap.put("svc_order_cd", "05");` // サービスオーダコード（ML） |
| 8 | 📋 SET | `inMap.put("yokyu_sbt_cd", "02");` // 要求種別コード（新規） |
| 9 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 10 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 11 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 12 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 13 | 📋 SET | `inMap.put("odr_naiyo_cd", "129");` // オーダ内容コード（ML・登録） |
| 14 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 15 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 16 | 📋 SET | `inMap.put("op_svc_kei_no", entry.getKey());` // オプションサービス契約番号（メーリングリスト） |
| 17 | 📋 SET | `inMap.put("opsvkei_gadtm", entry.getValue());` // オプションサービス契約世代登録年月日時分秒（メーリングリスト） |
| 18 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 19 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 20 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 21 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 22 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 23 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 2 blocks (2 depth levels)

### addSODMailCapaChg()

---

#### 1. 役割

メールボックス容量変更に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、複数のメール容量追加対象（mlcapa_flg_list）ごとに、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークに「メール・メールボックス容量変更」のオーダ情報を登録します。  
このロジックは「メールボックス容量を追加・変更」する場合の標準的なSOD発行処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODMailCapaChg（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| FOR1["for i in mlcapa_flg_list （容量追加対象アカウント）"]
  FOR1 --> S2["Step2: （1） オーダ発行条件登録"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["sbopSvcKeiNos = mlcapa_flg_list.get（i）.split（SEP）\n- op_svc_kei_no = sbopSvcKeiNos[0]\n- sbop_svc_kei_no = sbopSvcKeiNos[1]"]
  S3 --> S4["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = sbopSvcKeiNos[0]\n- sbop_svc_kei_no = sbopSvcKeiNos[1]\n- mlad = メールアドレス\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '03' （メール）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S4 --> S5["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S5 --> S6["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S6 --> S7["Step3: （2） オーダ情報作成ワーク登録（メール・メールボックス容量変更）"]
  S7 -.-> NOTE_S7["odr_naiyo_cd = '113' （メール・メールボックス容量変更）"]
  style NOTE_S7 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S7 --> S8["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '113'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = sbopSvcKeiNos[0]\n- opsvkei_gadtm = op_svc_kei_no_ml_map.get（sbopSvcKeiNos[0]）[0]\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S8 --> S9["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S9 --> S10["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S10 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、mlcapa_flg_list内の各容量追加対象メールアカウントごとにforループで処理。
    - (1) オーダ発行条件登録
        - sbopSvcKeiNos = mlcapa_flg_list.get(i).split(SEP)
        - `inMap`にサービス契約内訳番号（空）、オプションサービス契約番号、サブオプションサービス契約番号、メールアドレス、オーダ種別コード（ネット）、サービスオーダコード（メール）、要求種別コード（変更）、オーダ発行条件コード（即時発行）、同一処理番号を設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（メール・メールボックス容量変更）
        - `inMap`にオーダ内容コード（メール・メールボックス容量変更）、関連契約番号・世代登録年月日時分秒等を再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODMailCapaChg` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODMailCapaChg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L19844)

> 📌 ユーザデータ情報

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### · Block 1.1 — 🔁 FOR `(for)` (L19847)

> 📌 ST1-2012-0000319 2012/08/20 start

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String[] sbopSvcKeiNos = mlcapa_flg_list.get(i).split(SEP);` |
| 2 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 3 | 📋 SET | `inMap.put("op_svc_kei_no", sbopSvcKeiNos[0]);` // オプションサービス契約番号（Ｅメール） |
| 4 | 📋 SET | `inMap.put("sbop_svc_kei_no", sbopSvcKeiNos[1]);` // サブオプションサービス契約番号 |
| 5 | 📋 SET | `inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(sbopSvcKeiNos[0]))[1]);` // メールアドレス |
| 6 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 7 | 📋 SET | `inMap.put("svc_order_cd", "03");` // サービスオーダコード（メール） |
| 8 | 📋 SET | `inMap.put("yokyu_sbt_cd", "04");` // 要求種別コード（変更） |
| 9 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 10 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 11 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 12 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 13 | 📋 SET | `inMap.put("odr_naiyo_cd", "113");` // オーダ内容コード（メール・メールボックス容量変更） |
| 14 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 15 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 16 | 📋 SET | `inMap.put("op_svc_kei_no", sbopSvcKeiNos[0]);` // オプションサービス契約番号（Ｅメール） |
| 17 | 📋 SET | `inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(sbopSvcKeiNos[0]))[0]);` // オプションサービス契約世代登録年月日時分秒（Ｅメール） |
| 18 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 19 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 20 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 21 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 22 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 23 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 2 blocks (2 depth levels)

### addSODMailAliasAdd()

---

#### 1. 役割

メールエイリアス登録に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、複数のメールエイリアス登録対象（sbop_svckeino_alias_map）ごとに、  
(1) オーダ発行条件の登録（即時発行）を行い、  
(2) オーダ情報作成ワークに「メール・エイリアス登録」のオーダ情報を登録します。  
このロジックは「メールエイリアスを追加登録」する場合の標準的なSOD発行処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODMailAliasAdd（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| FOR1["for each メールエイリアス登録対象（sbop_svckeino_alias_map）"]
  FOR1 --> S2["Step2: （1） オーダ発行条件登録"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_NET = '1' （ネット）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時発行）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = ''\n- op_svc_kei_no = op_svc_kei_no_ml\n- sbop_svc_kei_no = ''\n- mlad = メールアドレス\n- order_sbt_cd = '1' （ネット）\n- svc_order_cd = '03' （メール）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時発行）\n- same_trn_no = same_trn_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（メール・エイリアス登録）"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '110' （メール・エイリアス登録）"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '110'\n- svc_kei_ucwk_no = ''\n- svkeiuw_gadtm = ''\n- op_svc_kei_no = op_svc_kei_no_ml\n- opsvkei_gadtm = op_svc_kei_no_ml_map.get（op_svc_kei_no_ml）[0]\n- sbop_svc_kei_no = sbop_svckeino_alias\n- sbopsvkei_gadtm = sbop_gadtm_alias\n- kktk_svc_kei_no = ''\n- kktsvkei_gadtm = ''"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、メールエイリアス登録対象ごとにforループで処理。
    - (1) オーダ発行条件登録
        - `inMap`にサービス契約内訳番号（空）、オプションサービス契約番号（op_svc_kei_no_ml）、メールアドレス、オーダ種別コード（ネット）、サービスオーダコード（メール）、要求種別コード（変更）、オーダ発行条件コード（即時発行）、同一処理番号を設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（メール・エイリアス登録）
        - `inMap`にオーダ内容コード（メール・エイリアス登録）、関連契約番号・世代登録年月日時分秒等を再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODMailAliasAdd` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 2 | `newNet` | private | インターネットサービス新規契約処理<br> <br> (1)FTTH認証の新規登録を行う。<br> (2)Eメールの新規登録を行う。<br> (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br> (4)メーリング… |

---

#### 📋 Per-Branch 詳細ブロック — `addSODMailAliasAdd()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L19778)

> 📌 ユーザデータ情報

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### · Block 1.1 — 🔁 FOR `(for)` (L19781)

> 📌 ST1-2012-0000319 2012/08/20 start

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `Map.Entry<String, String[]> entry = (Map.Entry)it.next();` |
| 2 | 📦 VAR | `String op_svc_kei_no_ml = entry.getKey().split(SEP)[0];` |
| 3 | 📦 VAR | `String sbop_svckeino_alias = entry.getValue()[0];` |
| 4 | 📦 VAR | `String sbop_gadtm_alias = entry.getValue()[1];` |
| 5 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 6 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_ml);` // オプションサービス契約番号（Ｅメール） |
| 7 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 8 | 📋 SET | `inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[1]);` // メールアドレス |
| 9 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);` // オーダ種別コード（ネット） [➔ ORDER_SBT_CD_NET="1"] |
| 10 | 📋 SET | `inMap.put("svc_order_cd", "03");` // サービスオーダコード（メール） |
| 11 | 📋 SET | `inMap.put("yokyu_sbt_cd", "04");` // 要求種別コード（変更） |
| 12 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時発行） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 13 | 📋 SET | `inMap.put("same_trn_no", same_trn_no);` // 同一処理番号 |
| 14 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 15 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 16 | 📋 SET | `inMap.put("odr_naiyo_cd", "110");` // オーダ内容コード（メール・エイリアス登録） |
| 17 | 📋 SET | `inMap.put("svc_kei_ucwk_no", "");` // サービス契約内訳番号 |
| 18 | 📋 SET | `inMap.put("svkeiuw_gadtm", "");` // サービス契約内訳世代登録年月日時分秒 |
| 19 | 📋 SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_ml);` // オプションサービス契約番号（Ｅメール） |
| 20 | 📋 SET | `inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[0]);` // オプションサービス契約世代登録年月日時分秒（Ｅメール） |
| 21 | 📋 SET | `inMap.put("sbop_svc_kei_no", sbop_svckeino_alias);` // サブオプションサービス契約番号（メールエイリアス） |
| 22 | 📋 SET | `inMap.put("sbopsvkei_gadtm", sbop_gadtm_alias);` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 23 | 📋 SET | `inMap.put("kktk_svc_kei_no", "");` // 機器提供サービス契約番号 |
| 24 | 📋 SET | `inMap.put("kktsvkei_gadtm", "");` // 機器提供サービス契約世代登録年月日時分秒 |
| 25 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 26 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 2 blocks (2 depth levels)

### addSODMRTChgRTSta()

---

#### 1. 役割

多機能ルーター（MRT）のルーター機能変更に関するSOD（サービスオーダ）発行処理を行うメソッドです。  
具体的には、ユーザデータ（inMap）からサービス契約内訳番号、サービス契約回線内訳番号、機器提供サービス契約番号（多機能ルーター）、機器オプションサービス契約番号（ルーター機能）などの情報を取得し、  
(1) オーダ発行条件（多機能ルーター設定・変更）を登録し、  
(2) オーダ情報作成ワークに「多機能ルーター設定・変更(ルータ機能・登録)」のオーダ情報を登録します。  
このロジックは「多機能ルーターのルーター機能の状態変更」業務においてSOD発行のための標準的な処理パターンです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["addSODMRTChgRTSta（handle, param）"] --> S1["Step1: ユーザデータ情報inMapをparamから取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -.- NOTE_IF1["inMap: ユーザデータ情報"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: データ有"| S2["Step2: （1） オーダ発行条件登録（多機能ルーター設定・変更）"]
  S2 -.-> NOTE_S2["ORDER_SBT_CD_TEL = '2' （電話）\nSVC_ORDER_CD_MRT = '26' （多機能ルーター設定）\nYOKYU_SBT_CD_CHG = '04' （変更）\nODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = '01' （即時）"]
  style NOTE_S2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S2 --> S3["inMapに各種キー情報を設定\n- svc_kei_ucwk_no = svc_kei_ucwk_no[0]\n- op_svc_kei_no = ''\n- sbop_svc_kei_no = ''\n- svc_kei_kaisen_ucwk_no = svc_kei_kaisen_ucwk_no\n- kktk_svc_kei_no = takino_kktk_svc_kei_no\n- mlad = ''\n- order_sbt_cd = '2' （電話）\n- svc_order_cd = '26' （多機能ルーター設定）\n- yokyu_sbt_cd = '04' （変更）\n- odr_hakko_joken_cd = '01' （即時）\n- kkop_svc_kei_no_1 = kkop_svc_kei_no"]
  S3 --> S4["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S4 --> S5["executeOdrHakkoJokenAdd（handle, param） 呼出"]

  S5 --> S6["Step3: （2） オーダ情報作成ワーク登録（多機能ルーター設定・変更（ルータ機能・登録））"]
  S6 -.-> NOTE_S6["odr_naiyo_cd = '402' （多機能ルーター設定・変更（ルータ機能・登録））"]
  style NOTE_S6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S6 --> S7["inMapに各種キー情報を再設定\n- odr_naiyo_cd = '402'\n- svc_kei_ucwk_no = svc_kei_ucwk_no[0]\n- svkeiuw_gadtm = svc_kei_ucwk_gadtm[0]\n- op_svc_kei_no = ''\n- opsvkei_gadtm = ''\n- sbop_svc_kei_no = ''\n- sbopsvkei_gadtm = ''\n- kktk_svc_kei_no = takino_kktk_svc_kei_no\n- kktsvkei_gadtm = takino_kktk_svc_kei_gadtm\n- kkop_svc_kei_no_1 = kkop_svc_kei_no\n- kkosvkei_gadtm_1 = kkop_svc_kei_gadtm\n- huka_inf_kei_no = takino_svc_kei_kaisen_ucwk_no\n- huka_inf_kei_gadtm = takino_svc_kei_kaisen_ucwk_gadtm"]
  S7 --> S8["param.setData（HAKKOSODCCWORKMAP, inMap）"]
  S8 --> S9["executeOdrInfoSakseiWkAdd（handle, param） 呼出"]

  IF1 -->|"No: データなし"| END["何もせずreturn param"]

  S9 --> RET["return param"]
  END --> RET
```

**処理ステップ詳細:**

1. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` でユーザデータ情報（inMap）を取得。
2. `inMap != null` の場合、下記2処理を行う。
    - (1) オーダ発行条件登録（多機能ルーター設定・変更）
        - `inMap`にサービス契約内訳番号、サービス契約回線内訳番号、機器提供サービス契約番号（多機能ルータ）、機器オプションサービス契約番号（ルーター機能）、オーダ種別コード（電話）、サービスオーダコード（多機能ルーター設定）、要求種別コード（変更）、オーダ発行条件コード（即時）、等を設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrHakkoJokenAdd(handle, param)` でオーダ発行条件登録。
    - (2) オーダ情報作成ワーク登録（多機能ルーター設定・変更(ルータ機能・登録)）
        - `inMap`にオーダ内容コード（多機能ルーター設定・変更(ルータ機能・登録)）、関連契約番号・世代登録年月日時分秒等を再設定。
        - `param.setData(JKKHakkoSODCCWORKMAP, inMap)` でデータ反映。
        - `executeOdrInfoSakseiWkAdd(handle, param)` でワーク登録。
3. いずれの場合も`param`を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| C | `executeOdrHakkoJokenAdd` | EKK1081D010CBS | KK_T_ODR_INF_SKSI_WK, KK_T_ODR_HAKKO_JOKEN | (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録) |
| C | `executeOdrInfoSakseiWkAdd` | - | - | (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → addSODMRTChgRTSta` | `executeOdrHakkoJokenAdd [C] EKK1081D010CBS [KK_T_ODR_INF_SKSI_WK/KK_T_ODR_HAKKO_JOKEN] (オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録)`<br>`executeOdrInfoSakseiWkAdd [C] - (オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録)` |
---
---

#### 📋 Per-Branch 詳細ブロック — `addSODMRTChgRTSta()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap != null)` (L20223)

> 📌 ユーザデータ情報

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);` // サービス契約内訳番号 |
| 2 | 📋 SET | `inMap.put("op_svc_kei_no", "");` // オプションサービス契約番号 |
| 3 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号 |
| 4 | 📋 SET | `inMap.put("svc_kei_kaisen_ucwk_no", svc_kei_kaisen_ucwk_no);` // サービス契約回線内訳番号 |
| 5 | 📋 SET | `inMap.put("kktk_svc_kei_no",takino_kktk_svc_kei_no);` // 機器提供サービス契約番号(多機能ルータ) |
| 6 | 📋 SET | `inMap.put("mlad", "");` // メールアドレス |
| 7 | 📋 SET | `inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);` // オーダ種別コード（電話） [➔ ORDER_SBT_CD_TEL="2"] |
| 8 | 📋 SET | `inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MRT);` // サービスオーダコード（多機能ルーター設定・変更） [➔ SVC_ORDER_CD_MRT="26"] |
| 9 | 📋 SET | `inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);` // 要求種別コード（変更） [➔ YOKYU_SBT_CD_CHG="04"] |
| 10 | 📋 SET | `inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);` // オーダ発行条件コード（即時） [➔ ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO="01"] |
| 11 | 📋 SET | `inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_no);` // 機器オプションサービス契約番号１(ルーター機能) |
| 12 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 13 | 📞 CALL | `param = executeOdrHakkoJokenAdd(handle, param);` |
| 14 | 📋 SET | `inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_402);` // オーダ内容コード（多機能ルーター設定・変更(ルータ機能・登録)） [➔ ODR_NAIYO_CD_402="402"] |
| 15 | 📋 SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);` // サービス契約内訳番号 |
| 16 | 📋 SET | `inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);` // サービス契約内訳世代登録年月日時分秒 |
| 17 | 📋 SET | `inMap.put("op_svc_kei_no", "");` // オプションサービス契約番号（Ｍｙホームページ） |
| 18 | 📋 SET | `inMap.put("opsvkei_gadtm", "");` // オプションサービス契約世代登録年月日時分秒（Myホームページ） |
| 19 | 📋 SET | `inMap.put("sbop_svc_kei_no", "");` // サブオプションサービス契約番号（メールエイリアス） |
| 20 | 📋 SET | `inMap.put("sbopsvkei_gadtm", "");` // サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 21 | 📋 SET | `inMap.put("kktk_svc_kei_no", takino_kktk_svc_kei_no);` // 機器提供サービス契約番号 |
| 22 | 📋 SET | `inMap.put("kktsvkei_gadtm", takino_kktk_svc_kei_gadtm);` // 機器提供サービス契約世代登録年月日時分秒 |
| 23 | 📋 SET | `inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_no);` // 機器オプションサービス契約番号１(ルーター機能) |
| 24 | 📋 SET | `inMap.put("kkosvkei_gadtm_1", kkop_svc_kei_gadtm);` // 機器オプションサービス契約世代登録年月日時分秒１(ルーター機能) [➔ kkop_svc_kei_gadtm="null"] |
| 25 | 📋 SET | `inMap.put("huka_inf_kei_no", takino_svc_kei_kaisen_ucwk_no);` // 付加情報契約番号（サービス契約回線内訳番号） |
| 26 | 📋 SET | `inMap.put("huka_inf_kei_gadtm", takino_svc_kei_kaisen_ucwk_gadtm);` // 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒） |
| 27 | ⚡ EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);` [➔ HAKKOSODCCWORKMAP="HakkoSODCCWORK"] \| |
| 28 | 📞 CALL | `param = executeOdrInfoSakseiWkAdd(handle, param);` |

> **合計**: 1 blocks (1 depth levels)



---

## 📋 全分岐詳細 (deterministic per-branch table)

> 以下のテーブルはソースコードから deterministic に生成されたものです。全条件分岐を網羅します。

### 📞 Screen/Batch 呼び出し元 (External Entry Points)

> このクラスを呼び出すScreen/Batchの一覧です（クラスレベルの呼び出し元）。
> **「呼出チェーン」列**: CC直接エントリメソッド → IntraClass経由 → 本チャンクの対象メソッド（**太字**）の実際の呼出パス。
> ※ 例: `CCエントリメソッド → 中間メソッド → **対象メソッド**` — 左端がCC入口、太字が本チャンクの対象メソッド。
> **「種別」列**: BPCheck＝業務確認チェック, Batch＝バッチ処理, Operation＝オペレーション, CC＝制御クラス。

| # | Screen/Batch | 種別 | 呼び出しクラス | 呼び出しメソッド | 呼出チェーン（CC入口 → IntraClass → 対象） |
|---|---|---|---|---|---|
| 1 | `KKSV0004` | BPCheck | `KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 2 | `KKSV0008` | BPCheck | `KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 3 | `KKSV0009` | BPCheck | `KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 4 | `KKSV0031` | BPCheck | `KKSV0031OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 5 | `KKSV0073` | BPCheck | `KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 6 | `KKSV0136` | BPCheck | `KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 7 | `KKSV0162` | BPCheck | `KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 8 | `KKSV0428` | BPCheck | `KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 9 | `KKSV0429` | BPCheck | `KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 10 | `KKSV0430` | BPCheck | `KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS` |

## ③.6 制御フロー分岐 (Control Flow Branching)

### `addSODMailAliasAdd()` (L19771) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (inMap != null) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19778 |
| 2 | · 🔁 FOR | D1 | (for-loop) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19781 |
| 3 | ↩️ RETURN | D0 | param | - | - | - | L19820 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["addSODMailAliasAdd()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （inMap != null）"]
    direction TB
    C0_0["FOR: …"]
  end
  CF0 -->|"L19778"| SG0
  B1["RETURN: param"]
  CF0 -->|"L19820"| B1
```

### `addSODMailCapaChg()` (L19837) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (inMap != null) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19844 |
| 2 | · 🔁 FOR | D1 | (for-loop) | ↓↓↓2012-11-02追加　ロット１ST1-2012-0000862（ＰＴ時、メール容量追加後の照査でヌルポ）↓↓↓ | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19847 |
| 3 | ↩️ RETURN | D0 | param | - | - | - | L19894 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["addSODMailCapaChg()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （inMap != null）"]
    direction TB
    C0_0["FOR: …"]
  end
  CF0 -->|"L19844"| SG0
  B1["RETURN: param"]
  CF0 -->|"L19894"| B1
```

### `addSODMListNew()` (L19651) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (inMap != null) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19658 |
| 2 | · 🔁 FOR | D1 | (for-loop) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19661 |
| 3 | ↩️ RETURN | D0 | param | - | - | - | L19697 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["addSODMListNew()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （inMap != null）"]
    direction TB
    C0_0["FOR: …"]
  end
  CF0 -->|"L19658"| SG0
  B1["RETURN: param"]
  CF0 -->|"L19697"| B1
```

### `addSODVirusChkAdd()` (L19911) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (inMap != null) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19918 |
| 2 | · 🔁 FOR | D1 | (for-loop) | ST1-2012-0000319 2012/08/20 start | - | `executeOdrHakkoJokenAdd()`, `executeOdrInfoSakseiWkAdd()` | L19921 |
| 3 | ↩️ RETURN | D0 | param | - | - | - | L19960 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["addSODVirusChkAdd()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （inMap != null）"]
    direction TB
    C0_0["FOR: …"]
  end
  CF0 -->|"L19918"| SG0
  B1["RETURN: param"]
  CF0 -->|"L19960"| B1
```

> **制御フロー合計**: 4 methods, 12 branches
