# Business Logic — KKA14201SFLogic.getNextScreenInfo() [509 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA14201SF.KKA14201SFLogic` |
| Layer | Service (Business Logic / SF layer) |
| Module | `KKA14201SF` (Package: `eo.web.webview.KKA14201SF`) |

## 1. Role

### KKA14201SFLogic.getNextScreenInfo()

This method is the central **screen routing engine** for the Option Service Contract Screen (KKW02301), responsible for determining which next screen the user should be navigated to after an action button is pressed on the option service contract list screen. It implements a **routing/dispatch pattern** based on the combination of action button type and option service code, effectively acting as a decision matrix that maps user intents and service types to concrete destination screens.

The method covers the full spectrum of option service operations: display-only view (Rireki_Shokai / History Display), new registration (Add / Registration), change (Chge / Modification), restore (Kaihk / Restoration), contract cancellation (Dsl / Contract Cancellation), reservation cancellation (Rsv_Cl / Reservation Cancellation), charge start date change (Chrg_Sta_Chg / Charge Start Date Change), and option pack selection (Op_Pack / Option Pack). It handles over 30 distinct option service codes spanning E-mail, My Home Page, mailing list, fixed global IP, IPv6 access, digital TV, security services, and various telephony features.

As a shared utility called by the screen logic, it enables the same business screen routing logic to be reused across similar option-related screens (KKSV02301, KKA14701SF, KKA14901SF, KKA14401SF).

The method returns a `String[3]` array containing: the next screen ID, the next screen name for display purposes, and the end/completion screen ID (if applicable). Some operations follow a three-step wizard pattern (update -> confirm -> complete), and the `nextEndScreenId` captures the final screen in that flow. When an operation does not follow a wizard pattern (e.g., display-only or change operations without confirmation), `nextEndScreenId` remains null.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getNextScreenInfo"])
    INIT["Initialize retNextScreenInfo[3], nextScreenId=null, nextScreenName=null, nextEndScreenId=null"]

    START --> INIT

    INIT --> COND1{actionBtn equals<br/>ACTION_BTN_RIREKI_SHOKAI<br/>"Rireki_Shokai"}
    COND1 -->|Yes| BRANCH_HIST["Set nextScreenId=KKW02304<br/>nextScreenName=History Display Screen"]
    COND1 -->|No| COND2{actionBtn equals<br/>ACTION_BTN_ADD "Add"}
    BRANCH_HIST --> END_RETURN["Return retNextScreenInfo"]

    COND2 -->|Yes| BRANCH_ADD["Set nextScreenId=KKW00837<br/>nextScreenName=Add Screen"]
    BRANCH_ADD --> SET_SCREEN["Call JCCWebCommon.setScreenId x15<br/>for all add-return screens"]
    SET_SCREEN --> END_RETURN

    COND2 -->|No| COND3{actionBtn equals<br/>ACTION_BTN_KAIHK "Kaihk"<br/>or ACTION_BTN_RSV_CL "Rsv_Cl"}
    BRANCH_ADD --> COND3

    COND3 -->|Yes| OP_ROUTE{op_svc_cd routed<br/>to restore/cancel screen}
    COND3 -->|No| CHANGE_ROUTE{actionBtn is<br/>Chge or Dsl<br/>or Shokai}

    OP_ROUTE --> SENRIKI_CHK1{op_svc_cd in<br/>OPSVCCDS_SENIKKW2525?}
    SENRIKI_CHK1 -->|Yes| S_RESTORE1["Override: KKW02526 to KKW02527<br/>Restore/Cancel confirmation screen"]
    SENRIKI_CHK1 -->|No| END_RETURN
    S_RESTORE1 --> END_RETURN

    CHANGE_ROUTE --> NHK_NESTED{op_svc_cd equals<br/>NHK_GRP_IKT "B069"?}
    NHK_NESTED -->|Yes| NHK_SUB{actionBtn is?}
    NHK_SUB -->|Shokai| S_NHK_INS["KKW02533 (no end)"]
    NHK_SUB -->|Chge| S_NHK_CHGE["KKW02537 to KKW02539"]
    NHK_SUB -->|Dsl| S_NHK_DSL["KKW02540 (no end)"]
    S_NHK_INS --> END_RETURN
    S_NHK_CHGE --> END_RETURN
    S_NHK_DSL --> END_RETURN

    NHK_NESTED -->|No| SENRIKI_CHK2{op_svc_cd in<br/>OPSVCCDS_SENIKKW2525?}
    SENRIKI_CHK2 -->|Yes| S_OVER2["Override: KKW02525 to KKW02527"]
    SENRIKI_CHK2 -->|No| END_RETURN
    S_OVER2 --> END_RETURN

    END_RETURN --> FINISH(["End"])
```

**Processing Summary:**

The method follows a three-level decision tree:

**Level 1 -- Action Button Dispatch:** The method first determines the operation type by checking the `actionBtn` parameter against 8 predefined button constants.

- **History Display (Rireki_Shokai):** Simply navigates to the history screen `KKW02304`. No service code routing needed.
- **Add/Registration (Add):** Navigates to the add screen `KKW00837`, then configures the return screen paths for all 15 registered option services via `JCCWebCommon.setScreenId()`. This ensures that when the user completes an add operation, they return to the option service contract list.
- **Restore (Kaihk) / Reservation Cancel (Rsv_Cl):** Routes to restore/cancel screens based on `op_svc_cd`. After screen selection, checks if the service code appears in `OPSVCCDS_SENIKKW2525` (the Option Channel List), which overrides the destination to a unified restore/cancel confirmation screen.
- **Change/Cancel/Display (default):** Routes to change screens based on `op_svc_cd`. Similar to Restore, applies the `OPSVCCDS_SENIKKW2525` override for NHK-related services with sub-branching based on the specific action button.

**Level 2 -- Service Code Routing:** Within each action button branch, the method checks `op_svc_cd` against 30+ constants, each mapping to a specific destination screen pair (update screen -> completion screen).

**Level 3 -- Channel Override:** The `OPSVCCDS_SENIKKW2525` array represents option channel classifications. When a service code matches an entry, the destination is overridden to a unified screen (`KKW02526` for restore/cancel, `KKW02525` for change), which provides a common confirmation UI for channel-based routing.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `actionBtn` | `String` | Action Button ID -- identifies the user's intended operation: History Display, Add/Registration, Modification, Restoration, Contract Cancellation, Reservation Cancellation, Charge Start Date Change, or Option Pack selection |
| 2 | `op_svc_cd` | `String` | Option Service Code -- a coded identifier for the specific option service (E-mail, My Home Page, IPv6, Security, TV, etc.) that determines which sub-screen routing applies |
| 3 | `OPSVCCDS_SENIKKW2525` | `String[]` | Option Channel List -- an array of option service codes belonging to the "option channel" category; when a service code appears here, it overrides the normal destination to a unified channel confirmation screen |

**Instance Fields / External State:**
- `JCCWebCommon` -- shared common component class used to set screen IDs for return navigation (called in the Add branch)
- No instance fields of `KKA14201SFLogic` are read within this method

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JCCWebCommon.setScreenId` | JCCWebCommon | - | Calls `setScreenId` in `JCCWebCommon` to configure return screen paths for add operations (15 calls for different option services) |

This method performs no database reads or writes. It is a pure screen routing/logic method with no data modification operations. All calls are to `JCCWebCommon.setScreenId()`, which configures session-level screen ID mappings for return navigation.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02301 | `KKW02301SFLogic.execute` -> `getNextScreenInfo(actionBtn, op_svc_cd, OPSVCCDS_SENIKKW2525)` | `JCCWebCommon.setScreenId [-] Session config` |
| 2 | Screen:KKA14701 | `KKA14701SFLogic.getNextScreenInfo` -> `getNextScreenInfo(actionBtn, op_svc_cd, OPSVCCDS_SENIKKW2525)` | *(same method, different class copy)* |
| 3 | Screen:KKA14901 | `KKA14901SFLogic.getNextScreenInfo` -> `getNextScreenInfo(actionBtn, op_svc_cd, OPSVCCDS_SENIKKW2525)` | *(same method, different class copy)* |
| 4 | Screen:KKA14401 | `KKA14401SFLogic.getNextScreenInfo` -> `getNextScreenInfo(actionBtn, op_svc_cd, OPSVCCDS_SENIKKW2525)` | *(same method, different class copy)* |

Note: The identical `getNextScreenInfo` method source code appears in `KKA14701SFLogic`, `KKA14901SFLogic`, `KKA14401SFLogic` (with line numbers at ~3680, ~3672, ~3676 respectively) and in `KKW02301SFLogic` (line ~1771). This suggests code duplication (same implementation copied across multiple SF logic classes).

## 6. Per-Branch Detail Blocks

### Block 1 -- INIT (L3828)

Initialize local variables and the return array.

| # | Type | Code |
|---|------|------|
| 1 | SET | `retNextScreenInfo = new String[3]` |
| 2 | SET | `nextScreenId = null` |
| 3 | SET | `nextScreenName = null` |
| 4 | SET | `nextEndScreenId = null` |

### Block 2 -- IF/ELSE-IF (actionBtn dispatch) (L3830)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ACTION_BTN_RIREKI_SHOKAI.equals(actionBtn)` [ACTION_BTN_RIREKI_SHOKAI="Rireki_Shokai" History Display] |
| 2 | SET | `nextScreenId = JKKScreenConst.SCREEN_ID_KKW02304` [-> "KKW02304"] |
| 3 | SET | `nextScreenName = JKKScreenConst.SCREEN_NAME_KKW02304` [-> "オプションサービス契約履歴一覧画面" (Option Service Contract History List Screen)] |
| 4 | ELSE-IF | `ACTION_BTN_ADD.equals(actionBtn)` [ACTION_BTN_ADD="Add" Registration] |
| 5 | SET | `nextScreenId = JKKScreenConst.SCREEN_ID_KKW00837` [-> "KKW00837"] |
| 6 | SET | `nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00837` [-> "追加入力画面" (Add Screen)] |
| 7 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00803, JKKScreenConst.SCREEN_ID_KKW02301)` [E-mail add return] |
| 8 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00806, JKKScreenConst.SCREEN_ID_KKW02301)` [My Home Page add return] |
| 9 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00809, JKKScreenConst.SCREEN_ID_KKW02301)` [Mailing List add return] |
| 10 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00812, JKKScreenConst.SCREEN_ID_KKW02301)` [Fixed Global IP add return] |
| 11 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00818, JKKScreenConst.SCREEN_ID_KKW02301)` [Multi Selection add return] |
| 12 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00815, JKKScreenConst.SCREEN_ID_KKW02301)` [Dynamic Connection add return] |
| 13 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00824, JKKScreenConst.SCREEN_ID_KKW02301)` [Remote Support Plus add return] |
| 14 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00827, JKKScreenConst.SCREEN_ID_KKW02301)` [Phone Option add return] |
| 15 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW03203, JKKScreenConst.SCREEN_ID_KKW02301)` [050 Number Issuance add return] |
| 16 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00830, JKKScreenConst.SCREEN_ID_KKW02301)` [eo Light TV Cable TV Guide add return] |
| 17 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00833, JKKScreenConst.SCREEN_ID_KKW02301)` [eo Light TV Option Channel add return] |
| 18 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00845, JKKScreenConst.SCREEN_ID_KKW02301)` [Smart Link Premium add return] |
| 19 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00848, JKKScreenConst.SCREEN_ID_KKW02301)` [Security/Internet Gateway/Notif Mail Premium add return] |
| 20 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00851, JKKScreenConst.SCREEN_ID_KKW02301)` [PC Plan, TV Plan, TV Plan add return] |
| 21 | EXEC | `JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW00859, JKKScreenConst.SCREEN_ID_KKW02301)` [eo Light Phone (Type N) add return] |
| 22 | ELSE-IF | `ACTION_BTN_KAIHK.equals(actionBtn) \|\| ACTION_BTN_RSV_CL.equals(actionBtn)` [ACTION_BTN_KAIHK="Kaihk" Restore, ACTION_BTN_RSV_CL="Rsv_Cl" Reservation Cancel] |
| 23 | IF/ELSE-IF chain | `op_svc_cd` check (see Block 2.1 below) |
| 24 | ELSE-IF | `ACTION_BTN_CHRG_STA_CHG.equals(actionBtn)` [ACTION_BTN_CHRG_STA_CHG="Chrg_Sta_Chg" Charge Start Date Change] |
| 25 | SET | `nextScreenId = JKKScreenConst.SCREEN_ID_KKW18701` [-> "KKW18701"] |
| 26 | SET | `nextScreenName = JKKScreenConst.SCREEN_NAME_KKW18701` [-> "課金開始日変更"] |
| 27 | SET | `nextEndScreenId = JKKScreenConst.SCREEN_ID_KKW18703` [-> "KKW18703"] |
| 28 | ELSE-IF | `ACTION_BTN_OP_PACK.equals(actionBtn)` [ACTION_BTN_OP_PACK="Op_Pack" Option Pack] |
| 29 | SET | `nextScreenId = JKKScreenConst.SCREEN_ID_KKW00825` [-> "KKW00825"] |
| 30 | SET | `nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00825` [-> "オプションパック選択"] |
| 31 | SET | `nextEndScreenId = JKKScreenConst.SCREEN_ID_KKW00827` [-> "KKW00827"] |
| 32 | ELSE | (default: change/cancel/display operations) |
| 33 | IF/ELSE-IF chain | `op_svc_cd` check (see Block 2.2 below) |
| 34 | ELSE | for NHK_GRP_IKT sub-branch |

### Block 2.1 -- IF/ELSE-IF (Restore/Cancel op_svc_cd routing) (L3867)

> When actionBtn is Kaihk or Rsv_Cl, route to restore/cancel screens based on op_svc_cd. After screen selection, check OPSVCCDS_SENIKKW2525 for channel override.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_EMAIL)` [EMAIL="B001"] |
| 2 | SET | `nextScreenId=KKW02502` [E-mail change confirm screen] |
| 3 | SET | `nextScreenName=KKW02502 name` |
| 4 | SET | `nextEndScreenId=KKW02503` [E-mail change complete screen] |
| 5 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0020)` [MY_HOME_PAGE="B002"] |
| 6 | SET | `nextScreenId=KKW02505` |
| 7 | SET | `nextEndScreenId=KKW02506` |
| 8 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_MLLIST)` [MLLIST="B003"] |
| 9 | SET | `nextScreenId=KKW02402` |
| 10 | SET | `nextEndScreenId=KKW02403` |
| 11 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0040)` [GWIP="B004"] |
| 12 | SET | `nextScreenId=KKW02405` |
| 13 | SET | `nextEndScreenId=KKW02406` |
| 14 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_MLTISE)` [MLTISE="B015"] |
| 15 | SET | `nextScreenId=KKW02511` |
| 16 | SET | `nextEndScreenId=KKW02512` |
| 17 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_YGSITEBLCK)` [YGSITEBLCK="B016"] |
| 18 | SET | `nextScreenId=KKW02514` |
| 19 | SET | `nextEndScreenId=KKW02515` |
| 20 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DUPCON)` [DUPCON="B020"] |
| 21 | SET | `nextScreenId=KKW02508` |
| 22 | SET | `nextEndScreenId=KKW02509` |
| 23 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_RMTSPRT_PLUS)` [RMTSPRT_PLUS="B021"] |
| 24 | SET | `nextScreenId=KKW02517` |
| 25 | SET | `nextEndScreenId=KKW02518` |
| 26 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_IPV6_AD)` [IPV6_AD="B070"] |
| 27 | SET | `nextScreenId=KKW02408` |
| 28 | SET | `nextEndScreenId=KKW02409` |
| 29 | ELSE-IF | `op_svc_cd IN (0150/0160/0170)` [B023/B024/D07] (Dedicated Phone/Destination Phone/Selection) |
| 30 | SET | `nextScreenId=KKW02520` |
| 31 | SET | `nextEndScreenId=KKW02521` |
| 32 | ELSE-IF | `op_svc_cd IN (0180/0190/0200)` [B025/D08/B026] (Caller ID Display/Non-Notification/Confusion Call Rejection) |
| 33 | SET | `nextScreenId=KKW02520` |
| 34 | SET | `nextEndScreenId=KKW02521` |
| 35 | ELSE-IF | `op_svc_cd IN (0210/0220/0280)` [B027/B028/0280] (Specified Number/Call Detail/Call Rate Notification) |
| 36 | SET | `nextScreenId=KKW02520` |
| 37 | SET | `nextEndScreenId=KKW02521` |
| 38 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0230)` [ANSN="B135"] (Anshin Call Confirm Service) |
| 39 | SET | `nextScreenId=KKW02520` |
| 40 | SET | `nextEndScreenId=KKW02521` |
| 41 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_NUMDISP)` [NUMDISP="B022"] |
| 42 | SET | `nextScreenId=KKW02520` |
| 43 | SET | `nextEndScreenId=KKW02521` |
| 44 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_KKSTEL_STOP)` [KKSTEL_STOP="B071"] (International Phone Stop) |
| 45 | SET | `nextScreenId=KKW02520` |
| 46 | SET | `nextEndScreenId=KKW02521` |
| 47 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0270)` [B029] |
| 48 | SET | `nextScreenId=KKW03205` |
| 49 | SET | `nextEndScreenId=KKW03206` |
| 50 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_CABLE_GUIDE)` [CABLE_GUIDE="B068"] |
| 51 | SET | `nextScreenId=KKW02523` |
| 52 | SET | `nextEndScreenId=KKW02524` |
| 53 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_NHK_GRP_IKT)` [NHK_GRP_IKT="B069"] |
| 54 | SET | `nextScreenId=KKW02538` |
| 55 | SET | `nextEndScreenId=KKW02539` |
| 56 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_FMTCEL)` [FMTCEL="B075"] |
| 57 | SET | `nextScreenId=KKW02410` |
| 58 | SET | `nextEndScreenId=KKW02411` |
| 59 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_SMT_LINK_PREMIUM)` [SMT_LINK_PREMIUM="B077"] |
| 60 | SET | `nextScreenId=KKW02412` |
| 61 | SET | `nextEndScreenId=KKW02413` |
| 62 | ELSE-IF | `op_svc_cd IN (MCAFEE/INETSGWL/NTFMLPRM)` [B130/B131/B132] (Security Services) |
| 63 | SET | `nextScreenId=KKW00846` |
| 64 | SET | `nextEndScreenId=KKW00848` |
| 65 | ELSE-IF | `op_svc_cd IN (PC_PLAN/TV_PLAN)` [B133/B134] |
| 66 | SET | `nextScreenId=KKW00853` |
| 67 | SET | `nextEndScreenId=KKW00854` |
| 68 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_EOHTL_TYPE_N)` [EOHTL_TYPE_N="B138"] (eo Light Phone Type N) |
| 69 | SET | `nextScreenId=KKW00859` |
| 70 | ELSE | (no else-branch sets values for EOHTL_TYPE_N) |
| 71 | IF | `OPSVCCDS_SENIKKW2525 != null` |
| 72 | FOR | `i = 0 to OPSVCCDS_SENIKKW2525.length` |
| 73 | IF | `OPSVCCDS_SENIKKW2525[i].equals(op_svc_cd)` |
| 74 | SET | `nextScreenId=KKW02526` [Override: Restore/Cancel confirmation] |
| 75 | SET | `nextScreenName=KKW02526 name` |
| 76 | SET | `nextEndScreenId=KKW02527` [Override: Restore/Cancel complete] |
| 77 | EXEC | `break` |

### Block 2.2 -- IF/ELSE-IF (Change/Cancel op_svc_cd routing - default branch) (L4130)

> When actionBtn is not Rireki_Shokai, Add, Kaihk, Rsv_Cl, Chrg_Sta_Chg, or Op_Pack, the default branch handles Chge/Dsl/Shokai operations. Each screen mapping follows a similar pattern to Block 2.1 but with different screen IDs (e.g., KKW02501 instead of KKW02502, indicating "change view" vs "change confirm").

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_EMAIL)` [EMAIL="B001"] |
| 2 | SET | `nextScreenId=KKW02501` [E-mail change view], `nextEndScreenId=KKW02503` |
| 3 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0020)` [MY_HOME_PAGE="B002"] |
| 4 | SET | `nextScreenId=KKW02504`, `nextEndScreenId=KKW02506` |
| 5 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_MLLIST)` [MLLIST="B003"] |
| 6 | SET | `nextScreenId=KKW02401`, `nextEndScreenId=KKW02403` |
| 7 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0040)` [GWIP="B004"] |
| 8 | SET | `nextScreenId=KKW02404`, `nextEndScreenId=KKW02406` |
| 9 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_SOHOPACK10)` [SOHOPACK10="B005"] |
| 10 | SET | `nextScreenId=KKW02531` (no end screen) |
| 11 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DPAD)` [DPAD="B010"] |
| 12 | SET | `nextScreenId=KKW02536` (no end screen) |
| 13 | ELSE-IF | `op_svc_cd IN (EONETPHONE/TELVISION)` [B014/B011] |
| 14 | SET | `nextScreenId=KKW02529` (no end screen) |
| 15 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DAIKOSHINSEI)` [DAIKOSHINSEI="B012"] |
| 16 | SET | `nextScreenId=KKW02532` (no end screen) |
| 17 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DNS)` [DNS="B013"] |
| 18 | SET | `nextScreenId=KKW02530` (no end screen) |
| 19 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_MLTISE)` [MLTISE="B015"] |
| 20 | SET | `nextScreenId=KKW02510`, `nextEndScreenId=KKW02512` |
| 21 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_YGSITEBLCK)` [YGSITEBLCK="B016"] |
| 22 | SET | `nextScreenId=KKW02513`, `nextEndScreenId=KKW02515` |
| 23 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_GRPCOM)` [GRPCOM="B018"] |
| 24 | SET | `nextScreenId=KKW02535` (no end screen) |
| 25 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DUPCON)` [DUPCON="B020"] |
| 26 | SET | `nextScreenId=KKW02507`, `nextEndScreenId=KKW02509` |
| 27 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_RMTSPRT_PLUS)` [RMTSPRT_PLUS="B021"] |
| 28 | SET | `nextScreenId=KKW02516`, `nextEndScreenId=KKW02518` |
| 29 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_IPV6_AD)` [IPV6_AD="B070"] |
| 30 | SET | `nextScreenId=KKW02407`, `nextEndScreenId=KKW02409` |
| 31 | ELSE-IF | `op_svc_cd IN (0150/0160/0170)` [B023/B024/D07] |
| 32 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 33 | ELSE-IF | `op_svc_cd IN (0180/0190/0200)` [B025/D08/B026] |
| 34 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 35 | ELSE-IF | `op_svc_cd IN (0210/0220/0280)` [B027/B028/0280] |
| 36 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 37 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0230)` [ANSN="B135"] |
| 38 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 39 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_NUMDISP)` [NUMDISP="B022"] |
| 40 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 41 | ELSE-IF | `op_svc_cd IN (KKSTEL_STOP/TWRYO_STIAM)` [B071/B072] |
| 42 | SET | `nextScreenId=KKW02519`, `nextEndScreenId=KKW02521` |
| 43 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0270)` [B029] |
| 44 | SET | `nextScreenId=KKW03204`, `nextEndScreenId=KKW03206` |
| 45 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_CABLE_GUIDE)` [CABLE_GUIDE="B068"] |
| 46 | SET | `nextScreenId=KKW02522`, `nextEndScreenId=KKW02524` |
| 47 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_NHK_GRP_IKT)` [NHK_GRP_IKT="B069"] |

### Block 2.2.1 -- IF/ELSE-IF (NHK_GRP_IKT sub-branch in default) (L4237)

> When op_svc_cd is NHK_GRP_IKT and actionBtn is one of Shokai/Chge/Dsl, further route to specific screens.

| # | Type | Code |
|---|------|------|
| 1 | IF | `ACTION_BTN_SHOKAI.equals(actionBtn)` [SHOKAI="Shokai" Display] |
| 2 | SET | `nextScreenId=KKW02533` (NHK Group One-Stop Display) |
| 3 | ELSE-IF | `ACTION_BTN_CHGE.equals(actionBtn)` [CHGE="Chge" Change] |
| 4 | SET | `nextScreenId=KKW02537`, `nextEndScreenId=KKW02539` |
| 5 | ELSE-IF | `ACTION_BTN_DSL.equals(actionBtn)` [DSL="Dsl" Cancel] |
| 6 | SET | `nextScreenId=KKW02540` |

### Block 2.2.2 -- IF/ELSE-IF (remaining default op_svc_cd checks) (L4251)

Continuing from Block 2.2 after the NHK_GRP_IKT branch:

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_FMTCEL)` [FMTCEL="B075"] |
| 2 | SET | `nextScreenId=KKW02410`, `nextEndScreenId=KKW02411` |
| 3 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_SMT_LINK_PREMIUM)` [SMT_LINK_PREMIUM="B077"] |
| 4 | SET | `nextScreenId=KKW02416` (updated from original KKW02412), `nextEndScreenId=KKW02413` |
| 5 | ELSE-IF | `op_svc_cd IN (MCAFEE/INETSGWL/NTFMLPRM)` [B130/B131/B132] |
| 6 | SET | `nextScreenId=KKW00846`, `nextEndScreenId=KKW00848` |
| 7 | ELSE-IF | `op_svc_cd IN (PC_PLAN/TV_PLAN)` [B133/B134] |
| 8 | SET | `nextScreenId=KKW00852`, `nextEndScreenId=KKW00854` |
| 9 | ELSE-IF | `op_svc_cd.equals(JKKCommonConst.OP_SVC_CD_VALUE_EOHTL_TYPE_N)` [EOHTL_TYPE_N="B138"] |
| 10 | SET | `nextScreenId=KKW00858` |
| 11 | IF | `OPSVCCDS_SENIKKW2525 != null` |
| 12 | FOR | `i = 0 to OPSVCCDS_SENIKKW2525.length` |
| 13 | IF | `OPSVCCDS_SENIKKW2525[i].equals(op_svc_cd)` |
| 14 | SET | `nextScreenId=KKW02525` [Override: Channel update screen] |
| 15 | SET | `nextScreenName=KKW02525 name` |
| 16 | SET | `nextEndScreenId=KKW02527` [Override: Channel update complete] |
| 17 | EXEC | `break` |

### Block 3 -- RETURN (L4327)

| # | Type | Code |
|---|------|------|
| 1 | SET | `retNextScreenInfo[0] = nextScreenId` |
| 2 | SET | `retNextScreenInfo[1] = nextScreenName` |
| 3 | SET | `retNextScreenInfo[2] = nextEndScreenId` |
| 4 | RETURN | `return retNextScreenInfo` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `actionBtn` | Field | Action Button ID -- the identifier of the button the user clicked on the screen |
| `op_svc_cd` | Field | Option Service Code -- a coded identifier for the option service (e.g., E-mail, IPv6, TV) |
| `OPSVCCDS_SENIKKW2525` | Field | Option Channel List -- array of service codes belonging to the option channel category |
| `nextScreenId` | Field | Next Screen ID -- the ID of the screen to display next |
| `nextScreenName` | Field | Next Screen Name -- the display name of the next screen (Japanese name) |
| `nextEndScreenId` | Field | End Screen ID -- the completion screen ID for three-step wizard flows |
| `retNextScreenInfo` | Field | Return value -- String[3] array of nextScreenId, nextScreenName, nextEndScreenId |
| Rireki_Shokai | Constant | History Display -- view past option service contract history |
| Add | Constant | Registration -- add a new option service |
| Chge | Constant | Modification -- change an existing option service |
| Kaihk | Constant | Restoration -- restore a suspended/canceled option service |
| Dsl | Constant | Contract Cancellation -- cancel a service contract |
| Rsv_Cl | Constant | Reservation Cancellation -- cancel a pending reservation |
| Chrg_Sta_Chg | Constant | Charge Start Date Change -- modify the billing start date |
| Op_Pack | Constant | Option Pack -- select an option pack bundle |
| B001 | Constant | E-Mail -- option service code for E-mail |
| B002 | Constant | My Home Page -- option service code for My Home Page |
| B003 | Constant | Mailing List -- option service code for Mailing List |
| B004 | Constant | Fixed Global IP -- option service code for Fixed Global IP Access |
| B005 | Constant | SOHO Pack 10 -- option service code for SOHO Pack 10 |
| B010 | Constant | DPad -- option service code for Digital Pad |
| B011 | Constant | Telvision -- option service code for eo-net Fon Telvision |
| B012 | Constant | Daikoshinsei -- option service code for Proxy Application |
| B013 | Constant | DNS -- option service code for DNS and other settings |
| B014 | Constant | eo-net Phone -- option service code for eo-net Fon phone service |
| B015 | Constant | Multi Selection -- option service code for Multi Selection |
| B016 | Constant | Yo Site Block -- option service code for Malicious Site Block |
| B018 | Constant | Group Community -- option service code for Group Community |
| B020 | Constant | DupCon -- option service code for Dual Connection Option |
| B021 | Constant | Remote Support Plus -- option service code for Remote Support Plus |
| B022 | Constant | NumDisp -- option service code for Phone Number Notification |
| B023 | Constant | Dedicated Phone -- option service code for Dedicated Phone (B023) |
| B024 | Constant | Destination Phone -- option service code for Destination Phone (B024) |
| B025 | Constant | Caller ID Display -- option service code for Caller ID Display (B025) |
| B026 | Constant | Confusion Call Rejection -- option service code for Confusion Call Rejection (B026) |
| B027 | Constant | Specified Number -- option service code for Specified Number Selection (B027) |
| B028 | Constant | Call Detail -- option service code for Call Detail with Notification (B028) |
| B029 | Constant | 050 Number -- option service code for 050 Number Issuance |
| B067 | Constant | Star Channel Hi Vision -- option service code for Star Channel High Vision |
| B068 | Constant | Cable Guide -- option service code for Cable TV Guide |
| B069 | Constant | NHK Group One-Stop -- option service code for NHK Group One-Stop Payment |
| B070 | Constant | IPv6 Access -- option service code for IPv6 Access |
| B071 | Constant | Int'l Phone Stop -- option service code for International Phone Stop |
| B072 | Constant | Call Charge Limit Notif -- option service code for Call Charge Limit Notification |
| B075 | Constant | Fast Cell -- option service code for FmtCel (Full Cell) option |
| B077 | Constant | Smart Link Premium -- option service code for Smart Link Premium |
| B130 | Constant | McAfee Multi Access -- option service code for McAfee Multi Access |
| B131 | Constant | Internet Security Gateway -- option service code for Internet Security Gateway |
| B132 | Constant | Notification Mail Premium -- option service code for Notification Mail Premium |
| B133 | Constant | PC Plan -- option service code for PC Plan |
| B134 | Constant | TV Plan -- option service code for TV Plan |
| B135 | Constant | Anshin Call Confirm -- option service code for Anshin Call Confirm Service |
| B138 | Constant | eo Light Phone Type N -- option service code for eo Light Phone Type N |
| KKW02301 | Screen | Option Service Contract List Display -- main screen showing all option services |
| KKW02304 | Screen | Option Service Contract History List Display -- screen showing contract history |
| KKW02401 | Screen | Mailing List Info Change/Display -- change screen for mailing list |
| KKW02501 | Screen | E-Mail Info Change/Display -- change screen for E-mail |
| KKW02502 | Screen | E-Mail Info Change Confirm -- confirm screen for E-mail change |
| KKW02503 | Screen | E-Mail Info Change Complete -- completion screen for E-mail change |
| KKW02519 | Screen | Phone Option Service Contract Change -- unified change screen for phone options |
| KKW02520 | Screen | Phone Option Service Contract Change Confirm -- confirm screen for phone options |
| KKW02521 | Screen | Phone Option Service Contract Change Complete -- completion screen for phone options |
| KKW02525 | Screen | eo Light TV Option Channel Update -- channel update screen |
| KKW02526 | Screen | eo Light TV Option Channel Update Confirm -- channel update confirm screen |
| KKW02527 | Screen | eo Light TV Option Channel Update Complete -- channel update complete screen |
| JCCWebCommon | Class | Common Web utility class for screen ID configuration |
| JKKScreenConst | Class | Screen ID and name constants |
| JKKCommonConst | Class | Common business constants for service codes, flags, and parameters |
| JKKStrConst | Class | String constants for option service codes (security services) |
| KKW02301SFConst | Class | Constants specific to the KKW02301 screen |
| eo.web.webview | Package | Web view layer for KDDI Futurity option service web application |
