#  業務ロジック  Part 1/12

## ⑥ メソッド詳細分析 (Business Logic) — 352 Methods

> 全352件の業務詳細分析。各メソッドに呼出元トレース・CRUD操作を含む。

### adchgFixOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
adchgFixOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite adchgFixOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

住所変更・確定に関するオーダ制御処理。SOD基本情報・契約情報等をもとに、住所変更の各パターン（新規・コース変更等）に応じて適切な後続業務ロジック（新規契約/コース変更）を呼び出す。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["adchgFixOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD_KIHON_INFO, SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO取得→shkkaMap"]
  S1 --> S2["SYSID・異動区分・契約番号等取得"]
  S2 --> IF1{"サービス契約番号未設定かつ先サービス契約番号有+異動区分=住所変更・確定"}
  IF1 -- "Yes" --> S3["先サービス契約番号の契約情報取得→新規契約オーダ制御 newKeiOdrCtrl"]
  IF1 -- "No" --> IF2{"サービス契約番号/先サービス契約番号一致+異動区分=住所変更・確定"}
  IF2 -- "Yes" --> S4["コース変更オーダ制御 courseChgeOdrCtrl"]
  IF2 -- "No" --> S5["通常処理"]
  S3 --> RET["param返却"]
  S4 --> RET
  S5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `sodMap`から主要キー取得→`shkkaMap`でマッピング
2. SYSID・異動区分・サービス契約番号等取得
3. `サービス契約番号未設定かつ先サービス契約番号有+異動区分=住所変更・確定`の場合は先サービス契約番号の契約情報取得し新規契約オーダ制御実行
4. `サービス契約番号/先サービス契約番号一致+異動区分=住所変更・確定`の場合はコース変更オーダ制御実行
5. それ以外は通常終了

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isBlank(svc_kei_no) && !isBlank(saki_svc_kei_no) && IDO_DIV_ADCHGFIX` | 住所変更・確定 | newKeiOdrCtrl |
| 2 | `!isBlank(svc_kei_no) && !isBlank(saki_svc_kei_no) && saki_svc_kei_no.equals(svc_kei_no) && IDO_DIV_ADCHGFIX` | 住所変更・確定 | courseChgeOdrCtrl |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0791A010SC | EKK0791 | 料金コース | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → adchgFixOdrCtrl

**呼出パス:**

```
hakkoSOD → adchgFixOdrCtrl → newKeiOdrCtrl/courseChgeOdrCtrl
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081B001SC | R | オーダ発行条件 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0341B002SC | R | 機器提供サービス契約 |
| callEKK0791A010SC | R | 料金コース |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341A010SC | R | 機器提供サービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |

---

---

### add050AddSod()

#### 呼出元 (Reverse Call Tree) — 12 direct callers

```
add050AddSod() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
│       └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite add050AddSod(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String svcKeiUcwkNo, String svcKeiUcwkGeneAddDtm, String opSvcKeiNo, String opSvcKeiGeneAddDtm)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

050番号置換・登録のSOD（ODR_NAIYO_CD_248）を発行する業務メソッドです。親サービス契約内訳やオプションサービス契約の状態・各種照会結果を基に、登録対象となるかを判定し、条件を満たした場合のみSOD登録を行います。呼出元は複数業務メソッドです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["add050AddSod(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, opSvcKeiNo, opSvcKeiGeneAddDtm)"]
    --> S1["Step1: searchSvcKeiUcwkでサービス契約内訳一意照会"]
    --> S2["Step2: searchSvcKeiUcwkEohtlでeo光電話内訳照会"]
    --> S3["Step3: searchOpSvcKeiでオプションサービス契約一意照会"]
    --> IF1{"isAddSodTrgtStat(opSvcKeiStat)"}
    IF1 -- "No" --> RET1["return param"]
    IF1 -- "Yes" --> IF2{"isStaRsv(opSvcKeiStat, svcKeiUcwkstat, svcUseStaKiboYmd)"}
    IF2 -- "Yes" --> RET2["return param"]
    IF2 -- "No" --> IF3{"bmpUm = '1' (CD_DIV_UM_ARI)"}
    IF3 -- "Yes" --> IF4{"!isBmpOpenZumi(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm)"}
    IF4 -- "Yes" --> RET3["return param"]
    IF4 -- "No" --> S4["addSOD(ODR_NAIYO_CD_248)で登録"]
    IF3 -- "No" --> S4
    S4 --> RET4["return param"]
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isAddSodTrgtStat(opSvcKeiStat)` | - | return param |
| 2 | `isStaRsv(opSvcKeiStat, svcKeiUcwkstat, svcUseStaKiboYmd)` | - | return param |
| 3 | `bmpUm = '1'` | JKKStrConst.CD_DIV_UM_ARI | isBmpOpenZumi判定 |
| 4 | `!isBmpOpenZumi(...)` | - | return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | svcKeiUcwkGeneAddDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | opSvcKeiNo | String | オプションサービス契約番号 |
| 7 | opSvcKeiGeneAddDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- telNoChge → add050AddSod
- 他多数

**呼出パス:**

```
telNoChge → add050AddSod → searchSvcKeiUcwk → callEKK0161A010SC
                              → searchSvcKeiUcwkEohtl → callEKK0191A010SC
                              → searchOpSvcKei → callEKK0351A010SC
                              → addSOD(ODR_NAIYO_CD_248)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### add050DelSod()

#### 呼出元 (Reverse Call Tree) — 12 direct callers

```
add050DelSod() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite add050DelSod(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String svcKeiUcwkNo, String svcKeiUcwkGeneAddDtm, String opSvcKeiNo, String opSvcKeiGeneAddDtm)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

050番号置換・消去オーダのSOD（ODR_NAIYO_CD_249）を発行する業務メソッドです。オプションサービス契約の状態等を照会し、消去対象ステータス・発行済判定等を経て、必要な場合のみSOD登録処理を行います。呼出元は複数業務メソッドです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["add050DelSod(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, opSvcKeiNo, opSvcKeiGeneAddDtm)"]
    --> S1["searchOpSvcKeiでオプションサービス契約一意照会"]
    --> IF1{"isDelSodTrgtStat(opSvcKeiStat)"}
    IF1 -- "No" --> RET1["return param"]
    IF1 -- "Yes" --> IF2{"is050AddOrderHakkoZumi(param, handle, svcKeiNo, svcKeiUcwkNo, opSvcKeiNo)"}
    IF2 -- "No" --> RET2["return param"]
    IF2 -- "Yes" --> S2["addSOD(ODR_NAIYO_CD_249)で消去SOD登録"]
    S2 --> RET3["return param"]
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isDelSodTrgtStat(opSvcKeiStat)` | - | return param |
| 2 | `!is050AddOrderHakkoZumi(...)` | - | return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | svcKeiUcwkGeneAddDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | opSvcKeiNo | String | オプションサービス契約番号 |
| 7 | opSvcKeiGeneAddDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- telNoChge → add050DelSod
- 他多数

**呼出パス:**

```
telNoChge → add050DelSod → searchOpSvcKei → callEKK0351A010SC
                       → addSOD(ODR_NAIYO_CD_249)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### addSOD()

#### 呼出元 (Reverse Call Tree) — 43 direct callers

```
addSOD() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── add050AddSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── telNoChge()
├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── telNoChge()
├── addTensoDenwaOp()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── bmpDojiMskm()
│   ├── hakkoSOD()
│   ├── stpRlsOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   └── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── enumAddOdrCtrl()
│   └── hakkoSOD()
├── enumDelOdrCtrl()
│   └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── idpwShkkaSaifuriOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── setChgePWForDialup()
│   ├── hakkoSOD()
│   └── idpwShkkaSaifuriOdrCtrl()
├── setChgePWForMltiSe()
│   ├── hakkoSOD()
│   └── idpwShkkaSaifuriOdrCtrl()
├── setChgePWForRouterConInfo()
│   ├── hakkoSOD()
│   └── idpwShkkaSaifuriOdrCtrl()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
├── stpUkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── useStpOdrCtrl()
│       └── hakkoSOD()
├── taiikiSeigenOdrCtrl()
│   └── hakkoSOD()
├── telNoChge()
│   ├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
├── vLanIdVaChangeOdrCtrl()
│   └── hakkoSOD()
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSOD(SessionHandle handle, IRequestParameterReadWrite param, String orderNaiyoCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ内容コード（orderNaiyoCd）に応じて、必要な情報をマッピングし、オーダ発行条件登録・オーダ情報作成ワーク登録を行うSOD（サービスオーダドキュメント）発行の基幹処理。  
全てのSOD発行業務の中心。orderNaiyoCdごとに複雑な分岐を持ち、定数値や付加情報の細かい制御も行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSOD(handle, param, orderNaiyoCd)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> SW1{"orderNaiyoCdの値"}
  SW1 -- "ODR_NAIYO_CD_101" --> P101["FTTH認証・登録パス"]
  SW1 -- "ODR_NAIYO_CD_102" --> P102["FTTH認証・パスワード変更パス"]
  SW1 -- "ODR_NAIYO_CD_103" --> P103["FTTH認証・解約パス"]
  SW1 -- "ODR_NAIYO_CD_104" --> P104["FTTH認証・消去パス"]
  SW1 -- "ODR_NAIYO_CD_105" --> P105["FTTH認証・回復パス"]
  SW1 -- "ODR_NAIYO_CD_106" --> P106["FTTH認証・一時停止パス"]
  SW1 -- "ODR_NAIYO_CD_107" --> P107["FTTH認証・停止解除パス"]
  SW1 -- "ODR_NAIYO_CD_108" --> P108["メール・登録パス"]
  %% ... 全orderNaiyoCd分岐を列挙 ...
  P101 --> JOK1["executeOdrHakkoJokenAdd(handle, param)"]
  JOK1 --> IWK1["executeOdrInfoSakseiWkAdd(handle, param)"]
  IWK1 --> RET
  P102 --> JOK2["executeOdrHakkoJokenAdd(handle, param)"]
  JOK2 --> IWK2["executeOdrInfoSakseiWkAdd(handle, param)"]
  IWK2 --> RET
  %% ... （各パス同様に展開） ...
  IF1 -- "No" --> RET["return param"]
  style IF1 fill:#ffcc00
  style SW1 fill:#f0e68c
```

**処理ステップ詳細:**

- param.getDataでinMap取得、初期化
- orderNaiyoCdごとに、必要なフィールドput
- executeOdrHakkoJokenAdd呼出（条件登録）
- executeOdrInfoSakseiWkAdd呼出（ワーク登録）
- orderNaiyoCdによっては追加の付加情報（旧VR識別判定用サービス詳細コード、メールアドレス、世代管理値など）をセット
- フェムトセル系はcallEKK0361A010SCでコード照会、getFmtcelJgsSkbtStrで識別文字列取得
- SODによっては複数回のSC呼出もあり
- 最終的にparam返却

**制御フロー分岐（全条件列挙・一部抜粋）:**

| # | 条件                                    | 定数値/分岐値          | 分岐先                                        |
|---|-----------------------------------------|------------------------|-----------------------------------------------|
| 1 | JKKHakkoSODConstCC.ODR_NAIYO_CD_101     | 101 (FTTH認証・登録)   | FTTH認証・登録パス                            |
| 2 | JKKHakkoSODConstCC.ODR_NAIYO_CD_102     | 102 (FTTH認証・PW変更) | FTTH認証・パスワード変更パス                  |
| 3 | JKKHakkoSODConstCC.ODR_NAIYO_CD_103     | 103 (FTTH認証・解約)   | FTTH認証・解約パス                            |
| 4 | JKKHakkoSODConstCC.ODR_NAIYO_CD_104     | 104 (FTTH認証・消去)   | FTTH認証・消去パス                            |
| 5 | JKKHakkoSODConstCC.ODR_NAIYO_CD_105     | 105 (FTTH認証・回復)   | FTTH認証・回復パス                            |
| 6 | JKKHakkoSODConstCC.ODR_NAIYO_CD_106     | 106 (FTTH認証・一時停止)| FTTH認証・一時停止パス                       |
| 7 | JKKHakkoSODConstCC.ODR_NAIYO_CD_107     | 107 (FTTH認証・停止解除)| FTTH認証・停止解除パス                       |
| 8 | JKKHakkoSODConstCC.ODR_NAIYO_CD_108     | 108 (メール・登録)     | メール・登録パス                              |
| 9 | JKKHakkoSODConstCC.ODR_NAIYO_CD_109     | 109 (メール・PW変更)   | メール・パスワード変更パス                    |
|10 | JKKHakkoSODConstCC.ODR_NAIYO_CD_110     | 110 (メール・エイリアス登録)| メール・エイリアス登録パス                |
|...| ...                                    | ...                    | ...                                           |
| N | else                                   | -                      | return param                                  |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                     |
|----|--------------|---------------------------|----------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                       |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク   |
| 3  | orderNaiyoCd | String                    | オーダ内容コード（SOD種別を決める主キー）    |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                | SCコード  | エンティティ             | 操作説明                  |
|------|----------------------------|-----------|--------------------------|---------------------------|
| C    | callEKK1081D010CBS         | EKK1081   | オーダ発行条件           | オーダ発行条件登録        |
| C    | callEKK1551D010CBS         | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録  |
| R    | callEKK0361A010SC          | EKK0361   | オプションサービス契約   | フェムトセル事業者コード照会 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- enumAddOdrCtrl → addSOD

**呼出パス:**

```
enumAddOdrCtrl
  → addSOD
    → formatInMap
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
    → callEKK0361A010SC（フェムトセル系のみ）
      → getFmtcelJgsSkbtStr
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |
| callEKK0361A010SC         | R    | オプションサービス契約   |

---

---

---

### addSODDupNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODDupNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODDupNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ダイヤルアップ接続サービスの新規登録（SOD）時に、オーダ発行条件とオーダ情報作成ワークを登録する共通部品です。  
ダイヤルアップの契約内訳情報を登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODDupNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号、オプションサービス契約番号などput"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd等）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. paramからinMap取得
2. inMapへ各種サービス契約内訳番号、コード等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, etc.）
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newNet → addSODDupNew

**呼出パス:**

```
newNet
  → addSODDupNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODEmailNew()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODEmailNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODEmailNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールサービスの新規登録（SOD）時に、オーダ発行条件とオーダ情報作成ワークを一括で登録する共通部品です。  
メールアドレスごとのオプションサービス契約情報もループ登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODEmailNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(entry in op_svc_kei_no_ml_map)"]
  FOR1 --> S1["Step1: inMapへ各種メール情報put"]
  S1 --> S2["Step2: executeOdrHakkoJokenAdd(handle, param)"]
  S2 --> S3["Step3: inMapへワーク情報put"]
  S3 --> S4["Step4: executeOdrInfoSakseiWkAdd(handle, param)"]
  S4 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

**処理ステップ詳細:**

1. param.getDataでinMap取得
2. inMapにメールアドレス、オプションサービス契約番号、同一処理番号などをput
3. param.setDataでinMap保存
4. executeOdrHakkoJokenAdd呼出
5. for(entry in op_svc_kei_no_ml_map)のループで
   - inMapにワーク用情報（op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, etc.）をput
   - param.setDataで格納
   - executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | for(entry)ループ実行    |
| 2 | for(entry) | -      | ワーク登録繰り返し      |
| 3 | else       | -      | そのまま return param   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newNet → addSODEmailNew

**呼出パス:**

```
newNet
  → addSODEmailNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODFtthNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODFtthNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODFtthNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

FTTH認証サービスの新規登録のためのSOD発行業務部品。  
オーダ発行条件・オーダ情報作成ワーク登録処理を担い、pplan_cd等のプラン情報も適切に管理します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODFtthNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号put, その他初期値put"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm等, pplan_cd）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> S7["Step7: 付加情報契約番号クリア"]
  S7 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. param.getDataでinMap取得
2. inMapにサービス契約内訳番号等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm, op_svc_kei_no, etc.）  
   - 付加情報契約番号（pplan_cd）をセット
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出
8. 付加情報契約番号をクリア

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newNet → addSODFtthNew

**呼出パス:**

```
newNet
  → addSODFtthNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---### executeOdrHakkoJokenAdd()

---

#### 1. 役割

オーダ発行条件登録サービスインターフェース（SC：EKK1081D010CBS）を実行し、業務パラメータから入力メッセージを編集し、サービスコールを実行、応答結果を業務パラメータにマッピングする。SOD登録処理の基本構成要素として、各種addSOD*メソッドやオーケストレーションから呼び出される中心メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["executeOdrHakkoJokenAdd(handle, param)"] --> S1["Step1: editInMsg_EKK1081D010CBS(param) 上りマッピング"]
  S1 --> S2["Step2: scCall.run(paramMap, handle) SC呼び出し部品のインスタンス生成・SC呼出"]
  S2 --> S3["Step3: editResultRP_EKK1081D010CBS(result, param) 下りマッピング"]
  S3 --> RET["return param"]

  style S1 fill:#e6ffe6
  style S2 fill:#e6f7ff
  style S3 fill:#fff3e6
```

**処理ステップ詳細:**

1. 業務パラメータ（param）からSC入力メッセージ（EKK1081D010CBS入力）を作成・設定（editInMsg_EKK1081D010CBS）。
2. SC呼出部品のインスタンス生成後、SC（EKK1081D010CBS）実行（run）。
3. SC応答結果を業務パラメータにマッピングし直す（editResultRP_EKK1081D010CBS）。
4. 編集済み業務パラメータ（param）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先         |
|---|------|--------|----------------|
| 1 | なし | -      | 基本直列処理   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                                 |
|----|-------------|--------------------------|------------------------------------------|
| 1  | handle      | SessionHandle            | セッション管理ハンドル                   |
| 2  | param       | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ         |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド               | SCコード   | エンティティ     | 操作説明                 |
|------|--------------------------|------------|------------------|--------------------------|
| C    | EKK1081D010CBS           | EKK1081    | オーダ発行条件   | オーダ発行条件登録       |

---

#### 4.5 メッセージID (Message IDs)

*該当データなし（SC結果マッピング時のエラー発生時はSC側エラーコードが該当）*

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 例: `hakkoSOD` → `addSOD` → `addSODMailAliasAdd` → **executeOdrHakkoJokenAdd**

**呼出パス:**

```
[新規登録/変更/解約各種addSOD*メソッド] → executeOdrHakkoJokenAdd → editInMsg_EKK1081D010CBS → scCall.run → editResultRP_EKK1081D010CBS → [SC: EKK1081D010CBS (CREATE)]
```

**終端 (End Points):**

| SC メソッド           | CRUD | エンティティ     |
|----------------------|------|------------------|
| EKK1081D010CBS       | C    | オーダ発行条件   |

---

---

---

### addSODHPAccessAdd()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODHPAccessAdd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPAccessAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Myホームページのアクセス分析登録に伴う、オーダ発行条件とオーダ情報作成ワークの登録処理。  
オーダ発行条件は即時発行条件、オーダ内容コードは「WEB・アクセス分析登録」でワーク登録を実施する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODHPAccessAdd(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODHPAccessAdd

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODHPAccessAdd
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODHPCapaChg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODHPCapaChg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPCapaChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

MyホームページのHP容量変更時に、オーダ発行条件・オーダ情報作成ワークを登録する業務。  
変更時は即時発行条件、オーダ内容コード「WEB・ホームページ容量変更」でワーク登録を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODHPCapaChg(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODHPCapaChg

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODHPCapaChg
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODHPNew()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODHPNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Myホームページ新規登録時のオーダ発行条件・オーダ情報作成ワーク登録処理。  
新規登録時は即時発行条件、オーダ内容コード「WEB・登録」でワーク登録を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODHPNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODHPNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODHPNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODMailAliasAdd()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODMailAliasAdd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMailAliasAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールエイリアスの登録時に、オーダ発行条件とオーダ情報作成ワークを登録する共通部品です。  
メールエイリアス付きのメールアドレスに対して付随する全情報をループで登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODMailAliasAdd(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(entry in op_svc_kei_no_ml_map)"]
  FOR1 --> S1["Step1: entryからメール情報・エイリアス情報をput"]
  S1 --> S2["Step2: executeOdrHakkoJokenAdd(handle, param)"]
  S2 --> S3["Step3: オーダ内容コード・世代管理等put"]
  S3 --> S4["Step4: executeOdrInfoSakseiWkAdd(handle, param)"]
  S4 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

**処理ステップ詳細:**

1. param.getDataでinMap取得
2. for(entry in op_svc_kei_no_ml_map)のループで
   - entryからop_svc_kei_no, sbop_svc_kei_no, mlad, etc.をput
   - param.setDataで格納
   - executeOdrHakkoJokenAdd呼出
   - inMapにワーク用情報（ワーク用オーダ内容コード, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, etc.）をput
   - param.setDataで格納
   - executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                 |
|---|------------|--------|------------------------|
| 1 | inMap!=null| -      | for(entry)ループ実行   |
| 2 | for(entry) | -      | ワーク登録繰り返し     |
| 3 | else       | -      | そのまま return param  |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newEoMobile → addSODMailAliasAdd

**呼出パス:**

```
newEoMobile
  → addSODMailAliasAdd
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODMailCapaChg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODMailCapaChg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMailCapaChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールサービスのメールボックス容量変更において、オーダ発行条件・オーダ情報作成ワークを登録する部品です。  
メールアドレスごとにループしてマルチ設定を対応します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODMailCapaChg(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(i in mlcapa_flg_list)"]
  FOR1 --> S1["Step1: sbopSvcKeiNos分割・メール情報put"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd, opsvkei_gadtm, etc.）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

**処理ステップ詳細:**

1. param.getDataでinMap取得
2. for i in mlcapa_flg_list（メール容量フラグリスト）の各要素で
   - sbopSvcKeiNosに分割し、メールアドレス・契約番号等をput
   - param.setDataで保存
   - executeOdrHakkoJokenAdd呼出
   - ワーク情報put（odr_naiyo_cd, opsvkei_gadtm, etc.）
   - param.setDataで保存
   - executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先         |
|---|------------|--------|----------------|
| 1 | inMap!=null| -      | for(i)ループ実行|
| 2 | for(i)     | -      | ワーク登録繰返し|
| 3 | else       | -      | return param    |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newNet → addSODMailCapaChg

**呼出パス:**

```
newNet
  → addSODMailCapaChg
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODMListNew()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODMListNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMListNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

**メーリングリスト新規登録におけるSOD（サービスオーダ）発行条件登録およびオーダ情報作成ワーク登録を行う業務処理。**

本メソッドは「メーリングリストの新規登録」業務にて、オーダ発行条件およびオーダ情報作成ワークを登録するためのものである。呼出元は新規ネット契約やオプション契約制御処理であり、パラメータに渡された業務データ（IRequestParameterReadWrite）内の「メーリングリスト新規追加対象」情報に対し、各メーリングリスト契約ごとに2つのSC（サービスコンポーネント）呼出しを順次実施する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODMListNew(handle, param)"] --> S1["Step1: param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S1 --> IF1{"inMap != null"}
  style IF1 fill:#ffcc00
  IF1 -- "Yes" --> FOR1["for (各メーリングリスト契約エントリ)"]
  FOR1 --> S2["inMap.put('svc_kei_ucwk_no', '')"]
  S2 --> S3["inMap.put('op_svc_kei_no', entry.getKey())"]
  S3 --> S4["inMap.put('sbop_svc_kei_no', '')"]
  S4 --> S5["inMap.put('mlad', '')"]
  S5 --> S6["inMap.put('order_sbt_cd', JKKHakkoSODConstCC.ORDER_SBT_CD_NET)"]
  S6 --> S7["inMap.put('svc_order_cd', '05')"]
  S7 --> S8["inMap.put('yokyu_sbt_cd', '02')"]
  S8 --> S9["inMap.put('odr_hakko_joken_cd', JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO)"]
  S9 --> S10["inMap.put('same_trn_no', same_trn_no)"]
  S10 --> S11["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S11 --> S12["executeOdrHakkoJokenAdd(handle, param)"]
  S12 --> S13["inMap.put('odr_naiyo_cd', '129')"]
  S13 --> S14["inMap.put('svc_kei_ucwk_no', '')"]
  S14 --> S15["inMap.put('svkeiuw_gadtm', '')"]
  S15 --> S16["inMap.put('op_svc_kei_no', entry.getKey())"]
  S16 --> S17["inMap.put('opsvkei_gadtm', entry.getValue())"]
  S17 --> S18["inMap.put('sbop_svc_kei_no', '')"]
  S18 --> S19["inMap.put('sbopsvkei_gadtm', '')"]
  S19 --> S20["inMap.put('kktk_svc_kei_no', '')"]
  S20 --> S21["inMap.put('kktsvkei_gadtm', '')"]
  S21 --> S22["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S22 --> S23["executeOdrInfoSakseiWkAdd(handle, param)"]
  S23 --> FOR1
  IF1 -- "No" --> RET["return param"]
  FOR1 --> RET
```

**処理ステップ詳細:**

1. **パラメータ取得**  
   - `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` を実行し、ワークマップからメーリングリスト新規追加対象データ（inMap）を取得する。

2. **データ存在判定**  
   - `inMap` がnullでなければ、以降の処理を継続。nullの場合はそのまま終了。

3. **メーリングリスト契約ループ**  
   - inMapに格納されたメーリングリスト新規追加対象の全エントリ（key=op_svc_kei_no, value=opsvkei_gadtm）について順次処理。

4. **オーダ発行条件登録用データセット**  
   - 下記フィールドをセットし、オーダ発行条件登録処理（executeOdrHakkoJokenAdd）を実行。
     - `"svc_kei_ucwk_no"`: 空文字
     - `"op_svc_kei_no"`: entryのkey
     - `"sbop_svc_kei_no"`: 空文字
     - `"mlad"`: 空文字
     - `"order_sbt_cd"`: JKKHakkoSODConstCC.ORDER_SBT_CD_NET（ネット系オーダ種別コード）
     - `"svc_order_cd"`: `"05"`（ML: メーリングリスト）
     - `"yokyu_sbt_cd"`: `"02"`（新規要求種別）
     - `"odr_hakko_joken_cd"`: JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO（即時発行条件コード）
     - `"same_trn_no"`: same_trn_no（同一処理番号）

5. **オーダ発行条件登録呼出し**  
   - `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)` でデータを再設定し、`executeOdrHakkoJokenAdd(handle, param)` を実行（オーダ発行条件をシステムへ登録）。

6. **オーダ情報作成ワーク登録用データセット**  
   - 下記フィールドをセットし、オーダ情報作成ワーク登録処理（executeOdrInfoSakseiWkAdd）を実行。
     - `"odr_naiyo_cd"`: `"129"`（ML・登録）
     - `"svc_kei_ucwk_no"`: 空文字
     - `"svkeiuw_gadtm"`: 空文字
     - `"op_svc_kei_no"`: entryのkey
     - `"opsvkei_gadtm"`: entryのvalue
     - `"sbop_svc_kei_no"`: 空文字
     - `"sbopsvkei_gadtm"`: 空文字
     - `"kktk_svc_kei_no"`: 空文字
     - `"kktsvkei_gadtm"`: 空文字

7. **オーダ情報作成ワーク登録呼出し**  
   - データを再設定し、`executeOdrInfoSakseiWkAdd(handle, param)` を実行（オーダ情報作成ワークをシステムへ登録）。

8. **全エントリ処理終了後、paramを返却して終了。**

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap != null` | - | forループで登録処理へ |
| 2 | `inMap == null` | - | 処理せずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル。トランザクション管理やユーザ識別に利用 |
| 2 | param | IRequestParameterReadWrite | 業務処理用リクエスト・レスポンスデータコンテナ。SOD処理対象情報が格納される |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | - | オーダ発行条件 | メーリングリスト新規登録に関するオーダ発行条件を登録 |
| C | executeOdrInfoSakseiWkAdd | - | オーダ情報作成ワーク | メーリングリスト新規登録に関するオーダ情報作成ワークを登録 |

---

#### 4.5 メッセージID (Message IDs)

本メソッドに関するメッセージID情報はcontextファイルに該当データがないため、本セクションは該当なし。

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- hakkoSOD
- newKeiOdrCtrl
- newNet
- newEoMobile
- adchgFixOdrCtrl

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODMListNew → executeOdrHakkoJokenAdd（オーダ発行条件登録）
                                                            → executeOdrInfoSakseiWkAdd（オーダ情報作成ワーク登録）
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd
                                                                     → executeOdrInfoSakseiWkAdd
hakkoSOD → adchgFixOdrCtrl → newKeiOdrCtrl → newNet → addSODMListNew → executeOdrHakkoJokenAdd
                                                                                  → executeOdrInfoSakseiWkAdd
hakkoSOD → adchgFixOdrCtrl → newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd
                                                                        → executeOdrInfoSakseiWkAdd
（他、各パスの中間クラスを省略せずにすべて記載）
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |### addSODMListNew()

---

#### 1. 役割

メーリングリストの新規登録において、オーダ発行条件の登録およびオーダ情報作成ワークの登録を実施する。  
本メソッドは「メーリングリスト新規作成」オーダの発行に必要な条件設定およびワークレコード生成を統合的に制御し、上位制御（例: hakkoSOD, newNet）からの要求に応じて、ワークマップの設定、各種SCサービス呼出を一気通貫で行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODMListNew(handle, param)"] --> S1["Step1: param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP) で作業マップ取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -- "Yes: inMapあり" --> S2["Step2: inMapのエントリ毎にループ (it.next())"]
  S2 --> S3["Step3: 各エントリに対し作業マップ項目を設定（svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no）"]
  S3 --> S4["Step4: param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でマップ更新"]
  S4 --> S5["Step5: this.executeOdrHakkoJokenAdd(handle, param) でオーダ発行条件登録"]
  S5 --> S6["Step6: inMapにオーダ情報作成ワーク項目を設定（odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm）"]
  S6 --> S7["Step7: param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でマップ再度更新"]
  S7 --> S8["Step8: this.executeOdrInfoSakseiWkAdd(handle, param) でオーダ情報作成ワーク登録"]
  S8 --> RET["return param"]
  IF1 -- "No: inMapなし" --> RET

  %% 注釈
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **Step1**:  
   `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` を呼び、サービスオーダ発行CC作業マップを取得。  
   - BodyComments: ユーザデータ情報
  
2. **Step2**:  
   取得した inMap（作業マップ）が null でない場合、`it.next()` で全エントリ（メーリングリストごとのオプションサービス契約）を列挙しループ処理開始。  
   - 制御フロー: if (inMap != null) → for (it.next())

3. **Step3**:  
   各エントリに対し、以下の項目を空文字や指定値で設定。  
   - "svc_kei_ucwk_no": ""（サービス契約内訳番号）  
   - "op_svc_kei_no": entry.getKey()（オプションサービス契約番号：ML）  
   - "sbop_svc_kei_no": ""（サブオプションサービス契約番号）  
   - "mlad": ""（メールアドレス）  
   - "order_sbt_cd": JKKHakkoSODConstCC.ORDER_SBT_CD_NET（オーダ種別コード: ネット, 定数値）  
   - "svc_order_cd": "05"（サービスオーダコード: ML、固定値）  
   - "yokyu_sbt_cd": "02"（要求種別コード: 新規、固定値）  
   - "odr_hakko_joken_cd": JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO（オーダ発行条件コード: 即時発行、定数値）  
   - "same_trn_no": same_trn_no（同一処理番号、変数）

4. **Step4**:  
   param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) で作業マップを更新。
  
5. **Step5**:  
   this.executeOdrHakkoJokenAdd(handle, param) を呼び出し、SCサービス（オーダ発行条件登録）を実行。
   - BodyComments: (1) オーダ発行条件登録

6. **Step6**:  
   inMapにワーク登録用項目をさらに設定する。
   - "odr_naiyo_cd": "129"（オーダ内容コード: ML・登録、固定値）
   - "svc_kei_ucwk_no": ""（サービス契約内訳番号）
   - "svkeiuw_gadtm": ""（サービス契約内訳世代登録日時）
   - "op_svc_kei_no": entry.getKey()（オプションサービス契約番号：ML）
   - "opsvkei_gadtm": entry.getValue()（オプションサービス契約世代登録日時：ML）
   - "sbop_svc_kei_no": ""（サブオプションサービス契約番号）
   - "sbopsvkei_gadtm": ""（サブオプションサービス契約世代登録日時：メールエイリアス）
   - "kktk_svc_kei_no": ""（機器提供サービス契約番号）
   - "kktsvkei_gadtm": ""（機器提供サービス契約世代登録日時）

7. **Step7**:  
   param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でワーク項目反映済み作業マップを再度設定。

8. **Step8**:  
   this.executeOdrInfoSakseiWkAdd(handle, param) を呼び出し、SCサービス（オーダ情報作成ワーク登録）を実行。
   - BodyComments: (2) オーダ情報作成ワーク登録

9. **Step9**:  
   ループ終了後または inMap が null の場合、param を返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値/内容 | 分岐先 |
|---|------|------------|--------|
| 1 | inMap != null | なし | for (it.next()) に進む |
| 2 | inMap == null | なし | そのまま return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル。業務処理中のセッションを一意に識別し、処理の状態管理やトランザクション制御を行う。 |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンスデータの読み書きインターフェース。オーダ発行に必要な業務パラメータを格納するデータコンテナ。|

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | (内部) | オーダ発行条件 | メーリングリスト新規作成用のオーダ発行条件を登録 |
| C | executeOdrInfoSakseiWkAdd | (内部) | オーダ情報作成ワーク | メーリングリスト新規作成用のオーダ情報作成ワークを登録 |

---

#### 4.5 メッセージID (Message IDs)

※本メソッド内で直接利用されるメッセージIDの記載はありません（context上、MessageIds情報なし）。

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**
- hakkoSOD
- newNet
- newKeiOdrCtrl
- adchgFixOdrCtrl
- newEoMobile

（CallerTraceデータに基づき、以下パスが存在）

**呼出パス:**
```
hakkoSOD → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
hakkoSOD → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newNet → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newNet → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newKeiOdrCtrl → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newKeiOdrCtrl → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
adchgFixOdrCtrl → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
adchgFixOdrCtrl → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newEoMobile → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件登録 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク登録 |

---

### addSODMRTChgRTSta()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMRTChgRTSta(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

多機能ルーターのルーター機能新規設定・変更時に、対応するオーダ発行条件・オーダ情報作成ワークを登録する業務。  
機器オプションサービス契約番号や回線内訳番号情報も含めてワーク登録。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODMRTChgRTSta(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, svc_kei_kaisen_ucwk_no, kktk_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, kkop_svc_kei_no_1, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm, kkop_svc_kei_no_1, kkosvkei_gadtm_1, huka_inf_kei_no, huka_inf_kei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → addSODMRTChgRTSta

**呼出パス:**

```
hakkoSOD → addSODMRTChgRTSta
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODTelNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODTelNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODTelNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話新規契約時のオーダ発行条件・オーダ情報作成ワーク登録処理。  
光電話種別コード・新規契約オーダ内容コードをセットし、ワーク登録を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODTelNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → kaihkOdrCtrl → addSODTelNew

**呼出パス:**

```
hakkoSOD → kaihkOdrCtrl → addSODTelNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODTelVAChange()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
addSODTelVAChange() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelNoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODTelVAChange(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話のVA（Voice Adapter）出荷に伴うオーダ発行条件・オーダ情報作成ワーク登録処理。  
光電話オーダ種別コード・オーダ内容コード（VA変更）をセットし、関連する契約情報、付加情報もワークに格納。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODTelVAChange(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm, huka_inf_kei_no, huka_inf_kei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → htelNoAddOdrCtrl → addSODTelVAChange

**呼出パス:**

```
hakkoSOD → htelNoAddOdrCtrl → addSODTelVAChange
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODUQWIMAXKaitoriNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODUQWIMAXKaitoriNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newEoMobile()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODUQWIMAXKaitoriNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

UQ WIMAXの買取時の新規登録（CUI/DEV）で、必要なオーダ発行条件とオーダ情報作成ワークを登録します。  
主に新規契約時のWiMAX出荷オーダの制御で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODUQWIMAXKaitoriNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号等 inMapへput(CUI)"]
  S1 --> S2["Step2: getSame_trn_no(param, handle, null, sameTrnNo)"]
  S2 --> S3["Step3: 同一処理番号inMapへput"]
  S3 --> S4["Step4: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S4 --> S5["Step5: executeOdrHakkoJokenAdd(handle, param)"]
  S5 --> S6["Step6: WiMAX出荷用 inMap再セット（DEV/世代管理）"]
  S6 --> S7["Step7: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S7 --> S8["Step8: executeOdrInfoSakseiWkAdd(handle, param)"]
  S8 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. paramからinMap取得（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）
2. サービス契約内訳番号、各種コードをinMapへput（index_cui使用）
3. getSame_trn_noで同一処理番号を取得し、inMapへput
4. param.setDataでinMap保存
5. executeOdrHakkoJokenAdd呼出
6. オーダ内容コード（WiMAX出荷）等をput（DEV/世代管理含む）
7. param.setDataで再保存
8. executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                                         |
|---|------------|--------|------------------------------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行                           |
| 2 | else       | -      | そのまま return param                          |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ         | 操作説明                         |
|------|-------------------------------|-----------|----------------------|----------------------------------|
| R    | callEKK1081C011SC             | EKK1081   | 同一処理番号取得     | 同一処理番号を取得               |
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件       | オーダ発行条件登録               |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク | オーダ情報作成ワーク登録         |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- newEoMobile → addSODUQWIMAXKaitoriNew

**呼出パス:**

```
newEoMobile
  → addSODUQWIMAXKaitoriNew
    → getSame_trn_no
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                   | CRUD | エンティティ             |
|------------------------------|------|--------------------------|
| callEKK1081C011SC            | R    | 同一処理番号取得         |
| callEKK1081D010CBS           | C    | オーダ発行条件           |
| callEKK1551D010CBS           | C    | オーダ情報作成ワーク     |

---

---

---

### addSODUQWIMAXNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODUQWIMAXNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newEoMobile()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODUQWIMAXNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

UQ WIMAX新規登録時に、CUI/DEV両方の端末に対してオーダ発行条件とオーダ情報作成ワークの登録を行う。  
それぞれの端末種別ごとに条件登録・ワーク登録を2セットずつ行い、全ての契約情報をSCインターフェースに反映。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODUQWIMAXNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["CUI端末: オーダ発行条件登録情報セット"]
    S2 --> S3["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S3 --> S4["executeOdrHakkoJokenAdd(handle, param)"]
    S4 --> S5["CUI端末: オーダ情報作成ワーク登録情報セット"]
    S5 --> S6["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S6 --> S7["executeOdrInfoSakseiWkAdd(handle, param)"]
    S7 --> S8["DEV端末: オーダ発行条件登録情報セット"]
    S8 --> S9["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S9 --> S10["executeOdrHakkoJokenAdd(handle, param)"]
    S10 --> S11["DEV端末: オーダ情報作成ワーク登録情報セット"]
    S11 --> S12["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S12 --> S13["executeOdrInfoSakseiWkAdd(handle, param)"]
    S13 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | CUI→DEV両方のオーダ登録へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODUQWIMAXNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODUQWIMAXNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODVirusChkAdd()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODVirusChkAdd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODVirusChkAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールのウィルスチェック登録に伴い、各メールアドレスごとにオーダ発行条件・オーダ情報作成ワークを登録する業務処理。  
メールオプション契約マップをループし、複数メールのウィルスチェック登録にも対応。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODVirusChkAdd(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["メールオプション契約マップをループ"]
    S2 --> S3["(1) オーダ発行条件登録情報セット（svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no）"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, ...）"]
    S6 --> S7["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S7 --> S8["executeOdrInfoSakseiWkAdd(handle, param)"]
    S8 --> S2
    IF1 -- "No" --> RET
    S2 --> RET["return param"]

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | メール契約マップループ処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODVirusChkAdd

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODVirusChkAdd
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODWiFiChg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
addSODWiFiChg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── spotLoginSysidChgeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODWiFiChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Wi-Fiスポットサービスの変更時のSOD登録業務を担う部品。  
契約内訳や機器情報を指定し、オーダ発行条件・オーダ情報作成ワークまで一括登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addSODWiFiChg(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号、WiFi情報inMapへput"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク情報put（odr_naiyo_cd, svkeiuw_gadtm等）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. param.getDataでinMap取得
2. Wi-Fiスポット契約内訳番号（svc_kei_ucwk_no[index_wifi]）等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク情報put（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, etc.）
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出

**制御フロー分岐（全条件列挙）:**

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- spotLoginSysidChgeOdrCtrl → addSODWiFiChg

**呼出パス:**

```
spotLoginSysidChgeOdrCtrl
  → addSODWiFiChg
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODWiFiNew()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
addSODWiFiNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newEoMobile()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODWiFiNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Wi-Fiスポットの新規登録に伴い、オーダ発行条件とオーダ情報作成ワークを登録する業務処理。  
新規登録時には「即時発行」条件でのオーダ発行条件登録、およびWi-Fiスポット登録オーダ内容でのワーク登録を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["addSODWiFiNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, taknkiki_model_cd, kiki_seizo_no, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODWiFiNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODWiFiNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addTensoDenwaOp()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
addTensoDenwaOp() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addTensoDenwaOp(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

転送電話オプション用のSODを登録する業務処理。サービス契約内訳・オプションサービス契約情報を照会し、転送電話オプション契約の内容に応じてSODを発行し、必要に応じて同一処理番号も再採番する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addTensoDenwaOp(handle, param, sodMap)"] --> S1["getSvcKeiUtwkListでサービス契約内訳リスト取得"]
  S1 --> LOOP1["svcKeiUcwkNosループ"]
  LOOP1 --> IF1{"契約内訳番号がnull/空でない"}
  IF1 -- "Yes" --> S2["EKK0191A010SCで一意照会"]
  S2 --> IF2{"番ポ有無無し"}
  IF2 -- "Yes" --> S3["EKK0351B002SCでオプションサービス契約一覧照会"]
  S3 --> LOOP2["msgListループ"]
  LOOP2 --> IF3{"OP_SVC_CDが転送電話"}
  IF3 -- "Yes" --> IF4{"有効状態"}
  IF4 -- "Yes" --> S4["SIP・登録/SIP・転送電話登録SOD発行"]
  IF4 -- "No" --> S5["スキップ"]
  IF3 -- "No" --> S5
  IF2 -- "No" --> S5
  IF1 -- "No" --> S5
  S4 --> IF5{"転送電話SOD発行条件成立"}
  IF5 -- "Yes" --> S6["同一処理番号再採番"]
  IF5 -- "No" --> S5
  S6 --> RET["param返却"]
  S5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**処理ステップ詳細:**

1. `getSvcKeiUtwkList`でサービス契約内訳リスト取得
2. 各内訳ごとに契約内訳番号がnull/空でなければEKK0191A010SCで一意照会
3. 番ポ有無無しならEKK0351B002SCでオプションサービス契約一覧照会
4. オプションサービスコードが転送電話かつ有効状態（解約済/キャンセル済以外）ならSIP・転送電話登録等のSOD発行
5. 転送電話SOD発行条件成立なら同一処理番号を再採番
6. 最終的に`param`返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!JKKBpCommon.isNull(this.svc_kei_ucwk_no[i]) && !"".equals(this.svc_kei_ucwk_no[i])` | - | EKK0191A010SC照会 |
| 2 | `!JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(...))` | 番ポ無 | オプション照会 |
| 3 | `JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd)` | 転送電話 | 状態判定 |
| 4 | `!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opSvcKeiStat) || ...)` | 有効 | SOD発行 |
| 5 | `!isTajgsTelNo(...) && isMonaiBmp(...)` | - | SOD発行 |
| 6 | `isOrdered` | - | 同一処理番号再採番 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → addTensoDenwaOp
- newKeiOdrCtrl → addTensoDenwaOp
- adchgFixOdrCtrl → addTensoDenwaOp

**呼出パス:**

```
hakkoSOD → addTensoDenwaOp → callEKK0191A010SC [R] → ...
                                   callEKK0351B002SC [R] → ...
                                   addSOD → SOD発行
                                   getSame_trn_no → callEKK1081C011SC
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK1081C011SC | R | 同一処理番号 |

---

---

### addTokiSOD()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
addTokiSOD() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── bmpDojiMskm()
│   ├── hakkoSOD()
│   ├── useStpRlsOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   │   └── hakkoSOD()
│   └── stpRlsOdrCtrl()
│       ├── hakkoSOD()
│       └── useStpRlsOdrCtrl()
│           └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
└── stpUkOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addTokiSOD(SessionHandle handle, IRequestParameterReadWrite param, String idoDiv, String idoDtlCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

トーキ開始／終了に必要なSOD（サービスオーダデータ）を登録する業務メソッド。移転トーキ開始終了判定・更新処理を実行し、その後、オーダ発行条件やオーダ情報ワークにSODを登録します。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["addTokiSOD(handle, param, idoDiv, idoDtlCd)"] --> S1["Step1: addTokiSOD(handle, param, idoDiv, idoDtlCd, true)呼出"]
  S1 --> RET["return"]

  %% 補足: ラッパーメソッドで内部addTokiSODを呼出
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 常時 |  | addTokiSOD(handle, param, idoDiv, idoDtlCd, true)呼出 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 3 | idoDiv | String | 異動区分 |
| 4 | idoDtlCd | String | 異動詳細コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | サービス契約内訳情報照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISPオプション契約情報照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- bmpDojiMskm → addTokiSOD
- pauseRlsChgeOdrCtrl → addTokiSOD
- pauseUkOdrCtrl → addTokiSOD
- htelNoKaihkOdrCtrl → addTokiSOD
- htelNoDslOdrCtrl → addTokiSOD
- dslOdrCtrl → addTokiSOD
- kaihkOdrCtrl → addTokiSOD
- stpUkOdrCtrl → addTokiSOD
- bmpSwitchOdrCtrl → addTokiSOD
- stpRlsOdrCtrl → addTokiSOD
- hakkoSOD → addTokiSOD
- ksiDslOdrCtrl → addTokiSOD
- cnclOdrCtrl → addTokiSOD
- ksiDslFixOdrCtrl → addTokiSOD
- useStpOdrCtrl → addTokiSOD
- useStpRlsOdrCtrl → addTokiSOD

**呼出パス:**

```
[呼出元クラス] → addTokiSOD → callEKK0191A010SC / callEKK0361A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### bmpDojiMskm()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
bmpDojiMskm() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
└── stpRlsOdrCtrl()
    ├── hakkoSOD()
    └── useStpRlsOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite bmpDojiMskm(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap, Boolean boolBmp)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

本メソッドは「番ポ同時申込処理」を行う業務ロジックであり、契約内訳番号（svc_kei_ucwk_no）に対して、申込種別コードや電話番号の状態等を判定しつつ、適切なSOD（サービスオーダ）を発行する。  
また、050ナンバープラス等のオプションの登録も兼ねる。呼び出し元は `bmpSwitchOdrCtrl`, `stpRlsOdrCtrl` など。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["bmpDojiMskm(handle, param, sodMap, boolBmp)"] --> S1["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S1 --> S2["shkkaMapで情報整形"]
  S2 --> S3["契約内訳番号/世代登録日時取得"]
  S3 --> S4["同一処理番号採番: getSame_trn_no"]
  S4 --> IF1{"if: isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_002)"}
  IF1 -- "False" --> RET1["return param"]
  IF1 -- "True" --> S5["SIP・停止解除SOD発行: addSOD(ODR_NAIYO_CD_224)"]
  S5 --> S6["EKK0191A010_サービス契約内訳＜eo光電話＞一意照会"]
  S6 --> IF2{"if: 0 != statusCode"}
  IF2 -- "True" --> ERR1["CCException発生・異常終了"]
  IF2 -- "False" --> S7["番ポ有無判定（boolBmp==nullなら再判定）"]
  S7 --> IF3{"if: boolBmp（番ポ有り）"}
  IF3 -- "True" --> IF31{"if: isTajgsTelNo(handle, param, telNo)"}
  IF31 -- "True" --> S8["SIP・番ポ情報登録: addSOD(ODR_NAIYO_CD_225)"]
  S8 --> S9["ENUM設定・登録: addSOD(ODR_NAIYO_CD_265)"]
  IF31 -- "False" --> IF32{"if: isMonaiBmp(handle, param, telNo)"}
  IF32 -- "True" --> S10["SIP・番ポ情報登録・ENUM設定・登録"]
  IF32 -- "False" --> S11["何もしない"]
  IF3 -- "False" --> S12["オプション契約一覧照会: callEKK0351B002SC"]
  S12 --> FOR1["for: オプションデータ件数分"]
  FOR1 --> IF4{"if: SVC_KEI_STAT_100 or SVC_KEI_STAT_210"}
  IF4 -- "True" --> S13["番号置換・登録: addSOD(ODR_NAIYO_CD_248)"]
  IF4 -- "False" --> S14["何もしない"]
  FOR1 --> S15["トーキSOD登録: addTokiSOD"]
  S15 --> RET2["return param"]
  RET1 --> END1["return param"]
  ERR1 --> END2["例外終了"]

  %% 制御分岐強調
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF31 fill:#ffcc00
  style IF32 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. **サービス契約内訳情報をsodMapから取得しshkkaMapで整形**
2. **契約内訳番号/世代登録日時を取得**
3. **同一処理番号を採番（getSame_trn_no）**
4. **電話番号SOD判定（isTelnoSODJudge）**
   - NGの場合は何もしない
5. **SIP・停止解除SOD発行（ODR_NAIYO_CD_224）**
6. **サービス契約内訳＜eo光電話＞一意照会（callEKK0191A010SC）**
   - statusCodeが0以外なら例外（CCException）
7. **番ポ有無判定（boolBmpがnullならBMP_UM_ARI判定）**
   - 番ポ有りの場合、他事業者電話番号か自社網内番号かで分岐
     - 他事業者電話番号：SIP・番ポ情報登録（ODR_NAIYO_CD_225）、ENUM設定・登録（ODR_NAIYO_CD_265）
     - 自社＋網内番ポ：SIP・番ポ情報登録、ENUM設定・登録
   - 番ポ無しの場合：オプション契約一覧照会（callEKK0351B002SC）→050オプションの状態が「提供中」または「休止・中断中」の場合、番号置換・登録SOD（ODR_NAIYO_CD_248）発行
8. **トーキSOD登録（addTokiSOD）**

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_002) | - | False: return param、True:次へ |
| 2 | 0 != statusCode | - | True:CCException、False:次へ |
| 3 | boolBmp（番ポ有無） | - | True: 番ポ有りパス、False: 番ポ無しパス |
| 4 | isTajgsTelNo(handle, param, telNo) | - | True:他事業者SOD発行、False:網内判定 |
| 5 | isMonaiBmp(handle, param, telNo) | - | True:自社網内SOD発行、False:何もしない |
| 6 | SVC_KEI_STAT_100 or SVC_KEI_STAT_210 | "100","210"（提供中／休止・中断中） | True: 番号置換・登録SOD、False:何もしない |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |
| 4 | boolBmp | Boolean | 番ポ有無フラグ（nullの場合は内部判定） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

（記載データなしのため省略）

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- hakkoSOD → bmpSwitchOdrCtrl → bmpDojiMskm
- hakkoSOD → stpRlsOdrCtrl → bmpDojiMskm

**呼出パス:**

```
hakkoSOD → bmpSwitchOdrCtrl → bmpDojiMskm → callEKK0351B002SC [R] → オプションサービス契約一覧照会
                                → callEKK1081C011SC [R] → 同一処理番号取得
                                → callEKK0361A010SC [R] → オプションサービス契約＜ISP＞一意照会
                                → callEKK0191A010SC [R] → サービス契約内訳＜eo光電話＞一意照会
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |

---### bmpSipDslOdrCtrl()

---

#### 1. 役割

**役割:**  
本メソッドは「SIP解約・消去オーダ」における「番号ポータビリティ戻し」業務の制御処理を行う。  
呼出元は `hakkoSOD` であり、パラメータから電話番号・契約内訳情報を取得し、解約対象電話番号に対しSIP関連オーダ（解約・消去・ENUM・緊急通報消去）を条件に応じて発行する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["bmpSipDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報・サービス契約情報・サービス契約内訳情報をsodMapから取得"]
  S1 --> S2["各情報MapをshkkaMapで正規化"]
  S2 --> S3["契約識別子(SYSID)、異動区分、サービス契約番号、契約内訳番号等を取得"]
  S3 --> S4["同一処理番号の採番・取得(getSame_trn_no)"]
  S4 --> S5["契約内訳情報の照会(searchSvcKeiUcwk)"]
  S5 --> S6["EKK0191A010SC(サービス契約内訳＜eo光電話＞一意照会)呼出"]
  S6 --> IF0{"statusCode != 0"}
  IF0 -- "Yes(エラー)" --> E1["CCExceptionをthrow"]
  IF0 -- "No(正常)" --> S7["結果HashからBMP有無取得"]
  S7 --> S8["Z1オーダ発行済判定(findZ1OrderHasBeenSentSvcKeiUcwk)"]
  S8 --> IF1{"isZ1Ordered"}
  IF1 -- "Yes" --> IF2{"!isItenNoGuideTokiChu(...)"}
  IF2 -- "Yes" --> IF3{"isTelnoSODJudge(handle, param, ... , TELNO_JUDGE_001)"}
  IF3 -- "Yes" --> S9["SIP解約(addSOD: ODR_NAIYO_CD_229)"]
  S9 --> S10["SIP消去(addSOD: ODR_NAIYO_CD_230)"]
  S10 --> S11["ENUM消去(addSOD: ODR_NAIYO_CD_266)"]
  S11 --> S12["緊急通報消去(addSOD: ODR_NAIYO_CD_252)"]
  S12 --> RET["paramを返却"]
  IF3 -- "No" --> RET
  IF2 -- "No" --> RET
  IF1 -- "No" --> RET
  style IF0 fill:#ffcc00
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. **SOD基本情報、サービス契約情報、サービス契約内訳情報を取得**  
   - `sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)`
   - `sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)`
   - `sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)`

2. **各情報をshkkaMapで正規化**  
   - `this.shkkaMap(...)` を3つのMapに対して実行

3. **契約識別子や各種パラメータ取得**  
   - SYSID: `sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID)`
   - 異動区分: `sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV)`
   - サービス契約番号: `svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO)`
   - サービス契約内訳番号: `svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO)`
   - 変更後サービス契約内訳世代登録年月日時分秒: `svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)`

4. **同一処理番号の取得**  
   - `this.getSame_trn_no(param, handle, null, sameTrnNo)`

5. **サービス契約内訳一意照会**  
   - `this.searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)`

6. **EKK0191A010SC呼出**  
   - ハッシュに契約内訳番号・世代登録日時をセットし、`callEKK0191A010SC`を実行  
   - 結果コードが0以外ならエラー

7. **Z1オーダ発行済判定**  
   - `this.findZ1OrderHasBeenSentSvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no)`

8. **各種条件判定とオーダ発行**
   - Z1オーダ発行済み、かつ移転番号案内トーキ中でない場合のみ、さらに電話番号状態判定(`isTelnoSODJudge`)がOKなら下記SODを順次発行
     - SIP解約: `addSOD(..., ODR_NAIYO_CD_229)`
     - SIP消去: `addSOD(..., ODR_NAIYO_CD_230)`
     - ENUM消去: `addSOD(..., ODR_NAIYO_CD_266)`
     - 緊急通報消去: `addSOD(..., ODR_NAIYO_CD_252)`

9. **いずれの分岐にも該当しない場合はそのままparam返却**

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `statusCode != 0` | - | CCExceptionをthrow |
| 2 | `isZ1Ordered` | - | 番号案内トーキ判定へ |
| 3 | `!isItenNoGuideTokiChu(param, handle, ...)` | - | 電話番号状態判定へ |
| 4 | `isTelnoSODJudge(handle, param, ..., TELNO_JUDGE_001)` | - | SOD発行(4種) |
| 5 | それ以外 | - | param返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッションハンドル（業務セッション管理用） |
| 2 | param | IRequestParameterReadWrite | 業務リクエスト／レスポンスパラメータ |
| 3 | fixedText | String | 確定テキスト（業務固定文字列） |
| 4 | sodMap | HashMap<String, Object> | SOD制御用データマップ（契約・内訳・基本情報等） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SCメソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
hakkoSOD

**呼出パス:**  
hakkoSOD → **bmpSipDslOdrCtrl** → callEKK0191A010SC → (EKK0191: サービス契約内訳＜eo光電話＞一意照会)  
　　　　　　　　　　　　　　　→ callEKK1081C011SC → (EKK1081: 同一処理番号取得)  
　　　　　　　　　　　　　　　→ callEKK0161A010SC → (EKK0161: サービス契約内訳一意照会)  
　　　　　　　　　　　　　　　→ callEKK0361A010SC → (EKK0361: オプションサービス契約＜ISP＞一意照会)  
　　　　　　　　　　　　　　　→ addSOD (複数回: SIP解約・消去・ENUM消去・緊急通報消去)

**終端:**

| SCメソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

---

### bmpSipDslOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
bmpSipDslOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite bmpSipDslOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「番ポ戻し（SIP解約・消去オーダ）」の制御を行うメソッドである。  
主に、回線解約や利用停止解除に伴い、指定された光電話番号に対してSIP解約・消去等のサービスオーダ（SOD）を発行する業務ロジックを実行する。  
呼び出し元は `hakkoSOD` であり、オーダ発行に必要なパラメータの取得、複数SIF呼び出し、条件判定、SOD発行処理まで一連の業務を統括する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["bmpSipDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報取得: sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)"]
  S1 --> S2["サービス契約情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)"]
  S2 --> S3["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S3 --> S4["shkkaMapによる情報整形"]
  S4 --> S5["必須パラメータ取得（SYSID/異動区分/サービス契約番号/内訳番号/世代登録日時）"]
  S5 --> S6["同一処理番号の採番: getSame_trn_no(param, handle, null, sameTrnNo)"]
  S6 --> S7["サービス契約内訳一意照会: searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)"]
  S7 --> S8["EKK0191A010_サービス契約内訳<eo光電話>一意照会: callEKK0191A010SC"]
  S8 --> IF1{"if: 0 != statusCode"}
  IF1 -- "True" --> ERR1["CCException発生・異常終了"]
  IF1 -- "False" --> S9["SIF結果取得"]
  S9 --> S10["Z1オーダ処理済判定: findZ1OrderHasBeenSentSvcKeiUcwk"]
  S10 --> IF2{"if: isZ1Ordered"}
  IF2 -- "False" --> RET1["return param"]
  IF2 -- "True" --> IF3{"if: !isItenNoGuideTokiChu(param, handle, eKK0161A010Hash, eKK0191A010Hash)"}
  IF3 -- "False" --> RET2["return param"]
  IF3 -- "True" --> IF4{"if: isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001)"}
  IF4 -- "False" --> RET3["return param"]
  IF4 -- "True" --> S11["番ポ有無判定: eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM)"]
  S11 --> IF5{"if: JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm)"}
  IF5 -- "False" --> RET4["return param"]
  IF5 -- "True" --> S12["SIP・解約SOD発行: addSOD(ODR_NAIYO_CD_229)"]
  S12 --> S13["SIP・消去SOD発行: addSOD(ODR_NAIYO_CD_230)"]
  S13 --> S14["ENUM設定・消去SOD発行: addSOD(ODR_NAIYO_CD_266)"]
  S14 --> S15["緊急通報・消去SOD発行: addSOD(ODR_NAIYO_CD_252)"]
  S15 --> RET5["return param"]

  %% 制御フローノード強調
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**処理ステップ詳細:**

1. **SOD基本情報・契約情報・契約内訳情報をsodMapからそれぞれ取得**  
2. **shkkaMapで各情報を内部形式に整形**
3. **必要パラメータ（SYSID、異動区分、サービス契約番号、サービス契約内訳番号、世代登録日時）を取得**
4. **同一処理番号を採番（getSame_trn_no）**
5. **サービス契約内訳一意照会（searchSvcKeiUcwk）を実施し、契約状態を確認**
6. **EKK0191A010_サービス契約内訳＜eo光電話＞一意照会（callEKK0191A010SC）を呼び出す**
7. **statusCodeが0以外なら例外（CCException）**
8. **Z1オーダ処理済みか判定（findZ1OrderHasBeenSentSvcKeiUcwk）**
   - 未発行なら何もしない
9. **移転番号案内トーキ中でない場合のみ、SOD発行判定**
10. **電話番号SOD判定（isTelnoSODJudge）**
    - NGの場合は何もしない
11. **番ポ有無判定（BMP_UM_ARI）**
    - 有りの場合のみ以下を実行
12. **SIP解約SODの発行（ODR_NAIYO_CD_229）**
13. **SIP消去SODの発行（ODR_NAIYO_CD_230）**
14. **ENUM設定・消去SODの発行（ODR_NAIYO_CD_266）**
15. **緊急通報・消去SODの発行（ODR_NAIYO_CD_252）**

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 0 != statusCode | - | CCException、異常終了 |
| 2 | isZ1Ordered | - | Z1発行済のみ次判定へ |
| 3 | !isItenNoGuideTokiChu(param, handle, eKK0161A010Hash, eKK0191A010Hash) | - | Falseなら何もしない |
| 4 | isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001) | - | Falseなら何もしない |
| 5 | JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm) | "1"（有り） | True: SOD発行, False: 何もしない |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定（定型）テキスト |
| 4 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

（記載データなしのため省略）

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- hakkoSOD → bmpSipDslOdrCtrl

**呼出パス:**

```
hakkoSOD → bmpSipDslOdrCtrl → callEKK0191A010SC [R] → サービス契約内訳＜eo光電話＞一意照会
                                 → callEKK1081C011SC [R] → 同一処理番号取得
                                 → callEKK0161A010SC [R] → サービス契約内訳一意照会
                                 → callEKK0361A010SC [R] → オプションサービス契約＜ISP＞一意照会
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### bmpSwitchOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
bmpSwitchOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite bmpSwitchOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「番ポ切り替えオーダ制御処理」を担うメソッドであり、サービス契約の内訳番号に対して「番号ポータビリティ（BMP）」関連の切替オーダを発行する一連の業務を実行する。  
呼び出し元は `hakkoSOD`。契約種別や申込種別に応じて適切なオーダ発行パターンを選択し、各種サブ業務へ分岐する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["bmpSwitchOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報取得: sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)"]
  S1 --> S2["サービス契約情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)"]
  S2 --> S3["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S3 --> S4["shkkaMapで情報変換"]
  S4 --> S5["サービス種別判定: jdgSvcKind()"]
  S5 --> IF1{"if: !JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind)"}
  IF1 -- "True: 電話以外" --> RET1["return param"]
  IF1 -- "False: 電話" --> S6["番ポ処理区分取得: sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_BMP_SYORI_DIV)"]
  S6 --> IF2{"if: isBlank(bmp_syori_div)"}
  IF2 -- "True" --> S7["EKK0161B008_番ポ申込種別照会呼出"]
  S7 --> IF3{"if: 0 != statusCode"}
  IF3 -- "True" --> ERR1["CCException発生・異常終了"]
  IF3 -- "False" --> S8["msgListループ: msgList[i].getMsgData()"]
  S8 --> IF4{"if: 申込種別コードが新規/サービス追加/電話番号追加"}
  IF4 -- "True" --> S9["番ポ同時申込: bmpDojiMskm(handle, param, sodMap, true)"]
  IF4 -- "False" --> IF5{"if: 申込種別コードが電話番号追加"}
  IF5 -- "True" --> S10["番号切替: telNoChge(handle, param, fixedText, sodMap, JKKHakkoSODConstCC.TEL_CHNG_DIV_BMP_ADD_MSKM)"]
  IF5 -- "False" --> S11["何もしない"]
  S9 --> RET2["return param"]
  S10 --> RET3["return param"]
  S11 --> RET4["return param"]
  IF2 -- "False" --> IF6{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_USE_STP_RLS"}
  IF6 -- "True" --> S12["利用停止解除: stpUkOdrCtrl(handle, param, fixedText, sodMap)"]
  IF6 -- "False" --> IF7{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_USE_STP"}
  IF7 -- "True" --> S13["利用停止オーダ制御"]
  IF7 -- "False" --> IF8{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_NO_SWCH"}
  IF8 -- "True" --> S14["何もしない"]
  IF8 -- "False" --> S15["その他（予期せぬ区分）"]
  S12 --> RET5["return param"]
  S13 --> RET6["return param"]
  S14 --> RET7["return param"]
  S15 --> RET8["return param"]

  %% 制御フロー分岐ノード
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
```

**処理ステップ詳細:**

1. **SOD基本情報・契約情報・契約内訳情報をsodMapから取得**
2. **shkkaMapで情報を内部形式に整形**
3. **サービス種別を判定（jdgSvcKind）し、電話以外は即return**
4. **番ポ処理区分を取得し、未設定の場合はEKK0161B008_番ポ申込種別照会（callEKK0161B008SC）を呼び出す**
   - statusCodeが0以外は例外（CCException）で異常終了
   - 申込種別コード（MSKM_SBT_CD）が新規申込/サービス追加申込/電話番号追加申込の場合、bmpDojiMskmを呼出し、return
   - それ以外は、番号切替（telNoChge）または何もしない
5. **番ポ処理区分が設定されている場合は該当区分にマッチするサブ業務（利用停止解除、利用停止、何もしない等）に分岐し、return**

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind) | "03" (電話)以外 | return param |
| 2 | isBlank(bmp_syori_div) | 未設定 | EKK0161B008_番ポ申込種別照会 |
| 3 | 0 != statusCode | - | CCException発生 |
| 4 | MSKM_SBT_CD=="00001" or "00002" or "00034" | 新規/サービス追加/電話番号追加 | bmpDojiMskm |
| 5 | MSKM_SBT_CD=="00034" | 電話番号追加 | telNoChge |
| 6 | bmp_syori_div==BMP_TRAN_SKBT_CD_USE_STP_RLS | 利用停止解除 | stpUkOdrCtrl |
| 7 | bmp_syori_div==BMP_TRAN_SKBT_CD_USE_STP | 利用停止 | useStpOdrCtrl |
| 8 | bmp_syori_div==BMP_TRAN_SKBT_CD_NO_SWCH | 切替なし | 何もしない |
| 9 | その他 | - | 何もしない（return param） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定（定型）テキスト |
| 4 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B008SC | EKK0161 | 番ポ申込種別照会 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧 | 一意照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧 | 一意照会（交換専用） |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧 | 一意照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧 | 一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧 | 一意照会 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明（詳細不明） |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧（回線内訳） | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧（機器変更番号） | 一意照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧（予約） | 一意照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | 一意照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

（記載データなしのため省略）

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- hakkoSOD → bmpSwitchOdrCtrl

**呼出パス:**

```
hakkoSOD → bmpSwitchOdrCtrl → callEKK0161B008SC [R] → 番ポ申込種別照会
                             → bmpDojiMskm → callEKK0351B002SC [R] → オプションサービス契約一覧照会
                             → stpUkOdrCtrl
                             → telNoChge
                             → その他複数SC呼出
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B008SC | R | 番ポ申込種別照会 |
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK0351B010SC | R | オプションサービス契約一覧 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0341B008SC | R | 機器提供サービス契約一覧 |
| callEKK0341B008_02SC | R | 機器提供サービス契約一覧（交換専用） |
| callEKK1041B001SC | R | オーダ設定一覧 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0161B003SC | R | サービス契約内訳一覧 |
| callEKK0081B004SC | R | サービス契約一覧 |
| callEKK1081B001SC | R | オーダ発行条件一覧 |
| callEKK0251B001SC | R | サービス契約回線内訳一覧 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧（回線内訳） |
| callEKK0341B029SC | R | 機器提供サービス契約一覧（機器変更番号） |
| callEKK0341B021SC | R | 機器提供サービス契約一覧（予約） |
| callEKK2811B010SC | R | 機器オプションサービス契約一覧 |
| callEKK1041A010SC | R | オーダ設定一意 |

---

---

### callEDK0301B060SC()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
callEDK0301B060SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── getShuriKokanBfKiki()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── isRegalVaKiki()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] callEDK0301B060SC(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String kktkSvcKeiNo, String kikiChgNo)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

返品機器取消一覧照会をサービスIF経由で呼び出し、返品機器取消候補の一覧を取得する。  
返品機器業務や機器交換・設備更新・履歴参照等の業務で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEDK0301B060SC(handle, param, funcCd, kktkSvcKeiNo, kikiChgNo)"] --> S1["Step1: editInMsgEDK0301B060(param, funcCd, kktkSvcKeiNo, kikiChgNo)"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EDK0301B060CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EDK0301B060CBSMSG1LIST)"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -- "Yes" --> S4["Step4: 結果リスト返却"]
  IF1 -- "No" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEDK0301B060で入力情報をSC用マッピング
2. callSvcInterでサービスIF呼出
3. 結果をgetCAANMsgListで抽出
4. 結果リスト返却（空またはnullもあり）

**制御フロー分岐（全条件列挙）:**

| # | 条件                  | 定数値 | 分岐先                |
|---|-----------------------|--------|-----------------------|
| 1 | outMsgList != null    | -      | 結果リスト返却        |
| 2 | それ以外              | -      | 空配列またはnull返却  |

---

#### 3. パラメータ分析

| No | パラメータ名     | 型                         | 業務説明                         |
|----|------------------|----------------------------|----------------------------------|
| 1  | handle           | SessionHandle              | セッション管理                   |
| 2  | param            | IRequestParameterReadWrite | 業務パラメータ                   |
| 3  | funcCd           | String                     | 機能コード                       |
| 4  | kktkSvcKeiNo     | String                     | 機器契約番号                     |
| 5  | kikiChgNo        | String                     | 機器変更番号                     |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド             | SCコード        | エンティティ           | 操作説明               |
|------|------------------------|-----------------|------------------------|------------------------|
| R    | callEDK0301B060SC      | EDK0301B060     | 返品機器取消           | 返品機器取消一覧照会   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT

**呼出パス:**

```
[getShuriKokanBfKiki] → **[callEDK0301B060SC]** → [SC呼出]
```

**終端:**

| SC メソッド             | CRUD | エンティティ           |
|------------------------|------|------------------------|
| callEDK0301B060SC      | R    | 返品機器取消           |

---### callEKK0191B001_2SC()

---

#### 1. 役割

サービス契約内訳（eo光電話）の一覧照会を行うサービスインターフェース（SIF）を呼び出すメソッド。  
リクエストパラメータからサービス契約番号等をもとに、SC（EKK0191B001）へ照会を実施し、結果をresultHashへ格納する。  
オプション制御、回線解約、DSL系オーダ、SOD発行など様々な業務フローから利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191B001_2SC(param, handle, svcKeiNo, resultHash, funcCode)"]
  START --> S1["Step1: サービスIF共通の情報を設定（editInMsgCmn）"]
  S1 --> S2["Step2: EKK0191B001CBSMsgクラス名取得"]
  S2 --> S3["Step3: Nullマッピング（fillCAANMSGNullMapping）"]
  S3 --> S4["Step4: テンプレートID（EKK0191B001）設定"]
  S4 --> S5["Step5: 機能コードfuncCode設定"]
  S5 --> S6["Step6: サービス契約番号svcKeiNo設定"]
  S6 --> S7["Step7: リクエスト共通項目設定（editBasicCmn）"]
  S7 --> S8["Step8: CAANMsg配列をsIFRequestへ格納"]
  S8 --> S9["Step9: SC呼出クラスのrunメソッドでSIF呼出"]
  S9 --> S10["Step10: sIFResultから結果取得"]
  S10 --> S11["Step11: ステータスコード取得"]
  S11 --> IF1{"(status == 0)?"}
  IF1 -- "Yes:正常" --> S12["Step12: 結果メッセージリスト取得しresultHashへput"]
  IF1 -- "No:異常" --> S13["Step13: 結果メッセージリスト取得しresultHashへput"]
  S12 --> END["return status"]
  S13 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `editInMsgCmn(param)` を呼び出し、サービスIF共通情報をテンプレートへ設定
2. EKK0191B001CBSMsgクラス名を取得（ログまたはテンプレート生成に利用）
3. `fillCAANMSGNullMapping` で全フィールドをNull初期化
4. テンプレートIDに "EKK0191B001" をセット
5. 機能コードフィールドにfuncCodeをセット
6. サービス契約番号フィールドにsvcKeiNoをセット
7. `editBasicCmn(param, template)` で共通項目を追加セット
8. CAANMsg配列をsIFRequestへput
9. SC呼出クラスのrunでSIFを実行（scCall.run）
10. 実行結果sIFResultよりCAANMsg配列を取得
11. ステータスコードを取得
12. ステータスが0（正常）なら、結果メッセージリスト（EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST）をresultHashへput
13. ステータスが0以外でも結果メッセージリストをresultHashへput
14. ステータス値をreturn

**制御フロー分岐:**

| # | 条件                 | 定数値 | 分岐先           |
|---|----------------------|--------|------------------|
| 1 | `status == 0`        | 0      | 正常処理         |
| 2 | `status != 0`        | -      | 異常処理         |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                                | 業務説明                       |
|----|--------------|-----------------------------------|-------------------------------|
| 1  | param        | IRequestParameterReadWrite         | リクエスト/レスポンスデータ管理コンテナ |
| 2  | handle       | SessionHandle                      | セッション制御ハンドル         |
| 3  | svcKeiNo     | String                             | サービス契約番号               |
| 4  | resultHash   | HashMap<String, Object>            | 結果格納用ハッシュ             |
| 5  | funcCode     | String                             | 機能コード                     |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード        | エンティティ            | 操作説明                        |
|------|----------------------|---------------|-----------------------|-------------------------------|
| R    | callEKK0191B001_2SC  | EKK0191B001   | サービス契約内訳（eo光電話） | サービス契約内訳一覧照会            |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- 各OdrCtrl/DivOdrCtrl/hakkoSOD/オプション制御系から複合的に呼び出される

**呼出パス例:**

```
hakkoSOD → dslOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
hakkoSOD → cnclOdrCtrl → dslOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
hakkoSOD → htelNoInfoChgeOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
```

**終端:**

| SC メソッド            | CRUD | エンティティ                 |
|----------------------|------|----------------------------|
| callEKK0191B001_2SC  | R    | サービス契約内訳（eo光電話） |

---

---

---

### callEKK0081A010SC()

#### 呼出元 (Reverse Call Tree) — 30 direct callers

```
callEKK0081A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── getSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── cnclOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── ksiDslOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── findZ1OrderAtKK1041()
│   │   │   ├── hakkoSOD()
│   │   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   │   └── htelNoAddOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   └── opSetOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── jdgIpv6()
│   │   │   ├── adchgFixOdrCtrl()
│   │   │   ├── addIpv6SODAft()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   ├── newKeiOdrCtrl()
│   │   │   ├── opSetOdrCtrl()
│   │   │   └── jdgIpv6EKK0361A010()
│   │   │       ├── adchgFixOdrCtrl()
│   │   │       ├── addIpv6SODAft()
│   │   │       ├── hakkoSOD()
│   │   │       ├── kaihkOdrCtrl()
│   │   │       └── newKeiOdrCtrl()
│   │   ├── jdgOdr163()
│   │   │   ├── adchgFixOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   └── courseChgeOdrCtrl()
│   │   │       ├── adchgFixOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── telNoChge()
│   │   │   ├── hakkoSOD()
│   │   │   └── bmpSwitchOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── vLanIdChgOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── wribInfoAddOdrCtrl()
│   │       └── hakkoSOD()
│   └── newNet()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
│           ├── hakkoSOD()
│           └── adchgFixOdrCtrl()
│               └── hakkoSOD()
└── pauseJdg()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0081A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「サービス契約一意照会SIF」を呼び出し、指定条件に合致するサービス契約の一意な内容を照会します。  
サービス契約の詳細チェック、業務判定処理（pauseJdg等）で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0081A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0081A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0081A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0081A010, mappingEKK0081A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEKK0081A010CBS(param, resultMsgs, status)"]
  S9 --> S11["Step11: mappingEKK0081A010SCOutMsg(resultMsgs)"]
  S11 --> S12["Step12: editErrorInfoEKK0081A010CBS(param, resultMsgs, status)"]
  S12 --> IF2{"(errList == null)"}
  SERR --> IF2
  IF2 -- "Yes: エラーマップ無" --> S13["Step13: param.getControlMapData(ERROR_INFO)"]
  IF2 -- "No: エラーマップ有" --> IF3{"(errList != null && !errList.isEmpty())"}
  IF3 -- "Yes: Exception発生" --> THROW["throw new CCException...(詳細省略)"]
  IF3 -- "No: エラー情報セット" --> S14["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(...))"]
  S13 --> RET["return status"]
  THROW --> RET
  S14 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffd700
  style IF3 fill:#ffcc00
  style THROW fill:#ffbbbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングしresultHash格納
10. エラー時はeditErrorInfoEKK0081A010CBSによるエラー情報編集
11. エラーマップ判定
12. エラーマップが無い場合はparamからERROR_INFO取得
13. エラーマップがあり、空でなければExceptionをthrow
14. それ以外はエラー情報をparamにセット
15. status値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件                             | 定数値 | 分岐先                                |
|---|----------------------------------|--------|---------------------------------------|
| 1 | `status == 0`                    | -      | resultHash格納・マッピング・エラー編集 |
| 2 | `status != 0`                    | -      | エラー情報編集                        |
| 3 | `errList == null`                | -      | ERROR_INFO取得                        |
| 4 | `errList != null && !empty`      | -      | Exception発生                         |
| 5 | 上記以外                         | -      | param.setControlMapData(ERROR_INFO...)|

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                   |
|----|--------------|----------------------------|----------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ         |
| 2  | handle       | SessionHandle              | セッション管理ハンドル     |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ         |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用         |
| 5  | funcCode     | String                     | SC機能呼出コード           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ          | 操作説明         |
|------|----------------------------|--------------|-----------------------|------------------|
| R    | callEKK0081A010SC          | EKK0081A010  | サービス契約          | 一意照会         |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `pauseJdg`

**呼出パス:**

```
pauseJdg → callEKK0081A010SC → [SC呼出] → [CRUD: READ サービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ          |
|----------------------|------|-----------------------|
| callEKK0081A010SC    | R    | サービス契約          |

---

---

---

### callEKK0081B004SC()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
callEKK0081B004SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── judgeOdrHakkoJoken4WiFiSpot()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── newEoMobile()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── spotLoginSysidChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    └── stpUkOdrCtrl()
        ├── hakkoSOD()
        ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        └── useStpOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK0081B004SC(IRequestParameterReadWrite param, SessionHandle handle, String sysid)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

SYSIDをキーとして、サービス契約一覧情報をSCを通して照会する。複数の業務制御処理でサービス契約情報の取得用途で利用される。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0081B004SC(param, handle, sysid)"] --> S1["Step1: 入力マッピング (mappingEKK0081B004SCInMsg)"]
  S1 --> S2["Step2: 共通情報編集 (editBasicCmn)"]
  S2 --> S3["Step3: サービスIF共通情報編集 (editInMsgCmn)"]
  S3 --> S4["Step4: リクエストクラス設定 (sIFRequest.put)"]
  S4 --> S5["Step5: SC呼出 (ServiceComponentRequestInvoker.run)"]
  S5 --> S6["Step6: 結果処理 (editResultRP_EKK0081B004SC)"]
  S6 --> RET["return ArrayList<HashMap<String, Object>>"]
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | なし | なし（直列処理） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | sysid | String | サービス提供システムID |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK0081B004SC | EKK0081B004 | サービス契約 | 一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- judgeOdrHakkoJoken4WiFiSpot
- spotLoginSysidChgeOdrCtrl
- newEoMobile
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- hakkoSOD
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**

```
judgeOdrHakkoJoken4WiFiSpot → callEKK0081B004SC → EKK0081B004SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK0081B004SC       | R    | サービス契約         |

---

---

### callEKK0091A010_SC()

#### 呼出元 (Reverse Call Tree) — 8 direct callers

```
callEKK0091A010_SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
└── taiikiSeigenOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private String callEKK0091A010_SC(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String funcCode)`
> **戻り値:** `String`

---

#### 1. 役割

サービス契約一意照会SIFを呼び出し、サービス契約番号に紐づく契約詳細情報や固定IPアドレスなどを取得する。  
契約状態や設備状態による業務分岐や、固定IP判定等の下位ロジックで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0091A010_SC(param, handle, svcKeiNo, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0091A010CBSMsgインスタンス生成しNullマッピング"]
  S2 --> S3["Step3: template.set(TEMPLATEID, 'EKK0091A010')"]
  S3 --> S4["Step4: template.set(FUNC_CODE, funcCode)"]
  S4 --> S5["Step5: template.set(KEY_SVC_KEI_NO, svcKeiNo)"]
  S5 --> S6["Step6: editBasicCmn(param, template)"]
  S6 --> S7["Step7: sIFRequest.put(TEMPLATE_LIST_KEY, [template])"]
  S7 --> S8["Step8: scCall.run(sIFRequest, handle)"]
  S8 --> S9["Step9: sIFResult.get(TEMPLATE_LIST_KEY)"]
  S9 --> S10["Step10: template.getInt(STATUS_INT_KEY)"]
  S10 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> IF2{"msgList != null && msgList.length > 0"}
  IF2 -- "Yes: 結果抽出" --> S11["Step11: 固定IPアドレス8を取得しnullToBlankで補正"]
  IF2 -- "No: 空またはnull" --> S12["Step12: 空文字返却"]
  IF1 -- "No: エラー" --> S13["Step13: エラー返却"]
  S11 --> RET["return KOTEI_IP_AD_8_DIV"]
  S12 --> RET
  S13 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 共通部セット
2. テンプレート生成＆Nullマッピング
3. テンプレートID・機能コード・契約番号セット
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. ステータス0かつmsgListありの場合、固定IPアドレス8を取得しnullToBlank変換
8. それ以外は空文字返却

**制御フロー分岐（全条件列挙）:**

| # | 条件                                        | 定数値 | 分岐先                     |
|---|---------------------------------------------|--------|----------------------------|
| 1 | status == 0                                 | 0      | msgList有無判定            |
| 2 | status != 0                                 | -      | エラー返却                 |
| 3 | msgList != null && msgList.length > 0       | -      | 固定IPアドレス8取得        |
| 4 | それ以外                                    | -      | 空文字返却                 |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                          |
| 2  | handle        | SessionHandle              | セッション管理                              |
| 3  | svcKeiNo      | String                     | サービス契約番号                            |
| 4  | funcCode      | String                     | 機能コード                                  |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド           | SCコード        | エンティティ       | 操作説明           |
|------|----------------------|-----------------|--------------------|--------------------|
| R    | callEKK0091A010_SC   | EKK0091A010     | サービス契約       | サービス契約一意照会|

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- taiikiSeigenOdrCtrl
- kaihkOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [malwareBlockingDivOdrCtrl] → **[callEKK0091A010_SC]** → [SC呼出]
```

**終端:**

| SC メソッド           | CRUD | エンティティ       |
|----------------------|------|--------------------|
| callEKK0091A010_SC   | R    | サービス契約       |

---

---

