# Business Logic — KKW02701SF02DBean.loadModelData() [146 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16701SF.KKW02701SF02DBean` |
| Layer | Common Component (Web View DBean — shared UI data access bean) |
| Module | `KKA16701SF` (Package: `eo.web.webview.KKA16701SF`) |

## 1. Role

### KKW02701SF02DBean.loadModelData()

This method implements a **unified routing/dispatch entry point** for loading model data within the telecom service contract (サービス契約) screen layer. It receives a **Japanese item name** (key) and a **data access type** (subkey), then routes to the appropriate field getter to retrieve the requested value. The method handles 10 distinct business data items — including service contract item number, generation registration datetime, modification reservation number, application details number, status, course application date, course name, mansion ID, mansion name, new billing code, and old billing code — each supporting a `value`, `state`, or `enable` subkey to return the data value, display state, or editable flag respectively. It acts as a **delegation proxy** that abstracts individual field accessors behind a single uniform interface, enabling screen components and list-bound data types to access any field by string name without hardcoding accessor calls. The method follows a **switch-by-string** pattern using sequential `if-else if` branches, which is a common Java 1.4/5-era approach in this codebase before `switch` statements supported `String` (Java 7+).

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(key, subkey)"])

    START --> NULL_CHECK["Null check: key or subkey is null?"]

    NULL_CHECK --> |yes| RETURN_NULL_1["Return null"]

    NULL_CHECK --> |no| SEPARATOR["int separaterPoint = key.indexOf('/');"]

    SEPARATOR --> K1["if key equals 'サービス契約内容番号'"]

    K1 --> |yes| S1_KEY["svc_kei_ucwk_no branch"]
    S1_KEY --> S1_SUB{"subkey matches?"}
    S1_SUB --> |value| S1_V["getSvc_kei_ucwk_no_value()"]
    S1_SUB --> |state| S1_S["getSvc_kei_ucwk_no_state()"]
    S1_V --> RETURN_SVC
    S1_S --> RETURN_SVC
    RETURN_SVC["Return result"]

    K1 --> |no| K2["if key equals '世代登録年月日時分秒'"]
    K2 --> |yes| S2_KEY["gene_add_dtm branch"]
    S2_KEY --> S2_SUB{"subkey matches?"}
    S2_SUB --> |value| S2_V["getGene_add_dtm_value()"]
    S2_SUB --> |state| S2_S["getGene_add_dtm_state()"]
    S2_V --> RETURN_GENE
    S2_S --> RETURN_GENE
    RETURN_GENE["Return result"]

    K2 --> |no| K3["if key equals '異動予約番号'"]
    K3 --> |yes| S3_KEY["ido_rsv_no branch"]
    S3_KEY --> S3_SUB{"subkey matches?"}
    S3_SUB --> |value| S3_V["getIdo_rsv_no_value()"]
    S3_SUB --> |state| S3_S["getIdo_rsv_no_state()"]
    S3_V --> RETURN_IDO
    S3_S --> RETURN_IDO
    RETURN_IDO["Return result"]

    K3 --> |no| K4["if key equals '申請明細番号'"]
    K4 --> |yes| S4_KEY["mskm_dtl_no branch"]
    S4_KEY --> S4_SUB{"subkey matches?"}
    S4_SUB --> |value| S4_V["getMskm_dtl_no_value()"]
    S4_SUB --> |state| S4_S["getMskm_dtl_no_state()"]
    S4_V --> RETURN_MSKM
    S4_S --> RETURN_MSKM
    RETURN_MSKM["Return result"]

    K4 --> |no| K5["if key equals '状態'"]
    K5 --> |yes| S5_KEY["stat branch"]
    S5_KEY --> S5_SUB{"subkey matches?"}
    S5_SUB --> |value| S5_V["getStat_value()"]
    S5_SUB --> |enable| S5_E["getStat_enabled()"]
    S5_SUB --> |state| S5_S["getStat_state()"]
    S5_V --> RETURN_STAT
    S5_E --> RETURN_STAT
    S5_S --> RETURN_STAT
    RETURN_STAT["Return result"]

    K5 --> |no| K6["if key equals 'コース適用年月日'"]
    K6 --> |yes| S6_KEY["course_aply_ymd branch"]
    S6_KEY --> S6_SUB{"subkey matches?"}
    S6_SUB --> |value| S6_V["getCourse_aply_ymd_value()"]
    S6_SUB --> |enable| S6_E["getCourse_aply_ymd_enabled()"]
    S6_SUB --> |state| S6_S["getCourse_aply_ymd_state()"]
    S6_V --> RETURN_COURSE_YMD
    S6_E --> RETURN_COURSE_YMD
    S6_S --> RETURN_COURSE_YMD
    RETURN_COURSE_YMD["Return result"]

    K6 --> |no| K7["if key equals 'コース名'"]
    K7 --> |yes| S7_KEY["course_nm branch"]
    S7_KEY --> S7_SUB{"subkey matches?"}
    S7_SUB --> |value| S7_V["getCourse_nm_value()"]
    S7_SUB --> |enable| S7_E["getCourse_nm_enabled()"]
    S7_SUB --> |state| S7_S["getCourse_nm_state()"]
    S7_V --> RETURN_COURSE_NM
    S7_E --> RETURN_COURSE_NM
    S7_S --> RETURN_COURSE_NM
    RETURN_COURSE_NM["Return result"]

    K7 --> |no| K8["if key equals 'マンションID'"]
    K8 --> |yes| S8_KEY["mansion_id branch"]
    S8_KEY --> S8_SUB{"subkey matches?"}
    S8_SUB --> |value| S8_V["getMansion_id_value()"]
    S8_SUB --> |enable| S8_E["getMansion_id_enabled()"]
    S8_SUB --> |state| S8_S["getMansion_id_state()"]
    S8_V --> RETURN_MANSION_ID
    S8_E --> RETURN_MANSION_ID
    S8_S --> RETURN_MANSION_ID
    RETURN_MANSION_ID["Return result"]

    K8 --> |no| K9["if key equals 'マンション名'"]
    K9 --> |yes| S9_KEY["mansion_nm branch"]
    S9_KEY --> S9_SUB{"subkey matches?"}
    S9_SUB --> |value| S9_V["getMansion_nm_value()"]
    S9_SUB --> |enable| S9_E["getMansion_nm_enabled()"]
    S9_SUB --> |state| S9_S["getMansion_nm_state()"]
    S9_V --> RETURN_MANSION_NM
    S9_E --> RETURN_MANSION_NM
    S9_S --> RETURN_MANSION_NM
    RETURN_MANSION_NM["Return result"]

    K9 --> |no| K10["if key equals '新料金コースコード'"]
    K10 --> |yes| S10_KEY["new_pcrs_cd branch"]
    S10_KEY --> S10_SUB{"subkey matches?"}
    S10_SUB --> |value| S10_V["getNew_pcrs_cd_value()"]
    S10_SUB --> |enable| S10_E["getNew_pcrs_cd_enabled()"]
    S10_SUB --> |state| S10_S["getNew_pcrs_cd_state()"]
    S10_V --> RETURN_NEW_PCRS
    S10_E --> RETURN_NEW_PCRS
    S10_S --> RETURN_NEW_PCRS
    RETURN_NEW_PCRS["Return result"]

    K10 --> |no| K11["if key equals '旧料金コースコード'"]
    K11 --> |yes| S11_KEY["old_pcrs_cd branch"]
    S11_KEY --> S11_SUB{"subkey matches?"}
    S11_SUB --> |value| S11_V["getOld_pcrs_cd_value()"]
    S11_SUB --> |enable| S11_E["getOld_pcrs_cd_enabled()"]
    S11_SUB --> |state| S11_S["getOld_pcrs_cd_state()"]
    S11_V --> RETURN_OLD_PCRS
    S11_E --> RETURN_OLD_PCRS
    S11_S --> RETURN_OLD_PCRS
    RETURN_OLD_PCRS["Return result"]

    K11 --> |no| RETURN_NULL_2["Return null (no matching key)"]
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Japanese item name (項目名) that identifies which field's data to retrieve. Valid values are literal Japanese strings corresponding to 10 distinct business data items: "サービス契約内容番号" (service contract item number), "世代登録年月日時分秒" (generation registration datetime), "異動予約番号" (modification reservation number), "申請明細番号" (application details number), "状態" (status), "コース適用年月日" (course application date), "コース名" (course name), "マンションID" (mansion ID), "マンション名" (mansion name), "新料金コースコード" (new billing code), "旧料金コースコード" (old billing code). The key determines which conditional branch and subsequent set of getters are invoked. |
| 2 | `subkey` | `String` | Data access type that controls what attribute of the identified field to return. Valid values (case-insensitive) are `"value"` (returns the actual field data), `"state"` (returns the display state flag), `"enable"` (returns the editable/enable flag). Not all keys support all subkeys — `svc_kei_ucwk_no` and `gene_add_dtm` and `ido_rsv_no` and `mskm_dtl_no` only support `value` and `state`, while the remaining keys also support `enable`. |

**Instance fields / external state read:**
- No instance fields or external state are directly read within this method. All data is obtained through method calls to getter methods (`getXxx_value()`, `getXxx_state()`, `getXxx_enabled()`) which access the bean's own internal fields.

## 4. CRUD Operations / Called Services

All calls within this method are internal getter methods of the same bean class (`KKW02701SF02DBean`). No external service components (SC), CBS, or database operations are invoked.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW02701SF02DBean.getSvc_kei_ucwk_no_value` | KKW02701SF02DBean | - | Returns the service contract item number value |
| R | `KKW02701SF02DBean.getSvc_kei_ucwk_no_state` | KKW02701SF02DBean | - | Returns the display state flag for the service contract item number |
| R | `KKW02701SF02DBean.getGene_add_dtm_value` | KKW02701SF02DBean | - | Returns the generation registration datetime value |
| R | `KKW02701SF02DBean.getGene_add_dtm_state` | KKW02701SF02DBean | - | Returns the display state flag for the generation registration datetime |
| R | `KKW02701SF02DBean.getIdo_rsv_no_value` | KKW02701SF02DBean | - | Returns the modification reservation number value |
| R | `KKW02701SF02DBean.getIdo_rsv_no_state` | KKW02701SF02DBean | - | Returns the display state flag for the modification reservation number |
| R | `KKW02701SF02DBean.getMskm_dtl_no_value` | KKW02701SF02DBean | - | Returns the application details number value |
| R | `KKW02701SF02DBean.getMskm_dtl_no_state` | KKW02701SF02DBean | - | Returns the display state flag for the application details number |
| R | `KKW02701SF02DBean.getStat_value` | KKW02701SF02DBean | - | Returns the status value |
| R | `KKW02701SF02DBean.getStat_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the status field |
| R | `KKW02701SF02DBean.getStat_state` | KKW02701SF02DBean | - | Returns the display state flag for the status field |
| R | `KKW02701SF02DBean.getCourse_aply_ymd_value` | KKW02701SF02DBean | - | Returns the course application date value |
| R | `KKW02701SF02DBean.getCourse_aply_ymd_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the course application date |
| R | `KKW02701SF02DBean.getCourse_aply_ymd_state` | KKW02701SF02DBean | - | Returns the display state flag for the course application date |
| R | `KKW02701SF02DBean.getCourse_nm_value` | KKW02701SF02DBean | - | Returns the course name value |
| R | `KKW02701SF02DBean.getCourse_nm_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the course name |
| R | `KKW02701SF02DBean.getCourse_nm_state` | KKW02701SF02DBean | - | Returns the display state flag for the course name |
| R | `KKW02701SF02DBean.getMansion_id_value` | KKW02701SF02DBean | - | Returns the mansion ID value |
| R | `KKW02701SF02DBean.getMansion_id_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the mansion ID |
| R | `KKW02701SF02DBean.getMansion_id_state` | KKW02701SF02DBean | - | Returns the display state flag for the mansion ID |
| R | `KKW02701SF02DBean.getMansion_nm_value` | KKW02701SF02DBean | - | Returns the mansion name value |
| R | `KKW02701SF02DBean.getMansion_nm_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the mansion name |
| R | `KKW02701SF02DBean.getMansion_nm_state` | KKW02701SF02DBean | - | Returns the display state flag for the mansion name |
| R | `KKW02701SF02DBean.getNew_pcrs_cd_value` | KKW02701SF02DBean | - | Returns the new billing code value (ANK-4592-00-00 ADD) |
| R | `KKW02701SF02DBean.getNew_pcrs_cd_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the new billing code |
| R | `KKW02701SF02DBean.getNew_pcrs_cd_state` | KKW02701SF02DBean | - | Returns the display state flag for the new billing code |
| R | `KKW02701SF02DBean.getOld_pcrs_cd_value` | KKW02701SF02DBean | - | Returns the old billing code value |
| R | `KKW02701SF02DBean.getOld_pcrs_cd_enabled` | KKW02701SF02DBean | - | Returns the editable flag for the old billing code |
| R | `KKW02701SF02DBean.getOld_pcrs_cd_state` | KKW02701SF02DBean | - | Returns the display state flag for the old billing code |

## 5. Dependency Trace

This method is called by screen DBeans (Databean classes) in the `FUW*` screen modules. These callers use it as part of the `X33VDataTypeBeanInterface` contract — each list-bound data type item delegates its own `loadModelData` call to this method via casting. The caller pattern iterates over a list of `X33VDataTypeBeanInterface` objects and invokes `loadModelData(key, subkey)` on each, where the key is always `"value"` and the subkey corresponds to the item name in Japanese.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen: FUW00912SFBean | `FUW00912SFBean` iterates `svc_kb_dates_list` → casts to `X33VDataTypeBeanInterface` → `loadModelData(key, "value")` → `KKW02701SF02DBean.loadModelData` | `getSvc_kei_ucwk_no_value [R] svc_kei_ucwk_no` |
| 2 | Screen: FUW00926SFBean | `FUW00926SFBean` iterates `use_bmp_list_list` / `tv_stb_info_list_list` / `other_cmp_list_list` → casts → `loadModelData(keyElement, subkey)` → `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] mansion_nm / course_nm / stat / etc.` |
| 3 | Screen: FUW00959SFBean | `FUW00959SFBean` iterates `campaign_list_list` / `campaign_text_list_list` / `sp_campaign_list_list` → casts → `loadModelData(keyElement, subkey)` → `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] campaign item fields` |
| 4 | Screen: FUW00964SFBean | `FUW00964SFBean` iterates `svc_gaiyo_info_list` / `vdsl_prc_info_list` / `vdsl_shkh_cmp_info_list` / `enet_prc_info_list` / `giga_hikari_prc_info_list` → casts → `loadModelData(keyElement, subkey)` → `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] pricing / service info fields` |
| 5 | Screen: FUW00912SF01DBean | `FUW00912SF01DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 6 | Screen: FUW00926SF01DBean | `FUW00926SF01DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 7 | Screen: FUW00926SF02DBean | `FUW00926SF02DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 8 | Screen: FUW00926SF03DBean | `FUW00926SF03DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 9 | Screen: FUW00959SF01DBean | `FUW00959SF01DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 10 | Screen: FUW00959SF02DBean | `FUW00959SF02DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 11 | Screen: FUW00959SF03DBean | `FUW00959SF03DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 12 | Screen: FUW00959SF04DBean | `FUW00959SF04DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 13 | Screen: FUW00964SF01DBean | `FUW00964SF01DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |
| 14 | Screen: FUW00964SF04DBean | `FUW00964SF04DBean.loadModelData` iterates `gtgk_kihon_prc_modem_kaitori_list` etc. → casts → `loadModelData(subkey)` → `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] pricing item fields` |
| 15 | Screen: FUW00964SF06DBean | `FUW00964SF06DBean.loadModelData` overrides and delegates to `KKW02701SF02DBean.loadModelData` | `getXxx_value [R] same as parent` |

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `key == null || subkey == null` (L437)

Early null guard: if either parameter is null, return null immediately without processing.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // key, subkeyがnullの場合、nullを返す — return null when key/subkey is null |

**Block 2** — [EXEC] Separator computation (L441)

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` // Computes position of '/' in key — unused variable |

Note: The `separaterPoint` variable is computed but never used in this method. It is dead code.

**Block 3** — [IF-ELSE-IF chain: key = "サービス契約内容番号" (svc_kei_ucwk_no)] (L444)

> Data type is String. Item ID: svc_kei_ucwk_no. Handles the service contract item number field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("サービス契約内容番号")` — key equals "Service Contract Item Number" |

**Block 3.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L445)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getSvc_kei_ucwk_no_value()` // Returns the value for svc_kei_ucwk_no |
| 2 | RETURN | `return getSvc_kei_ucwk_no_value();` |

**Block 3.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L447)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getSvc_kei_ucwk_no_state()` // Returns the state flag for svc_kei_ucwk_no |
| 2 | RETURN | `return getSvc_kei_ucwk_no_state();` |

**Block 4** — [ELSE-IF: key = "世代登録年月日時分秒" (gene_add_dtm)] (L452)

> Data type is String. Item ID: gene_add_dtm. Handles the generation registration datetime field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("世代登録年月日時分秒")` — key equals "Generation Registration DateTime" |

**Block 4.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L453)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getGene_add_dtm_value()` // Returns the value for gene_add_dtm |
| 2 | RETURN | `return getGene_add_dtm_value();` |

**Block 4.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L455)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getGene_add_dtm_state()` // Returns the state flag for gene_add_dtm |
| 2 | RETURN | `return getGene_add_dtm_state();` |

**Block 5** — [ELSE-IF: key = "異動予約番号" (ido_rsv_no)] (L460)

> Data type is String. Item ID: ido_rsv_no. Handles the modification reservation number field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("異動予約番号")` — key equals "Modification Reservation Number" |

**Block 5.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L461)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getIdo_rsv_no_value()` // Returns the value for ido_rsv_no |
| 2 | RETURN | `return getIdo_rsv_no_value();` |

**Block 5.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L463)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getIdo_rsv_no_state()` // Returns the state flag for ido_rsv_no |
| 2 | RETURN | `return getIdo_rsv_no_state();` |

**Block 6** — [ELSE-IF: key = "申請明細番号" (mskm_dtl_no)] (L468)

> Data type is String. Item ID: mskm_dtl_no. Handles the application details number field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("申請明細番号")` — key equals "Application Details Number" |

**Block 6.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L469)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMskm_dtl_no_value()` // Returns the value for mskm_dtl_no |
| 2 | RETURN | `return getMskm_dtl_no_value();` |

**Block 6.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L471)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMskm_dtl_no_state()` // Returns the state flag for mskm_dtl_no |
| 2 | RETURN | `return getMskm_dtl_no_state();` |

**Block 7** — [ELSE-IF: key = "状態" (stat)] (L476)

> Data type is String. Item ID: stat. Handles the status field. Supports `value`, `enable`, and `state` subkeys (3-way branch).

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("状態")` — key equals "Status" |

**Block 7.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L477)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getStat_value()` // Returns the value for stat |
| 2 | RETURN | `return getStat_value();` |

**Block 7.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L479)

> subkeyが"enable"の場合、stat_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for stat_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getStat_enabled()` // Returns the editable flag for stat |
| 2 | RETURN | `return getStat_enabled();` |

**Block 7.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L481)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getStat_state()` // Returns the state flag for stat |
| 2 | RETURN | `return getStat_state();` |

**Block 8** — [ELSE-IF: key = "コース適用年月日" (course_aply_ymd)] (L486)

> Data type is String. Item ID: course_aply_ymd. Handles the course application date field. Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("コース適用年月日")` — key equals "Course Application Date" |

**Block 8.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L487)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_aply_ymd_value()` // Returns the value for course_aply_ymd |
| 2 | RETURN | `return getCourse_aply_ymd_value();` |

**Block 8.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L489)

> subkeyが"enable"の場合、course_aply_ymd_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for course_aply_ymd_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_aply_ymd_enabled()` // Returns the editable flag for course_aply_ymd |
| 2 | RETURN | `return getCourse_aply_ymd_enabled();` |

**Block 8.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L491)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_aply_ymd_state()` // Returns the state flag for course_aply_ymd |
| 2 | RETURN | `return getCourse_aply_ymd_state();` |

**Block 9** — [ELSE-IF: key = "コース名" (course_nm)] (L496)

> Data type is String. Item ID: course_nm. Handles the course name field. Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("コース名")` — key equals "Course Name" |

**Block 9.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L497)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_nm_value()` // Returns the value for course_nm |
| 2 | RETURN | `return getCourse_nm_value();` |

**Block 9.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L499)

> subkeyが"enable"の場合、course_nm_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for course_nm_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_nm_enabled()` // Returns the editable flag for course_nm |
| 2 | RETURN | `return getCourse_nm_enabled();` |

**Block 9.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L501)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getCourse_nm_state()` // Returns the state flag for course_nm |
| 2 | RETURN | `return getCourse_nm_state();` |

**Block 10** — [ELSE-IF: key = "マンションID" (mansion_id)] (L506)

> Data type is String. Item ID: mansion_id. Handles the mansion ID field. Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("マンションID")` — key equals "Mansion ID" |

**Block 10.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L507)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_id_value()` // Returns the value for mansion_id |
| 2 | RETURN | `return getMansion_id_value();` |

**Block 10.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L509)

> subkeyが"enable"の場合、mansion_id_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for mansion_id_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_id_enabled()` // Returns the editable flag for mansion_id |
| 2 | RETURN | `return getMansion_id_enabled();` |

**Block 10.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L511)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_id_state()` // Returns the state flag for mansion_id |
| 2 | RETURN | `return getMansion_id_state();` |

**Block 11** — [ELSE-IF: key = "マンション名" (mansion_nm)] (L516)

> Data type is String. Item ID: mansion_nm. Handles the mansion name field. Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("マンション名")` — key equals "Mansion Name" |

**Block 11.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L517)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_nm_value()` // Returns the value for mansion_nm |
| 2 | RETURN | `return getMansion_nm_value();` |

**Block 11.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L519)

> subkeyが"enable"の場合、mansion_nm_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for mansion_nm_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_nm_enabled()` // Returns the editable flag for mansion_nm |
| 2 | RETURN | `return getMansion_nm_enabled();` |

**Block 11.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L521)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMansion_nm_state()` // Returns the state flag for mansion_nm |
| 2 | RETURN | `return getMansion_nm_state();` |

**Block 12** — [ELSE-IF: key = "新料金コースコード" (new_pcrs_cd)] (L526)

> ANK-4592-00-00 ADD. Data type is String. Item ID: new_pcrs_cd. Handles the new billing code field — a field added for billing code migration/refactoring (issue ANK-4592). Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("新料金コースコード")` — key equals "New Billing Code" |

**Block 12.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L527)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getNew_pcrs_cd_value()` // Returns the value for new_pcrs_cd |
| 2 | RETURN | `return getNew_pcrs_cd_value();` |

**Block 12.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L529)

> subkeyが"enable"の場合、new_pcrs_cd_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for new_pcrs_cd_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getNew_pcrs_cd_enabled()` // Returns the editable flag for new_pcrs_cd |
| 2 | RETURN | `return getNew_pcrs_cd_enabled();` |

**Block 12.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L531)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getNew_pcrs_cd_state()` // Returns the state flag for new_pcrs_cd |
| 2 | RETURN | `return getNew_pcrs_cd_state();` |

**Block 13** — [ELSE-IF: key = "旧料金コースコード" (old_pcrs_cd)] (L536)

> Data type is String. Item ID: old_pcrs_cd. Handles the old billing code field. Supports `value`, `enable`, and `state` subkeys. Used alongside new_pcrs_cd for billing code migration.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("旧料金コースコード")` — key equals "Old Billing Code" |

**Block 13.1** — [nested IF] `subkey.equalsIgnoreCase("value")` (L537)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getOld_pcrs_cd_value()` // Returns the value for old_pcrs_cd |
| 2 | RETURN | `return getOld_pcrs_cd_value();` |

**Block 13.2** — [nested ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L539)

> subkeyが"enable"の場合、old_pcrs_cd_enableのgetterの戻り値を返す — If subkey is "enable", return the getter value for old_pcrs_cd_enable.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getOld_pcrs_cd_enabled()` // Returns the editable flag for old_pcrs_cd |
| 2 | RETURN | `return getOld_pcrs_cd_enabled();` |

**Block 13.3** — [nested ELSE-IF] `subkey.equalsIgnoreCase("state")` (L541)

> subkeyが"state"の場合、ステータスを返す — If subkey is "state", return the state flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getOld_pcrs_cd_state()` // Returns the state flag for old_pcrs_cd |
| 2 | RETURN | `return getOld_pcrs_cd_state();` |

**Block 14** — [ELSE] No matching key (L545)

> 条件に一致するプロパティが存在しない場合は、nullを返す — If no matching property exists, return null.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // No matching property found, return null |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for service contract line items |
| `gene_add_dtm` | Field | Generation registration datetime — timestamp when the service contract record was created/registered |
| `ido_rsv_no` | Field | Modification reservation number — ID for planned service modifications (changes, upgrades, etc.) |
| `mskm_dtl_no` | Field | Application details number — unique identifier for a specific application detail record |
| `stat` | Field | Status — current state/flag of the service contract item |
| `course_aply_ymd` | Field | Course application date — date when a service course/pricing plan is applied |
| `course_nm` | Field | Course name — human-readable name of the service course/pricing plan |
| `mansion_id` | Field | Mansion ID — identifier for a multi-unit dwelling (マンション) in the telecom address system |
| `mansion_nm` | Field | Mansion name — human-readable name of the multi-unit dwelling |
| `new_pcrs_cd` | Field | New billing course code — billing code for the new pricing plan (added in ANK-4592) |
| `old_pcrs_cd` | Field | Old billing course code — billing code for the previous pricing plan (used during billing code migration) |
| key | Parameter | Japanese item name (項目名) — the business label used to identify which field to access |
| subkey | Parameter | Data access type — specifies which attribute to retrieve: value (actual data), state (display state), or enable (editability flag) |
| DBean | Technical | Data Bean — a UI-level bean that holds screen data and implements `X33VDataTypeBeanInterface` for list-bound data type components |
| `X33VDataTypeBeanInterface` | Technical | Interface contract for data type beans used in screen list bindings; defines `loadModelData()` for item-level data retrieval |
| ANK-4592 | Change request | Issue/task identifier for billing code refactoring that introduced `new_pcrs_cd` and `old_pcrs_cd` fields |
| ステータス | Japanese term | State/Status flag — indicates whether a field is visible, enabled, or in a particular display mode |
| マンション | Japanese term | Mansion (multi-unit dwelling/apartment building) — a key entity in the telecom address and service provisioning domain |
| コース | Japanese term | Course — a service course/pricing plan bundle offered to customers (e.g., FTTH broadband plan, TV package) |
| 世代登録 | Japanese term | Generation registration — the act of creating/registering a new service contract record in the system |
| 異動予約 | Japanese term | Modification reservation — a scheduled service change (e.g., plan upgrade, line move, service cancellation) |
| 申請明細 | Japanese term | Application details — line-level information for a service application request |
