# Business Logic — KKA14901SFLogic.setBtnVisibleAtNet() [515 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA14901SF.KKA14901SFLogic` |
| Layer | Controller / Web Logic (Package: `eo.web.webview.KKA14901SF`) |
| Module | `KKA14901SF` (Package: `eo.web.webview.KKA14901SF`) |

## 1. Role

### KKA14901SFLogic.setBtnVisibleAtNet()

This method controls the **UI button visibility state** for the eo (East Osaka) television services screen by computing which action buttons should be enabled, disabled, or hidden based on the operation type and the subscription service details. It acts as a **dispatch and configuration** method that branches across four **ido_div** (displacement category) values — New Contract, Add Service, Operation Settings, and Reservation Cancel — and further subdivides by **op_svc_cd** (operation service code) to reflect the business rules for approximately 18 distinct telecom/OTT service offerings including IPv6 Access, Fiber-to-the-Home (FMCel), Smart Link Premium, Fixed Global IP, Mail Restrict, Remote Support Plus, SOHO Pack, McAfee Multi Access, Internet Security Gateway, Netflix Premium, PC/Tv Plan, and eo Hikodenwa (type N). The method uses a **routing/dispatch design pattern**, where the top-level switch on `ido_div` selects the operational context, an inner branch on `op_svc_kei_list_ari` determines whether any subscription line items exist, and a deep else-if chain selects the button layout specific to the service type. When no matching service code is found, a **default configuration** is applied. After computing all eight button visibility flags, the method delegates final delivery to the framework via `sendMessageString` calls on the `OneStopDataBeanAccess` parameter bean. This is a **shared utility** method called by `setKbnButtonVisible()` within the same class, serving as the central visibility policy engine for the KKA14901SF screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setBtnVisibleAtNet(paramBean, ido_div, op_svc_cd, fmtcel_jgs_cd, op_svc_kei_list_ari)"])

    START --> INIT["Initialize all btn_v_kbn = 1"]

    INIT --> BR1{ido_div == 00001 or 00002<br/>New Contract + Add Service}

    BR1 --> BK1["bk_btn_v_kbn = 0"]
    BK1 --> BR1_CHECK{op_svc_kei_list_ari?}

    BR1_CHECK --> NO1["Yes: History view=0, Add=1, Recovery=0"]
    NO1 --> SVC1{IPv6<br/>B070}
    SVC1 --> R1_1["shokai=1, chg=0, dsl=1, rsv_cl=0"]
    SVC1 --> SVC2{SMT_LINK_PREMIUM<br/>B077}
    SVC2 --> R1_2["shokai=0, chg=0, dsl=1, rsv_cl=1"]
    SVC2 --> SVC3{FTTH<br/>B075}
    SVC3 --> DOCOMO{docomo<br/>0206}
    DOCOMO --> R1_3_1["dsl=0"]
    DOCOMO --> R1_3_2["dsl=1, rsv_cl=0"]
    R1_3_1 --> SVC4{0040<br/>B004 Fixed IP}
    R1_3_2 --> SVC4
    SVC4 --> R1_4["shokai=1, chg=0, dsl=1, rsv_cl=0"]
    SVC4 --> SVC5{0040<br/>B004 Site Block}
    SVC5 --> R1_5["shokai=1, chg=0, dsl=0, rsv_cl=0"]
    SVC5 --> SVC6{MLIST<br/>B003 Mail Restrict}
    SVC6 --> R1_6["chg=0, kaihk=1"]
    SVC6 --> SVC7{RMTSPRT_PLUS<br/>B021 Remote Support}
    SVC7 --> R1_7["chg=0, kaihk=1"]
    SVC7 --> SVC8{SOHO/DPAD/DNS/GRPCOM}
    SVC8 --> R1_8["chg=0, dsl=0, kaihk=0, rsv_cl=0"]
    SVC8 --> SVC9{Email/HomePage<br/>B001/B002}
    SVC9 --> R1_9["kaihk=1"]
    SVC9 --> SVC10{McAfee/NetSGW/NTFMLPRM}
    SVC10 --> R1_10["shokai=1, chg=0, dsl=1, rsv_cl=1"]
    SVC10 --> SVC11{PC_PLAN<br/>B133}
    SVC11 --> R1_11["shokai=1, chg=1, dsl=1, rsv_cl=1"]
    SVC11 --> SVC12{TV_PLAN<br/>B134}
    SVC12 --> R1_12["shokai=1, chg=0, dsl=1, rsv_cl=1"]
    SVC12 --> SVC13{Netflix<br/>B136}
    SVC13 --> R1_13["all=0"]
    SVC13 --> SVC14{EOHTL_TYPE_N<br/>B138}
    SVC14 --> R1_14["shokai=1, chg=1, dsl=1, rsv_cl=1"]
    SVC14 --> DEF1["Default: shokai=1, chg=1, dsl=1, rsv_cl=0"]

    R1_1 --> MSG1
    R1_2 --> MSG1
    R1_3_1 --> MSG1
    R1_3_2 --> MSG1
    R1_4 --> MSG1
    R1_5 --> MSG1
    R1_6 --> MSG1
    R1_7 --> MSG1
    R1_8 --> MSG1
    R1_9 --> MSG1
    R1_10 --> MSG1
    R1_11 --> MSG1
    R1_12 --> MSG1
    R1_13 --> MSG1
    R1_14 --> MSG1
    DEF1 --> MSG1

    MSG1 --> BR2{ido_div == 00031<br/>Operation Settings}

    BR2 --> BK2["bk_btn_v_kbn = 1"]
    BK2 --> BR2_CHECK{op_svc_kei_list_ari?}

    BR2_CHECK --> NO2["Yes: History view=0, Add=1, all others disabled"]
    NO2 --> MSG2

    BR2_CHECK --> YES2["Yes: Branch by op_svc_cd"]
    YES2 --> R2_1["IPv6: shokai=1, chg=0, dsl=1, kaihk=1, rsv_cl=1"]
    R2_1 --> R2_2["SMT: shokai=0, chg=0, dsl=1, kaihk=0, rsv_cl=1"]
    R2_2 --> R2_3_1["FTTH+docomo: dsl=0, kaihk=0"]
    R2_3_2["FTTH+else: dsl=1, kaihk=1"]
    R2_3_2 --> R2_4["0040: shokai=1, chg=0, dsl=1, kaihk=1, rsv_cl=1"]
    R2_4 --> R2_5["0120: shokai=1, chg=0, dsl=0, kaihk=0, rsv_cl=0"]
    R2_5 --> R2_6["MLIST/RMTSPRT: chg=0"]
    R2_6 --> R2_7["SOHO/DPAD/DNS: chg=0, dsl=0, kaihk=0, rsv_cl=0"]
    R2_7 --> R2_8["McAfee/NetSGW: shokai=1, chg=0, dsl=1, rsv_cl=1"]
    R2_8 --> R2_9["PC_PLAN: all=1"]
    R2_9 --> R2_10["TV_PLAN: shokai=1, chg=0, dsl=1, kaihk=1, rsv_cl=1"]
    R2_10 --> R2_11["Netflix: all=0"]
    R2_11 --> R2_12["EOHTL_TYPE_N: shokai=1, chg=1, dsl=1, kaihk=0, rsv_cl=1"]
    R2_12 --> DEF2["Default: shokai=1, chg=1, dsl=1, kaihk=1, rsv_cl=1"]

    R2_1 --> MSG2
    R2_2 --> MSG2
    R2_3_1 --> MSG2
    R2_3_2 --> MSG2
    R2_4 --> MSG2
    R2_5 --> MSG2
    R2_6 --> MSG2
    R2_7 --> MSG2
    R2_8 --> MSG2
    R2_9 --> MSG2
    R2_10 --> MSG2
    R2_11 --> MSG2
    R2_12 --> MSG2
    DEF2 --> MSG2

    MSG2 --> BR3{ido_div == 00055<br/>Reservation Cancel}

    BR3 --> BK3["bk_btn_v_kbn = 1"]
    BR3 --> BR3_CHECK{op_svc_kei_list_ari?}

    BR3_CHECK --> NO3["No: All buttons disabled"]
    NO3 --> MSG3

    BR3_CHECK --> YES3["Yes: All disabled except rireki_shokai"]
    YES3 --> R3_1["FTTH/Site/Netflix: rsv_cl=0"]
    R3_1 --> R3_2["Default: rsv_cl=1"]

    R3_2 --> MSG3
    MSG3 --> BR4{Default: other ido_div}

    BR4 --> BK4["bk_btn_v_kbn = 3 (hide)"]
    BR4 --> BR4_CHECK{op_svc_kei_list_ari?}

    BR4_CHECK --> NO4["No: All buttons disabled"]
    NO4 --> MSG4

    BR4_CHECK --> YES4["Yes: Show rireki_shokai + shokai, others disabled"]
    YES4 --> MSG4

    MSG4 --> SEND8["Send 8 button visibility values to paramBean via sendMessageString"]
    SEND8 --> END_NODE(["Return"])
```

**Business Logic Summary by `ido_div`:**

| idov_div | Constant Value | Business Meaning | `bk_btn_v_kbn` |
|----------|---------------|-----------------|----------------|
| `00001` or `00002` | `IDO_DIV_VALUE_00001` / `IDO_DIV_VALUE_00002` | New Contract / Add Service | `"0"` (hidden) |
| `00031` | `IDO_DIV_VALUE_00031` | Operation Settings | `"1"` (visible) |
| `00055` | `IDO_DIV_VALUE_00055` | Reservation Cancel | `"1"` (visible) |
| Default | — | Other/No specific operation | `"3"` (hidden — ANK-2121-00-00 change) |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `paramBean` | `OneStopDataBeanAccess[]` | Array of OneStop data access beans that carry screen state between layers. The method writes 8 button visibility flags to `paramBean[0]` so the UI layer can render the correct buttons. Acts as both input carrier (for initial state) and output conduit (for computed visibility values). |
| 2 | `ido_div` | `String` | Displacement category (operation type) code that determines the business context. Takes values like `"00001"` (New Contract), `"00002"` (Add Service), `"00031"` (Operation Settings), `"00055"` (Reservation Cancel). Drives the top-level dispatch branching. |
| 3 | `op_svc_cd` | `String` | Operation service code identifying the specific telecom/OTT service type. Drives the inner branching within each `ido_div` context. Values include `"B070"` (IPv6 Access), `"B075"` (FMCel/Fiber), `"B077"` (Smart Link Premium), `"B003"` (Mail Restrict), `"B004"` (Fixed Global IP), `"B133"` (PC Plan), `"B136"` (Netflix Premium), `"B138"` (eo Hikodenwa Type N), and many more. |
| 4 | `fmtcel_jgs_cd` | `String` | FMCel (Fiber-to-the-Home) business operator code. Used only when `op_svc_cd` indicates FMCel service. Value `"0206"` identifies NTT docomo as the operator, which affects whether the cancellation (dsl_btn_v_kbn) button is allowed. Added per ANK-1586-00-00 (docomo feature support). |
| 5 | `op_svc_kei_list_ari` | `boolean` | Subscription detail line-item existence flag. `true` means the customer has active subscription line items and the method should enable service-specific buttons (view, modify, cancel, restore). `false` means no subscription lines exist and all operation buttons except "Add" should be disabled. |

**Instance fields / external state read:** None. This method is entirely stateless — it computes output values solely from its parameters and constant lookups.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `OneStopDataBeanAccess.sendMessageString` | - | - | Updates button visibility state in the OneStop data access bean. Called 8 times to set each button's visibility flag (BK, RSV_CL, KAIHK, DSL, CHG, ADD, SHOKAI, RIREKI_SHOKAI) using `X31CWebConst.DATABEAN_SET_VALUE` as the operation mode. |

**Analysis:** This method performs no database reads, entity operations, or SC/CBS service calls. It is a pure **configuration/computation method** that sets visibility flags. The only side-effect is through `sendMessageString`, which writes computed values to the OneStop data bean for UI consumption.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Logic: `KKA14901SFLogic.setKbnButtonVisible()` | `setKbnButtonVisible()` → `setBtnVisibleAtNet(paramBean, ido_div, op_svc_cd, fmtcel_jgs_cd, op_svc_kei_list_ari)` | `sendMessageString` [U] button visibility flags (8 fields) |

**Call Chain Detail:**
- `setKbnButtonVisible()` is a button configuration method within the same `KKA14901SFLogic` class.
- It delegates visibility computation to `setBtnVisibleAtNet()` with the current operation context (`ido_div`, `op_svc_cd`), the operator code (`fmtcel_jgs_cd`), and the subscription existence flag (`op_svc_kei_list_ari`).
- No screen entry point (KKSV*) was found within 8 hops; this method is called solely by the same-class button visibility setter.

**Terminal operations from this method:**
All 8 terminal operations are `sendMessageString` calls that write button visibility flags to `paramBean[0]`:
1. `BK_BTN_V_KBN` — Back button visibility
2. `RSV_CL_BTN_V_KBN` — Reservation cancel button visibility
3. `KAIHK_BTN_V_KBN` — Recovery/restoration button visibility
4. `DSL_BTN_V_KBN` — Cancellation button visibility
5. `CHG_BTN_V_KBN` — Modification button visibility
6. `ADD_BTN_V_KBN` — Add button visibility
7. `SHOKAI_BTN_V_KBN` — View/display button visibility
8. `RIREKI_SHOKAI_BTN_V_KBN` — History view button visibility

## 6. Per-Branch Detail Blocks

### Block 1 — IF `(ido_div == 00001 or 00002)` [New Contract / Add Service] (L4724)

Top-level branch for new contracts and service additions. Disables the back button since these are forward-moving operations.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bk_btn_v_kbn = "0"` // Back button hidden [-> BK_BTN_V_KBN] |

#### Block 1.1 — IF `(op_svc_kei_list_ari)` [Subscription line items exist] (L4736)

When the customer has active subscription detail lines, enable service-specific buttons.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "0"` // History view disabled [-> RIREKI_SHOKAI_BTN_V_KBN] |
| 2 | SET | `add_btn_v_kbn = "1"` // Add enabled [-> ADD_BTN_V_KBN] |
| 3 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled [-> KAIHK_BTN_V_KBN] |

##### Block 1.1.1 — IF `(op_svc_cd == B070)` [IPv6 Access] (L4740)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.2 — IF `(op_svc_cd == B077)` [Smart Link Premium] (L4747)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 1.1.3 — IF `(op_svc_cd == B075)` [FMCel / Fiber-to-the-Home] (L4754)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | IF | `(fmtcel_jgs_cd == 0206)` [docomo operator — ANK-1586-00-00] (L4766) |

###### Block 1.1.3.1 — IF `(fmtcel_jgs_cd == 0206)` [docomo] (L4767)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled for docomo |

###### Block 1.1.3.2 — ELSE (non-docomo) (L4772)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled for non-docomo |

| # | Type | Code |
|---|------|------|
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.4 — IF `(op_svc_cd == B004)` [Fixed Global IP Address] (L4779)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.5 — IF `(op_svc_cd == B004)` [Site Block — duplicate condition, likely buggy] (L4785)

Note: This condition reuses the same constant as Block 1.1.4 (`OP_SVC_CD_VALUE_0040`). The code sets `dsl_btn_v_kbn = "0"` here, suggesting this was intended to be a different service code (e.g., a site-blocking variant). This appears to be a **code quality issue** — the second condition is unreachable because the first `OP_SVC_CD_VALUE_0040` already catches it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.6 — IF `(op_svc_cd == B003)` [Mail Restrict (MLIST)] (L4792)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 2 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |

##### Block 1.1.7 — IF `(op_svc_cd == B021)` [Remote Support Plus] (L4799)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 2 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |

##### Block 1.1.8 — IF `(op_svc_cd == B005 OR B010 OR B012 OR B013 OR B018)` [SOHO Pack / DPAD / DAIKOSHINSEI / DNS / Group Community] (L4806)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 2 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 3 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.9 — IF `(op_svc_cd == B001 OR B002)` [Email / Home Page] (L4816)

| # | Type | Code |
|---|------|------|
| 1 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |

##### Block 1.1.10 — IF `(op_svc_cd == B130 OR B131 OR B132)` [McAfee Multi Access / Internet Security Gateway / Notification Mail Premium] (L4823)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 1.1.11 — IF `(op_svc_cd == B133)` [PC Plan] (L4835)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "1"` // Modification enabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 1.1.12 — IF `(op_svc_cd == B134)` [TV Plan] (L4843)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 1.1.13 — IF `(op_svc_cd == B136)` [Netflix Premium] (L4852)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 1.1.14 — IF `(op_svc_cd == B138)` [eo Hikodenwa Type N] (L4861)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "1"` // Modification enabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

#### Block 1.2 — ELSE (no subscription line items) (L4871)

When the customer has no active subscription lines, only the Add button is enabled; all others are disabled.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "0"` // History view disabled |
| 2 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 3 | SET | `add_btn_v_kbn = "1"` // Add enabled |
| 4 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 5 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 6 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 7 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

---

### Block 2 — IF `(ido_div == 00031)` [Operation Settings] (L4891)

Top-level branch for operation settings mode. Unlike Block 1, the back button remains visible (`bk_btn_v_kbn = "1"`).

| # | Type | Code |
|---|------|------|
| 1 | SET | `bk_btn_v_kbn = "1"` // Back button visible |

#### Block 2.1 — IF `(op_svc_kei_list_ari)` [Subscription line items exist] (L4904)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "1"` // History view enabled |
| 2 | SET | `add_btn_v_kbn = "1"` // Add enabled |

##### Block 2.1.1 — IF `(op_svc_cd == B070)` [IPv6 Access] (L4908)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.2 — IF `(op_svc_cd == B077)` [Smart Link Premium] (L4915)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.3 — IF `(op_svc_cd == B075)` [FMCel / Fiber-to-the-Home] (L4922)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |

###### Block 2.1.3.1 — IF `(fmtcel_jgs_cd == 0206)` [docomo] (L4932)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 2 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |

###### Block 2.1.3.2 — ELSE (non-docomo) (L4937)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 2 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |

| # | Type | Code |
|---|------|------|
| 5 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 2.1.4 — IF `(op_svc_cd == B004)` [Fixed Global IP Address] (L4949)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.5 — IF `(op_svc_cd == 0120)` [Site Block] (L4956)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 4 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 2.1.6 — IF `(op_svc_cd == B003)` [Mail Restrict] (L4965)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |

##### Block 2.1.7 — IF `(op_svc_cd == B021)` [Remote Support Plus] (L4970)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |

##### Block 2.1.8 — IF `(op_svc_cd == B005 OR B010 OR B012 OR B013 OR B018)` [SOHO Pack / DPAD / DAIKOSHINSEI / DNS / Group Community] (L4975)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 2 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 3 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 2.1.9 — IF `(op_svc_cd == B130 OR B131 OR B132)` [McAfee / Internet SGW / Notification Mail Premium] (L4987)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.10 — IF `(op_svc_cd == B133)` [PC Plan] (L4999)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "1"` // Modification enabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.11 — IF `(op_svc_cd == B134)` [TV Plan] (L5008)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "1"` // Recovery enabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

##### Block 2.1.12 — IF `(op_svc_cd == B136)` [Netflix Premium] (L5017)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 2 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 3 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 4 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 2.1.13 — IF `(op_svc_cd == B138)` [eo Hikodenwa Type N] (L5026)

| # | Type | Code |
|---|------|------|
| 1 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 2 | SET | `chg_btn_v_kbn = "1"` // Modification enabled |
| 3 | SET | `dsl_btn_v_kbn = "1"` // Cancellation enabled |
| 4 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 5 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

#### Block 2.2 — ELSE (no subscription line items) (L5038)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "0"` // History view disabled |
| 2 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 3 | SET | `add_btn_v_kbn = "1"` // Add enabled |
| 4 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 5 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 6 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 7 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

---

### Block 3 — IF `(ido_div == 00055)` [Reservation Cancel] (L5058)

Top-level branch for reservation cancel mode. Back button is visible.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bk_btn_v_kbn = "1"` // Back button visible |

#### Block 3.1 — IF `(op_svc_kei_list_ari)` [Subscription line items exist] (L5070)

All operation buttons are disabled except History View. The only variable flag is Reservation Cancel.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "1"` // History view enabled |
| 2 | SET | `shokai_btn_v_kbn = "0"` // View disabled |
| 3 | SET | `add_btn_v_kbn = "0"` // Add disabled |
| 4 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 5 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 6 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |

##### Block 3.1.1 — IF `(op_svc_cd == B075)` [FMCel] (L5080)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 3.1.2 — IF `(op_svc_cd == 0120)` [Site Block] (L5086)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 3.1.3 — IF `(op_svc_cd == B136)` [Netflix Premium] (L5092)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

##### Block 3.1.4 — ELSE [Default for other services] (L5098)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsv_cl_btn_v_kbn = "1"` // Reservation cancel enabled |

#### Block 3.2 — ELSE (no subscription line items) (L5105)

All buttons disabled uniformly.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "0"` |
| 2 | SET | `shokai_btn_v_kbn = "0"` |
| 3 | SET | `add_btn_v_kbn = "0"` |
| 4 | SET | `chg_btn_v_kbn = "0"` |
| 5 | SET | `dsl_btn_v_kbn = "0"` |
| 6 | SET | `kaihk_btn_v_kbn = "0"` |
| 7 | SET | `rsv_cl_btn_v_kbn = "0"` |

---

### Block 4 — ELSE (default / other ido_div) (L5123)

Default branch for any `ido_div` value not matching the three explicit cases. The back button is set to `"3"` (hidden) per ANK-2121-00-00 modification (previously `"0"`).

| # | Type | Code |
|---|------|------|
| 1 | SET | `bk_btn_v_kbn = "3"` // Back button hidden [ANK-2121-00-00: changed from "0" to "3"] |

#### Block 4.1 — IF `(op_svc_kei_list_ari)` [Subscription line items exist] (L5137)

All operation buttons disabled except History View and View display. Netflix-specific branch is commented out (deleted per OM-2021-0001538).

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "1"` // History view enabled |
| 2 | SET | `shokai_btn_v_kbn = "1"` // View enabled |
| 3 | SET | `add_btn_v_kbn = "0"` // Add disabled |
| 4 | SET | `chg_btn_v_kbn = "0"` // Modification disabled |
| 5 | SET | `dsl_btn_v_kbn = "0"` // Cancellation disabled |
| 6 | SET | `kaihk_btn_v_kbn = "0"` // Recovery disabled |
| 7 | SET | `rsv_cl_btn_v_kbn = "0"` // Reservation cancel disabled |

#### Block 4.2 — ELSE (no subscription line items) (L5153)

All buttons disabled uniformly.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rireki_shokai_btn_v_kbn = "0"` |
| 2 | SET | `shokai_btn_v_kbn = "0"` |
| 3 | SET | `add_btn_v_kbn = "0"` |
| 4 | SET | `chg_btn_v_kbn = "0"` |
| 5 | SET | `dsl_btn_v_kbn = "0"` |
| 6 | SET | `kaihk_btn_v_kbn = "0"` |
| 7 | SET | `rsv_cl_btn_v_kbn = "0"` |

---

### Block 5 — Terminal: Button Visibility Broadcast (L5165)

After all branching logic completes, the method writes all 8 computed visibility flags to the OneStop data bean.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.BK_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, bk_btn_v_kbn)` // Set back button visibility |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.RSV_CL_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, rsv_cl_btn_v_kbn)` // Set reservation cancel button visibility |
| 3 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.KAIHK_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, kaihk_btn_v_kbn)` // Set recovery button visibility |
| 4 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.DSL_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, dsl_btn_v_kbn)` // Set cancellation button visibility |
| 5 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.CHG_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, chg_btn_v_kbn)` // Set modification button visibility |
| 6 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.ADD_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, add_btn_v_kbn)` // Set add button visibility |
| 7 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.SHOKAI_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, shokai_btn_v_kbn)` // Set view button visibility |
| 8 | EXEC | `paramBean[0].sendMessageString(KKW02301SFConst.RIREKI_SHOKAI_BTN_V_KBN, X31CWebConst.DATABEAN_SET_VALUE, rireki_shokai_btn_v_kbn)` // Set history view button visibility |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `ido_div` | Field | Displacement category — classifies the type of contract operation: new contract (00001), add service (00002), operation settings (00031), reservation cancel (00055) |
| `op_svc_cd` | Field | Operation service code — identifies the specific telecom or OTT service type (IPv6, FTTH, Netflix, etc.) |
| `fmtcel_jgs_cd` | Field | FMCel (Fiber-to-the-Home) business operator code — identifies the fiber service provider (e.g., "0206" = NTT docomo) |
| `op_svc_kei_list_ari` | Field | Subscription detail line-item existence flag — true if the customer has active subscription contract lines |
| `btn_v_kbn` | Field | Button visibility category — `"1"` = visible/enabled, `"0"` = disabled/hidden, `"3"` = hidden (UI-level hide) |
| `bk_btn_v_kbn` | Field | Back button visibility flag |
| `shokai_btn_v_kbn` | Field | View/display button visibility flag (shokai = display) |
| `rireki_shokai_btn_v_kbn` | Field | History view button visibility flag (rireki = history/records) |
| `add_btn_v_kbn` | Field | Add button visibility flag |
| `chg_btn_v_kbn` | Field | Modification button visibility flag |
| `dsl_btn_v_kbn` | Field | Cancellation button visibility flag (dsl = dsl-ya — cancel in Japanese telecom) |
| `kaihk_btn_v_kbn` | Field | Recovery/restoration button visibility flag (kaihk = kaihi — restore) |
| `rsv_cl_btn_v_kbn` | Field | Reservation cancel button visibility flag (rsv_cl = reservation cancel) |
| `B070` | Constant | IPv6 Access service |
| `B075` | Constant | FMCel (Fiber-to-the-Home) service |
| `B077` | Constant | Smart Link Premium service |
| `B003` | Constant | Mail Restrict (MLIST) service |
| `B004` | Constant | Fixed Global IP Address service |
| `B005` | Constant | SOHO Pack 10 service |
| `B010` | Constant | DPAD (Digital Package) service |
| `B012` | Constant | Dai-koshinsei (Major Change / Major Contract Change) service |
| `B013` | Constant | DNS (Domain Name System) configuration service |
| `B018` | Constant | GRPCOM (Group Community) service |
| `B021` | Constant | Remote Support Plus service |
| `B130` | Constant | McAfee Multi Access security service |
| `B131` | Constant | Internet Security Gateway service |
| `B132` | Constant | Notification Mail Premium service |
| `B133` | Constant | PC Plan service |
| `B134` | Constant | TV Plan service |
| `B136` | Constant | Netflix Premium streaming service |
| `B138` | Constant | eo Hikodenwa (eo Telephone) Type N |
| `0020` | Constant | Home Page service (email-capable) |
| `0120` | Constant | Site Block service |
| `0206` | Constant | NTT docomo operator code for FMCel |
| `00001` | Constant | Displacement category: New Contract |
| `00002` | Constant | Displacement category: Add Service |
| `00031` | Constant | Displacement category: Operation Settings |
| `00055` | Constant | Displacement category: Reservation Cancel |
| OneStopDataBeanAccess | Class | OneStop framework data access bean — carries screen state and button visibility configuration between layers |
| sendMessageString | Method | Framework method to set a string value in the OneStop data bean for UI consumption |
| DATABEAN_SET_VALUE | Constant | Operation mode constant indicating a value-set operation on the data bean |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service |
| FMCel | Business term | Fiber-to-the-Home cellular/service brand — fiber broadband offering |
| SV0004 / KKSV | Screen | eo web screen module prefix (KKSV = Ko-op Smart View) |
| ANK-XXXX-XX-XX | Change ticket | Internal change management ticket identifier (e.g., ANK-1586 = docomo feature, ANK-2121 = back button hide change) |
| OM-XXXX-XX-XX | Change ticket | Operation modification change ticket identifier |
| IT1-XXXX-XXXXXX | Change ticket | Quality improvement change ticket identifier |