# Business Logic — KKW00844SFBean.storeModelData() [310 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00844SF.KKW00844SFBean` |
| Layer | Bean / View Model (extends `X33VViewBaseBean`, implements `X33VListedBeanInterface`) |
| Module | `KKW00844SF` (Package: `eo.web.webview.KKW00844SF`) |

## 1. Role

### KKW00844SFBean.storeModelData()

This method is the central **data binding entry point** for the `KKW00844SF` screen bean. It implements a **key-based dispatch pattern** that populates approximately 24 distinct business fields from a flat, string-addressed key path — enabling the view layer to push arbitrary screen values into the bean model without requiring per-field API surface methods from the caller's perspective. The key path uses delimiters (`"//"` for common info, `"/"` for hierarchical routing) to dynamically route each incoming `(key, subkey, in_value)` tuple to the correct internal field setter. For simple String fields (e.g., "Service Contract Number", "Update Date/Time"), it sets typed `value` or `state` properties; for the "Customer Contract Continuation List" (`cust_kei_hktgi_list_list`) and "Reason for Discontinuation List" (`ido_rsn_list_list`), it recursively delegates to nested `X33VDataTypeBeanInterface` items by parsing an embedded list index from the key. This design implements the **Mediator/Dispatcher pattern** — abstracting away the specific field structure from callers and enabling uniform model loading across a rich telecom service management screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData(key, subkey, in_value, isSetAsString)"])

    START --> CheckKeyNull["key is null?"]

    CheckKeyNull -->|Yes| RETURN1["return"]
    CheckKeyNull -->|No| CheckSubkeyNull["subkey is null?"]

    CheckSubkeyNull -->|Yes| SubkeyEmpty["subkey = empty string"]
    CheckSubkeyNull -->|No| SubkeyEmpty

    SubkeyEmpty --> FindSep["separaterPoint = key.indexOf double-slash"]

    FindSep --> CommonInfoCheck{"separaterPoint == 0?"}

    CommonInfoCheck -->|Yes| CommonInfo["super.storeCommonInfoData"]

    CommonInfoCheck -->|No| FindRootSeparator["separaterPoint = key.indexOf single-slash"]

    FindRootSeparator --> RootCheck{"separaterPoint > 0?"}

    RootCheck -->|Yes| ExtractKeyElement["keyElement = key.substring"]
    RootCheck -->|No| NoSeparator["keyElement = key"]

    ExtractKeyElement --> KeyDispatch{"Dispatch by keyElement"}
    NoSeparator --> KeyDispatch

    KeyDispatch --> Block1["Block 1: use_staymd"]
    KeyDispatch --> Block2["Block 2: cust_kei_hktgi_list_list"]
    KeyDispatch --> Block3["Block 3: ido_rsn_list_list"]
    KeyDispatch --> Block4["Block 4: svc_kei_no"]
    KeyDispatch --> Block5["Block 5: sysid"]
    KeyDispatch --> Block6["Block 6: ido_div"]
    KeyDispatch --> Block7["Block 7: unyo_ymd"]
    KeyDispatch --> Block8["Block 8: unyo_dtm"]
    KeyDispatch --> Block9["Block 9: svc_kei_stat"]
    KeyDispatch --> Block10["Block 10: mskm_dtl_no"]
    KeyDispatch --> Block11["Block 11: upd_dtm_bf"]
    KeyDispatch --> Block12["Block 12: mskm_stat_skbt_cd_shonin"]
    KeyDispatch --> Block13["Block 13: mskm_sbt_cd"]
    KeyDispatch --> Block14["Block 14: op_svc_cd"]
    KeyDispatch --> Block15["Block 15: op_pcrs_cd"]
    KeyDispatch --> Block16["Block 16: op_pplan_cd"]
    KeyDispatch --> Block17["Block 17: oya_kei_skbt_cd"]
    KeyDispatch --> Block18["Block 18: rule0059_auto_aply"]
    KeyDispatch --> Block19["Block 19: prg_memo"]
    KeyDispatch --> Block20["Block 20: prg_stat"]
    KeyDispatch --> Block21["Block 21: prg_tkjk_1"]
    KeyDispatch --> Block22["Block 22: net_tab_op_if_ctl_cd"]
    KeyDispatch --> Block23["Block 23: ido_dtm"]
    KeyDispatch --> Block24["Block 24: haiso_hmpin_stat_cd"]
    KeyDispatch --> NoMatch["No match - no-op"]

    RETURN1 --> END_NODE(["End"])
    Block1 --> END_NODE
    Block2 --> END_NODE
    Block3 --> END_NODE
    Block4 --> END_NODE
    Block5 --> END_NODE
    Block6 --> END_NODE
    Block7 --> END_NODE
    Block8 --> END_NODE
    Block9 --> END_NODE
    Block10 --> END_NODE
    Block11 --> END_NODE
    Block12 --> END_NODE
    Block13 --> END_NODE
    Block14 --> END_NODE
    Block15 --> END_NODE
    Block16 --> END_NODE
    Block17 --> END_NODE
    Block18 --> END_NODE
    Block19 --> END_NODE
    Block20 --> END_NODE
    Block21 --> END_NODE
    Block22 --> END_NODE
    Block23 --> END_NODE
    Block24 --> END_NODE
    NoMatch --> END_NODE
```

**Block dispatch overview:** Each of the 24+ keyElement branches follows a consistent sub-pattern: when `subkey.equalsIgnoreCase("value")`, call the typed setter (e.g., `setUse_staymd_value((String)in_value)`); when `subkey.equalsIgnoreCase("enable")`, call the boolean enable setter (only `use_staymd` has this); when `subkey.equalsIgnoreCase("state")`, call the state setter with a cast. The two list blocks (cust_kei_hktgi_list_list and ido_rsn_list_list) additionally parse an embedded integer index from the remaining key path and recursively invoke `storeModelData` on the target list element.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | A delimited field identifier that specifies which business attribute to set. For common info beans, keys start with `"//"`. For hierarchical list items, keys follow the pattern `"FieldName/index/subfield"` (e.g., `"Customer Contract Continuation List/0/Brand List"`). For simple fields, the key is just the Japanese field name (e.g., `"Service Contract Number"`). |
| 2 | `subkey` | `String` | The sub-field designation within a key — typically `"value"` (to set the data value), `"state"` (to set the read-only state flag), or `"enable"` (to set the boolean enabled flag for `use_staymd`). When null, defaults to an empty string. |
| 3 | `in_value` | `Object` | The raw data value to store. Cast to the appropriate type (mostly `String`, sometimes `Boolean` for enable flags) based on the target field. Carries the actual business data being persisted on the screen. |
| 4 | `isSetAsString` | `boolean` | Flag indicating whether the value should be stored as a String-type property when the target is a Long-typed field. Per the Javadoc: "true when setting a String-type value to a Long-type item's Value property." Currently unused in the implementation body but preserved for future compatibility. |

**Instance fields read:**

| Field | Type | Usage |
|-------|------|-------|
| `cust_kei_hktgi_list_list` | `X33VDataTypeList` | Customer contract continuation list — used in Block 2 for recursive delegation |
| `ido_rsn_list_list` | `X33VDataTypeList` | Reason for discontinuation list — used in Block 3 for recursive delegation |

## 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` — utility string edit |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` — utility string edit |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` — utility string edit |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` — utility string edit |
| - | `KKW00844SFBean.setHaiso_hmpin_stat_cd_state` | KKW00844SFBean | - | Sets delivery return status code display state |
| - | `KKW00844SFBean.setHaiso_hmpin_stat_cd_value` | KKW00844SFBean | - | Sets delivery return status code value |
| - | `KKW00844SFBean.setIdo_div_state` | KKW00844SFBean | - | Sets discontinuation division display state |
| - | `KKW00844SFBean.setIdo_div_value` | KKW00844SFBean | - | Sets discontinuation division value |
| - | `KKW00844SFBean.setIdo_dtm_state` | KKW00844SFBean | - | Sets discontinuation date/time display state |
| - | `KKW00844SFBean.setIdo_dtm_value` | KKW00844SFBean | - | Sets discontinuation date/time value |
| - | `KKW00844SFBean.setMskm_dtl_no_state` | KKW00844SFBean | - | Sets application detail number display state |
| - | `KKW00844SFBean.setMskm_dtl_no_value` | KKW00844SFBean | - | Sets application detail number value |
| - | `KKW00844SFBean.setMskm_sbt_cd_state` | KKW00844SFBean | - | Sets application type code display state |
| - | `KKW00844SFBean.setMskm_sbt_cd_value` | KKW00844SFBean | - | Sets application type code value |
| - | `KKW00844SFBean.setMskm_stat_skbt_cd_shonin_state` | KKW00844SFBean | - | Sets application status identification code (approved) display state |
| - | `KKW00844SFBean.setMskm_stat_skbt_cd_shonin_value` | KKW00844SFBean | - | Sets application status identification code (approved) value |
| - | `KKW00844SFBean.setNet_tab_op_if_ctl_cd_state` | KKW00844SFBean | - | Sets Net Tab Operation Info Control Code display state |
| - | `KKW00844SFBean.setNet_tab_op_if_ctl_cd_value` | KKW00844SFBean | - | Sets Net Tab Operation Info Control Code value |
| - | `KKW00844SFBean.setOp_pcrs_cd_state` | KKW00844SFBean | - | Sets Option Charge Cost Code display state |
| - | `KKW00844SFBean.setOp_pcrs_cd_value` | KKW00844SFBean | - | Sets Option Charge Cost Code value |
| - | `KKW00844SFBean.setOp_pplan_cd_state` | KKW00844SFBean | - | Sets Option Charge Plan Code display state |
| - | `KKW00844SFBean.setOp_pplan_cd_value` | KKW00844SFBean | - | Sets Option Charge Plan Code value |
| - | `KKW00844SFBean.setOp_svc_cd_state` | KKW00844SFBean | - | Sets Option Service Code display state |
| - | `KKW00844SFBean.setOp_svc_cd_value` | KKW00844SFBean | - | Sets Option Service Code value |
| - | `KKW00844SFBean.setOya_kei_skbt_cd_state` | KKW00844SFBean | - | Sets Parent Contract Identification Code display state |
| - | `KKW00844SFBean.setOya_kei_skbt_cd_value` | KKW00844SFBean | - | Sets Parent Contract Identification Code value |
| - | `KKW00844SFBean.setPrg_memo_state` | KKW00844SFBean | - | Sets progress memo display state |
| - | `KKW00844SFBean.setPrg_memo_value` | KKW00844SFBean | - | Sets progress memo value |
| - | `KKW00844SFBean.setPrg_stat_state` | KKW00844SFBean | - | Sets progress status display state |
| - | `KKW00844SFBean.setPrg_stat_value` | KKW00844SFBean | - | Sets progress status value |
| - | `X33VDataTypeBeanInterface.storeModelData` | - | - | Recursive delegation to list item bean for `cust_kei_hktgi_list_list` and `ido_rsn_list_list` entries |

**CRUD classification:** This method performs **no direct C/R/U/D database operations**. It is a pure **in-memory model binding method** that only invokes local setters on bean fields and delegates to parent/common-info beans and recursive list-item beans. All listed operations are type `U` (Update) at the bean/model level — they update the in-memory state of view model properties.

## 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: `setHaiso_hmpin_stat_cd_state` [-], `setHaiso_hmpin_stat_cd_value` [-], `setIdo_dtm_state` [-], `setIdo_dtm_value` [-], `setNet_tab_op_if_ctl_cd_state` [-], `setNet_tab_op_if_ctl_cd_value` [-], `setPrg_tkjk_1_state` [-], `setPrg_tkjk_1_value` [-], `setPrg_stat_state` [-], `setPrg_stat_value` [-], `setPrg_memo_state` [-], `setPrg_memo_value` [-], `setRule0059_auto_aply_state` [-], `setRule0059_auto_aply_value` [-], `setOya_kei_skbt_cd_state` [-], `setOya_kei_skbt_cd_value` [-], `setOp_pplan_cd_state` [-], `setOp_pplan_cd_value` [-], `setOp_pcrs_cd_state` [-], `setOp_pcrs_cd_value` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `KKW00844SFBean.storeModelData()` (self-recursive via list items) | `KKW00844SFBean.storeModelData` -> `KKW00844SFBean.storeModelData` (recursive delegation to list element) | `storeModelData` [U] (local bean setters) |
| 2 | Method: `KKW00844SFBean.storeModelData()` | Same as above — called from X33V framework or parent screen bean | `storeModelData` [U] (local bean setters) |

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(key == null)` (L1091)

> Early return: when the key is null, processing is aborted immediately. The Japanese comment reads: "keyがnullの場合、処理を中止" (If key is null, stop processing).

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` // keyがnullの場合、処理を中止 (If key is null, stop processing) |

**Block 2** — ELSE IF `(subkey == null)` (L1096)

> When subkey is null, it is reset to an empty string. The Japanese comment reads: "subkeyがnullの場合、空文字列に" (If subkey is null, set to empty string).

| # | Type | Code |
|---|------|------|
| 1 | SET | `subkey = new String("")` // subkeyがnullの場合、空文字列に (If subkey is null, set to empty string) |

**Block 3** — ELSE (top-level routing) (L1100)

> The key value's first element is extracted. First, checks if the key starts with `"//"` to determine if it's a common info bean specification. The Japanese comments read:
> - "keyの値の最初の要素を取得" (Get the first element of the key value)
> - "keyが共通情報ビューンに関する指定かどうかをチェック" (Check whether key is a specification for the common info bean)

| # | Type | Code |
|---|------|------|
| 1 | SET | `String keyElement;` |
| 2 | SET | `int separaterPoint = key.indexOf("//")` // keyが共通情報ビューンに関する指定かどうかをチェック (Check whether key is a specification for the common info bean) |
| 3 | IF | `if(separaterPoint == 0)` — 共通情報の場合 (If common info) |

  **Block 3.1** — IF BODY `(separaterPoint == 0)` (L1103)

  > Delegates to the parent class's common info data store. This handles special common/infrastructure bean fields.

  | # | Type | Code |
  |---|------|------|
  | 1 | CALL | `super.storeCommonInfoData(key, in_value, isSetAsString);` // 共通情報の場合 (If common info) |

  **Block 3.2** — ELSE BODY (non-common info) (L1105)

  > Looks for a root separator `"/"` to handle hierarchical key patterns like `"FieldName/0/FieldB"`.

  | # | Type | Code |
  |---|------|------|
  | 1 | SET | `separaterPoint = key.indexOf("/")` // keyがルート指定("項目a/0/項目b"のような)の場合を想定し、区切り符号(ここでは"/")を検索する (Assume key is a root specification like "FieldA/0/FieldB", search for separator "/") |
  | 2 | IF | `if(separaterPoint > 0)` — 区切り文字が正しい場合 (When separator is correctly specified) |

    **Block 3.2.1** — IF BODY `(separaterPoint > 0)` (L1108)

    | # | Type | Code |
    |---|------|------|
    | 1 | SET | `keyElement = key.substring(0, separaterPoint)` |

    **Block 3.2.1.1** — IF: keyElement equals "利用開始日" (Use Start Date) (L1113)

    > Handles the String data type field "Use Start Date" (use_staymd). Supports `value`, `enable`, and `state` subkeys.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` — use_staymd_value |
    | 2 | EXEC | `setUse_staymd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、項目ID_enable setterを実行する (When subkey is "enable", run the itemID_enable setter) |
    | 4 | EXEC | `setUse_staymd_enabled((Boolean)in_value);` |
    | 5 | ELSE IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、in_valueをcastして項目ID_state setterを実行する (When subkey is "state", cast in_value and run the itemID_state setter) |
    | 6 | EXEC | `setUse_staymd_state((String)in_value);` |

    **Block 3.2.1.2** — ELSE IF: keyElement equals "顧客契約引継リスト" (Customer Contract Continuation List) (L1120)

    > Handles a data-type bean list. Parses an embedded list index from the remaining key path, validates it, and recursively calls `storeModelData` on the target list element. The key format is `"Customer Contract Continuation List/0/Brand List"`.

    | # | Type | Code |
    |---|------|------|
    | 1 | SET | `keyRemain = key.substring(separaterPoint + 1)` // keyの次の要素を取得。("プランリスト/0/プラン名"のようなパス形式から最初の"/"より後を取得) (Get the next element of key. Extract after the first "/" from path format like "Plan List/0/Plan Name") |
    | 2 | SET | `separaterPoint = keyRemain.indexOf("/")` // 次の区切り符号(ここでは"/")を検索する (Search for the next separator ("/" here)) |
    | 3 | IF | `if(separaterPoint > 0)` — 区切り番号が正しく指定された場合 (When separator is correctly specified) |

      **Block 3.2.1.2.1** — IF BODY `(separaterPoint > 0)` (L1123)

      | # | Type | Code |
      |---|------|------|
      | 1 | SET | `keyElement = keyRemain.substring(0, separaterPoint)` |
      | 2 | SET | `Integer tmpIndexInt = null` |
      | 3 | TRY-CATCH | Parse index as Integer |
      | 4 | IF | `if(tmpIndexInt != null)` — インデックス値が数値文字列の場合 (When index value is a numeric string) |

        **Block 3.2.1.2.1.A** — IF `(tmpIndexInt != null)` (L1130)

        | # | Type | Code |
        |---|------|------|
        | 1 | SET | `int tmpIndex = tmpIndexInt.intValue()` |
        | 2 | IF | `if(tmpIndex >= 0 && tmpIndex < cust_kei_hktgi_list_list.size())` — インデックス値がリスト個数-1以下の場合 (When index value is less than list count - 1) |

          **Block 3.2.1.2.1.A.1** — IF BODY (valid index) (L1133)

          > Extracts the remaining field name after the index and recursively calls `storeModelData` on the list element.

          | # | Type | Code |
          |---|------|------|
          | 1 | SET | `keyElement = keyRemain.substring(separaterPoint + 1)` // 項目名を生成 (Generate item name) |
          | 2 | CALL | `((X33VDataTypeBeanInterface)cust_kei_hktgi_list_list.get(tmpIndex)).storeModelData(keyElement, subkey, in_value, isSetAsString);` // データタイプビューンのstoreModelDataの戻り値を返す (Return the result of data-type bean's storeModelData) |

      | 3 | TRY | `tmpIndexInt = Integer.valueOf(keyElement);` |
      | 4 | CATCH | `NumberFormatException e` — インデックス値が数値文字列でない場合は、ここで再設定 (When index value is not a numeric string, reset here) |
      | 5 | SET | `tmpIndexInt = null;` (in catch block) |

    **Block 3.2.1.3** — ELSE IF: keyElement equals "異動理由リスト" (Reason for Discontinuation List) (L1142)

    > Handles a data-type bean list, structurally identical to Block 3.2.1.2 but operating on `ido_rsn_list_list` (Reason for Discontinuation List). Parses embedded index and recursively delegates.

    | # | Type | Code |
    |---|------|------|
    | 1 | SET | `keyRemain = key.substring(separaterPoint + 1)` // keyの次の要素を取得。("プランリスト/0/プラン名"のようなパス形式から最初の"/"より後を取得) (Get next element of key) |
    | 2 | SET | `separaterPoint = keyRemain.indexOf("/")` // 次の区切り符号(ここでは"/")を検索する (Search for next separator) |
    | 3 | IF | `if(separaterPoint > 0)` |

      **Block 3.2.1.3.1** — IF BODY (L1145)

      | # | Type | Code |
      |---|------|------|
      | 1 | SET | `keyElement = keyRemain.substring(0, separaterPoint)` |
      | 2 | SET | `Integer tmpIndexInt = null` |
      | 3 | TRY | `tmpIndexInt = Integer.valueOf(keyElement);` |
      | 4 | CATCH | `NumberFormatException e` |
      | 5 | SET | `tmpIndexInt = null;` |
      | 6 | IF | `if(tmpIndexInt != null)` — インデックス値が数値文字列の場合 (When index value is a numeric string) |

        **Block 3.2.1.3.1.A** — IF BODY (valid index)

        | # | Type | Code |
        |---|------|------|
        | 1 | SET | `int tmpIndex = tmpIndexInt.intValue()` |
        | 2 | IF | `if(tmpIndex >= 0 && tmpIndex < ido_rsn_list_list.size())` — インデックス値がリスト個数-1以下の場合 (When index is within list bounds) |

          **Block 3.2.1.3.1.A.1** — Recursive call

          | # | Type | Code |
          |---|------|------|
          | 1 | SET | `keyElement = keyRemain.substring(separaterPoint + 1)` |
          | 2 | CALL | `((X33VDataTypeBeanInterface)ido_rsn_list_list.get(tmpIndex)).storeModelData(keyElement, subkey, in_value, isSetAsString);` |

    **Block 3.2.1.4** — ELSE IF: keyElement equals "サービス契約番号" (Service Contract Number) (L1186)

    > Simple String field: sets `svc_kei_no_value` or `svc_kei_no_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setSvc_kei_no_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、in_valueをcastして項目ID_state setterを実行する (When subkey is "state", cast in_value and run the itemID_state setter) |
    | 4 | EXEC | `setSvc_kei_no_state((String)in_value);` |

    **Block 3.2.1.5** — ELSE IF: keyElement equals "ＳＹＳＩＤ" (SYSID) (L1193)

    > Simple String field for system ID.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setSysid_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setSysid_state((String)in_value);` |

    **Block 3.2.1.6** — ELSE IF: keyElement equals "異動区分" (Discontinuation Division) (L1200)

    > Sets `ido_div_value` / `ido_div_state`. The method also calls `setIdo_div_state` and `setIdo_div_value` as recorded in the pre-computed evidence.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setIdo_div_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setIdo_div_state((String)in_value);` |

    **Block 3.2.1.7** — ELSE IF: keyElement equals "運用日" (Operation Date) (L1207)

    > Sets `unyo_ymd_value` / `unyo_ymd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setUnyo_ymd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setUnyo_ymd_state((String)in_value);` |

    **Block 3.2.1.8** — ELSE IF: keyElement equals "運用日日時秒" (Operation Date/Time/Seconds) (L1214)

    > Sets `unyo_dtm_value` / `unyo_dtm_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setUnyo_dtm_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setUnyo_dtm_state((String)in_value);` |

    **Block 3.2.1.9** — ELSE IF: keyElement equals "サービス契約ステータス" (Service Contract Status) (L1221)

    > Sets `svc_kei_stat_value` / `svc_kei_stat_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setSvc_kei_stat_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setSvc_kei_stat_state((String)in_value);` |

    **Block 3.2.1.10** — ELSE IF: keyElement equals "申請明細番号" (Application Detail Number) (L1228)

    > Sets `mskm_dtl_no_value` / `mskm_dtl_no_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setMskm_dtl_no_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setMskm_dtl_no_state((String)in_value);` |

    **Block 3.2.1.11** — ELSE IF: keyElement equals "更新年月日時分秒（更新前）" (Update Date/Time/Seconds (Before Update)) (L1235)

    > Sets `upd_dtm_bf_value` / `upd_dtm_bf_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setUpd_dtm_bf_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setUpd_dtm_bf_state((String)in_value);` |

    **Block 3.2.1.12** — ELSE IF: keyElement equals "申請状態識別コード（承認済）" (Application Status Identification Code (Approved)) (L1242)

    > Sets `mskm_stat_skbt_cd_shonin_value` / `mskm_stat_skbt_cd_shonin_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setMskm_stat_skbt_cd_shonin_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setMskm_stat_skbt_cd_shonin_state((String)in_value);` |

    **Block 3.2.1.13** — ELSE IF: keyElement equals "申請種類コード" (Application Type Code) (L1249)

    > Sets `mskm_sbt_cd_value` / `mskm_sbt_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setMskm_sbt_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setMskm_sbt_cd_state((String)in_value);` |

    **Block 3.2.1.14** — ELSE IF: keyElement equals "オプションサービスコード" (Option Service Code) (L1256)

    > Sets `op_svc_cd_value` / `op_svc_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setOp_svc_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setOp_svc_cd_state((String)in_value);` |

    **Block 3.2.1.15** — ELSE IF: keyElement equals "オプション料金コースコード" (Option Charge Cost Code) (L1263)

    > Sets `op_pcrs_cd_value` / `op_pcrs_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setOp_pcrs_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setOp_pcrs_cd_state((String)in_value);` |

    **Block 3.2.1.16** — ELSE IF: keyElement equals "オプション料金プランコード" (Option Charge Plan Code) (L1270)

    > Sets `op_pplan_cd_value` / `op_pplan_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setOp_pplan_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setOp_pplan_cd_state((String)in_value);` |

    **Block 3.2.1.17** — ELSE IF: keyElement equals "親契約識別コード" (Parent Contract Identification Code) (L1277)

    > Sets `oya_kei_skbt_cd_value` / `oya_kei_skbt_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setOya_kei_skbt_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setOya_kei_skbt_cd_state((String)in_value);` |

    **Block 3.2.1.18** — ELSE IF: keyElement equals "事務手数料自動適用要否" (Office Handling Fee Auto-Apply Yes/No) (L1284)

    > Sets `rule0059_auto_aply_value` / `rule0059_auto_aply_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setRule0059_auto_aply_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setRule0059_auto_aply_state((String)in_value);` |

    **Block 3.2.1.19** — ELSE IF: keyElement equals "進捗メモ" (Progress Memo) (L1291)

    > Sets `prg_memo_value` / `prg_memo_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setPrg_memo_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setPrg_memo_state((String)in_value);` |

    **Block 3.2.1.20** — ELSE IF: keyElement equals "進捗ステータス" (Progress Status) (L1298)

    > Sets `prg_stat_value` / `prg_stat_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setPrg_stat_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setPrg_stat_state((String)in_value);` |

    **Block 3.2.1.21** — ELSE IF: keyElement equals "進捗特記事項１" (Progress Special Notes 1) (L1305)

    > Sets `prg_tkjk_1_value` / `prg_tkjk_1_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setPrg_tkjk_1_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setPrg_tkjk_1_state((String)in_value);` |

    **Block 3.2.1.22** — ELSE IF: keyElement equals "ネットタブオプション情報制御コード" (Net Tab Option Info Control Code) (L1312)

    > Sets `net_tab_op_if_ctl_cd_value` / `net_tab_op_if_ctl_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setNet_tab_op_if_ctl_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setNet_tab_op_if_ctl_cd_state((String)in_value);` |

    **Block 3.2.1.23** — ELSE IF: keyElement equals "異動年月日時分秒" (Discontinuation Date/Time/Seconds) (L1319)

    > Sets `ido_dtm_value` / `ido_dtm_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setIdo_dtm_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setIdo_dtm_state((String)in_value);` |

    **Block 3.2.1.24** — ELSE IF: keyElement equals "配送返品状態コード" (Delivery Return Status Code) (L1326)

    > Sets `haiso_hmpin_stat_cd_value` / `haiso_hmpin_stat_cd_state`.

    | # | Type | Code |
    |---|------|------|
    | 1 | IF | `subkey.equalsIgnoreCase("value")` |
    | 2 | EXEC | `setHaiso_hmpin_stat_cd_value((String)in_value);` |
    | 3 | ELSE IF | `subkey.equalsIgnoreCase("state")` |
    | 4 | EXEC | `setHaiso_hmpin_stat_cd_state((String)in_value);` |

**Block 4** — ELSE `(keyElement == null / not found)` (end of if-else chain, L1333)

> When none of the known keyElements match, the method silently falls through to the end with no action. No exception is thrown.

| # | Type | Code |
|---|------|------|
| 1 | SET | — (implicit, method reaches end) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `use_staymd` | Field | Use Start Date — the start date of service usage |
| `cust_kei_hktgi_list_list` | Field | Customer Contract Continuation List — list of customer contract continuation items, each a data-type bean |
| `ido_rsn_list_list` | Field | Reason for Discontinuation List — list of discontinuation reason items |
| `svc_kei_no` | Field | Service Contract Number — the primary service contract identifier |
| `svc_kei_stat` | Field | Service Contract Status — current status of the service contract |
| `sysid` | Field | SYSID (full-width character) — system ID for the service |
| `ido_div` | Field | Discontinuation Division — categorization of discontinuation type |
| `ido_dtm` | Field | Discontinuation Date/Time/Seconds — timestamp of discontinuation |
| `unyo_ymd` | Field | Operation Date — the date the operation was performed (year-month-day) |
| `unyo_dtm` | Field | Operation Date/Time/Seconds — timestamp of the operation |
| `mskm_dtl_no` | Field | Application Detail Number — internal tracking number for application line items |
| `mskm_sbt_cd` | Field | Application Type Code — classification code for application type |
| `mskm_stat_skbt_cd_shonin` | Field | Application Status Identification Code (Approved) — flag indicating the application has been approved |
| `upd_dtm_bf` | Field | Update Date/Time/Seconds (Before Update) — timestamp of the previous update |
| `op_svc_cd` | Field | Option Service Code — code identifying the option service (e.g., FTTH, Mail) |
| `op_pcrs_cd` | Field | Option Charge Cost Code — code for the option charge cost tier |
| `op_pplan_cd` | Field | Option Charge Plan Code — code for the option charge pricing plan |
| `oya_kei_skbt_cd` | Field | Parent Contract Identification Code — code identifying the parent/master contract |
| `rule0059_auto_aply` | Field | Office Handling Fee Auto-Apply Yes/No — flag for automatically applying office handling fees |
| `prg_memo` | Field | Progress Memo — free-text memo for tracking progress |
| `prg_stat` | Field | Progress Status — current status of processing progress |
| `prg_tkjk_1` | Field | Progress Special Notes 1 — first field for special progress notes |
| `net_tab_op_if_ctl_cd` | Field | Net Tab Option Info Control Code — control code for net tab option information display |
| `haiso_hmpin_stat_cd` | Field | Delivery Return Status Code — status code for delivery return (reverse logistics) |
| X33VViewBaseBean | Class | Parent framework bean from Fujitsu Futurity X33 framework providing base view-model behavior |
| X33VDataTypeList | Class | Framework list type holding `X33VDataTypeBeanInterface` elements for typed list fields |
| X33VDataTypeBeanInterface | Interface | Interface for data-type beans that implement `storeModelData` for recursive model binding |
| X33VListedBeanInterface | Interface | Framework interface for beans that support listed (repeating) data items |
| ストア (Store) | Action | The act of persisting screen data into the bean model — part of the load/store bidirectional model binding pattern |
| 共通情報ビューン | Term | Common info bean — shared infrastructure bean accessed via `"//"` prefix in the key path |
| 異動 | Term | Discontinuation / Transfer — change to a service contract (migration, cancellation) |
| 申請 | Term | Application — the act of submitting a service request (registration, modification) |
| 運用 | Term | Operation — administrative operation performed on the system |
| 配送返品 | Term | Delivery Return — reverse logistics where delivered equipment is returned |
| プラン | Term | Plan — a service plan or pricing plan (e.g., FTTH plan, option charge plan) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service offered by the telecom provider |
