# ⑥ 業務ロジック — Judgment/Validation: 10 methods

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

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

<a id="method-isMonaiBmp"></a>
### isMonaiBmp()

---

#### 1. 役割

網内番ポかどうか判定します。  
具体的には、指定された電話番号について `EZM0121A010`（電話番号一意照会）を呼び出して照会結果を取得し、  
その結果から「初期個人法人電話番号帯コード」と「個人法人電話番号帯コード」を取得します。  
これらの値がそれぞれ `JKKStrConst.CD00410_HOJIN`（"2":法人）、`JKKStrConst.CD00410_KOJIN`（"1":個人）に一致する場合に「網内番ポ(法人→個人)」と判定し、`true` を返却します。  
エラー発生時は例外をスローします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isMonaiBmp（handle, param, telNo）"] --> S1["Step1: 電話番号一意照会用パラメータ作成（TELNO=telNo）"]
  S1 --> S2["Step2: callEZM0121A010SC（param, handle, inHashTelNo, resultHashTelNo, FUNC_CODE_1）"]
  S2 -.- NOTE_FUNC_CODE_1["FUNC_CODE_1 = '1' （機能コード）"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -->|"Yes: エラー"| ERR["throw CCException （SCCallException）"]
  IF1 -->|"No: 正常終了"| S3["Step3: 電話番号一意照会結果取得 （eZM0121A010Hash）"]
  S3 --> S4["Step4: 初期個人法人電話番号帯コード・個人法人電話番号帯コード取得"]
  S4 --> S5["Step5: 判定: CD00410_HOJIN（'2'）とCD00410_KOJIN（'1'）か"]
  S5 -.- NOTE_HOJIN["CD00410_HOJIN = '2' （法人）"]
  S5 -.- NOTE_KOJIN["CD00410_KOJIN = '1' （個人）"]
  S5 --> RET["return （shkKojinHojinTlnTaiCd == '2' && kojinHojinTlnTaiCd == '1'）"]

  style IF1 fill:#ffcc00
  style NOTE_FUNC_CODE_1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_HOJIN fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_KOJIN fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. Step1: 引数 `telNo`（電話番号）を `inHashTelNo` にセットし、電話番号一意照会のパラメータを作成。
2. Step2: `callEZM0121A010SC(param, handle, inHashTelNo, resultHashTelNo, JKKHakkoSODConstCC.FUNC_CODE_1)` を実行し、電話番号一意照会を行う。  
   - 定数 `FUNC_CODE_1 = "1"`（機能コード）を利用。
3. Step3: 戻り値の `statusCode` が0以外の場合は `CCException` をスローし、エラー終了。
4. Step4: 正常の場合、`resultHashTelNo` から `eZM0121A010Hash`（電話番号一意照会結果）を取得。
5. Step5: `eZM0121A010Hash` から `SHK_KOJIN_HOJIN_TLN_TAI_CD`（初期個人法人電話番号帯コード）と `KOJIN_HOJIN_TLN_TAI_CD`（個人法人電話番号帯コード）を取得。
6. Step6: それぞれの値が `CD00410_HOJIN = "2"`（法人）、`CD00410_KOJIN = "1"`（個人）に一致する場合に `true` を返却。そうでなければ `false` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3   | telNo        | String                     | 判定対象の電話番号                                    |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEZM0121A010SC` | EZM0121A010SC | - | (電話番号一意照会SIFを呼び出し) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isMonaiBmp` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |

---

#### 📋 Per-Branch 詳細ブロック — `isMonaiBmp()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(0 != statusCode)` (L42329)

> 📌 電話番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));` |

> **合計**: 1 blocks (1 depth levels)

### isTelnoSODJudge()

---

#### 1. 役割

SOD発行条件パターンの提示を元に電話番号の状態を確認して判定します。  
具体的には、指定されたサービス契約内訳番号・世代登録日時および電話番号を用いて、`EKK0191A010`・`EZM0121A010` の各一意照会を実施し、通信事業者自社他社フラグ・個人法人電話番号帯コード・番ポ有無などの諸条件と、指定された判定パターン（TELNO_JUDGE_001/002/003/004）に基づき、複雑な条件でtrue/falseを返却します。  
制御フローが多岐に渡るため、判定内容はすべて分岐条件に基づき厳密に実施されます。  
エラー時は例外をスローします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isTelnoSODJudge（handle, param, svc_kei_ucwk_no, svc_kei_ucwk_gene_add_dtm, telNo, pattern）"] --> S1["Step1: サービス契約内訳<eo光電話>一意照会パラメータ作成"]
  S1 --> S2["Step2: callEKK0191A010SC （サービス契約内訳一意照会）"]
  S2 -.- NOTE_FUNC_CODE_1["FUNC_CODE_1 = '1' （機能コード）"]
  S2 --> IF1{"statusCodeUcwkTel != 0"}
  IF1 -->|"Yes: エラー"| ERR1["throw CCException （SCCallException）"]
  IF1 -->|"No: 正常終了"| S3["Step3: サービス契約内訳<eo光電話>照会結果取得 （eKK0191A010Hash）"]
  S3 --> IF2{"isBlank（telNo）?"}
  IF2 -->|"Yes: 空"| S4["eKK0191A010Hash.get（TELNO） でtelNo取得"]
  IF2 -->|"No: 指定あり"| S5["そのままtelNo利用"]
  S4 --> S6["Step4: 電話番号一意照会パラメータ作成"]
  S5 --> S6
  S6 --> S7["Step5: callEZM0121A010SC （電話番号一意照会）"]
  S7 --> IF3{"statusCodeTel != 0"}
  IF3 -->|"Yes: エラー"| ERR2["throw CCException （SCCallException）"]
  IF3 -->|"No: 正常終了"| S8["Step6: 電話番号一意照会結果取得 （eZM0121A010Hash）"]
  S8 --> S9["Step7: 各種コード取得（tlnStkuTsjgsJishaTashaFlg, shkKojinHojinTlnTaiCd, kojinHojinTlnTaiCd, bmpUm）"]
  S9 --> S10{"patternに応じた判定分岐"}
  S10 -->|"pattern=TELNO_JUDGE_001"| C1["（1） 他社電話番号 or OPT電話番号で網内番ポ（法人→個人）"]
  S10 -->|"pattern=TELNO_JUDGE_002"| C2["（2） 他社電話番号 or OPT電話番号かつ網内番ポ（法人→個人）かつ番号取得事業者戻り（自社かつ番ポ有無:有）"]
  S10 -->|"pattern=TELNO_JUDGE_003"| C3["（3） 他社電話番号かつ網内番ポ（法人→個人） or 番号取得事業者戻り（自社かつ番ポ有無:有）"]
  S10 -->|"pattern=TELNO_JUDGE_004"| C4["（4） OPT電話番号で網内番ポ（法人→個人）"]
  C1 --> RET1["判定条件を満たせばtrue, それ以外はfalse"]
  C2 --> RET2["判定条件を満たせばtrue, それ以外はfalse"]
  C3 --> RET3["判定条件を満たせばtrue, それ以外はfalse"]
  C4 --> RET4["判定条件を満たせばtrue, それ以外はfalse"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style S10 fill:#ffcc00
  style NOTE_FUNC_CODE_1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. Step1: サービス契約内訳番号（svc_kei_ucwk_no）・世代登録年月日時分秒（svc_kei_ucwk_gene_add_dtm）をパラメータとして `inHashUcwkTel` にセット。
2. Step2: `callEKK0191A010SC(param, handle, inHashUcwkTel, resultHashUcwkTel, JKKHakkoSODConstCC.FUNC_CODE_1)` を呼び出してサービス契約内訳<eo光電話>一意照会を実施。
3. Step3: エラー時は例外スロー。正常時は `eKK0191A010Hash`（サービス契約内訳<eo光電話>照会結果）を取得。
4. Step4: telNoが空白の場合は `eKK0191A010Hash.get(TELNO)` から電話番号を取得。
5. Step5: 電話番号を `inHashTelNo` にセットし、`callEZM0121A010SC(param, handle, inHashTelNo, resultHashTelNo, JKKHakkoSODConstCC.FUNC_CODE_1)` で電話番号一意照会。
6. Step6: エラー時は例外スロー。正常時は `eZM0121A010Hash` を取得。
7. Step7: `eZM0121A010Hash` から `SHK_KOJIN_HOJIN_TLN_TAI_CD`（初期個人法人電話番号帯コード）、`KOJIN_HOJIN_TLN_TAI_CD`（個人法人電話番号帯コード）、`TLN_STKU_TSJGS_JISHA_TASHA_FLG`（番号取得通信事業者自社他社フラグ）、および `eKK0191A010Hash` から `BMP_UM`（番ポ有無）を取得。
8. Step8: 指定された `pattern`（TELNO_JUDGE_001〜004）に基づき、下記分岐パターンの判定条件を厳密に評価し、`true`/`false` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名             | 型                         | 業務説明                                              |
| --- | ------------------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle                   | SessionHandle              | セッション管理ハンドル                                |
| 2   | param                    | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3   | svc_kei_ucwk_no          | String                     | サービス契約内訳番号                                  |
| 4   | svc_kei_ucwk_gene_add_dtm| String                     | サービス契約内訳世代登録年月日時分秒                  |
| 5   | telNo                    | String                     | 電話番号                                              |
| 6   | pattern                  | String                     | 判定パターン（TELNO_JUDGE_001~004）                  |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEKK0191A010SC` | EKK0191A010SC | - | (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し) |
| R | `callEZM0121A010SC` | EZM0121A010SC | - | (電話番号一意照会SIFを呼び出し) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isTelnoSODJudge` | `callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |

---

#### 📋 Per-Branch 詳細ブロック — `isTelnoSODJudge()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(0 != statusCodeUcwkTel)` (L42368)

> 📌 サービス契約内訳<eo光電話>

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCodeUcwkTel), statusCodeUcwkTel));` |

##### Block 2 — 🔀 IF `(isBlank(telNo))` (L42377)

> 📌 電話番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📥 GET | `telNo = (String) eKK0191A010Hash.get(EKK0191A010CBSMsg1List.TELNO);` [➔ TELNO="telno"] \| |

##### Block 3 — 🔀 IF `(0 != statusCodeTel)` (L42384)

> 📌 0でない場合はエラー

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCodeTel), statusCodeTel));` |

##### Block 4 — 🔀 IF `(TELNO_JUDGE_001.equals(pattern))` [TELNO_JUDGE_001="001"] (L42406)

> 📌 戻り値の判定 指定されたパターンで、想定している状態でない場合はfalse判定をする

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

###### · Block 4.1 — 🔀 IF `(!JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) || (JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) && (JKKStrConst.CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && JKKStrConst.CD00410_KOJIN.equals(kojinHojinTlnTaiCd)) ) )` [CD00189_JISHA="1", CD00410_HOJIN="2", CD00410_KOJIN="1"] (L42408)

> 📌 戻り値の判定 指定されたパターンで、想定している状態でない場合はfalse判定をする

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

##### Block 5 — 🔀 ELSE-IF `(TELNO_JUDGE_002.equals(pattern))` [TELNO_JUDGE_002="002"] (L42418)

> 📌 (他社電話番号の場合又はＯＰＴ電話番号で網内番ポ(法人→個人)の場合、又はＯＰＴ電話番号で網内番ポ(法人→個人)で番号取得事業者戻りの場合)を含む

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

###### · Block 5.1 — 🔀 IF `(!JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) || (JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) && (JKKStrConst.CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && JKKStrConst.CD00410_KOJIN.equals(kojinHojinTlnTaiCd)) && JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm) ) )` [CD00189_JISHA="1", CD00410_HOJIN="2", CD00410_KOJIN="1", BMP_UM_ARI="1"] (L42420)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

##### Block 6 — 🔀 ELSE-IF `(TELNO_JUDGE_003.equals(pattern))` [TELNO_JUDGE_003="003"] (L42432)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

###### · Block 6.1 — 🔀 IF `((!JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) && (JKKStrConst.CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && JKKStrConst.CD00410_KOJIN.equals(kojinHojinTlnTaiCd))) || (JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) && JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm) ) )` [CD00189_JISHA="1", CD00410_HOJIN="2", CD00410_KOJIN="1", BMP_UM_ARI="1"] (L42434)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

##### Block 7 — 🔀 ELSE-IF `(TELNO_JUDGE_004.equals(pattern))` [TELNO_JUDGE_004="004"] (L42446)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

###### · Block 7.1 — 🔀 IF `(JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) && (JKKStrConst.CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && JKKStrConst.CD00410_KOJIN.equals(kojinHojinTlnTaiCd)) )` [CD00189_JISHA="1", CD00410_HOJIN="2", CD00410_KOJIN="1"] (L42448)

> 📌 ＯＰＴ電話番号で網内番ポ(法人→個人)の場合

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

> **合計**: 11 blocks (2 depth levels)

### chkOdrSette()

---

#### 1. 役割

ルーターオプション変更オーダ出力判定処理。  
具体的には、多機能ルーターに関するオーダ設定一覧を照会し、オーダ設定情報が存在し、かつ該当機器提供サービス契約番号のレコードの最新要求種別コードが `0[24]`（新規・変更オーダ）であれば「多機能ルーター有効」と判定し、trueを返却します。  
該当レコードがなければfalse、エラー時は例外をスローします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["chkOdrSette（handle, param）"] --> S1["Step1: callEKK1041B001SC （ORDER_SBT_CD_TEL, SVC_ORDER_CD_MRT, taknkiki_model_cd_takino, kiki_seizo_no_takino）"]
  S1 --> IF1{"resultOdrSet.size（） == 0"}
  IF1 -->|"Yes: 0件"| RET_FALSE["return false"]
  IF1 -->|"No: 1件以上"| S2["Step2: for resultOdrSet の各レコード"]
  S2 --> S3["Step3: 機器提供サービス契約番号チェック"]
  S3 --> IF2{"takino_kktk_svc_kei_no == kktkSvcKeiNo"}
  IF2 -->|"No: 不一致"| CONTINUE1["continue"]
  IF2 -->|"Yes: 一致"| S4["Step4: オーダ設定番号で一意参照 callEKK1041A010SC"]
  S4 --> IF3{"statusCode != 0"}
  IF3 -->|"Yes: エラー"| ERR1["throw CCException （SCCallException）"]
  IF3 -->|"No: 正常終了"| S5["Step5: 最新要求種別コード yokyu_sbt_cd 取得"]
  S5 --> IF4{"yokyu_sbt_cd.matches（'0[24]'）"}
  IF4 -->|"Yes: 新規・変更"| RET_TRUE["return true"]
  IF4 -->|"No"| CONTINUE2["continue"]
  S2 --> RET_FALSE2["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: `callEKK1041B001SC()` を呼び出し、オーダ種別コード:電話（ORDER_SBT_CD_TEL）、サービスオーダコード:多機能ルータ（SVC_ORDER_CD_MRT）、多機能ルータ型式・製造番号でオーダ設定一覧を取得。
2. Step2: 取得結果が0件の場合は `false` を返却。
3. Step3: 各レコードについて、`takino_kktk_svc_kei_no`（多機能ルーター機器提供サービス契約番号）と一致するレコードのみ処理。
4. Step4: 一致する場合、オーダ設定番号で一意参照 `callEKK1041A010SC()` を呼び出す。
5. Step5: エラー時は例外スロー。正常時は `yokyu_sbt_cd`（最新要求種別コード）を取得。
6. Step6: `yokyu_sbt_cd` が正規表現 `"0[24]"`（新規・変更オーダ）にマッチした場合は `true` を返却。
7. Step7: それ以外の場合は `false` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEKK1041B001SC` | EKK1041B001SC | - | (EKK1041B001 オーダ設定一覧照会を実行します) |
| R | `callEKK1041A010SC` | EKK1041A010SC | - | (オーダ設定一意照会SIFを呼び出し) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → chkOdrSette` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)`<br>`callEKK1041A010SC [R] - (オーダ設定一意照会SIFを呼び出し)` |

---

#### 📋 Per-Branch 詳細ブロック — `chkOdrSette()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(resultOdrSet.size()==0)` (L42032)

> 📌 オーダ設定一覧照会

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 🔙 RETURN | `return false;` |

##### Block 2 — 🔁 FOR `(for)` (L42038)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📥 GET | `HashMap<String, Object> odrSet = resultOdrSet.get(j);` |
| 2 | 📦 VAR | `String odrSetNo = (String)odrSet.get(EKK1041B001CBSMsg1List.ODR_SET_NO);` [➔ ODR_SET_NO="odr_set_no"] \| |

###### · Block 2.1 — 🔀 IF `(!takino_kktk_svc_kei_no.equals(kktkSvcKeiNo))` (L42043)

> 📌 返品された多機能ルータが再出荷されることでオーダ設定のレコードに同機器製造番号のレコードが複数存在する場合がある。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `continue;` |
| 2 | ⚡ EXEC | `callEKK1041A010SC()` |

###### · Block 2.2 — 🔀 IF `(0 != statusCode)` (L42058)

> 📌 0でない場合はエラー

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));` |

###### · Block 2.3 — 🔀 IF `( msgListOdrSet != null && msgListOdrSet.length != 0 )` (L42066)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `eKK1041A010Hash = msgListOdrSet[0].getMsgData();` |

###### · Block 2.4 — 🔀 IF `(yokyu_sbt_cd != null)` (L42073)

> 📌 ← `yokyu_sbt_cd = (String)eKK1041A010Hash.get(EKK1041A010CBSMsg1List.RCNT_YOKYU_SBT_CD)`

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 🔙 RETURN | `return true;` |

###### ·· Block 2.4.1 — 🔀 IF `( yokyu_sbt_cd.matches("0[24]") )` (L42075)

> 📌 ← `yokyu_sbt_cd = (String)eKK1041A010Hash.get(EKK1041A010CBSMsg1List.RCNT_YOKYU_SBT_CD)`

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 🔙 RETURN | `return true;` |

> **合計**: 7 blocks (3 depth levels)

### isTajgsTelNo()

---

#### 1. 役割

電話番号が他事業者発行の電話番号か判定します。  
具体的には、指定された電話番号について `EZM0121A010`（電話番号一意照会）を呼び出し、その結果から「番号取得通信事業者自社他社フラグ」を取得します。  
この値が `JKKStrConst.CD00189_JISHA`（"1":自社）でない場合、他事業者電話番号と判定し `true` を返却します。  
エラー時は例外をスローします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isTajgsTelNo（handle, param, telNo）"] --> S1["Step1: 電話番号一意照会用パラメータ作成（TELNO=telNo）"]
  S1 --> S2["Step2: callEZM0121A010SC（param, handle, inHashTelNo, resultHashTelNo, FUNC_CODE_1）"]
  S2 -.- NOTE_FUNC_CODE_1["FUNC_CODE_1 = '1' （機能コード）"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -->|"Yes: エラー"| ERR1["throw CCException （SCCallException）"]
  IF1 -->|"No: 正常終了"| S3["Step3: 電話番号一意照会結果取得 （eZM0121A010Hash）"]
  S3 --> S4["Step4: 番号取得通信事業者自社他社フラグ取得 （tlnStkuTsjgsJishaTashaFlg）"]
  S4 --> S5["Step5: JISHA（'1'）と比較"]
  S5 -.- NOTE_JISHA["CD00189_JISHA = '1' （自社）"]
  S5 --> RET["return （!JISHA.equals（tlnStkuTsjgsJishaTashaFlg））"]

  style IF1 fill:#ffcc00
  style NOTE_FUNC_CODE_1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_JISHA fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. Step1: 引数 `telNo`（電話番号）を `inHashTelNo` にセットし、電話番号一意照会のパラメータを作成。
2. Step2: `callEZM0121A010SC(param, handle, inHashTelNo, resultHashTelNo, JKKHakkoSODConstCC.FUNC_CODE_1)` を実行し、電話番号一意照会を行う。
3. Step3: 戻り値の `statusCode` が0以外の場合は `CCException` をスローし、エラー終了。
4. Step4: 正常の場合、`resultHashTelNo` から `eZM0121A010Hash` を取得。
5. Step5: `eZM0121A010Hash` から `TLN_STKU_TSJGS_JISHA_TASHA_FLG`（番号取得通信事業者自社他社フラグ）を取得。
6. Step6: その値が `CD00189_JISHA = "1"`（自社）と異なる場合に `true` を返却（他事業者電話番号判定）。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 2   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3   | telNo        | String                     | 判定対象の電話番号                                    |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEZM0121A010SC` | EZM0121A010SC | - | (電話番号一意照会SIFを呼び出し) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isTajgsTelNo` | `callEZM0121A010SC [R] - (電話番号一意照会SIFを呼び出し)` |

---

#### 📋 Per-Branch 詳細ブロック — `isTajgsTelNo()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(0 != statusCode)` (L42179)

> 📌 電話番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));` |

> **合計**: 1 blocks (1 depth levels)

### isBmpOpenZumiDslNoDslNoChg()

---

#### 1. 役割

番ポ開通済かを判定します。(解約、光電話・番号解約、光電話・番号変更)  
＜前提条件＞  
・番ポ有、かつ、異動区分が解約、光電話・番号解約、光電話・番号変更の場合に呼び出すこと。  
＜処理概要＞  
本処理では＜前提条件＞の場合に、番ポ開通済か番ポ開通済でないかを以下の条件で判定します。  
1. サービス契約内訳.サービス開始年月日≠nullの場合、開通済みと判定しtrueを返す  
2. 1.以外の場合、番ポ工事.番ポ工事ステータスによって判定を行う。  
   ・"040"または"050"の場合、開通済と判定しtrueを返す  
   ・"040"ではないかつ"050"ではない場合、開通済でないと判定しfalseを返す  
エラー時は例外をスローします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isBmpOpenZumiDslNoDslNoChg（param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm）"] --> S1["Step1: サービス契約内訳一意照会パラメータ作成"]
  S1 --> S2["Step2: callEKK0161A010SC （サービス契約内訳一意照会）"]
  S2 -.- NOTE_FUNC_CODE_1["FUNC_CODE_1 = '1' （機能コード）"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -->|"Yes: エラー"| ERR1["throw CCException （SCCallException）"]
  IF1 -->|"No: 正常終了"| S3["Step3: サービス契約内訳一意照会結果取得 （eKK0161A010Hash）"]
  S3 --> S4["Step4: サービス開始年月日 svcStaYmd を取得"]
  S4 --> IF2{"svcStaYmd != null && svcStaYmd != ''"}
  IF2 -->|"Yes: 開通済"| RET_TRUE["return true"]
  IF2 -->|"No: 未開通"| S5["Step5: サービス契約内訳<eo光電話>一意照会"]
  S5 --> S6["Step6: 電話番号一意照会 callEZM0121A010SC"]
  S6 --> S7["Step7: 番ポ工事一覧照会 callETU0011B010SC"]
  S7 --> S8["Step8: for 各番ポ工事レコード"]
  S8 --> IF3{"svc_kei_ucwk_no == svcKeiUwNo"}
  IF3 -->|"Yes: 番ポ工事ステータス判定"| IF4{"bmpKjStat == '040' or == '050'"}
  IF4 -->|"Yes: 開通済"| RET_TRUE2["return true"]
  IF4 -->|"No: 未開通"| RET_FALSE1["return false"]
  IF3 -->|"No"| CONTINUE1["何もしない"]
  S8 --> RET_FALSE2["return result"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style NOTE_FUNC_CODE_1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. Step1: サービス契約内訳番号（svc_kei_ucwk_no）、世代登録年月日時分秒（chaf_svc_kei_ucwk_gene_add_dtm）をパラメータにセット。
2. Step2: `callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, JKKHakkoSODConstCC.FUNC_CODE_1)` でサービス契約内訳一意照会を実施。
3. Step3: エラー時は例外スロー。正常時は `eKK0161A010Hash` を取得。
4. Step4: `svcStaYmd`（サービス開始年月日）を取得。nullまたは空でなければ `true`（開通済）を返却。
5. Step5: サービス開始年月日が空の場合、`callEKK0191A010SC` でサービス契約内訳<eo光電話>一意照会を行い、続けて `callETU0011B010SC` で番ポ工事一覧照会を実施。
6. Step6: 取得した番ポ工事一覧の各レコードでサービス契約内訳番号が一致するものを判定。
7. Step7: 一致するレコードの番ポ工事ステータスが `"040"`（SOD発行済み）または `"050"`（番ポ工事完了）の場合は `true`（開通済）を返却。  
   それ以外または一致レコードがなければ `false` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名               | 型                         | 業務説明                                              |
| --- | -------------------------- | -------------------------- | ----------------------------------------------------- |
| 1   | param                      | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle                     | SessionHandle              | セッション管理ハンドル                                |
| 3   | svc_kei_no                 | String                     | サービス契約番号                                      |
| 4   | svc_kei_ucwk_no            | String                     | サービス契約内訳番号                                  |
| 5   | chaf_svc_kei_ucwk_gene_add_dtm | String                 | 変更後サービス契約内訳世代登録年月日時分秒            |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEKK0161A010SC` | EKK0161A010SC | ZM_M_CD_NM_KANRI, KK_M_OP_SVC, KK_M_TMP_PAY_PRC, KK_T_SVC_KEI_UCWK, KK_T_SVKEIUW_EOH_TEL, KK_T_KKTK_SVC_KEI, KK_M_KKTK_SVC, KK_T_OP_SVC_KEI, TU_T_BMP_KOJI, TU_T_DOBANITEN, KK_T_ICJKN_SETTE, TU_T_DNWACHOMSK, TU_T_DNWACHOMSK_NYO, KK_M_PCRS, KK_M_PPLAN, KK_T_IDO_RSV, KK_T_SVKEIUW_EOMOBA, KK_T_SVKEIUW_EOADSL, KK_T_SVKEIUW_HOSTING, KK_T_SVKEIUW_EOH_NET, KK_T_SVKEIUW_EOH_TV, KK_T_SVC_KEI, KK_T_MSKM_DTL, KK_T_MSKM, KK_M_PRC_GRP, KK_M_PPLAN_KTTANKA, KK_T_TK_HOSHIKI_KEI, KK_T_KAISEN_USE_KEI, KK_T_OWNR_KEI, KK_T_MANSION_BUKKEN, ZM_M_TAKNKIKI_MODEL, ZM_M_MAKER, C021, KK_T_KAISEN_TG_SVKEI, KK_T_KAKINS, KK_M_SVC, KK_T_SVKEI_KAISEN_UW | (サービス契約内訳一意照会SIFを呼び出し) |
| R | `callEKK0191A010SC` | EKK0191A010SC | - | (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し) |
| R | `callETU0011B010SC` | ETU0011B010SC | - | (番ポ工事一覧照会SIFを呼び出し) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isBmpOpenZumiDslNoDslNoChg` | `callEKK0161A010SC [R] ZM_M_CD_NM_KANRI/KK_M_OP_SVC/KK_M_TMP_PAY_PRC/KK_T_SVC_KEI_UCWK/KK_T_SVKEIUW_EOH_TEL/KK_T_KKTK_SVC_KEI/KK_M_KKTK_SVC/KK_T_OP_SVC_KEI/TU_T_BMP_KOJI/TU_T_DOBANITEN/KK_T_ICJKN_SETTE/TU_T_DNWACHOMSK/TU_T_DNWACHOMSK_NYO/KK_M_PCRS/KK_M_PPLAN/KK_T_IDO_RSV/KK_T_SVKEIUW_EOMOBA/KK_T_SVKEIUW_EOADSL/KK_T_SVKEIUW_HOSTING/KK_T_SVKEIUW_EOH_NET/KK_T_SVKEIUW_EOH_TV/KK_T_SVC_KEI/KK_T_MSKM_DTL/KK_T_MSKM/KK_M_PRC_GRP/KK_M_PPLAN_KTTANKA/KK_T_TK_HOSHIKI_KEI/KK_T_KAISEN_USE_KEI/KK_T_OWNR_KEI/KK_T_MANSION_BUKKEN/ZM_M_TAKNKIKI_MODEL/ZM_M_MAKER/C021/KK_T_KAISEN_TG_SVKEI/KK_T_KAKINS/KK_M_SVC/KK_T_SVKEI_KAISEN_UW (サービス契約内訳一意照会SIFを呼び出し)`<br>`callEKK0191A010SC [R] - (サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し)`<br>`callETU0011B010SC [R] - (番ポ工事一覧照会SIFを呼び出し)` |

---

#### 📋 Per-Branch 詳細ブロック — `isBmpOpenZumiDslNoDslNoChg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(0 != statusCode)` (L41515)

> 📌 サービス契約内訳一意照会

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));` |

##### Block 2 — 🔀 IF `(svcStaYmd != null && !"".equals(svcStaYmd))` (L41526)

> 📌 サービス開始年月日がnullではない場合

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

##### Block 3 — ↪️ ELSE `(else)` (L41532)

> 📌 サービス開始年月日がnullではない場合は番ポ工事ステータスを参照して判定する

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();` |
| 2 | ⚡ EXEC | `HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();` |
| 3 | 📋 SET | `inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));` [➔ SVC_KEI_UCWK_NO="svc_kei_ucwk_no"] |
| 4 | 📋 SET | `inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM));` [➔ GENE_ADD_DTM="gene_add_dtm"] |
| 5 | ⚡ EXEC | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);` [➔ FUNC_CODE_1="1"] \| |
| 6 | 📥 GET | `HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);` [➔ TEMPLATE_ID_EKK0191A010="EKK0191A010"] \| |
| 7 | ⚡ EXEC | `HashMap<String, Object> inHashBmp = new HashMap<String, Object>();` |
| 8 | ⚡ EXEC | `HashMap<String, Object> resultHashBmp = new HashMap<String, Object>();` |
| 9 | 📋 SET | `inHashBmp.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);` // サービス契約番号 [➔ SVC_KEI_NO="svc_kei_no"] \| |
| 10 | 📋 SET | `inHashBmp.put(JKKHakkoSODConstCC.NTT_KEI_TEL_KAISEN_NO, (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.TELNO));` // ＮＴＴ契約電話回線番号 [➔ NTT_KEI_TEL_KAISEN_NO="ntt_kei_tel_kaisen_no", TELNO="telno"] \| [➔ TELNO="telno" (電話番号)] |

###### · Block 3.1 — 🔀 IF `(0 != statusCode)` (L41550)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));` |

###### · Block 3.2 — 🔁 FOR `(for)` (L41558)

> 📌 件数分繰り返し

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `HashMap<String, Object> eTU0011B010Hash = msgETU0011B010SCList[j].getMsgData();` |
| 2 | 📦 VAR | `String svcKeiUwNo = (String)eTU0011B010Hash.get(ETU0011B010CBSMsg1List.SVC_KEI_UCWK_NO);` [➔ SVC_KEI_UCWK_NO="svc_kei_ucwk_no"] \| |
| 3 | 📦 VAR | `String bmpKjStat = (String)eTU0011B010Hash.get(ETU0011B010CBSMsg1List.BMP_KOJI_STAT);` [➔ BMP_KOJI_STAT="bmp_koji_stat"] \| |

###### ·· Block 3.2.1 — 🔀 IF `(svc_kei_ucwk_no.equals(svcKeiUwNo))` (L41567)

> 📌 サービス契約内訳番号と一致かつ番ポ工事ステータスが取消以外で判定

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### ··· Block 3.2.1.1 — 🔀 IF `(JKKHakkoSODConstCC.BMP_KOJI_STAT_SOD_HAKKOZM.equals(bmpKjStat) || JKKHakkoSODConstCC.BMP_KOJI_STAT_KOJIFIN.equals(bmpKjStat))` [BMP_KOJI_STAT_SOD_HAKKOZM="040", BMP_KOJI_STAT_KOJIFIN="050"] (L41570)

> 📌 番ポ開通済の場合

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |
| 2 | ⚡ EXEC | `break;` |

###### ··· Block 3.2.1.2 — ↪️ ELSE `(else)` (L41577)

> 📌 何もしない

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### ·· Block 3.2.2 — ↪️ ELSE `(else)` (L41582)

> 📌 何もしない

> （直接の処理内容なし — ネストされた子ブロックを参照）

> **合計**: 9 blocks (4 depth levels)

### isStaRsv()

---

#### 1. 役割

開始予約かどうかを判定します。  
具体的には、対象内訳の契約ステータスが「締結済（SVC_KEI_STAT_030）」であり、かつ親サービスの契約ステータスが「サービス提供中（SVC_KEI_STAT_100）」以上であり、かつサービス利用開始希望年月日が運用日より未来である場合に「開始予約」と判定し `true` を返却します。  
その他の場合は `false` を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isStaRsv（stat, oyaStat, svcUseStaKiboYmd）"] --> S1["Step1: 運用日取得 opedate = getOpeDate（null）"]
  S1 --> IF1{"stat == '030'（締結済） && oyaStat >= '100'（サービス提供中） && opedate < svcUseStaKiboYmd"}
  IF1 -->|"Yes: 条件成立"| RET_TRUE["return true"]
  IF1 -->|"No: 不成立"| RET_FALSE["return false"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: 運用日付を `JCCBPCommon.getOpeDate(null)` で取得。
2. Step2: 下記3条件すべて成立時にtrueを返却。
   - `stat`（契約ステータス）が `"030"`（締結済）
   - `oyaStat`（親サービス契約ステータス）が `"100"`（サービス提供中）以上
   - `opedate`（運用日）が `svcUseStaKiboYmd`（サービス利用開始希望年月日）より前
3. Step3: いずれかの条件が成立しない場合はfalseを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型     | 業務説明                             |
| --- | ------------------| ------ | ------------------------------------ |
| 1   | stat              | String | 対象内訳契約ステータス               |
| 2   | oyaStat           | String | 親サービス契約ステータス             |
| 3   | svcUseStaKiboYmd  | String | サービス利用開始希望年月日           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isStaRsv` | - |

---

#### 📋 Per-Branch 詳細ブロック — `isStaRsv()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(stat) && JKKHakkoSODConstCC.SVC_KEI_STAT_100.compareTo(oyaStat) <= 0 && opedate.compareTo(svcUseStaKiboYmd) < 0 )` [SVC_KEI_STAT_030="030", SVC_KEI_STAT_100="100"] (L38791)

> 📌 サービス利用開始希望年月日が未来

> （直接の処理内容なし — ネストされた子ブロックを参照）

> **合計**: 1 blocks (1 depth levels)

### is050AddOrderHakkoZumi()

---

#### 1. 役割

番号置換・登録オーダが発行済か判定します。  
具体的には、指定されたサービス契約番号でオーダ設定一覧（`EKK1041B001`）を照会し、オーダ種別コードが電話、サービスオーダコードが番号置換（NO_TIKAN）のレコードを探索します。  
そのレコードのサービス契約内訳番号・オプションサービス契約番号が指定値と一致し、かつ最新要求種別コードが「08：消去」以外の場合、「番号置換・登録オーダ発行済」と判定しtrueを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["is050AddOrderHakkoZumi（param, handle, svcKeiNo, svcKeiUcwkNo, opSvcKeiNo）"] --> S1["Step1: callEKK1041B001SC （svcKeiNo） でオーダ設定一覧取得"]
  S1 --> S2["Step2: for 各 eKK1041B001Hash"]
  S2 --> IF1{"ORDER_SBT_CD_TEL=='2' && SVC_ORDER_CD_NO_TIKAN=='22'"}
  IF1 -->|"Yes: 電話/番号置換"| IF2{"svcKeiUcwkNo==SVC_KEI_UCWK_NO && opSvcKeiNo==OP_SVC_KEI_NO"}
  IF2 -->|"Yes: 対象一致"| IF3{"RCNT_YOKYU_SBT_CD != '08'"}
  IF3 -->|"Yes: 消去以外"| RET_TRUE["return true"]
  IF3 -->|"No: 消去"| CONTINUE1["continue"]
  IF2 -->|"No: 不一致"| CONTINUE2["continue"]
  IF1 -->|"No: 他"| CONTINUE3["continue"]
  S2 --> RET_FALSE["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: `callEKK1041B001SC(param, handle, null, null, null, svcKeiNo, null, null)` でサービス契約番号をキーにオーダ設定一覧を取得。
2. Step2: 各レコード（eKK1041B001Hash）について、オーダ種別コードが電話（ORDER_SBT_CD_TEL="2"）、サービスオーダコードが番号置換（SVC_ORDER_CD_NO_TIKAN="22"）のものを探索。
3. Step3: サービス契約内訳番号（svcKeiUcwkNo）とオプションサービス契約番号（opSvcKeiNo）が一致するか判定。
4. Step4: 最新要求種別コード（RCNT_YOKYU_SBT_CD）が"08"（消去）以外であればtrue（発行済）を返却。
5. Step5: 条件に合致しない場合はfalseを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | svcKeiNo     | String                     | サービス契約番号                                      |
| 4   | svcKeiUcwkNo | String                     | サービス契約内訳番号                                  |
| 5   | opSvcKeiNo   | String                     | オプションサービス契約番号                            |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEKK1041B001SC` | EKK1041B001SC | - | (EKK1041B001 オーダ設定一覧照会を実行します) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → is050AddOrderHakkoZumi` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |

---

#### 📋 Per-Branch 詳細ブロック — `is050AddOrderHakkoZumi()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

###### · Block ?.1 — 🔀 IF `(JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.ORDER_SBT_CD)) && JKKHakkoSODConstCC.SVC_ORDER_CD_NO_TIKAN.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_ORDER_CD)))` [ORDER_SBT_CD_TEL="2", KK1041B001H="KK1041B001H", ORDER_SBT_CD="order_sbt_cd", SVC_ORDER_CD_NO_TIKAN="22", SVC_ORDER_CD="svc_order_cd"] (L38826)

> 📌 オーダ種別コード：電話、且つサービスオーダコード：番号置換の場合

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### ·· Block ?.1.1 — 🔀 IF `(svcKeiUcwkNo != null && svcKeiUcwkNo.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_KEI_UCWK_NO)) && opSvcKeiNo != null && opSvcKeiNo.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.OP_SVC_KEI_NO)) )` [KK1041B001H="KK1041B001H", SVC_KEI_UCWK_NO="svc_kei_ucwk_no", OP_SVC_KEI_NO="op_svc_kei_no"] (L38830)

> 📌 サービス契約内訳番号が一致、且つオプションサービス契約番号が一致

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### ··· Block ?.1.1.1 — 🔀 IF `(!JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD)))` [YOKYU_SBT_CD_DEL="08", KK1041B001H="KK1041B001H", RCNT_YOKYU_SBT_CD="rcnt_yokyu_sbt_cd"] (L38835)

> 📌 最新要求種別コードが「08：消去」以外

> （直接の処理内容なし — ネストされた子ブロックを参照）

> **合計**: 3 blocks (4 depth levels)

### isItenNoGuideTokiChu()

---

#### 1. 役割

移転番号案内のトーキ中かを判定します。  
具体的には、`eKK0191A010Hash` から解約・休止トーキ登録コードおよびトーキ種別コードを取得し、「休止によるトーキでない」かつ「トーキ種別コードが231（移転番号案内）」の場合に、  
さらにサービス契約番号・サービス契約内訳番号を使ってSIPオーダ設定一覧照会を実施し、  
該当サービス契約内訳番号の最新要求種別コードが14（トーキ）であれば`true`（トーキ中）を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isItenNoGuideTokiChu（param, handle, eKK0161A010Hash, eKK0191A010Hash）"] --> S1["Step1: eKK0191A010HashからDSL_PAUSE_TOKI_ADD_CD, DSL_PAUSE_TOKI_SBT_CD取得"]
  S1 --> IF1{"DSL_PAUSE_TOKI_ADD_CD != '3' && DSL_PAUSE_TOKI_SBT_CD == '231'"}
  IF1 -->|"Yes: 該当"| S2["Step2: サービス契約番号・サービス契約内訳番号取得"]
  S2 --> S3["Step3: callEKK1041B001SC（ORDER_SBT_CD_TEL, SVC_ORDER_CD_SIP, svcKeiNo）"]
  S3 --> S4["Step4: getEKK1041B001result（param） で照会結果取得"]
  S4 --> S5["Step5: for 各eKK1041B001Hash"]
  S5 --> IF2{"svcKeiUcwkNo == tmpSvcKeiUcwkNo"}
  IF2 -->|"Yes: 一致"| IF3{"RCNT_YOKYU_SBT_CD == '14'"}
  IF3 -->|"Yes: トーキ"| RET_TRUE["return true"]
  IF3 -->|"No"| CONTINUE1["continue"]
  IF2 -->|"No: 不一致"| CONTINUE2["continue"]
  S5 --> RET_FALSE["return false"]
  IF1 -->|"No: 非該当"| RET_FALSE2["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: 解約・休止トーキ登録コード（DSL_PAUSE_TOKI_ADD_CD）およびトーキ種別コード（DSL_PAUSE_TOKI_SBT_CD）をeKK0191A010Hashから取得。
2. Step2: それらが「休止によるトーキでない（値"3"以外）」かつ「トーキ種別コードが"231"（移転番号案内）」の場合、以降の処理へ。
3. Step3: サービス契約番号（svcKeiNo）、サービス契約内訳番号（svcKeiUcwkNo）をeKK0161A010Hashから取得。
4. Step4: `callEKK1041B001SC()` でオーダ種別コード=電話、サービスオーダコード=SIP、サービス契約番号を指定してSIPオーダ設定一覧照会。
5. Step5: `getEKK1041B001result(param)` で照会結果リストを取得。
6. Step6: 各eKK1041B001Hashについて、サービス契約内訳番号が一致する場合、最新要求種別コード（RCNT_YOKYU_SBT_CD）が"14"（トーキ）ならtrue。
7. Step7: 上記条件に合致しない場合はfalseを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名         | 型                         | 業務説明                                              |
| --- | -------------------- | -------------------------- | ----------------------------------------------------- |
| 1   | param                | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle               | SessionHandle              | セッション管理ハンドル                                |
| 3   | eKK0161A010Hash      | HashMap<String, Object>    | サービス契約内訳一意照会結果                          |
| 4   | eKK0191A010Hash      | HashMap<String, Object>    | サービス契約内訳<eo光電話>一意照会結果                |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| R | `callEKK1041B001SC` | EKK1041B001SC | - | (EKK1041B001 オーダ設定一覧照会を実行します) |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isItenNoGuideTokiChu` | `callEKK1041B001SC [R] - (EKK1041B001 オーダ設定一覧照会を実行します)` |

---

#### 📋 Per-Branch 詳細ブロック — `isItenNoGuideTokiChu()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals(dslPauseTokiAddCd) && "231".equals(dslPauseTokiSbtCd) )` [ITNTOKI_ADD_CD_PAUSE="3"] (L39022)

> 📌 且つ、移転番号案内

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String svcKeiNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);` [➔ SVC_KEI_NO="svc_kei_no"] \| |
| 2 | 📦 VAR | `String svcKeiUcwkNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);` [➔ SVC_KEI_UCWK_NO="svc_kei_ucwk_no"] \| |
| 3 | ⚡ EXEC | `callEKK1041B001SC(param, handle, JKKHakkoSODConstCC.ORDER_SBT_CD_TEL, JKKHakkoSODConstCC.SVC_ORDER_CD_SIP, null, svcKeiNo, null, null);` [➔ ORDER_SBT_CD_TEL="2", SVC_ORDER_CD_SIP="21"] \| [➔ SVC_ORDER_CD_SIP="21" (サービスオーダコード：21(SIP))] |
| 4 | ⚡ EXEC | `ArrayList<HashMap<String, Object>> eKK1041B001HashList = getEKK1041B001result(param);` |
| 5 | 📦 VAR | `String tmpSvcKeiUcwkNo = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_KEI_UCWK_NO);` [➔ SVC_KEI_UCWK_NO="svc_kei_ucwk_no"] \| |

###### ·· Block ?.1 — 🔀 IF `(svcKeiUcwkNo.equals(tmpSvcKeiUcwkNo))` (L39041)

> 📌 ← `tmpSvcKeiUcwkNo = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_KEI_UCWK_NO)`

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### ··· Block ?.1.1 — 🔀 IF `(JKKHakkoSODConstCC.YOKYU_SBT_CD_TOKI.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD)))` [YOKYU_SBT_CD_TOKI="14", KK1041B001H="KK1041B001H", RCNT_YOKYU_SBT_CD="rcnt_yokyu_sbt_cd"] (L39044)

> 📌 最新要求種別コードが14:トーキ

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `result = true;` |

> **合計**: 3 blocks (4 depth levels)

### isDelSodTrgtStat()

---

#### 1. 役割

解約/消去SDO発行対象のステータスか判定します。  
具体的には、引数 `stat`（サービス契約内訳ステータス）が `"910"`（解約済）以上の場合にtrueを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isDelSodTrgtStat（stat）"] --> IF1{"stat >= '910'（解約済）"}
  IF1 -->|"Yes"| RET_TRUE["return true"]
  IF1 -->|"No"| RET_FALSE["return false"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: `stat`（サービス契約内訳ステータス）が `"910"`（解約済）以上か判定。
2. Step2: 判定が成立すればtrue、不成立ならfalseを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型     | 業務説明                 |
| --- | ------------ | ------ | ------------------------ |
| 1   | stat         | String | サービス契約内訳ステータス |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isDelSodTrgtStat` | - |
### isAddSodTrgtStat()

---

#### 1. 役割

登録SDO発行対象のステータスか判定します。  
具体的には、引数 `stat`（サービス契約内訳ステータス）が `"020"`（照査済）以上かつ `"910"`（解約済）未満の場合にtrueを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["isAddSodTrgtStat（stat）"] --> IF1{"stat >= '020'（照査済） && stat < '910'（解約済）"}
  IF1 -->|"Yes"| RET_TRUE["return true"]
  IF1 -->|"No"| RET_FALSE["return false"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. Step1: `stat`（サービス契約内訳ステータス）が `"020"`（照査済）以上かつ `"910"`（解約済）未満か判定。
2. Step2: 判定が成立すればtrue、不成立ならfalseを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型     | 業務説明                 |
| --- | ------------ | ------ | ------------------------ |
| 1   | stat         | String | サービス契約内訳ステータス |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → isAddSodTrgtStat` | - |
---

---

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

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

### 📞 Screen/Batch 呼び出し元 (External Entry Points)

> このクラスを呼び出すScreen/Batchの一覧です（クラスレベルの呼び出し元）。
> **「呼出チェーン」列**: CC直接エントリメソッド → IntraClass経由 → 本チャンクの対象メソッド（**太字**）の実際の呼出パス。
> ※ 例: `CCエントリメソッド → 中間メソッド → **対象メソッド**` — 左端がCC入口、太字が本チャンクの対象メソッド。
> **「種別」列**: BPCheck＝業務確認チェック, Batch＝バッチ処理, Operation＝オペレーション, CC＝制御クラス。

| # | Screen/Batch | 種別 | 呼び出しクラス | 呼び出しメソッド | 呼出チェーン（CC入口 → IntraClass → 対象） |
|---|---|---|---|---|---|
| 1 | `KKSV0004` | BPCheck | `KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 2 | `KKSV0008` | BPCheck | `KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 3 | `KKSV0009` | BPCheck | `KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 4 | `KKSV0031` | BPCheck | `KKSV0031OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 5 | `KKSV0073` | BPCheck | `KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 6 | `KKSV0136` | BPCheck | `KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 7 | `KKSV0162` | BPCheck | `KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 8 | `KKSV0428` | BPCheck | `KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 9 | `KKSV0429` | BPCheck | `KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 10 | `KKSV0430` | BPCheck | `KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS` |

## ③.6 条件ディスパッチ (Condition Dispatch Mapping)

### `isTelnoSODJudge()` (L42349) — 21 branches

| # | 異動区分コード | 意味 (業務名称) | 対応メソッド | 行番号 |
|---|---|---|---|---|
| 1 | `001` | 電話番号状態判定:他社電話番号の場合又はＯＰＴ電話番号で網内番ポ(法人→個人):001 (他社電話番号の場合又はＯＰＴ電話番号で網内番ポ(法人→個人)の場合、又はＯＰＴ電話番号で網内番ポ(法人→個人)で番号取得事業者戻りの場合 含む) | - | L42406 |
| 2 | `1` | コード種別 自社他社フラグ 自社 | - | L42408 |
| 3 | `1` | コード種別 自社他社フラグ 自社 | - | L42408 |
| 4 | `2` | コード種別 個人法人電話番号帯コード 法人 | - | L42408 |
| 5 | `1` | コード種別 個人法人電話番号帯コード 個人 | - | L42408 |
| 6 | `002` | 電話番号状態判定:他社電話番号の場合又はＯＰＴ電話番号の番号取得事業者戻りで網内番ポ(法人→個人):002 | - | L42418 |
| 7 | `1` | コード種別 自社他社フラグ 自社 | - | L42420 |
| 8 | `1` | コード種別 自社他社フラグ 自社 | - | L42420 |
| 9 | `2` | コード種別 個人法人電話番号帯コード 法人 | - | L42420 |
| 10 | `1` | コード種別 個人法人電話番号帯コード 個人 | - | L42420 |
| 11 | `1` | 番ポ有無（有） | - | L42420 |
| 12 | `003` | 電話番号状態判定:他社電話番号の網内番ポ(法人→個人)又は、番号取得事業者戻りの場合:003 (ＯＰＴ電話番号の番号取得事業者戻りの場合、又は他社電話番号の網内番ポ(法人→個人) 含む) | - | L42432 |
| 13 | `1` | コード種別 自社他社フラグ 自社 | - | L42434 |
| 14 | `2` | コード種別 個人法人電話番号帯コード 法人 | - | L42434 |
| 15 | `1` | コード種別 個人法人電話番号帯コード 個人 | - | L42434 |
| 16 | `1` | コード種別 自社他社フラグ 自社 | - | L42434 |
| 17 | `1` | 番ポ有無（有） | - | L42434 |
| 18 | `004` | 電話番号状態判定:ＯＰＴ電話番号で網内番ポ(法人→個人):004 (ＯＰＴ電話番号で網内番ポ(法人→個人)で番号取得事業者戻り)含む | - | L42446 |
| 19 | `1` | コード種別 自社他社フラグ 自社 | - | L42448 |
| 20 | `2` | コード種別 個人法人電話番号帯コード 法人 | - | L42448 |
| 21 | `1` | コード種別 個人法人電話番号帯コード 個人 | - | L42448 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart LR
  A["isTelnoSODJudge()"] --> B{"pattern?"}
  subgraph SG0["コード種別 自社他社フラグ 自社系"]
    direction TB
  end

  B -->|"001〜2: （処理なし）"| SG0
```

> **合計**: 1 dispatchers, 21 branches

## ③.6 制御フロー分岐 (Control Flow Branching)

### `chkOdrSette()` (L42023) — 11 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (resultOdrSet.size()==0) | オーダ設定一覧照会 | ODR_SET_NO=odr_set_no, KKTK_SVC_KEI_NO=kktk_svc_kei_no | - | L42032 |
| 2 | · ↩️ RETURN | D1 | false | 多機能ルーター保有で、オーダが発行される前 | ODR_SET_NO=odr_set_no, KKTK_SVC_KEI_NO=kktk_svc_kei_no, TEMPLATE_ID_EKK1041A010=EKK1041A010 | - | L42035 |
| 3 | 🔁 FOR | D0 | (for-loop) | - | ODR_SET_NO=odr_set_no, KKTK_SVC_KEI_NO=kktk_svc_kei_no, TEMPLATE_ID_EKK1041A010=EKK1041A010 | `callEKK1041A010SC()` | L42038 |
| 4 | · 🔀 IF | D1 | (!takino_kktk_svc_kei_no.equals(kktkSvcKeiNo)) | 返品された多機能ルータが再出荷されることでオーダ設定のレコードに同機器製造番号のレコードが複数存在する場合がある。 | TEMPLATE_ID_EKK1041A010=EKK1041A010 | `callEKK1041A010SC()` | L42043 |
| 5 | · 🔀 IF | D1 | (0 != statusCode) | 0でない場合はエラー | TEMPLATE_ID_EKK1041A010=EKK1041A010 | - | L42058 |
| 6 | ·· ⚠️ THROW | D2 | new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode)) | 0でない場合はエラー | TEMPLATE_ID_EKK1041A010=EKK1041A010 | - | L42061 |
| 7 | · 🔀 IF | D1 | ( msgListOdrSet != null && msgListOdrSet.length != 0 ) | - | - | - | L42066 |
| 8 | · 🔀 IF | D1 | (yokyu_sbt_cd != null) | 新規・変更オーダが最新 ⇒ 多機能ルーター有効 | - | - | L42073 |
| 9 | ·· 🔀 IF | D2 | ( yokyu_sbt_cd.matches("0[24]") ) | 新規・変更オーダが最新 ⇒ 多機能ルーター有効 | - | - | L42075 |
| 10 | ··· ↩️ RETURN | D3 | true | 新規・変更オーダが最新 ⇒ 多機能ルーター有効 | - | - | L42078 |
| 11 | ↩️ RETURN | D0 | false | - | - | - | L42083 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["chkOdrSette()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （resultOdrSet.size（）==0）"]
    direction TB
    C0_0["RETURN: false"]
  end
  CF0 -->|"L42032"| SG0
  subgraph SG1["FOR: …"]
    direction TB
    C1_0["IF: （!takino_kktk_svc_kei_no.equals（kkt…"]
    C1_1["IF: （0 != statusCode）"]
    C1_2["IF: （ msgListOdrSet != null && msgListO…"]
    C1_3["IF: （yokyu_sbt_cd != null）"]
  end
  CF0 -->|"L42038"| SG1
  B2["RETURN: false"]
  CF0 -->|"L42083"| B2
```

### `is050AddOrderHakkoZumi()` (L38810) — 5 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔁 FOR | D0 | eKK1041B001Hash | サービス契約内訳番号が一致、且つオプションサービス契約番号が一致 | SVC_KEI_UCWK_NO=svc_kei_ucwk_no, OP_SVC_KEI_NO=op_svc_kei_no | - | L38823 |
| 2 | · 🔀 IF | D1 | (JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.ORDER_SBT_CD)) && JKKHakkoSODConstCC.SVC_ORDER_CD_NO_TIKAN.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_ORDER_CD))) | サービス契約内訳番号が一致、且つオプションサービス契約番号が一致 | ORDER_SBT_CD_TEL=2, ORDER_SBT_CD=order_sbt_cd, SVC_ORDER_CD_NO_TIKAN=22, SVC_ORDER_CD=svc_order_cd | - | L38826 |
| 3 | ·· 🔀 IF | D2 | (svcKeiUcwkNo != null && svcKeiUcwkNo.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_KEI_UCWK_NO)) && opSvcKeiNo != null && opSvcKeiNo.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.OP_SVC_KEI_NO)) ) | 最新要求種別コードが「08：消去」以外 | SVC_KEI_UCWK_NO=svc_kei_ucwk_no, OP_SVC_KEI_NO=op_svc_kei_no | - | L38830 |
| 4 | ··· 🔀 IF | D3 | (!JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD))) | - | YOKYU_SBT_CD_DEL=08 | - | L38835 |
| 5 | ↩️ RETURN | D0 | result | - | - | - | L38843 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["is050AddOrderHakkoZumi()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["FOR: eKK1041B001Hash"]
    direction TB
    C0_0["IF: （JKKHakkoSODConstCC.ORDER_SBT_CD_TE…"]
  end
  CF0 -->|"L38823"| SG0
  B1["RETURN: result"]
  CF0 -->|"L38843"| B1
```

### `isBmpOpenZumiDslNoDslNoChg()` (L41501) — 12 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (0 != statusCode) | 結果の取得 | TEMPLATE_ID_EKK0161A010=EKK0161A010, SVC_STA_YMD=利用開始日, SVC_KEI_UCWK_NO=svc_kei_ucwk_no, GENE_ADD_DTM=gene_add_dtm, TEMPLATE_ID_EKK0191A010=EKK0191A010 | - | L41515 |
| 2 | · ⚠️ THROW | D1 | new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode)) | 結果の取得 | TEMPLATE_ID_EKK0161A010=EKK0161A010, SVC_STA_YMD=利用開始日, SVC_KEI_UCWK_NO=svc_kei_ucwk_no, GENE_ADD_DTM=gene_add_dtm, TEMPLATE_ID_EKK0191A010=EKK0191A010 | - | L41517 |
| 3 | 🔀 IF | D0 | (svcStaYmd != null && !"".equals(svcStaYmd)) | サービス開始年月日がnullではない場合は番ポ工事ステータスを参照して判定する | SVC_KEI_UCWK_NO=svc_kei_ucwk_no, GENE_ADD_DTM=gene_add_dtm, TEMPLATE_ID_EKK0191A010=EKK0191A010, TELNO=telno, TEMPLATE_ID_ETU0011B010=ETU0011B010 | - | L41526 |
| 4 | 🔀 ELSE | D0 | (else) | サービス契約内訳＜ｅｏ光電話＞一意照会 | SVC_KEI_UCWK_NO=svc_kei_ucwk_no, GENE_ADD_DTM=gene_add_dtm, TEMPLATE_ID_EKK0191A010=EKK0191A010, TELNO=telno, TEMPLATE_ID_ETU0011B010=ETU0011B010 | `callEKK0191A010SC()`, `callETU0011B010SC()` | L41532 |
| 5 | · 🔀 IF | D1 | (0 != statusCode) | 結果の取得 | TEMPLATE_ID_ETU0011B010=ETU0011B010, SVC_KEI_UCWK_NO=svc_kei_ucwk_no, BMP_KOJI_STAT=bmp_koji_stat | - | L41550 |
| 6 | ·· ⚠️ THROW | D2 | new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode)) | 結果の取得 | TEMPLATE_ID_ETU0011B010=ETU0011B010, SVC_KEI_UCWK_NO=svc_kei_ucwk_no, BMP_KOJI_STAT=bmp_koji_stat | - | L41552 |
| 7 | · 🔁 FOR | D1 | (for-loop) | サービス契約内訳番号 | SVC_KEI_UCWK_NO=svc_kei_ucwk_no, BMP_KOJI_STAT=bmp_koji_stat | - | L41558 |
| 8 | ·· 🔀 IF | D2 | (svc_kei_ucwk_no.equals(svcKeiUwNo)) | 番ポ開通済の場合 | - | - | L41567 |
| 9 | ··· 🔀 IF | D3 | (JKKHakkoSODConstCC.BMP_KOJI_STAT_SOD_HAKKOZM.equals(bmpKjStat) ｜｜ JKKHakkoSODConstCC.BMP_KOJI_STAT_KOJIFIN.equals(bmpKjStat)) | 番ポ開通済の場合 | BMP_KOJI_STAT_SOD_HAKKOZM=040, BMP_KOJI_STAT_KOJIFIN=050 | - | L41570 |
| 10 | ··· 🔀 ELSE | D3 | (else) | 何もしない | - | - | L41577 |
| 11 | ·· 🔀 ELSE | D2 | (else) | 何もしない | - | - | L41582 |
| 12 | ↩️ RETURN | D0 | result | - | - | - | L41587 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["isBmpOpenZumiDslNoDslNoChg()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （0 != statusCode）"]
    direction TB
    C0_0["THROW: new CCException（'', new SCCall…"]
  end
  CF0 -->|"L41515"| SG0
  B1["IF: （svcStaYmd != null && !''.equals（svcStaY…"]
  CF0 -->|"L41526"| B1
  subgraph SG2["ELSE"]
    direction TB
    C2_0["IF: （0 != statusCode）"]
    C2_1["FOR: …"]
  end
  CF0 -->|"L41532"| SG2
  B3["RETURN: result"]
  CF0 -->|"L41587"| B3
```

### `isItenNoGuideTokiChu()` (L39004) — 5 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (!JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals(dslPauseTokiAddCd) && "231".equals(dslPauseTokiSbtCd) ) | サービス契約番号 | ITNTOKI_ADD_CD_PAUSE=3, SVC_KEI_UCWK_NO=svc_kei_ucwk_no | `callEKK1041B001SC()`, `getEKK1041B001result()` | L39022 |
| 2 | · 🔁 FOR | D1 | eKK1041B001Hash | 最新要求種別コードが14:トーキ | - | - | L39037 |
| 3 | ·· 🔀 IF | D2 | (svcKeiUcwkNo.equals(tmpSvcKeiUcwkNo)) | - | - | - | L39041 |
| 4 | ··· 🔀 IF | D3 | (JKKHakkoSODConstCC.YOKYU_SBT_CD_TOKI.equals((String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD))) | - | YOKYU_SBT_CD_TOKI=14 | - | L39044 |
| 5 | ↩️ RETURN | D0 | result | - | - | - | L39053 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["isItenNoGuideTokiChu()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （!JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUS…"]
    direction TB
    C0_0["FOR: eKK1041B001Hash"]
  end
  CF0 -->|"L39022"| SG0
  B1["RETURN: result"]
  CF0 -->|"L39053"| B1
```

### `isMonaiBmp()` (L42316) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (0 != statusCode) | 0でない場合はエラー | TEMPLATE_ID_EZM0121A010=EZM0121A010 | - | L42329 |
| 2 | · ⚠️ THROW | D1 | new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode)) | 結果の取得 | TEMPLATE_ID_EZM0121A010=EZM0121A010 | - | L42332 |
| 3 | ↩️ RETURN | D0 | JKKStrConst.CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && JKKStrConst.CD00410_KOJIN.equals(kojinHojinTlnTaiCd) | - | CD00410_HOJIN=2, CD00410_KOJIN=1 | - | L42342 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["isMonaiBmp()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （0 != statusCode）"]
    direction TB
    C0_0["THROW: new CCException（'', new SCCall…"]
  end
  CF0 -->|"L42329"| SG0
  B1["RETURN: CD00410_HOJIN（=2）.equa…"]
  CF0 -->|"L42342"| B1
```

### `isStaRsv()` (L38778) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(stat) && JKKHakkoSODConstCC.SVC_KEI_STAT_100.compareTo(oyaStat) <= 0 && opedate.compareTo(svcUseStaKiboYmd) < 0 ) | サービス利用開始希望年月日が未来 | SVC_KEI_STAT_030=030, SVC_KEI_STAT_100=100 | - | L38791 |
| 2 | · ↩️ RETURN | D1 | true | - | - | - | L38796 |
| 3 | ↩️ RETURN | D0 | false | - | - | - | L38799 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["isStaRsv()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （SVC_KEI_STAT_030（=030）.equ…"]
    direction TB
    C0_0["RETURN: true"]
  end
  CF0 -->|"L38791"| SG0
  B1["RETURN: false"]
  CF0 -->|"L38799"| B1
```

### `isTajgsTelNo()` (L42167) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (0 != statusCode) | 0でない場合はエラー | TEMPLATE_ID_EZM0121A010=EZM0121A010 | - | L42179 |
| 2 | · ⚠️ THROW | D1 | new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode)) | 結果の取得 | TEMPLATE_ID_EZM0121A010=EZM0121A010 | - | L42182 |
| 3 | ↩️ RETURN | D0 | !JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) | - | CD00189_JISHA=1 | - | L42190 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["isTajgsTelNo()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （0 != statusCode）"]
    direction TB
    C0_0["THROW: new CCException（'', new SCCall…"]
  end
  CF0 -->|"L42179"| SG0
  B1["RETURN: !CD00189_JISHA（=1）.equ…"]
  CF0 -->|"L42190"| B1
```

> **制御フロー合計**: 7 methods, 42 branches
