# Business Logic — KKW22101SF02DBean.storeModelData() [89 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW22101SF.KKW22101SF02DBean` |
| Layer | Utility / Data Bean (View-layer DTO that holds screen field state) |
| Module | `KKW22101SF` (Package: `eo.web.webview.KKW22101SF`) |

## 1. Role

### KKW22101SF02DBean.storeModelData()

This method is a **unified dispatcher** that routes incoming model data into the correct bean property setters within the `KKW22101SF02DBean` data carrier. It acts as the central intake point for populating screen field values, enable/disable flags, and state information for the **smart link premium and device provisioning** screen (screen code KKSV0004 area). The method implements a **keyword-based routing pattern** — it matches a `key` string (the Japanese display name of a field) and a `subkey` string (`value`, `enable`, or `state`) against six known device/offerings fields, then delegates to the appropriate setter pair.

The six field categories it handles are: (1) Indoor Equipment Model Code (`屋内機器型式コード`), (2) Indoor Equipment Model Name (`屋内機器型式名`), (3) Equipment Assignment Billing Start Year/Month (`機器割当請求開始年月`), (4) Equipment Plan Start Year/Month/Day (`機器プラン開始年月日`), (5) Equipment Provisioning Service Name (`機器提供サービス名`), and (6) Smart Link Premium Pack Presence (`スマートリンクプレミアムパック有無`). For each category, it supports three sub-types: `value` (the actual data value), `enable` (whether the field is editable), and `state` (read-only status metadata).

The `isSetAsString` parameter, while accepted as a method argument, is currently **unused** in this implementation — it is present in the signature for future extensibility to support Long-type value properties stored as String, as described in the Javadoc. This method plays the role of a **shared utility** within the `KKW22101SF` module: it is called by sibling bean methods (`KKW22101SF02DBean.storeModelData()` with different signatures) to consolidate bulk model-data population logic in one place, avoiding setter-call duplication across the screen controller pipeline.

No external service calls, CRUD operations, or entity accesses occur within this method. It is purely an in-memory data-routing and delegation layer.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])
    CHECK_NULL["key == null or subkey == null?"]
    EARLY_RETURN(["Return - No-Op"])
    SEARCH["int separaterPoint = key.indexOf('/')"]

    CHECK_NULL -- Yes --> EARLY_RETURN
    CHECK_NULL -- No --> SEARCH

    SEARCH --> BRANCH1["key == '屋内機器型式コード'?"]
    BRANCH1 -- Yes --> SUB1["subkey"]
    BRANCH1 -- No --> BRANCH2["key == '屋内機器型式名'?"]
    BRANCH2 -- Yes --> SUB2["subkey"]
    BRANCH2 -- No --> BRANCH3["key == '機器割当請求開始年月'?"]
    BRANCH3 -- Yes --> SUB3["subkey"]
    BRANCH3 -- No --> BRANCH4["key == '機器プラン開始年月日'?"]
    BRANCH4 -- Yes --> SUB4["subkey"]
    BRANCH4 -- No --> BRANCH5["key == '機器提供サービス名'?"]
    BRANCH5 -- Yes --> SUB5["subkey"]
    BRANCH5 -- No --> BRANCH6["key == 'スマートリンクプレミアムパック有無'?"]
    BRANCH6 -- Yes --> SUB6["subkey"]
    BRANCH6 -- No --> END_NODE["Return / Next"]

    SUB1 --> S1_VAL["subkey == 'value'?"]
    S1_VAL -- Yes --> SET_S1_VAL["setTaknkiki_model_cd_value"]
    S1_VAL -- No --> S1_ENB["subkey == 'enable'?"]
    S1_ENB -- Yes --> SET_S1_ENB["setTaknkiki_model_cd_enabled"]
    S1_ENB -- No --> S1_ST["subkey == 'state'?"]
    S1_ST -- Yes --> SET_S1_ST["setTaknkiki_model_cd_state"]
    S1_ST -- No --> END_NODE

    SUB2 --> S2_VAL["subkey == 'value'?"]
    S2_VAL -- Yes --> SET_S2_VAL["setTaknkiki_model_nm_value"]
    S2_VAL -- No --> S2_ENB["subkey == 'enable'?"]
    S2_ENB -- Yes --> SET_S2_ENB["setTaknkiki_model_nm_enabled"]
    S2_ENB -- No --> S2_ST["subkey == 'state'?"]
    S2_ST -- Yes --> SET_S2_ST["setTaknkiki_model_nm_state"]
    S2_ST -- No --> END_NODE

    SUB3 --> S3_VAL["subkey == 'value'?"]
    S3_VAL -- Yes --> SET_S3_VAL["setKiki_kap_seiky_sta_ym_value"]
    S3_VAL -- No --> S3_ENB["subkey == 'enable'?"]
    S3_ENB -- Yes --> SET_S3_ENB["setKiki_kap_seiky_sta_ym_enabled"]
    S3_ENB -- No --> S3_ST["subkey == 'state'?"]
    S3_ST -- Yes --> SET_S3_ST["setKiki_kap_seiky_sta_ym_state"]
    S3_ST -- No --> END_NODE

    SUB4 --> S4_VAL["subkey == 'value'?"]
    S4_VAL -- Yes --> SET_S4_VAL["setKiki_pplan_sta_ym_value"]
    S4_VAL -- No --> S4_ENB["subkey == 'enable'?"]
    S4_ENB -- Yes --> SET_S4_ENB["setKiki_pplan_sta_ym_enabled"]
    S4_ENB -- No --> S4_ST["subkey == 'state'?"]
    S4_ST -- Yes --> SET_S4_ST["setKiki_pplan_sta_ym_state"]
    S4_ST -- No --> END_NODE

    SUB5 --> S5_VAL["subkey == 'value'?"]
    S5_VAL -- Yes --> SET_S5_VAL["setKiki_tk_svs_mei_value"]
    S5_VAL -- No --> S5_ENB["subkey == 'enable'?"]
    S5_ENB -- Yes --> SET_S5_ENB["setKiki_tk_svs_mei_enabled"]
    S5_ENB -- No --> S5_ST["subkey == 'state'?"]
    S5_ST -- Yes --> SET_S5_ST["setKiki_tk_svs_mei_state"]
    S5_ST -- No --> END_NODE

    SUB6 --> S6_VAL["subkey == 'value'?"]
    S6_VAL -- Yes --> SET_S6_VAL["setSmartrink_premium_um_value"]
    S6_VAL -- No --> S6_ENB["subkey == 'enable'?"]
    S6_ENB -- Yes --> SET_S6_ENB["setSmartrink_premium_um_enabled"]
    S6_ENB -- No --> S6_ST["subkey == 'state'?"]
    S6_ST -- Yes --> SET_S6_ST["setSmartrink_premium_um_state"]
    S6_ST -- No --> END_NODE

    SET_S1_VAL --> END_NODE
    SET_S1_ENB --> END_NODE
    SET_S1_ST --> END_NODE
    SET_S2_VAL --> END_NODE
    SET_S2_ENB --> END_NODE
    SET_S2_ST --> END_NODE
    SET_S3_VAL --> END_NODE
    SET_S3_ENB --> END_NODE
    SET_S3_ST --> END_NODE
    SET_S4_VAL --> END_NODE
    SET_S4_ENB --> END_NODE
    SET_S4_ST --> END_NODE
    SET_S5_VAL --> END_NODE
    SET_S5_ENB --> END_NODE
    SET_S5_ST --> END_NODE
    SET_S6_VAL --> END_NODE
    SET_S6_ENB --> END_NODE
    SET_S6_ST --> END_NODE
```

**CRITICAL — Constant Resolution:**

This method uses **hardcoded Japanese string literals** as routing keys (not named constants from a constant class). The six key values and their resolved business meanings are:

| Literal Key | English Translation | Backend Field | Business Meaning |
|------------|---------------------|---------------|------------------|
| `屋内機器型式コード` | Indoor Equipment Model Code | `taknkiki_model_cd` | The unique type/code identifier for indoor unit hardware |
| `屋内機器型式名` | Indoor Equipment Model Name | `taknkiki_model_nm` | The human-readable name of the indoor unit model |
| `機器割当請求開始年月` | Equipment Assignment Billing Start Year/Month | `kiki_kap_seiky_sta_ym` | The year-month when billing for assigned equipment begins |
| `機器プラン開始年月日` | Equipment Plan Start Year/Month/Day | `kiki_pplan_sta_ym` | The start date of the equipment provisioning plan |
| `機器提供サービス名` | Equipment Provisioning Service Name | `kiki_tk_svs_mei` | The name of the service being provisioned to the equipment |
| `スマートリンクプレミアムパック有無` | Smart Link Premium Pack Presence | `smartrink_premium_um` | Whether the Smart Link Premium Pack add-on is included |

Each key branches on three `subkey` values (`value`, `enable`, `state`) using case-insensitive comparison.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **Japanese display name** of a screen field — serves as the routing key that determines which bean property category this data belongs to. Must exactly match one of six known field names (e.g., "屋内機器型式コード" for Indoor Equipment Model Code). If `null`, the method returns immediately without processing. |
| 2 | `subkey` | `String` | The **property type sub-key** that determines which aspect of the field is being set. Case-insensitive match against: `"value"` (the data value), `"enable"` (editability flag as Boolean), or `"state"` (read-only status as String). If `null`, the method returns immediately. |
| 3 | `in_value` | `Object` | The **actual data** being stored. Its runtime type depends on `subkey`: when `subkey` is `"value"` or `"state"`, it is cast to `String`; when `subkey` is `"enable"`, it is cast to `Boolean`. |
| 4 | `isSetAsString` | `boolean` | A flag documented for future use — when `true`, indicates that a Long-type property's value should be stored as a String. Currently **unused** in the method body. |

**Instance fields written by this method (via setters):**

| Field | Setter Called | Data Type |
|-------|---------------|-----------|
| `taknkiki_model_cd_value` | `setTaknkiki_model_cd_value` | String |
| `taknkiki_model_cd_enabled` | `setTaknkiki_model_cd_enabled` | Boolean |
| `taknkiki_model_cd_state` | `setTaknkiki_model_cd_state` | String |
| `taknkiki_model_nm_value` | `setTaknkiki_model_nm_value` | String |
| `taknkiki_model_nm_enabled` | `setTaknkiki_model_nm_enabled` | Boolean |
| `taknkiki_model_nm_state` | `setTaknkiki_model_nm_state` | String |
| `kiki_kap_seiky_sta_ym_value` | `setKiki_kap_seiky_sta_ym_value` | String |
| `kiki_kap_seiky_sta_ym_enabled` | `setKiki_kap_seiky_sta_ym_enabled` | Boolean |
| `kiki_kap_seiky_sta_ym_state` | `setKiki_kap_seiky_sta_ym_state` | String |
| `kiki_pplan_sta_ym_value` | `setKiki_pplan_sta_ym_value` | String |
| `kiki_pplan_sta_ym_enabled` | `setKiki_pplan_sta_ym_enabled` | Boolean |
| `kiki_pplan_sta_ym_state` | `setKiki_pplan_sta_ym_state` | String |
| `kiki_tk_svs_mei_value` | `setKiki_tk_svs_mei_value` | String |
| `kiki_tk_svs_mei_enabled` | `setKiki_tk_svs_mei_enabled` | Boolean |
| `kiki_tk_svs_mei_state` | `setKiki_tk_svs_mei_state` | String |
| `smartrink_premium_um_value` | `setSmartrink_premium_um_value` | String |
| `smartrink_premium_um_enabled` | `setSmartrink_premium_um_enabled` | Boolean |
| `smartrink_premium_um_state` | `setSmartrink_premium_um_state` | String |

## 4. CRUD Operations / Called Services

This method performs **no external service calls, no database operations, and no entity access**. All method invocations are local setter methods within the same bean (`KKW22101SF02DBean`), which simply assign values to instance fields. The method operates entirely in-memory as a data-routing layer.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `KKW22101SF02DBean.setTaknkiki_model_cd_value` | - | - | Routes `in_value` (String) into `taknkiki_model_cd_value` field — no external effect |
| - | `KKW22101SF02DBean.setTaknkiki_model_cd_enabled` | - | - | Sets `taknkiki_model_cd_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setTaknkiki_model_cd_state` | - | - | Sets `taknkiki_model_cd_state` to status metadata — no external effect |
| - | `KKW22101SF02DBean.setTaknkiki_model_nm_value` | - | - | Routes `in_value` (String) into `taknkiki_model_nm_value` field — no external effect |
| - | `KKW22101SF02DBean.setTaknkiki_model_nm_enabled` | - | - | Sets `taknkiki_model_nm_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setTaknkiki_model_nm_state` | - | - | Sets `taknkiki_model_nm_state` to status metadata — no external effect |
| - | `KKW22101SF02DBean.setKiki_kap_seiky_sta_ym_value` | - | - | Routes `in_value` (String) into `kiki_kap_seiky_sta_ym_value` field — no external effect |
| - | `KKW22101SF02DBean.setKiki_kap_seiky_sta_ym_enabled` | - | - | Sets `kiki_kap_seiky_sta_ym_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setKiki_kap_seiky_sta_ym_state` | - | - | Sets `kiki_kap_seiky_sta_ym_state` to status metadata — no external effect |
| - | `KKW22101SF02DBean.setKiki_pplan_sta_ym_value` | - | - | Routes `in_value` (String) into `kiki_pplan_sta_ym_value` field — no external effect |
| - | `KKW22101SF02DBean.setKiki_pplan_sta_ym_enabled` | - | - | Sets `kiki_pplan_sta_ym_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setKiki_pplan_sta_ym_state` | - | - | Sets `kiki_pplan_sta_ym_state` to status metadata — no external effect |
| - | `KKW22101SF02DBean.setKiki_tk_svs_mei_value` | - | - | Routes `in_value` (String) into `kiki_tk_svs_mei_value` field — no external effect |
| - | `KKW22101SF02DBean.setKiki_tk_svs_mei_enabled` | - | - | Sets `kiki_tk_svs_mei_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setKiki_tk_svs_mei_state` | - | - | Sets `kiki_tk_svs_mei_state` to status metadata — no external effect |
| - | `KKW22101SF02DBean.setSmartrink_premium_um_value` | - | - | Routes `in_value` (String) into `smartrink_premium_um_value` field — no external effect |
| - | `KKW22101SF02DBean.setSmartrink_premium_um_enabled` | - | - | Sets `smartrink_premium_um_enabled` to editability flag — no external effect |
| - | `KKW22101SF02DBean.setSmartrink_premium_um_state` | - | - | Sets `smartrink_premium_um_state` to status metadata — no external effect |

**Note:** The local setter calls are not classified as CRUD operations because they do not interact with external systems, databases, or service components. They are simple field assignments within the bean.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `setSmartrink_premium_um_state` [-], `setSmartrink_premium_um_enabled` [-], `setSmartrink_premium_um_value` [-], `setKiki_tk_svs_mei_state` [-], `setKiki_tk_svs_mei_enabled` [-], `setKiki_tk_svs_mei_value` [-], `setKiki_pplan_sta_ym_state` [-], `setKiki_pplan_sta_ym_enabled` [-], `setKiki_pplan_sta_ym_value` [-], `setKiki_kap_seiky_sta_ym_state` [-], `setKiki_kap_seiky_sta_ym_enabled` [-], `setKiki_kap_seiky_sta_ym_value` [-], `setTaknkiki_model_nm_state` [-], `setTaknkiki_model_nm_enabled` [-], `setTaknkiki_model_nm_value` [-], `setTaknkiki_model_cd_state` [-], `setTaknkiki_model_cd_enabled` [-], `setTaknkiki_model_cd_value` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW22101SF02DBean.storeModelData()` (overloaded variant) | `KKW22101SF02DBean.storeModelData()` -> `storeModelData(String, String, Object, boolean)` | All 18 setter methods (local field assignments) |
| 2 | `KKW22101SF02DBean.storeModelData()` (overloaded variant) | `KKW22101SF02DBean.storeModelData()` -> `storeModelData(String, String, Object, boolean)` | All 18 setter methods (local field assignments) |

**Analysis:** The two direct callers are overloaded variants of `storeModelData()` within the same bean (`KKW22101SF02DBean`). These overloaded variants likely accept different parameter shapes (e.g., `Map<String, Object>` or typed values) and delegate to this 4-parameter variant after extracting/transforming the arguments. The terminal operations are all local field setters — no database, service component, or external system interaction occurs.

## 6. Per-Branch Detail Blocks

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

> Early termination: if either the field key or subkey is null, abort processing immediately. This prevents null-pointer exceptions and acts as input validation.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key == null || subkey == null` // Guard clause — both parameters must be non-null |
| 2 | RETURN | `return;` // Exit method without any processing // 処理を中止 — abort processing |

**Block 2** — [SET] `int separaterPoint = key.indexOf('/')` (L419)

> Locates the position of the "/" delimiter within the `key` string. The result is never used in the current implementation — likely a vestigial variable from an earlier design where the key might have contained a "/" prefix for type identification.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf('/')` // 項目ごとに処理を入れる — dispatch processing per field type; result unused |

**Block 3** — [IF-ELSEIF chain] `key.equals("屋内機器型式コード")` (L422) [key == "屋内機器型式コード" (Indoor Equipment Model Code)]

> First field branch: routes to the `taknkiki_model_cd` (屋内機器型式コード / Indoor Equipment Model Code) property setters. The Japanese literal "屋内機器型式コード" means "Indoor Equipment Model Code" — the hardware model code identifier for the indoor unit.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("屋内機器型式コード")` // Matches indoor unit model code field // 屋内機器型式コード — Indoor Equipment Model Code |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` // Case-insensitive check for value subkey |
| 2 | CALL | `setTaknkiki_model_cd_value((String)in_value)` // Cast and set the model code value // 項目Valueプロパティへ設定 — set field Value property |

**Block 3.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L426)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` // Case-insensitive check for enable subkey |
| 2 | CALL | `setTaknkiki_model_cd_enabled((Boolean)in_value)` // Cast and set the editability flag // subkeyが"enable"の場合、taknkiki_model_cd_enabledのsetterを実行する — When subkey is "enable", execute setter for taknkiki_model_cd_enabled |

**Block 3.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L429)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` // Case-insensitive check for state subkey |
| 2 | CALL | `setTaknkiki_model_cd_state((String)in_value)` // Cast and set the state metadata // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 4** — [ELSEIF] `key.equals("屋内機器型式名")` (L433) [key == "屋内機器型式名" (Indoor Equipment Model Name)]

> Second field branch: routes to the `taknkiki_model_nm` (屋内機器型式名 / Indoor Equipment Model Name) property setters. The Japanese literal "屋内機器型式名" means "Indoor Equipment Model Name" — the human-readable name of the indoor unit model.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("屋内機器型式名")` // Matches indoor unit model name field // 屋内機器型式名 — Indoor Equipment Model Name |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `setTaknkiki_model_nm_value((String)in_value)` // Set model name value |

**Block 4.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L437)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 2 | CALL | `setTaknkiki_model_nm_enabled((Boolean)in_value)` // Set model name enabled flag // subkeyが"enable"の場合、taknkiki_model_nm_enabledのsetterを実行する — When subkey is "enable", execute setter for taknkiki_model_nm_enabled |

**Block 4.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L440)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 2 | CALL | `setTaknkiki_model_nm_state((String)in_value)` // Set model name state // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 5** — [ELSEIF] `key.equals("機器割当請求開始年月")` (L444) [key == "機器割当請求開始年月" (Equipment Assignment Billing Start Year/Month)]

> Third field branch: routes to the `kiki_kap_seiky_sta_ym` (機器割当請求開始年月 / Equipment Assignment Billing Start Year/Month) property setters. The Japanese literal "機器割当請求開始年月" means "Equipment Assignment Billing Start Year/Month" — the year-month when billing for assigned equipment begins.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("機器割当請求開始年月")` // Matches equipment billing start field // 機器割当請求開始年月 — Equipment Assignment Billing Start Year/Month |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `setKiki_kap_seiky_sta_ym_value((String)in_value)` // Set billing start year/month value |

**Block 5.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L448)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 2 | CALL | `setKiki_kap_seiky_sta_ym_enabled((Boolean)in_value)` // Set billing start enabled flag // subkeyが"enable"の場合、kiki_kap_seiky_sta_ym_enabledのsetterを実行する — When subkey is "enable", execute setter for kiki_kap_seiky_sta_ym_enabled |

**Block 5.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L451)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 2 | CALL | `setKiki_kap_seiky_sta_ym_state((String)in_value)` // Set billing start state // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 6** — [ELSEIF] `key.equals("機器プラン開始年月日")` (L455) [key == "機器プラン開始年月日" (Equipment Plan Start Year/Month/Day)]

> Fourth field branch: routes to the `kiki_pplan_sta_ym` (機器プラン開始年月日 / Equipment Plan Start Year/Month/Day) property setters. The Japanese literal "機器プラン開始年月日" means "Equipment Plan Start Year/Month/Day" — the start date of the equipment provisioning plan.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("機器プラン開始年月日")` // Matches equipment plan start field // 機器プラン開始年月日 — Equipment Plan Start Year/Month/Day |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `setKiki_pplan_sta_ym_value((String)in_value)` // Set plan start date value |

**Block 6.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L459)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 2 | CALL | `setKiki_pplan_sta_ym_enabled((Boolean)in_value)` // Set plan start enabled flag // subkeyが"enable"の場合、kiki_pplan_sta_ym_enabledのsetterを実行する — When subkey is "enable", execute setter for kiki_pplan_sta_ym_enabled |

**Block 6.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L462)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 2 | CALL | `setKiki_pplan_sta_ym_state((String)in_value)` // Set plan start state // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 7** — [ELSEIF] `key.equals("機器提供サービス名")` (L466) [key == "機器提供サービス名" (Equipment Provisioning Service Name)]

> Fifth field branch: routes to the `kiki_tk_svs_mei` (機器提供サービス名 / Equipment Provisioning Service Name) property setters. The Japanese literal "機器提供サービス名" means "Equipment Provisioning Service Name" — the name of the service being provisioned to the equipment.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("機器提供サービス名")` // Matches equipment service name field // 機器提供サービス名 — Equipment Provisioning Service Name |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `setKiki_tk_svs_mei_value((String)in_value)` // Set service name value |

**Block 7.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L470)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 2 | CALL | `setKiki_tk_svs_mei_enabled((Boolean)in_value)` // Set service name enabled flag // subkeyが"enable"の場合、kiki_tk_svs_mei_enabledのsetterを実行する — When subkey is "enable", execute setter for kiki_tk_svs_mei_enabled |

**Block 7.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L473)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 2 | CALL | `setKiki_tk_svs_mei_state((String)in_value)` // Set service name state // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 8** — [ELSEIF] `key.equals("スマートリンクプレミアムパック有無")` (L477) [key == "スマートリンクプレミアムパック有無" (Smart Link Premium Pack Presence)]

> Sixth and final field branch: routes to the `smartrink_premium_um` (スマートリンクプレミアムパック有無 / Smart Link Premium Pack Presence) property setters. The Japanese literal "スマートリンクプレミアムパック有無" means "Smart Link Premium Pack Presence" — a flag indicating whether the Smart Link Premium Pack add-on service is active/included.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key.equals("スマートリンクプレミアムパック有無")` // Matches Smart Link Premium Pack field // スマートリンクプレミアムパック有無 — Smart Link Premium Pack Presence |

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

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `setSmartrink_premium_um_value((String)in_value)` // Set premium pack value |

**Block 8.2** — [nested ELSEIF] `subkey.equalsIgnoreCase("enable")` (L481)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 2 | CALL | `setSmartrink_premium_um_enabled((Boolean)in_value)` // Set premium pack enabled flag // subkeyが"enable"の場合、smartrink_premium_um_enabledのsetterを実行する — When subkey is "enable", execute setter for smartrink_premium_um_enabled |

**Block 8.3** — [nested ELSEIF] `subkey.equalsIgnoreCase("state")` (L484)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 2 | CALL | `setSmartrink_premium_um_state((String)in_value)` // Set premium pack state // subkeyが"state"の場合、ステータスを返す — When subkey is "state", set status |

**Block 9** — [END] Implicit return after the final `else if` block (L487)

> If none of the six `key` values match, the method simply falls through to the end without setting anything. No exception is thrown — the call is silently ignored. This is a design characteristic: only known keys produce behavior; unknown keys are discarded.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | (implicit return `void`) // No-Op for unrecognized key — 該当なし |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `taknkiki_model_cd` | Field (Backend) | Indoor Equipment Model Code — the unique type/code identifier for indoor unit hardware (`屋内機器型式コード`) |
| `taknkiki_model_nm` | Field (Backend) | Indoor Equipment Model Name — the human-readable name of the indoor unit model (`屋内機器型式名`) |
| `kiki_kap_seiky_sta_ym` | Field (Backend) | Equipment Assignment Billing Start Year/Month — the year-month when billing for assigned equipment begins (`機器割当請求開始年月`) |
| `kiki_pplan_sta_ym` | Field (Backend) | Equipment Plan Start Year/Month/Day — the start date of the equipment provisioning plan (`機器プラン開始年月日`) |
| `kiki_tk_svs_mei` | Field (Backend) | Equipment Provisioning Service Name — the name of the service being provisioned to the equipment (`機器提供サービス名`) |
| `smartrink_premium_um` | Field (Backend) | Smart Link Premium Pack Presence — whether the Smart Link Premium Pack add-on is included (`スマートリンクプレミアムパック有無`) |
| `屋内機器型式コード` | Japanese Field Name | Indoor Equipment Model Code (English equivalent) |
| `屋内機器型式名` | Japanese Field Name | Indoor Equipment Model Name (English equivalent) |
| `機器割当請求開始年月` | Japanese Field Name | Equipment Assignment Billing Start Year/Month (English equivalent) |
| `機器プラン開始年月日` | Japanese Field Name | Equipment Plan Start Year/Month/Day (English equivalent) |
| `機器提供サービス名` | Japanese Field Name | Equipment Provisioning Service Name (English equivalent) |
| `スマートリンクプレミアムパック有無` | Japanese Field Name | Smart Link Premium Pack Presence (English equivalent) |
| `DBean` | Acronym | Data Bean — a view-layer DTO (Data Transfer Object) used in the NTT Comware web application framework to carry screen field data between the controller, view, and business logic layers |
| `KKW22101SF` | Acronym | Screen module code — identifies the Smart Link / Equipment Provisioning service screen module. "SF" likely denotes "Service Form" or "Service Flow" in the NTT Comware module naming convention |
| `value` | Subkey | The actual data value being set for a field — typically a `String` |
| `enable` | Subkey | The editability flag for a field — a `Boolean` indicating whether the field is user-editable on the screen |
| `state` | Subkey | The read-only status metadata for a field — typically a `String` describing the current state (e.g., "locked", "pending", "active") |
| `Smart Link` | Business term | A bundled telecommunications service offering from NTT Comware that combines internet access with premium add-on services (the Premium Pack is one such add-on) |
| `屋内機器` | Japanese term | Indoor Equipment — the indoor unit of a fiber-optic or broadband equipment setup, as opposed to outdoor/external equipment |
| `機器割当` | Japanese term | Equipment Assignment — the allocation/provisioning of equipment to a customer's service contract |
| `割当請求` | Japanese term | Assignment Billing — the billing process triggered by equipment assignment |
| `isSetAsString` | Parameter | A boolean flag documented for supporting Long-type value properties stored as String — currently unused in this method |
