# Business Logic — KKW04202SFLogic.dataConvertDispToCode() [611 LOC]

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

## 1. Role

### KKW04202SFLogic.dataConvertDispToCode()

This method performs **display-to-code data conversion** for the EO (Hikari) broadband service contract change screen (`KKW04202SF`). It converts user-facing display values — such as dropdown selection names, checkbox states, and multi-part address fields — into their internal code representations before the screen data is submitted for processing.

The method operates on three **EO (Hikari / 光) service types**: EO Net (broadband internet), EO Tel (voIP telephone), and EO TV (cable television). It detects which services are active by checking the "before change" service number fields (`CTRL_EOH_NET_BF_SVKEI_NO`, `CTRL_EOH_TEL_BF_SVKEI_NO`, `CTRL_EOH_TV_BF_SVKEI_NO`) and then processes service-specific item sets only for the active services.

The method implements a **batch data transformation pattern**: it iterates through 80+ screen fields, reading display names from the UI bean, converting them to internal codes via the `getPdnSelectedCd()` / `getPdnSelectedNm()` helper methods, and writing the results back into the bean. For compound fields (addresses, dates), it composes structured values from component parts (e.g., splitting postal codes, concatenating year/month/day for installation dates).

This method serves as a **pre-submission data normalizer** within the `KKW04202SF` screen logic. It is called by `KKW04202SFLogic.actionFix()` — the screen's confirmation/finalization action handler — to ensure all form data is in the correct code format before the screen data is passed downstream for business processing. It performs **no database operations**; it is a pure presentation-layer data transformation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["dataConvertDispToCode bean"])
    START --> FLAGS["Detect EOH Service Flags"]
    FLAGS --> FNET["eohntFlg = check EOH_NET_BF_SVKEI_NO"]
    FLAGS --> FTEL["eohtlFlg = check EOH_TEL_BF_SVKEI_NO"]
    FLAGS --> FTEL2["else check USE_SVC_CHG_DIV == 'ADD'"]
    FLAGS --> FTV["eohtvFlg = check EOH_TV_BF_SVKEI_NO"]
    FNET --> ADDR["Build Common Addresses"]
    FTEL --> ADDR
    FTEL2 --> ADDR
    FTV --> ADDR
    ADDR --> COMMON["Convert Common Items to Code"]
    COMMON --> MOVE["Convert Priority Move Items"]
    MOVE --> DISC["Convert Disconnected Addr Items"]
    DISC --> PENALTY["Convert Penalty Items"]
    PENALTY --> NETCHK{"eohntFlg?"}
    NETCHK -->|true| NETBR["Process EOH Net Items"]
    NETCHK -->|false| TELCHK{"eohtlFlg?"}
    TELCHK -->|true| TELBR["Process EOH Tel Items"]
    TELCHK -->|false| TVCHK{"eohtvFlg?"}
    TVCHK -->|true| TVBR["Process EOH TV Items"]
    TVCHK -->|false| ENDN(["return true"])
    NETBR --> ENDN
    TELBR --> ENDN
    TVBR --> ENDN

    subgraph FLAGS ["Service Flag Detection"]
        FNET
        FTEL
        FTEL2
        FTV
    end

    subgraph ADDRPROC ["Address Processing"]
        ADDR
    end

    subgraph NETPROC ["EOH Net Processing"]
        NETBR
    end

    subgraph TELPROC ["EOH Tel Processing"]
        TELBR
    end

    subgraph TVPROC ["EOH TV Processing"]
        TVBR
    end
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `bean` | `X31SDataBeanAccess[]` | Array of screen item beans for the KKW04202SF screen. `bean[0]` contains all display values entered by the user on the EO broadband service contract change screen, including addresses, service selections, checkbox states, and child list data (phone numbers, STB/course items, operation inheritance rows). |

**Fields / External State Read:**
- No instance fields are accessed. The method is fully self-contained, using only local variables and the parameter `bean`.
- Relies on helper methods: `createAddress()`, `getCheckBoxBoolean()`, `getPdnSelectedCd()`, `getPdnSelectedNm()` — all defined within `KKW04202SFLogic`.

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` for address string processing |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` for address component extraction |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` for string manipulation |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Calls `sendMessageString` to read/write bean field values (display-to-code conversion) |
| C | `KKW04202SFLogic.createAddress` | KKW04202SFLogic | - | Calls `createAddress` to compose formatted address string from postal code, prefecture, city, district, etc. |
| R | `KKW04202SFLogic.getCheckBoxBoolean` | KKW04202SFLogic | - | Reads checkbox state from bean — determines true/false for conditional code values |
| R | `KKW04202SFLogic.getPdnSelectedCd` | KKW04202SFLogic | - | Retrieves selected dropdown code value from the UI bean |
| R | `KKW04202SFLogic.getPdnSelectedNm` | KKW04202SFLogic | - | Retrieves selected dropdown display name from the UI bean |
| R | `SCW00101SFLogic.getCount` | SCW00101SFLogic | - | Calls `getCount` for array element counting |
| R | `FUW09905SFLogic.getDataBean` | FUW09905SFLogic | - | Calls `getDataBean` in `FUW09905SFLogic` |
| R | `FUSV0277_FUSV0277OPDBMapper.getDataBean` | FUSV0277_FUSV0277OPDBMapper | - | Calls `getDataBean` in `FUSV0277_FUSV0277OPDBMapper` |
| R | `FUW00162SFLogic.getDataBean` | FUW00162SFLogic | - | Calls `getDataBean` in `FUW00162SFLogic` |
| R | `OneStopDataBeanAccessArray.getCount` | OneStopDataBeanAccessArray | - | Returns the count of elements in a child data bean array |
| R | `OneStopDataBeanAccessArray.getDataBean` | OneStopDataBeanAccessArray | - | Retrieves a specific element (by index) from a child data bean array |
| R | `OneStopDataBeanAccess.getDataBeanArray` | OneStopDataBeanAccess | - | Retrieves a child data bean array by key (e.g., phone number list, STB course list) |

**Classification Notes:**
- This method performs **zero direct database operations (C/R/U/D)**. All `sendMessageString` calls operate on in-memory bean objects, not on persistent storage.
- The `createAddress` method is a **pure composition** — it constructs a formatted address string from component parts (postal code, prefecture, city, street, building, etc.).
- `getCheckBoxBoolean` reads checkbox states as **boolean flags** that control conditional code value assignment.
- `getPdnSelectedCd` / `getPdnSelectedNm` extract dropdown selection **codes and display names** from the presentation layer.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW04202SFLogic.actionFix()` | `actionFix()` → `dataConvertDispToCode(bean[0])` | `sendMessageString [-] (in-memory bean)`, `getPdnSelectedNm [R]`, `getPdnSelectedCd [R]` |

**Terminal operations from this method:**
All terminal operations are **in-memory bean operations** — there are no database or external service calls:
- `sendMessageString` (set) — writes converted codes back to the bean
- `sendMessageString` (get) — reads display values from the bean
- `getPdnSelectedCd` [R] — reads selected dropdown codes
- `getPdnSelectedNm` [R] — reads selected dropdown display names
- `getCheckBoxBoolean` [R] — reads checkbox states
- `getDataBeanArray` [R] — reads child list data from the bean
- `getDataBean` [R] — reads individual elements from child lists
- `getCount` [R] — gets array sizes

## 6. Per-Branch Detail Blocks

**Block 1** — TRY-CATCH (L15884)

> Wraps the entire method in a try-catch. Returns `false` on any exception, `true` on success.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpString = ""` |
| 2 | SET | `eohntFlg = false` |
| 3 | SET | `eohtlFlg = false` |
| 4 | SET | `eohtvFlg = false` |

**Block 1.1** — IF [eohntFlg Detection] (L15891)

> Checks if EO Net service number is set to detect whether the customer has an active EO broadband connection.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tmpString = bean[0].sendMessageString(CTRL_EOH_NET_BF_SVKEI_NO, DATABEAN_GET_VALUE)` |
| 2 | IF | `!StringUtils.isEmpty(tmpString)` → sets `eohntFlg = true` |

**Block 1.2** — IF [eohtlFlg Detection] (L15896)

> Checks if EO Tel service number is set. If not set, uses the alternate path to check if the service type change division equals `USE_SVC_CHG_DIV_ADD` (adding a phone service).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tmpString = bean[0].sendMessageString(CTRL_EOH_TEL_BF_SVKEI_NO, DATABEAN_GET_VALUE)` |
| 2 | IF | `!StringUtils.isEmpty(tmpString)` → sets `eohtlFlg = true` |
| 3 | ELSE | `div = bean[0].sendMessageString(EOH_TEL_USE_SVC_CHG_DIV, DATABEAN_GET_VALUE)` |
| 4 | IF | `USE_SVC_CHG_DIV_ADD.equals(div)` → sets `eohtlFlg = true` |

**Block 1.3** — IF [eohtvFlg Detection] (L15906)

> Checks if EO TV service number is set.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tmpString = bean[0].sendMessageString(CTRL_EOH_TV_BF_SVKEI_NO, DATABEAN_GET_VALUE)` |
| 2 | IF | `!StringUtils.isEmpty(tmpString)` → sets `eohtvFlg = true` |

**Block 2** — PROCESS [Common Customer Address] (L15910)

> Extracts and builds the common customer address by splitting the postal code (first 3 chars = prefix, chars 3-7 = suffix) and composing the full address via `createAddress()`. Then stores the formatted address back to the bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `cmn_ksh_ad_pcd_1 = substring(postal_code, 0, 3)` |
| 2 | SET | `cmn_ksh_ad_pcd_2 = substring(postal_code, 3, 7)` |
| 3 | CALL | `cmn_ksh_ad = createAddress(pcd_1, pcd_2, prefecture, city, district, apartment, building_number, floor, room)` |
| 4 | EXEC | `bean[0].sendMessageString(CMN_KSH_AD, DATABEAN_SET_VALUE, cmn_ksh_ad)` |

**Block 3** — PROCESS [Common Usage Place Address] (L15927)

> Same as Block 2 but for the common usage place address. Uses a separate postal code field (`CMN_USE_PLC_AD_PCD`).

| # | Type | Code |
|---|------|------|
| 1 | SET | `cmn_use_plc_ad_pcd_1 = substring(usePostalCode, 0, 3)` |
| 2 | SET | `cmn_use_plc_ad_pcd_2 = substring(usePostalCode, 3, 7)` |
| 3 | CALL | `cmn_use_plc_ad = createAddress(pcd_1, pcd_2, prefecture, city, district, apartment, building_number, floor, room)` |
| 4 | EXEC | `bean[0].sendMessageString(CMN_USE_PLC_AD, DATABEAN_SET_VALUE, cmn_use_plc_ad)` |

**Block 4** — PROCESS [Common Address Change Switch] (L15940)

> Converts the common address change switch selection and rework request selections to their code values. Sets rework request to empty string (always "not selected" for sub-services).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(CMN_AD_SWCH_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], CMN_AD_SWCH_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(CMN_AD_SWCH_DIV_NM, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], CMN_AD_SWCH_PDN))` |
| 3 | EXEC | `bean[0].sendMessageString(CMN_KJ_RE_REQ_CHOICE_DIV, DATABEAN_SET_VALUE, new String())` |
| 4 | EXEC | `bean[0].sendMessageString(CMN_KJ_RE_REQ_CHOICE_DIV_NM, DATABEAN_SET_VALUE, new String())` |
| 5 | EXEC | `bean[0].sendMessageString(CMN_TV_KJ_RE_REQ_CHOICE_DIV, DATABEAN_SET_VALUE, new String())` |
| 6 | EXEC | `bean[0].sendMessageString(CMN_TV_KJ_RE_REQ_CHOICE_DIV_NM, DATABEAN_SET_VALUE, new String())` |

**Block 5** — PROCESS [Application Division] (L15953)

> Converts the application/application division dropdown selections.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(MSKM_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], MSKM_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(MSKM_DIV_NM, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], MSKM_PDN))` |

**Block 6** — PROCESS [Application Receipt Responsibility Division] (L15957)

> v3.00.00 addition — converts application receipt responsibility division dropdown.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(MSKM_UK_TNTSHA_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], MSKM_UK_THTSHA_DIV_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(MSKM_UK_TNTSHA_DIV_NM, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], MSKM_UK_THTSHA_DIV_PDN))` |

**Block 7** — IF/ELSE [Transfer-Destination Address Determination Flag] (L15965)

> If the "address determined" checkbox is checked → sets code `"1"` and name `"未確定"` (undetermined). Otherwise → code `"0"` and name `"確定"` (determined).

| # | Type | Code |
|---|------|------|
| 1 | IF | `getCheckBoxBoolean(bean[0], ITENS_AD_FIX_DIV)` → `ITENS_AD_FIX_DIV_CD = "1"`, `ITENS_AD_FIX_DIV_NM = "未確定"` (undetermined) |
| 2 | ELSE | `ITENS_AD_FIX_DIV_CD = "0"`, `ITENS_AD_FIX_DIV_NM = "確定"` (determined) |

**Block 8** — PROCESS [Equipment Delivery Address Transfer Origin Division] (L15973)

> Converts equipment delivery address transfer origin division selection.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(KIKI_SHS_AD_TENSO_MT_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], KIKI_SHS_AD_TENSO_MT_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(KIKI_SHS_AD_TENSO_MT_DIV_NM, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], KIKI_SHS_AD_TENSO_MT_PDN))` |

**Block 9** — IF/ELSE [Equipment Delivery Address Manual Input Flag] (L15979)

> Checkbox → sets code `"1"` / name `"手動入力である"` (manual input) or code `"0"` / name `"手動入力でない"` (not manual input).

| # | Type | Code |
|---|------|------|
| 1 | IF | `getCheckBoxBoolean(bean[0], KIKI_SHS_AD_MAN_INPUT_DIV)` → `KIKI_SHS_AD_MAN_INPUT_DIV_CD = "1"`, `KIKI_SHS_AD_MAN_INPUT_DIV_NM = "手動入力である"` |
| 2 | ELSE | `KIKI_SHS_AD_MAN_INPUT_DIV_CD = "0"`, `KIKI_SHS_AD_MAN_INPUT_DIV_NM = "手動入力でない"` |

**Block 10** — PROCESS [New Construction Residence Housing Form Division] (L15987)

> Converts new construction residence housing form division (e.g., detached house, apartment).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_FORM_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], NEWESTA_AD_FORM_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_FORM_DIV_CD, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], NEWESTA_AD_FORM_PDN))` |

**Block 11** — PROCESS [Installation Scheduled Date Handling] (L15993)

> Composes the installation scheduled year-month-day string. If length is 6 digits, sets day to `"01"` fixed. Concatenates year + month + day into the full date field.

| # | Type | Code |
|---|------|------|
| 1 | SET | `shunkoRsvYmMon = getPdnSelectedNm(bean[0], NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM_MON_PDN)` |
| 2 | SET | `shunkoRsvYmYear = bean[0].sendMessageString(NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM_YEAR, DATABEAN_GET_VALUE)` |
| 3 | SET | `shunkoRsvYm = shunkoRsvYmYear + shunkoRsvYmMon` |
| 4 | IF | `shunkoRsvYm.length() == 6` → `NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM_DAY = "01"` |
| 5 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM_MON, DATABEAN_SET_VALUE, getPdnSelectedNm(...))` |
| 6 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM, DATABEAN_SET_VALUE, year + month + day)` |

**Block 12** — PROCESS [New Construction Residence Development Campaign Application] (L16004)

> Converts new construction residence development campaign application selection.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_MNKHT_CMP_APLY_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(bean[0], NEWESTA_AD_MNKHT_CMP_APLY_PDN))` |
| 2 | EXEC | `bean[0].sendMessageString(NEWESTA_AD_MNKHT_CMP_APLY_DIV_NM, DATABEAN_SET_VALUE, getPdnSelectedNm(bean[0], NEWESTA_AD_MNKHT_CMP_APLY_PDN))` |

**Block 13** — IF/ELSE [Simultaneous Transfer Address Change Customer Selection] (L16009)

> Checkbox controls whether the simultaneous address change feature is active.

| # | Type | Code |
|---|------|------|
| 1 | IF | `getCheckBoxBoolean(bean[0], ITENS_SAME_AD_CHG_KSH_CHOICE_DIV)` → `ITENS_SAME_AD_CHG_KSH_CHOICE_DIV_CD = "1"` |
| 2 | ELSE | `ITENS_SAME_AD_CHG_KSH_CHOICE_DIV_CD = "0"` |

**Block 14** — FOR LOOP [Transfer-Destination Simultaneous Address Change Invoice Delivery List] (L16014)

> Iterates over each row in the invoice delivery list, converting the delivery address selection checkbox to code `"1"`/`"0"`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `itens_same_ad_chg_sks_shs_list = bean[0].getDataBeanArray(ITENS_SAME_AD_CHG_SKS_SHS_LIST)` |
| 2 | IF | `list != null && list.getCount() > 0` |
| 3 | FOR | `i = 0; i < list.getCount(); i++` |
| 4 | SET | `itens_same_ad_chg_sks_shs_dat = list.getDataBean(i)` |
| 5 | IF | `getCheckBoxBoolean(dat, SHS_AD_SKS_CHOICE_DIV_04)` → `SHS_AD_CHOICE_DIV_CD_04 = "1"` |
| 6 | ELSE | `SHS_AD_CHOICE_DIV_CD_04 = "0"` |

**Block 15** — FOR LOOP [Transfer-Destination Simultaneous Address Change Guide Invoice Delivery List] (L16030)

> Iterates over the guide invoice delivery list, converting the delivery address selection checkbox. Uses `SHS_AD_GUIDE_CHOICE_DIV_04` (updated from `SHS_AD_SKS_CHOICE_DIV` in IT2-2012-0001222).

| # | Type | Code |
|---|------|------|
| 1 | SET | `itens_same_ad_chg_guide_shs_list = bean[0].getDataBeanArray(ITENS_SAME_AD_CHG_GUIDE_SHS_LIST)` |
| 2 | IF | `list != null && list.getCount() > 0` |
| 3 | FOR | `i = 0; i < list.getCount(); i++` |
| 4 | SET | `itens_same_ad_chg_guide_shs_dat = list.getDataBean(i)` |
| 5 | IF | `getCheckBoxBoolean(dat, SHS_AD_GUIDE_CHOICE_DIV_04)` → `SHS_AD_CHOICE_DIV_CD_04 = "1"` |
| 6 | ELSE | `SHS_AD_CHOICE_DIV_CD_04 = "0"` |

**Block 16** — PROCESS [Disconnected Address Phone Contact Time Division] (L16043)

> Converts disconnection address phone contact time, work application contact, and related selections.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean[0].sendMessageString(TEKKYO_AD_KJ_TEL_RRK_KIBO_TIME_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(...))` |
| 2 | EXEC | `bean[0].sendMessageString(TEKKYO_AD_KJ_APO_RRKS_DIV, DATABEAN_SET_VALUE, getPdnSelectedCd(...))` |

**Block 17** — FOR LOOP [Disconnected Address Used Equipment List] (L16053)

> Iterates over used equipment rows, converting the disconnection division dropdown.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tekkyo_ad_use_kiki_list = bean[0].getDataBeanArray(TEKKYO_AD_USE_KIKI_LIST)` |
| 2 | IF | `list != null && list.getCount() > 0` |
| 3 | FOR | `i = 0; i < list.getCount(); i++` |
| 4 | SET | `tekkyo_ad_use_kiki_dat = list.getDataBean(i)` |
| 5 | EXEC | `dat.sendMessageString(USE_KIKI_TEKKYO_DIV_05, DATABEAN_SET_VALUE, getPdnSelectedCd(dat, USE_KIKI_TEKKYO_PDN_05))` |

**Block 18** — PROCESS [Disconnection Work Penalty Items] (L16061)

> Converts penalty occurrence division, penalty change reason code/name, STB non-ownership checkbox, new building checkbox, reinstatement case checkbox, and resubmission case checkbox.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `TEKKYO_KJ_PNLTY_HASSEI_DIV = getPdnSelectedCd(...)` |
| 2 | EXEC | `TEKKYO_KJ_PNLTY_CHG_RSN_CD = getPdnSelectedCd(...)` |
| 3 | IF | `getCheckBoxBoolean(bean[0], TEKKYO_KJ_STB_NON)` → `TEKKYO_KJ_STB_NON_CD = "1"`/`"0"` |
| 4 | IF | `getCheckBoxBoolean(bean[0], TEKKYO_KJ_NEWCONST_BKN_DIV)` → `TEKKYO_KJ_NEWCONST_BKN_DIV_CD = "1"`, `NM = "新築物件である"` |
| 5 | ELSE | `TEKKYO_KJ_NEWCONST_BKN_DIV_CD = "0"`, `NM = "新築物件でない"` |
| 6 | IF | `getCheckBoxBoolean(bean[0], TEKKYO_KJ_HUKKAT_ANKEN_DIV)` → `TEKKYO_KJ_HUKKAT_ANKEN_DIV_CD = "1"`, `NM = "復活案件である"` |
| 7 | ELSE | `TEKKYO_KJ_HUKKAT_ANKEN_DIV_CD = "0"`, `NM = "復活案件でない"` |
| 8 | IF | `getCheckBoxBoolean(bean[0], TEKKYO_KJ_RE_SEND_ANKEN)` → `TEKKYO_KJ_RE_SEND_ANKEN_CD = "1"`, `NM = "再送信案件である"` |
| 9 | ELSE | `TEKKYO_KJ_HUKKAT_ANKEN_DIV_CD = "0"`, `NM = "再送信案件でない"` |

**Block 19** — IF [eohntFlg Branch: EOH Net Service Items] (L16080)

> When EO Net is active, processes all EO Net-specific items: service change division, contract service, price plan, additional info, operation inheritance list, set router, penalty division, penalty change reason, administrative commission division, standard labor cost division.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `EOH_NET_USE_SVC_CHG_DIV = getPdnSelectedCd(...)` |
| 2 | EXEC | `EOH_NET_KEI_SVC = getPdnSelectedCd(...)` |
| 3 | EXEC | `EOH_NET_PPLAN = getPdnSelectedCd(...)` |
| 4 | EXEC | `EOH_NET_HUKA_INFO = getPdnSelectedCd(...)` |
| 5 | SET | `eoh_net_op_hktgi_list = bean[0].getDataBeanArray(E OH_NET_OP_HKTGI_LIST)` |
| 6 | FOR | Iterates over operation inheritance list |
| 7 | EXEC | `dat.sendMessageString(OP_HKTGI_TRN_DIV_06, SET, getPdnSelectedNm(dat, OP_HKTGI_EOHNT_TRN_PDN))` |
| 8 | EXEC | `EOH_NET_STC_ROUTER = getPdnSelectedCd(...)` |
| 9 | EXEC | `EOH_NET_PNLTY_HASSEI_DIV = getPdnSelectedCd(...)` |
| 10 | EXEC | `EOH_NET_PNLTY_CHGRE_CD = getPdnSelectedCd(...)` |
| 11 | EXEC | `EOH_NET_JIMU_COMMISION_DIV = getPdnSelectedCd(...)` |
| 12 | EXEC | `EOH_NET_HYOUJYUN_KOJIHI_DIV = getPdnSelectedCd(...)` |

**Block 20** — IF [eohtlFlg Branch: EOH Tel Service Items] (L16129)

> When EO Tel is active, processes all EO Tel-specific items: service change division, contract service, price plan, pre-phone notification division, service start desired switch division, service start desired time, phone number list (with disconnection division, billing start date, phone number presence, area code manual input, same-number forwarding manual input, port number), VA choice, operation inheritance list, penalty division, penalty change reason, administrative commission, standard labor cost.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `EOH_TEL_USE_SVC_CHG_DIV = getPdnSelectedCd(...)` |
| 2 | EXEC | `EOH_TEL_KEI_SVC = getPdnSelectedCd(...)` |
| 3 | EXEC | `EOH_TEL_PPLAN = getPdnSelectedCd(...)` |
| 4 | EXEC | `EOH_TEL_PRE_TCH_DIV = getPdnSelectedCd(...)` |
| 5 | EXEC | `EOH_TEL_SVC_USE_STA_KIBO_SWCH_DIV = getPdnSelectedCd(...)` |
| 6 | EXEC | `EOH_TEL_SVC_USE_STA_KIBO_AMPM_DIV = getPdnSelectedCd(...)` |
| 7 | EXEC | `EOH_TEL_SVC_USE_STA_KIBO_TIME_DIV = getPdnSelectedCd(...)` |
| 8 | SET | `eoh_tel_tln_list = bean[0].getDataBeanArray(E OH_TEL_TLN_LIST)` |
| 9 | FOR | Iterates over phone number list |
| 10 | IF | `getCheckBoxBoolean(dat, TLN_DSL_DIV_07)` → `TLN_DSL_DIV_CD_07 = "1"`, `NM = "解約"` (disconnection) |
| 11 | ELSE | `TLN_DSL_DIV_CD_07 = "0"`, `NM = ""` |
| 12 | SET | `TLN_KAIYAKU_KISAN_YMD = year + "/" + month + "/" + day` |
| 13 | EXEC | `TLN_BMP_UM_07 = getPdnSelectedCd(...)` |
| 14 | IF | `getCheckBoxBoolean(dat, TLN_BMP_AD_MAN_INPUT_DIV_07)` → `TLN_BMP_AD_MAN_INPUT_DIV_CD_07 = "1"` |
| 15 | IF | `getCheckBoxBoolean(dat, TLN_DOBANITEN_AD_MAN_INPUT_DIV_07)` → `TLN_DOBANITEN_AD_MAN_INPUT_DIV_CD_07 = "1"` |
| 16 | EXEC | `TLN_PORT_NO_07 = getPdnSelectedCd(...)` |
| 17 | EXEC | `EOH_TEL_VA_CHOICE = getPdnSelectedCd(bean[0], ..., VA_CHOICE_INDEX_08, VA_CHOICE_CD_LIST_08)` |
| 18 | SET | `eoh_tel_op_hktgi_list = bean[0].getDataBeanArray(E OH_TEL_OP_HKTGI_LIST)` |
| 19 | FOR | Outer loop over EOH Tel operation inheritance |
| 20 | SET | `tel_op_hktgi_list = dat.getDataBeanArray(TEL_OP_HKTGI_LIST_09)` |
| 21 | FOR | Inner loop over Tel operation inheritance |
| 22 | EXEC | `dat.sendMessageString(OP_HKTGI_TRN_DIV_06, SET, getPdnSelectedNm(dat, OP_HKTGI_EOHTL_TRN_PDN))` |
| 23 | EXEC | `EOH_TEL_PNLTY_HASSEI_DIV = getPdnSelectedCd(...)` |
| 24 | EXEC | `EOH_TEL_PNLTY_CHGRE_CD = getPdnSelectedCd(...)` |
| 25 | EXEC | `EOH_TEL_JIMU_COMMISION_DIV = getPdnSelectedCd(...)` |
| 26 | EXEC | `EOH_TEL_HYOUJYUN_KOJIHI_DIV = getPdnSelectedCd(...)` |

**Block 21** — IF [eohtvFlg Branch: EOH TV Service Items] (L16384)

> When EO TV is active, processes all EO TV-specific items: service change division, contract service, price plan, STB output method division, STB/TV course list (STB difference, TV plan, STB division, HDD capacity, HDD presence), target STB, operation inheritance list, penalty division, penalty change reason, additional fee division, standard labor cost.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `EOH_TV_USE_SVC_CHG_DIV = getPdnSelectedCd(...)` |
| 2 | EXEC | `EOH_TV_KEI_SVC = getPdnSelectedCd(...)` |
| 3 | EXEC | `EOH_TV_PPLAN = getPdnSelectedCd(...)` |
| 4 | EXEC | `EOH_TV_STB_SHKA_WAY_DIV = getPdnSelectedCd(...)` |
| 5 | SET | `eoh_tv_stb_tv_course_list = bean[0].getDataBeanArray(E OH_TV_STB_TV_COURSE_LIST)` |
| 6 | FOR | Iterates over STB/TV course list |
| 7 | EXEC | `STB_TV_STB_IDO_DIV_10 = getPdnSelectedCd(...)` |
| 8 | EXEC | `STB_TV_TV_PRAN_DIV_10 = getPdnSelectedCd(...)` |
| 9 | EXEC | `STB_TV_STB_DIV_10 = getPdnSelectedCd(...)` |
| 10 | EXEC | `STB_TV_HDD_CAPA_DIV_10 = getPdnSelectedCd(...)` |
| 11 | IF | `HDD_CAPA_DIV == HDD_CAPA_CD_NASI OR HDD_CAPA_CD_4KSTB_NASI_OLD OR HDD_CAPA_CD_NASI_VOD` → `STB_TV_HDD_UM_10 = "0"`, `NM = "無"` |
| 12 | ELSE IF | `HDD_CAPA_DIV is empty` → `STB_TV_HDD_UM_NM_10 = ""` |
| 13 | ELSE | `STB_TV_HDD_UM_10 = "1"`, `NM = "有"` |
| 14 | EXEC | `EOH_TV_TG_STB = getPdnSelectedCd(...)` |
| 15 | SET | `eoh_tv_op_hktgi_list = bean[0].getDataBeanArray(E OH_TV_OP_HKTGI_LIST)` |
| 16 | FOR | Outer loop over EOH TV operation inheritance |
| 17 | SET | `tv_op_hktgi_list = dat.getDataBeanArray(TV_OP_HKTGI_LIST_11)` |
| 18 | FOR | Inner loop over TV operation inheritance |
| 19 | EXEC | `dat.sendMessageString(OP_HKTGI_TRN_DIV_06, SET, getPdnSelectedNm(dat, OP_HKTGI_EOHTV_TRN_PDN))` |
| 20 | EXEC | `EOH_TV_PNLTY_HASSEI_DIV = getPdnSelectedCd(...)` |
| 21 | EXEC | `EOH_TV_PNLTY_CHGRE_CD = getPdnSelectedCd(...)` |
| 22 | EXEC | `EOH_TV_JIMU_COMMISION_DIV = getPdnSelectedCd(...)` |
| 23 | EXEC | `EOH_TV_HYOUJYUN_KOJIHI_DIV = getPdnSelectedCd(...)` |

**Block 22** — CATCH [Exception Handler] (L16487)

> Catches all exceptions and returns `false`.

| # | Type | Code |
|---|------|------|
| 1 | CATCH | `catch (Exception ex)` → `return false` |

**Block 23** — RETURN [Success] (L16491)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `eohntFlg` | Field | EO Net flag — boolean indicating whether the customer has an active EO (Hikari) broadband internet service |
| `eohtlFlg` | Field | EO Tel flag — boolean indicating whether the customer has an active EO telephone (voIP) service |
| `eohtvFlg` | Field | EO TV flag — boolean indicating whether the customer has an active EO television (cable) service |
| `CTRL_EOH_NET_BF_SVKEI_NO` | Constant | EO Net before-change service number field key — the service number before any changes, used to detect if the service exists |
| `CTRL_EOH_TEL_BF_SVKEI_NO` | Constant | EO Tel before-change service number field key — the telephone service number before changes |
| `CTRL_EOH_TV_BF_SVKEI_NO` | Constant | EO TV before-change service number field key — the television service number before changes |
| `EOH_TEL_USE_SVC_CHG_DIV` | Constant | EO Tel usage service change division — indicates the type of service change (e.g., ADD for adding a phone service) |
| `USE_SVC_CHG_DIV_ADD` | Constant | Service change division value "ADD" — used when a new telephone service is being added |
| `CMN_KSH_AD` | Constant | Common customer address — formatted full address string for the contract customer |
| `CMN_KSH_AD_PCD` | Constant | Common customer address postal code — component of the customer address |
| `CMN_USE_PLC_AD` | Constant | Common usage place address — formatted address where the service is used |
| `CMN_AD_SWCH_DIV` | Constant | Common address change switch division — indicates whether the customer is changing their address |
| `MSKM_DIV` | Constant | Application division — classifies the type of application (e.g., new, change) |
| `ITENS_AD_FIX_DIV` | Constant | Priority move address determination flag — checkbox indicating whether the transfer destination address has been determined |
| `ITENS_SAME_AD_CHG_KSH_CHOICE_DIV` | Constant | Simultaneous transfer address change customer selection division — checkbox for whether to change the address at the same time as transfer |
| `KIKI_SHS_AD_TENSO_MT_DIV` | Constant | Equipment delivery address transfer origin division — where equipment is shipped from |
| `KIKI_SHS_AD_MAN_INPUT_DIV` | Constant | Equipment delivery address manual input flag — whether the delivery address was manually entered |
| `NEWESTA_AD_FORM_DIV` | Constant | New construction residence housing form division — type of housing (detached house, apartment, etc.) |
| `NEWESTA_AD_SETPLACE_SHUNKO_RSV_YM` | Constant | New construction residence placement installation scheduled year-month — scheduled installation date |
| `NEWESTA_AD_MNKHT_CMP_APLY_DIV` | Constant | New construction residence development campaign application division — whether a development campaign applies |
| `TEKKYO_AD_KJ_TEL_RRK_KIBO_TIME_DIV` | Constant | Disconnected address work phone contact desired time division — preferred contact time for disconnection work |
| `TEKKYO_AD_KJ_APO_RRKS_DIV` | Constant | Disconnected address work application contact division — who to contact for work applications |
| `TEKKYO_AD_USE_KIKI_LIST` | Constant | Disconnected address used equipment list — list of equipment currently in use that needs to be disconnected |
| `USE_KIKI_TEKKYO_DIV_05` | Constant | Used equipment disconnection division — whether each piece of equipment should be disconnected |
| `TEKKYO_KJ_PNLTY_HASSEI_DIV` | Constant | Disconnection work penalty occurrence division — whether a penalty applies to the disconnection work |
| `TEKKYO_KJ_PNLTY_CHG_RSN_CD` | Constant | Disconnection work penalty change reason code — the reason for penalty change |
| `TEKKYO_KJ_STB_NON` | Constant | Disconnection work STB non-ownership flag — whether the customer does not own an STB (set-top box) |
| `TEKKYO_KJ_NEWCONST_BKN_DIV` | Constant | Disconnection work new building division — checkbox indicating whether this is a new building |
| `TEKKYO_KJ_HUKKAT_ANKEN_DIV` | Constant | Disconnection work reinstatement case division — checkbox indicating whether this is a reinstatement case |
| `TEKKYO_KJ_RE_SEND_ANKEN` | Constant | Disconnection work resubmission case division — checkbox indicating whether this is a resubmission case |
| `EOH_NET_USE_SVC_CHG_DIV` | Constant | EO Net usage service change division — type of EO Net service change |
| `EOH_NET_KEI_SVC` | Constant | EO Net contract service — the specific broadband service type contracted |
| `EOH_NET_PPLAN` | Constant | EO Net price plan — the pricing plan selected for the EO Net service |
| `EOH_NET_HUKA_INFO` | Constant | EO Net additional information — extra service options or add-ons |
| `EOH_NET_OP_HKTGI_LIST` | Constant | EO Net operation inheritance list — child list of operation inheritance rows for EO Net |
| `OP_HKTGI_TRN_DIV_06` | Constant | Operation inheritance processing division — the type of operation being inherited |
| `EOH_NET_STC_ROUTER` | Constant | EO Net set router — the router device set for the EO Net connection |
| `EOH_NET_PNLTY_HASSEI_DIV` | Constant | EO Net penalty occurrence division — whether a penalty applies to the EO Net change |
| `EOH_NET_PNLTY_CHGRE_CD` | Constant | EO Net penalty change reason code — reason for penalty modification |
| `EOH_NET_JIMU_COMMISION_DIV` | Constant | EO Net administrative commission division — whether administrative fees apply |
| `EOH_NET_HYOUJYUN_KOJIHI_DIV` | Constant | EO Net standard labor cost division — standard labor fee classification |
| `EOH_TEL_USE_SVC_CHG_DIV` | Constant | EO Tel usage service change division — type of EO Tel service change |
| `EOH_TEL_KEI_SVC` | Constant | EO Tel contract service — the specific telephone service type contracted |
| `EOH_TEL_PPLAN` | Constant | EO Tel price plan — pricing plan for the EO Tel service |
| `EOH_TEL_PRE_TCH_DIV` | Constant | EO Tel pre-phone notification division — whether prior phone notification is required |
| `EOH_TEL_SVC_USE_STA_KIBO_SWCH_DIV` | Constant | EO Tel service start desired switch division — switch for service start preference |
| `EOH_TEL_SVC_USE_STA_KIBO_AMPM_DIV` | Constant | EO Tel service start desired time AM/PM division — AM or PM preference for service start |
| `EOH_TEL_SVC_USE_STA_KIBO_TIME_DIV` | Constant | EO Tel service start desired time division — preferred time slot for service start |
| `EOH_TEL_TLN_LIST` | Constant | EO Tel phone number list — child list of phone numbers associated with the EO Tel service |
| `TLN_DSL_DIV_07` | Constant | Phone number disconnection division — whether the phone number should be disconnected |
| `TLN_KAIYAKU_KISAN_YMD` | Constant | Disconnection billing start date — composed year/month/day string for when billing starts after disconnection |
| `TLN_BMP_UM_07` | Constant | Phone number presence (with number) — whether the customer retains their phone number |
| `TLN_BMP_AD_MAN_INPUT_DIV_07` | Constant | Phone number area code manual input flag — whether the area code was manually entered |
| `TLN_DOBANITEN_AD_MAN_INPUT_DIV_07` | Constant | Phone number same-number-forwarding address manual input flag — whether the forwarding address was manually entered |
| `TLN_PORT_NO_07` | Constant | Phone number port number — the port number for the phone line |
| `EOH_TEL_VA_CHOICE` | Constant | EO Tel VA choice — voice access selection |
| `EOH_TEL_OP_HKTGI_LIST` | Constant | EO Tel operation inheritance list — child list of operation inheritance rows for EO Tel |
| `TEL_OP_HKTGI_LIST_09` | Constant | Tel operation inheritance list — nested child list within the EO Tel operation inheritance |
| `EOH_TV_USE_SVC_CHG_DIV` | Constant | EO TV usage service change division — type of EO TV service change |
| `EOH_TV_KEI_SVC` | Constant | EO TV contract service — the specific television service type contracted |
| `EOH_TV_PPLAN` | Constant | EO TV price plan — pricing plan for the EO TV service |
| `EOH_TV_STB_SHKA_WAY_DIV` | Constant | EO TV STB output method division — how the set-top box outputs video |
| `EOH_TV_STB_TV_COURSE_LIST` | Constant | EO TV STB/TV course list — child list of STB and TV course combinations |
| `STB_TV_STB_IDO_DIV_10` | Constant | STB/TV course STB difference division — how the STB differs from the previous setup |
| `STB_TV_TV_PRAN_DIV_10` | Constant | STB/TV course TV plan division — the TV channel plan selected |
| `STB_TV_STB_DIV_10` | Constant | STB/TV course STB division — the STB type/model |
| `STB_TV_HDD_CAPA_DIV_10` | Constant | STB/TV course HDD capacity division — hard disk drive capacity classification |
| `STB_TV_HDD_UM_10` | Constant | STB/TV course HDD presence — whether the STB has an HDD ("1"=有/present, "0"=無/absent) |
| `HDD_CAPA_CD_NASI` | Constant | HDD capacity code "not available" — STB without HDD support |
| `HDD_CAPA_CD_4KSTB_NASI_OLD` | Constant | HDD capacity code 4K STB not available (old) — legacy code for 4K STB without HDD |
| `HDD_CAPA_CD_NASI_VOD` | Constant | HDD capacity code "not available" for VOD — STB without HDD for VOD service |
| `EOH_TV_TG_STB` | Constant | EO TV target STB — the STB device targeted for the TV service |
| `EOH_TV_OP_HKTGI_LIST` | Constant | EO TV operation inheritance list — child list of operation inheritance rows for EO TV |
| `TV_OP_HKTGI_LIST_11` | Constant | TV operation inheritance list — nested child list within the EO TV operation inheritance |
| `EOH_TV_PNLTY_HASSEI_DIV` | Constant | EO TV penalty occurrence division — whether a penalty applies to the TV service change |
| `EOH_TV_PNLTY_CHGRE_CD` | Constant | EO TV penalty change reason code — reason for TV penalty modification |
| `EOH_TV_JIMU_COMMISION_DIV` | Constant | EO TV additional fee division — whether additional fees apply to the TV change |
| `EOH_TV_HYOUJYUN_KOJIHI_DIV` | Constant | EO TV standard labor cost division — standard labor fee classification for TV service |
| `SHS_AD_CHOICE_DIV_CD_04` | Constant | Delivery address selection division code (suffix 04) — code for invoice delivery address selection |
| `SHS_AD_SKS_CHOICE_DIV_04` | Constant | Delivery address selection checkbox (suffix 04) — checkbox for invoice delivery address selection |
| `SHS_AD_GUIDE_CHOICE_DIV_04` | Constant | Guide invoice delivery address selection checkbox (suffix 04) — used for guide invoice lists |
| `createAddress()` | Method | Helper method that composes a formatted address string from component parts (postal code prefix, postal code suffix, prefecture, city, district, apartment, building number, floor, room) |
| `getCheckBoxBoolean()` | Method | Helper that reads a checkbox field from the bean and returns a boolean value |
| `getPdnSelectedCd()` | Method | Helper that retrieves the selected code value from a dropdown/pulldown selection in the UI bean |
| `getPdnSelectedNm()` | Method | Helper that retrieves the selected display name from a dropdown/pulldown selection in the UI bean |
| `X31SDataBeanAccess` | Type | Screen data bean access class — provides methods for reading/writing individual field values and accessing child bean arrays |
| `X31SDataBeanAccessArray` | Type | Screen data bean array class — provides `getCount()` and `getDataBean(int)` for iterating over child lists |
| `DATABEAN_GET_VALUE` | Constant | Mode constant for reading values from a data bean |
| `DATABEAN_SET_VALUE` | Constant | Mode constant for writing values to a data bean |
| EO (Hikari) | Business term | "Hikari" (光, meaning "light") — NTT West's branded fiber-optic broadband service line, including EO Net (internet), EO Tel (telephone), and EO TV (television) |
| STB | Acronym | Set-Top Box — device used to receive and decode television signals for EO TV service |
| VA | Acronym | Voice Access — telephony feature for voice-based service interaction |
| HDD | Acronym | Hard Disk Drive — storage device within the STB for DVR/record functionality |
| PVC | Acronym | Permanent Virtual Circuit — logical connection path in the network (referenced in address components) |
| NTT West | Business term | Nippon Telegraph and Telephone West — the regional telecom operator for western Japan, provider of EO (Hikari) services |
| COB | Acronym | Close of Business — end of the business day (referenced in time division values) |
| `actionFix()` | Method | The caller method in `KKW04202SFLogic` that invokes `dataConvertDispToCode()` during the screen's confirmation/finalization flow |
