# Business Logic — KKW00844SFBean.loadModelData() [332 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00844SF.KKW00844SFBean` |
| Layer | Controller / Screen Data Bean (SF = Screen Frame) |
| Module | `KKW00844SF` (Package: `eo.web.webview.KKW00844SF`) |

## 1. Role

### KKW00844SFBean.loadModelData()

This method serves as the **unified data-access gateway** for the Smart Link Premium Registration Confirmation screen (`KKW00844`). It implements a **key-based dispatch/routing pattern** that accepts a human-readable field name (`key`) and an optional property sub-key (`subkey`) and returns the corresponding screen data. It handles four distinct data access scenarios: (1) simple String, Long, or Boolean fields where `key` alone identifies the item; (2) data-type bean list fields (Customer Contract List and Movement Reason List) where `key` follows a nested path pattern like `"Customer Contract List/0/Start Date"` to access individual elements; (3) data-type bean list fields for size queries where `key` uses a wildcard `"*"` to return the list element count; and (4) shared info data fields where `key` begins with `"//"` to delegate to the parent class's `loadCommonInfoData`. The method delegates to type-specific getter methods (`*value`, `*state`, `*enabled`) for each field, making it the single entry point through which all screen-bound components retrieve their model data. It is called by the screen's own bean methods during initialization (`loadModelData()`) and during list population (`getJsflist_typelist_cust_kei_hktgi_list`, `getJsflist_typelist_ido_rsn_list`), and it is the primary mechanism the view layer uses to bind data to form fields.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL_KEY{"key == null?"}
    CHECK_NULL_KEY -->|Yes| RET_NULL_1["return null"]
    CHECK_NULL_KEY -->|No| CHECK_NULL_SUBKEY{"subkey == null?"}

    CHECK_NULL_SUBKEY -->|Yes| SET_EMPTY_SUBKEY["subkey = new String(\"\")"]
    SET_EMPTY_SUBKEY --> CHECK_COMMON_INFO
    CHECK_NULL_SUBKEY -->|No| CHECK_COMMON_INFO{"key starts with '//'
(shared info bean)?"}

    CHECK_COMMON_INFO -->|Yes| DELEGATE_COMMON["super.loadCommonInfoData(key)"]
    CHECK_COMMON_INFO -->|No| FIND_FIRST_SLASH["separaterPoint = key.indexOf('/')"]

    FIND_FIRST_SLASH --> CHECK_ROOT_PATH{"separaterPoint > 0?"}
    CHECK_ROOT_PATH -->|Yes| EXTRACT_ROOT["keyElement = key.substring(0, separaterPoint)"]
    CHECK_ROOT_PATH -->|No| SET_KEY_ELEMENT["keyElement = key"]
    EXTRACT_ROOT --> DISPATCH

    SET_KEY_ELEMENT --> DISPATCH{"Route by keyElement"}

    DISPATCH --> USE_STAYMD["Start Date
(利用開始日)"]
    DISPATCH --> CUST_LIST["Customer Contract List
(顧客契約引継リスト)"]
    DISPATCH --> IDO_LIST["Movement Reason List
(異動理由リスト)"]
    DISPATCH --> SVC_KEI_NO["Service Contract No.
(サービス契約番号)"]
    DISPATCH --> SYSID["SYSID"]
    DISPATCH --> IDO_DIV["Movement Division
(異動区分)"]
    DISPATCH --> UNYO_YMD["Operational Date
(運用日)"]
    DISPATCH --> UNYO_DTM["Operational Date/Time/Sec
(運用日时分秒)"]
    DISPATCH --> SVC_KEI_STAT["Service Contract Status
(サービス契約ステータス)"]
    DISPATCH --> MSKM_DTL_NO["Application Detail No.
(申請明細番号)"]
    DISPATCH --> UPD_DTM_BF["Update DateTime (Before)
(更新年月日時分秒（更新前）)"]
    DISPATCH --> MSKM_STAT_SHONIN["Application Status Code (Approved)
(申請状態識別コード（承認済）)"]
    DISPATCH --> MSKM_SBT_CD["Application Type Code
(申請種別コード)"]
    DISPATCH --> OP_SVC_CD["Option Service Code
(オプションサービスコード)"]
    DISPATCH --> OP_PCRS_CD["Option Price Course Code
(オプション料金コースコード)"]
    DISPATCH --> OP_PPLAN_CD["Option Price Plan Code
(オプション料金プランコード)"]
    DISPATCH --> OYA_KEI_SKBT_CD["Parent Contract ID Code
(親契約識別コード)"]
    DISPATCH --> RULE0059_AUTO["Office Task Fee Auto-Apply
(事務手数料自動適用要不要)"]
    DISPATCH --> PRG_MEMO["Progress Memo
(進捗メモ)"]
    DISPATCH --> PRG_STAT["Progress Status
(進捗ステータス)"]
    DISPATCH --> PRG_TKJK_1["Progress Special Item 1
(進捗特記事項1)"]
    DISPATCH --> NET_TAB_OP_IF_CTL["Net Tab Option Info Control Code
(ネットタブオプション情報制御コード)"]
    DISPATCH --> IDO_DTM["Movement DateTime
(異動年月日時分秒)"]
    DISPATCH --> HAISO_HMPIN["Return Status Code
(配送返品状態コード)"]
    DISPATCH --> UNKNOWN["Unknown key"]

    USE_STAYMD --> USE_STAYMD_SUB{"subkey is 'value'/'enable'/'state'?"}
    USE_STAYMD_SUB -->|value| GET_USE_STAYMD_VAL["getUse_staymd_value()"]
    USE_STAYMD_SUB -->|enable| GET_USE_STAYMD_ENA["getUse_staymd_enabled()"]
    USE_STAYMD_SUB -->|state| GET_USE_STAYMD_ST["getUse_staymd_state()"]
    USE_STAYMD_SUB -->|other| RET_NULL_2["return null"]
    GET_USE_STAYMD_VAL --> END_NODE
    GET_USE_STAYMD_ENA --> END_NODE
    GET_USE_STAYMD_ST --> END_NODE

    SVC_KEI_NO --> SVC_SUB{"subkey is 'value'/'state'?"}
    SVC_SUB -->|value| GET_SVC_VAL["getSvc_kei_no_value()"]
    SVC_SUB -->|state| GET_SVC_ST["getSvc_kei_no_state()"]
    SVC_SUB -->|other| RET_NULL_3["return null"]
    GET_SVC_VAL --> END_NODE
    GET_SVC_ST --> END_NODE

    SYSID --> SYS_SUB{"subkey is 'value'/'state'?"}
    SYS_SUB -->|value| GET_SYS_VAL["getSysid_value()"]
    SYS_SUB -->|state| GET_SYS_ST["getSysid_state()"]
    SYS_SUB -->|other| RET_NULL_4["return null"]
    GET_SYS_VAL --> END_NODE
    GET_SYS_ST --> END_NODE

    IDO_DIV --> IDO_D_SUB{"subkey is 'value'/'state'?"}
    IDO_D_SUB -->|value| GET_IDO_D_VAL["getIdo_div_value()"]
    IDO_D_SUB -->|state| GET_IDO_D_ST["getIdo_div_state()"]
    IDO_D_SUB -->|other| RET_NULL_5["return null"]
    GET_IDO_D_VAL --> END_NODE
    GET_IDO_D_ST --> END_NODE

    UNYO_YMD --> UN_YM_SUB{"subkey is 'value'/'state'?"}
    UN_YM_SUB -->|value| GET_UN_YM_VAL["getUnyo_ymd_value()"]
    UN_YM_SUB -->|state| GET_UN_YM_ST["getUnyo_ymd_state()"]
    UN_YM_SUB -->|other| RET_NULL_6["return null"]
    GET_UN_YM_VAL --> END_NODE
    GET_UN_YM_ST --> END_NODE

    UNYO_DTM --> UN_DT_SUB{"subkey is 'value'/'state'?"}
    UN_DT_SUB -->|value| GET_UN_DT_VAL["getUnyo_dtm_value()"]
    UN_DT_SUB -->|state| GET_UN_DT_ST["getUnyo_dtm_state()"]
    UN_DT_SUB -->|other| RET_NULL_7["return null"]
    GET_UN_DT_VAL --> END_NODE
    GET_UN_DT_ST --> END_NODE

    SVC_KEI_STAT --> SKS_SUB{"subkey is 'value'/'state'?"}
    SKS_SUB -->|value| GET_SKS_VAL["getSvc_kei_stat_value()"]
    SKS_SUB -->|state| GET_SKS_ST["getSvc_kei_stat_state()"]
    SKS_SUB -->|other| RET_NULL_8["return null"]
    GET_SKS_VAL --> END_NODE
    GET_SKS_ST --> END_NODE

    MSKM_DTL_NO --> MSK_SUB{"subkey is 'value'/'state'?"}
    MSK_SUB -->|value| GET_MDK_VAL["getMskm_dtl_no_value()"]
    MSK_SUB -->|state| GET_MDK_ST["getMskm_dtl_no_state()"]
    MSK_SUB -->|other| RET_NULL_9["return null"]
    GET_MDK_VAL --> END_NODE
    GET_MDK_ST --> END_NODE

    UPD_DTM_BF --> UPD_SUB{"subkey is 'value'/'state'?"}
    UPD_SUB -->|value| GET_UPD_VAL["getUpd_dtm_bf_value()"]
    UPD_SUB -->|state| GET_UPD_ST["getUpd_dtm_bf_state()"]
    UPD_SUB -->|other| RET_NULL_10["return null"]
    GET_UPD_VAL --> END_NODE
    GET_UPD_ST --> END_NODE

    MSKM_STAT_SHONIN --> MSS_SUB{"subkey is 'value'/'state'?"}
    MSS_SUB -->|value| GET_MSS_VAL["getMskm_stat_skbt_cd_shonin_value()"]
    MSS_SUB -->|state| GET_MSS_ST["getMskm_stat_skbt_cd_shonin_state()"]
    MSS_SUB -->|other| RET_NULL_11["return null"]
    GET_MSS_VAL --> END_NODE
    GET_MSS_ST --> END_NODE

    MSKM_SBT_CD --> MSB_SUB{"subkey is 'value'/'state'?"}
    MSB_SUB -->|value| GET_MSB_VAL["getMskm_sbt_cd_value()"]
    MSB_SUB -->|state| GET_MSB_ST["getMskm_sbt_cd_state()"]
    MSB_SUB -->|other| RET_NULL_12["return null"]
    GET_MSB_VAL --> END_NODE
    GET_MSB_ST --> END_NODE

    OP_SVC_CD --> OPS_SUB{"subkey is 'value'/'state'?"}
    OPS_SUB -->|value| GET_OPS_VAL["getOp_svc_cd_value()"]
    OPS_SUB -->|state| GET_OPS_ST["getOp_svc_cd_state()"]
    OPS_SUB -->|other| RET_NULL_13["return null"]
    GET_OPS_VAL --> END_NODE
    GET_OPS_ST --> END_NODE

    OP_PCRS_CD --> OPC_SUB{"subkey is 'value'/'state'?"}
    OPC_SUB -->|value| GET_OPC_VAL["getOp_pcrs_cd_value()"]
    OPC_SUB -->|state| GET_OPC_ST["getOp_pcrs_cd_state()"]
    OPC_SUB -->|other| RET_NULL_14["return null"]
    GET_OPC_VAL --> END_NODE
    GET_OPC_ST --> END_NODE

    OP_PPLAN_CD --> OPP_SUB{"subkey is 'value'/'state'?"}
    OPP_SUB -->|value| GET_OPP_VAL["getOp_pplan_cd_value()"]
    OPP_SUB -->|state| GET_OPP_ST["getOp_pplan_cd_state()"]
    OPP_SUB -->|other| RET_NULL_15["return null"]
    GET_OPP_VAL --> END_NODE
    GET_OPP_ST --> END_NODE

    OYA_KEI_SKBT_CD --> OKS_SUB{"subkey is 'value'/'state'?"}
    OKS_SUB -->|value| GET_OKS_VAL["getOya_kei_skbt_cd_value()"]
    OKS_SUB -->|state| GET_OKS_ST["getOya_kei_skbt_cd_state()"]
    OKS_SUB -->|other| RET_NULL_16["return null"]
    GET_OKS_VAL --> END_NODE
    GET_OKS_ST --> END_NODE

    RULE0059_AUTO --> R0059_SUB{"subkey is 'value'/'state'?"}
    R0059_SUB -->|value| GET_R0059_VAL["getRule0059_auto_aply_value()"]
    R0059_SUB -->|state| GET_R0059_ST["getRule0059_auto_aply_state()"]
    R0059_SUB -->|other| RET_NULL_17["return null"]
    GET_R0059_VAL --> END_NODE
    GET_R0059_ST --> END_NODE

    PRG_MEMO --> PM_SUB{"subkey is 'value'/'state'?"}
    PM_SUB -->|value| GET_PM_VAL["getPrg_memo_value()"]
    PM_SUB -->|state| GET_PM_ST["getPrg_memo_state()"]
    PM_SUB -->|other| RET_NULL_18["return null"]
    GET_PM_VAL --> END_NODE
    GET_PM_ST --> END_NODE

    PRG_STAT --> PS_SUB{"subkey is 'value'/'state'?"}
    PS_SUB -->|value| GET_PS_VAL["getPrg_stat_value()"]
    PS_SUB -->|state| GET_PS_ST["getPrg_stat_state()"]
    PS_SUB -->|other| RET_NULL_19["return null"]
    GET_PS_VAL --> END_NODE
    GET_PS_ST --> END_NODE

    PRG_TKJK_1 --> PT1_SUB{"subkey is 'value'/'state'?"}
    PT1_SUB -->|value| GET_PT1_VAL["getPrg_tkjk_1_value()"]
    PT1_SUB -->|state| GET_PT1_ST["getPrg_tkjk_1_state()"]
    PT1_SUB -->|other| RET_NULL_20["return null"]
    GET_PT1_VAL --> END_NODE
    GET_PT1_ST --> END_NODE

    NET_TAB_OP_IF_CTL --> NTO_SUB{"subkey is 'value'/'state'?"}
    NTO_SUB -->|value| GET_NTO_VAL["getNet_tab_op_if_ctl_cd_value()"]
    NTO_SUB -->|state| GET_NTO_ST["getNet_tab_op_if_ctl_cd_state()"]
    NTO_SUB -->|other| RET_NULL_21["return null"]
    GET_NTO_VAL --> END_NODE
    GET_NTO_ST --> END_NODE

    IDO_DTM --> ID_SUB{"subkey is 'value'/'state'?"}
    ID_SUB -->|value| GET_ID_VAL["getIdo_dtm_value()"]
    ID_SUB -->|state| GET_ID_ST["getIdo_dtm_state()"]
    ID_SUB -->|other| RET_NULL_22["return null"]
    GET_ID_VAL --> END_NODE
    GET_ID_ST --> END_NODE

    HAISO_HMPIN --> HH_SUB{"subkey is 'value'/'state'?"}
    HH_SUB -->|value| GET_HH_VAL["getHaiso_hmpin_stat_cd_value()"]
    HH_SUB -->|state| GET_HH_ST["getHaiso_hmpin_stat_cd_state()"]
    HH_SUB -->|other| RET_NULL_23["return null"]
    GET_HH_VAL --> END_NODE
    GET_HH_ST --> END_NODE

    RET_NULL_1 --> END_NODE
    RET_NULL_2 --> END_NODE
    RET_NULL_3 --> END_NODE
    RET_NULL_4 --> END_NODE
    RET_NULL_5 --> END_NODE
    RET_NULL_6 --> END_NODE
    RET_NULL_7 --> END_NODE
    RET_NULL_8 --> END_NODE
    RET_NULL_9 --> END_NODE
    RET_NULL_10 --> END_NODE
    RET_NULL_11 --> END_NODE
    RET_NULL_12 --> END_NODE
    RET_NULL_13 --> END_NODE
    RET_NULL_14 --> END_NODE
    RET_NULL_15 --> END_NODE
    RET_NULL_16 --> END_NODE
    RET_NULL_17 --> END_NODE
    RET_NULL_18 --> END_NODE
    RET_NULL_19 --> END_NODE
    RET_NULL_20 --> END_NODE
    RET_NULL_21 --> END_NODE
    RET_NULL_22 --> END_NODE
    RET_NULL_23 --> END_NODE
    DELEGATE_COMMON --> END_NODE
    UNKNOWN --> END_NODE(["Return / Next"])

    CUST_LIST --> CUST_PARSE["Parse key path: keyRemain = key.substring(separaterPoint+1)"]
    CUST_PARSE --> CUST_WILD{"keyRemain == '*'?"}
    CUST_WILD -->|Yes| CUST_SIZE["return cust_kei_hktgi_list_list.size()"]
    CUST_WILD -->|No| CUST_FIND_SLASH["separaterPoint = keyRemain.indexOf('/')"]
    CUST_FIND_SLASH --> CUST_SLASH_OK{"separaterPoint > 0?"}
    CUST_SLASH_OK -->|No| CUST_RET_NULL["return null"]
    CUST_SLASH_OK -->|Yes| CUST_IDX_STR["keyElement = keyRemain.substring(0, separaterPoint)"]
    CUST_IDX_STR --> CUST_IDX_PARSE["tmpIndexInt = Integer.valueOf(keyElement)"]
    CUST_IDX_PARSE --> CUST_IDX_TRY{"parseInt succeeds?"}
    CUST_IDX_TRY -->|No| CUST_RET_NULL_2["return null"]
    CUST_IDX_TRY -->|Yes| CUST_BOUNDS{"0 <= tmpIndex < list.size()?"}
    CUST_BOUNDS -->|No| CUST_RET_NULL_3["return null"]
    CUST_BOUNDS -->|Yes| CUST_REMAIN["keyElement = keyRemain.substring(separaterPoint+1)"]
    CUST_REMAIN --> CUST_CALL["cast(element, X33VDataTypeBeanInterface).loadModelData(keyElement, subkey)"]
    CUST_RET_NULL --> END_NODE
    CUST_RET_NULL_2 --> END_NODE
    CUST_RET_NULL_3 --> END_NODE
    CUST_SIZE --> END_NODE
    CUST_CALL --> END_NODE

    IDO_LIST --> IDO_PARSE["Parse key path: keyRemain = key.substring(separaterPoint+1)"]
    IDO_PARSE --> IDO_WILD{"keyRemain == '*'?"}
    IDO_WILD -->|Yes| IDO_SIZE["return ido_rsn_list_list.size()"]
    IDO_WILD -->|No| IDO_FIND_SLASH["separaterPoint = keyRemain.indexOf('/')"]
    IDO_FIND_SLASH --> IDO_SLASH_OK{"separaterPoint > 0?"}
    IDO_SLASH_OK -->|No| IDO_RET_NULL["return null"]
    IDO_SLASH_OK -->|Yes| IDO_IDX_STR["keyElement = keyRemain.substring(0, separaterPoint)"]
    IDO_IDX_STR --> IDO_IDX_PARSE["tmpIndexInt = Integer.valueOf(keyElement)"]
    IDO_IDX_PARSE --> IDO_IDX_TRY{"parseInt succeeds?"}
    IDO_IDX_TRY -->|No| IDO_RET_NULL_2["return null"]
    IDO_IDX_TRY -->|Yes| IDO_BOUNDS{"0 <= tmpIndex < list.size()?"}
    IDO_BOUNDS -->|No| IDO_RET_NULL_3["return null"]
    IDO_BOUNDS -->|Yes| IDO_REMAIN["keyElement = keyRemain.substring(separaterPoint+1)"]
    IDO_REMAIN --> IDO_CALL["cast(element, X33VDataTypeBeanInterface).loadModelData(keyElement, subkey)"]
    IDO_RET_NULL --> END_NODE
    IDO_RET_NULL_2 --> END_NODE
    IDO_RET_NULL_3 --> END_NODE
    IDO_SIZE --> END_NODE
    IDO_CALL --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The business field identifier used to locate data. Can be a simple field name (e.g., "Start Date", "Service Contract No."), a nested path for list items (e.g., "Customer Contract List/0/Start Date"), a wildcard path for list size queries (e.g., "Customer Contract List/*"), or a special shared-info path starting with "//". Determines which data accessor branch is executed. |
| 2 | `subkey` | `String` | A sub-property selector within a field. For simple fields, it specifies which aspect to return: `"value"` for the field's data value, `"state"` for the field's UI state (enabled/disabled), or `"enable"` for boolean enablement (used by "Start Date"). Case-insensitive matching. For list item fields, only `"value"` and `"state"` are supported. |

**Instance fields read by this method:**
| Field | Type | Business Description |
|-------|------|---------------------|
| `cust_kei_hktgi_list_list` | `List` | Customer Contract List — list of contract inheritance records in the Smart Link Premium registration |
| `ido_rsn_list_list` | `List` | Movement Reason List — list of reasons for service transfer/change |

## 4. CRUD Operations / Called Services

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

No SC (Service Component) or CBS (Common Business Service) calls are made. All called methods are intra-bean getters.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `super.loadCommonInfoData` | - | - | Delegates to parent class for shared info bean data retrieval |
| R | `KKW00844SFBean.getUse_staymd_value` | - | - | Retrieves Start Date field value |
| R | `KKW00844SFBean.getUse_staymd_enabled` | - | - | Retrieves Start Date field enabled state |
| R | `KKW00844SFBean.getUse_staymd_state` | - | - | Retrieves Start Date field UI state |
| R | `KKW00844SFBean.getSvc_kei_no_value` | - | - | Retrieves Service Contract Number value |
| R | `KKW00844SFBean.getSvc_kei_no_state` | - | - | Retrieves Service Contract Number UI state |
| R | `KKW00844SFBean.getSysid_value` | - | - | Retrieves SYSID value |
| R | `KKW00844SFBean.getSysid_state` | - | - | Retrieves SYSID UI state |
| R | `KKW00844SFBean.getIdo_div_value` | - | - | Retrieves Movement Division value |
| R | `KKW00844SFBean.getIdo_div_state` | - | - | Retrieves Movement Division UI state |
| R | `KKW00844SFBean.getUnyo_ymd_value` | - | - | Retrieves Operational Date value |
| R | `KKW00844SFBean.getUnyo_ymd_state` | - | - | Retrieves Operational Date UI state |
| R | `KKW00844SFBean.getUnyo_dtm_value` | - | - | Retrieves Operational Date/Time/Sec value |
| R | `KKW00844SFBean.getUnyo_dtm_state` | - | - | Retrieves Operational Date/Time/Sec UI state |
| R | `KKW00844SFBean.getSvc_kei_stat_value` | - | - | Retrieves Service Contract Status value |
| R | `KKW00844SFBean.getSvc_kei_stat_state` | - | - | Retrieves Service Contract Status UI state |
| R | `KKW00844SFBean.getMskm_dtl_no_value` | - | - | Retrieves Application Detail Number value |
| R | `KKW00844SFBean.getMskm_dtl_no_state` | - | - | Retrieves Application Detail Number UI state |
| R | `KKW00844SFBean.getUpd_dtm_bf_value` | - | - | Retrieves Update DateTime (Before) value |
| R | `KKW00844SFBean.getUpd_dtm_bf_state` | - | - | Retrieves Update DateTime (Before) UI state |
| R | `KKW00844SFBean.getMskm_stat_skbt_cd_shonin_value` | - | - | Retrieves Application Status Code (Approved) value |
| R | `KKW00844SFBean.getMskm_stat_skbt_cd_shonin_state` | - | - | Retrieves Application Status Code (Approved) UI state |
| R | `KKW00844SFBean.getMskm_sbt_cd_value` | - | - | Retrieves Application Type Code value |
| R | `KKW00844SFBean.getMskm_sbt_cd_state` | - | - | Retrieves Application Type Code UI state |
| R | `KKW00844SFBean.getOp_svc_cd_value` | - | - | Retrieves Option Service Code value |
| R | `KKW00844SFBean.getOp_svc_cd_state` | - | - | Retrieves Option Service Code UI state |
| R | `KKW00844SFBean.getOp_pcrs_cd_value` | - | - | Retrieves Option Price Course Code value |
| R | `KKW00844SFBean.getOp_pcrs_cd_state` | - | - | Retrieves Option Price Course Code UI state |
| R | `KKW00844SFBean.getOp_pplan_cd_value` | - | - | Retrieves Option Price Plan Code value |
| R | `KKW00844SFBean.getOp_pplan_cd_state` | - | - | Retrieves Option Price Plan Code UI state |
| R | `KKW00844SFBean.getOya_kei_skbt_cd_value` | - | - | Retrieves Parent Contract ID Code value |
| R | `KKW00844SFBean.getOya_kei_skbt_cd_state` | - | - | Retrieves Parent Contract ID Code UI state |
| R | `KKW00844SFBean.getRule0059_auto_aply_value` | - | - | Retrieves Office Task Fee Auto-Apply value |
| R | `KKW00844SFBean.getRule0059_auto_aply_state` | - | - | Retrieves Office Task Fee Auto-Apply UI state |
| R | `KKW00844SFBean.getPrg_memo_value` | - | - | Retrieves Progress Memo value |
| R | `KKW00844SFBean.getPrg_memo_state` | - | - | Retrieves Progress Memo UI state |
| R | `KKW00844SFBean.getPrg_stat_value` | - | - | Retrieves Progress Status value |
| R | `KKW00844SFBean.getPrg_stat_state` | - | - | Retrieves Progress Status UI state |
| R | `KKW00844SFBean.getPrg_tkjk_1_value` | - | - | Retrieves Progress Special Item 1 value |
| R | `KKW00844SFBean.getPrg_tkjk_1_state` | - | - | Retrieves Progress Special Item 1 UI state |
| R | `KKW00844SFBean.getNet_tab_op_if_ctl_cd_value` | - | - | Retrieves Net Tab Option Info Control Code value |
| R | `KKW00844SFBean.getNet_tab_op_if_ctl_cd_state` | - | - | Retrieves Net Tab Option Info Control Code UI state |
| R | `KKW00844SFBean.getIdo_dtm_value` | - | - | Retrieves Movement DateTime value |
| R | `KKW00844SFBean.getIdo_dtm_state` | - | - | Retrieves Movement DateTime UI state |
| R | `KKW00844SFBean.getHaiso_hmpin_stat_cd_value` | - | - | Retrieves Return Status Code value |
| R | `KKW00844SFBean.getHaiso_hmpin_stat_cd_state` | - | - | Retrieves Return Status Code UI state |
| R | `X33VDataTypeBeanInterface.loadModelData` | - | - | Recursive call into data-type bean list element for nested field access (Customer Contract List / Movement Reason List) |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 3 methods.
Terminal operations from this method: `getHaiso_hmpin_stat_cd_state` [R], `getHaiso_hmpin_stat_cd_value` [R], `getIdo_dtm_state` [R], `getIdo_dtm_value` [R], `getNet_tab_op_if_ctl_cd_state` [R], `getNet_tab_op_if_ctl_cd_value` [R], `getPrg_tkjk_1_state` [R], `getPrg_tkjk_1_value` [R], `getPrg_stat_state` [R], `getPrg_stat_value` [R], `getPrg_memo_state` [R], `getPrg_memo_value` [R], `getRule0059_auto_aply_state` [R], `getRule0059_auto_aply_value` [R], `getOya_kei_skbt_cd_state` [R], `getOya_kei_skbt_cd_value` [R], `getOp_pplan_cd_state` [R], `getOp_pplan_cd_value` [R], `getOp_pcrs_cd_state` [R], `getOp_pcrs_cd_value` [R]  # NOSONAR

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `KKW00844SFBean.getJsflist_typelist_cust_kei_hktgi_list()` | Direct caller within same bean — invoked to populate the Customer Contract List with field data via `loadModelData` | All 45 `getXxx_value` / `getXxx_state` getters listed above |
| 2 | Method: `KKW00844SFBean.getJsflist_typelist_ido_rsn_list()` | Direct caller within same bean — invoked to populate the Movement Reason List with field data via `loadModelData` | All 45 `getXxx_value` / `getXxx_state` getters listed above |
| 3 | Method: `KKW00844SFBean.loadModelData()` (overloaded, no-arg version) | Direct caller within same bean — initialization entry point that calls `loadModelData(key, subkey)` for default field loading | All 45 `getXxx_value` / `getXxx_state` getters listed above |
| 4 | Method: `KKW00844SFBean.loadModelData()` (overloaded, no-arg version) | Direct caller within same bean — second invocation during initialization | All 45 `getXxx_value` / `getXxx_state` getters listed above |

**Screen Context:** This method belongs to the Smart Link Premium Registration Confirmation screen (`KKW00844`), as defined in `JKKScreenConst.SCREEN_ID_KKW00844 = "KKW00844"` and `JKKScreenConst.SCREEN_NAME_KKW00844 = "スマートリンクプレミアム登録確認"`.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null key check) (L725)

> If `key` is null, return null immediately.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null)` |
| 2 | RETURN | `return null;` |

**Block 2** — ELSE IF (null subkey normalization) (L732)

> If `subkey` is null, normalize it to an empty string to ensure downstream string operations don't throw.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (subkey == null)` |
| 2 | SET | `subkey = new String("");` |

**Block 3** — IF (shared info bean check) (L738)

> Check if `key` starts with `"//"` which indicates a shared info bean data access. The Japanese comment reads: "共有情報処理" (Shared info processing).

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("//");` // Check if key is a shared info bean spec |
| 2 | IF | `if (separaterPoint == 0)` |
| 3 | CALL | `super.loadCommonInfoData(key)` // Delegate to parent class for shared info data |

**Block 4** — IF/ELSE (root path extraction) (L744)

> Extract the first element of `key` by finding the first "/" separator. If no "/" is found, the entire `key` is treated as a simple field name. The Japanese comment reads: "keyの値の最初の要素を取得" (Get the first element of the key value).

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/");` // Check if key has a root path (e.g., "FieldA/0/FieldB") |
| 2 | IF | `if (separaterPoint > 0)` |
| 3 | SET | `keyElement = key.substring(0, separaterPoint);` // Extract first path segment |
| 4 | ELSE | `else { keyElement = key; }` // No path — use entire key as simple field name |

**Block 5** — IF (Start Date — String data type) (L751)

> Dispatch to "Start Date" (利用開始日) field. This is a String data type field with 3 sub-properties: `value`, `enable`, and `state`. The Japanese comment reads: "データタイプが String の項目'利用開始日'(項目ID:use_staymd)" (Data type is String field 'Start Date' (item ID: use_staymd)).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("利用開始日"))` [USE_STAYMD = "利用開始日"] |
| 2 | IF-ELSE IF | `if (subkey.equalsIgnoreCase("value"))` → `getUse_staymd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("enable"))` → `getUse_staymd_enabled()` // Return field ID enable getter |
| 4 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getUse_staymd_state()` // Return status |

**Block 6** — IF (Customer Contract List — data-type bean list) (L763)

> Dispatch to "Customer Contract List" (顧客契約引継リスト). This is a data-type bean list field supporting: (1) list size query with `"*"` wildcard, (2) indexed element access via `"Index/SubField"`, (3) recursive `loadModelData` call into the element's bean. The Japanese comment reads: "データタイプがデータタイプビーン型の項目'顧客契約引継リスト'(項目ID:cust_kei_hktgi_list)" (Data type is data-type bean field 'Customer Contract List' (item ID: cust_kei_hktgi_list)).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("顧客契約引継リスト"))` [CUST_KEI_HKTGI_LIST = "顧客契約引継リスト"] |
| 2 | SET | `String keyRemain = key.substring(separaterPoint + 1);` // Get remainder after first "/" |
| 3 | IF | `if (keyRemain.equals("*"))` → `return Integer.valueOf(cust_kei_hktgi_list_list.size());` // Return list element count |
| 4 | SET | `separaterPoint = keyRemain.indexOf("/");` // Find next separator |
| 5 | IF | `if (separaterPoint <= 0)` → `return null;` // No separator found or invalid |
| 6 | SET | `keyElement = keyRemain.substring(0, separaterPoint);` // Extract index string |
| 7 | TRY | `tmpIndexInt = Integer.valueOf(keyElement);` |
| 8 | CATCH | `catch (NumberFormatException e)` → `return null;` // Invalid index string |
| 9 | IF | `if (tmpIndexInt == null)` → `return null;` |
| 10 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 11 | IF | `if (tmpIndex < 0 || tmpIndex >= cust_kei_hktgi_list_list.size())` → `return null;` // Out of bounds |
| 12 | SET | `keyElement = keyRemain.substring(separaterPoint + 1);` // Extract sub-field name |
| 13 | CALL | `((X33VDataTypeBeanInterface)cust_kei_hktgi_list_list.get(tmpIndex)).loadModelData(keyElement, subkey)` // Recursive dispatch into list element |

**Block 7** — IF (Movement Reason List — data-type bean list) (L812)

> Dispatch to "Movement Reason List" (異動理由リスト). Same pattern as Block 6: supports size query, indexed access, and recursive dispatch. The Japanese comment reads: "データタイプがデータタイプビーン型の項目'異動理由リスト'(項目ID:ido_rsn_list)" (Data type is data-type bean field 'Movement Reason List' (item ID: ido_rsn_list)).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("異動理由リスト"))` [IDO_RSN_LIST = "異動理由リスト"] |
| 2 | SET | `String keyRemain = key.substring(separaterPoint + 1);` |
| 3 | IF | `if (keyRemain.equals("*"))` → `return Integer.valueOf(ido_rsn_list_list.size());` |
| 4 | SET | `separaterPoint = keyRemain.indexOf("/");` |
| 5 | IF | `if (separaterPoint <= 0)` → `return null;` |
| 6 | SET | `keyElement = keyRemain.substring(0, separaterPoint);` |
| 7 | TRY | `tmpIndexInt = Integer.valueOf(keyElement);` |
| 8 | CATCH | `catch (NumberFormatException e)` → `return null;` |
| 9 | IF | `if (tmpIndexInt == null)` → `return null;` |
| 10 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 11 | IF | `if (tmpIndex < 0 || tmpIndex >= ido_rsn_list_list.size())` → `return null;` |
| 12 | SET | `keyElement = keyRemain.substring(separaterPoint + 1);` |
| 13 | CALL | `((X33VDataTypeBeanInterface)ido_rsn_list_list.get(tmpIndex)).loadModelData(keyElement, subkey)` |

**Block 8** — IF (Service Contract No. — String) (L861)

> Dispatch to "Service Contract Number" (サービス契約番号). Supports `value` and `state` sub-keys. The Japanese comment reads: "データタイプが String の項目'サービス契約番号'(項目ID:svc_kei_no)" (Data type is String field 'Service Contract Number' (item ID: svc_kei_no)).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("サービス契約番号"))` [SVC_KEI_NO = "サービス契約番号"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getSvc_kei_no_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getSvc_kei_no_state()` // Return status |

**Block 9** — IF (SYSID — String) (L871)

> Dispatch to "SYSID" (SYSID). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("SYSID"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getSysid_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getSysid_state()` |

**Block 10** — IF (Movement Division — String) (L881)

> Dispatch to "Movement Division" (異動区分). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("異動区分"))` [IDO_DIV = "異動区分"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getIdo_div_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getIdo_div_state()` |

**Block 11** — IF (Operational Date — String) (L891)

> Dispatch to "Operational Date" (運用日). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("運用日"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getUnyo_ymd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getUnyo_ymd_state()` |

**Block 12** — IF (Operational Date/Time/Sec — String) (L901)

> Dispatch to "Operational Date/Time/Sec" (運用日时分秒). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("運用日时分秒"))` [UNYO_DTM = "運用日时分秒"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getUnyo_dtm_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getUnyo_dtm_state()` |

**Block 13** — IF (Service Contract Status — String) (L911)

> Dispatch to "Service Contract Status" (サービス契約ステータス). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("サービス契約ステータス"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getSvc_kei_stat_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getSvc_kei_stat_state()` |

**Block 14** — IF (Application Detail No. — String) (L921)

> Dispatch to "Application Detail Number" (申請明細番号). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("申請明細番号"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getMskm_dtl_no_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getMskm_dtl_no_state()` |

**Block 15** — IF (Update DateTime Before — String) (L931)

> Dispatch to "Update DateTime (Before)" (更新年月日時分秒（更新前）). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("更新年月日時分秒（更新前）"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getUpd_dtm_bf_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getUpd_dtm_bf_state()` |

**Block 16** — IF (Application Status Code Approved — String) (L941)

> Dispatch to "Application Status Code (Approved)" (申請状態識別コード（承認済）). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("申請状態識別コード（承認済）"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getMskm_stat_skbt_cd_shonin_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getMskm_stat_skbt_cd_shonin_state()` |

**Block 17** — IF (Application Type Code — String) (L951)

> Dispatch to "Application Type Code" (申請種別コード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("申請種別コード"))` [MSKM_SBT_CD = "申請種別コード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getMskm_sbt_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getMskm_sbt_cd_state()` |

**Block 18** — IF (Option Service Code — String) (L961)

> Dispatch to "Option Service Code" (オプションサービスコード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("オプションサービスコード"))` [OP_SVC_CD = "オプションサービスコード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getOp_svc_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getOp_svc_cd_state()` |

**Block 19** — IF (Option Price Course Code — String) (L971)

> Dispatch to "Option Price Course Code" (オプション料金コースコード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("オプション料金コースコード"))` [OP_PCRS_CD = "オプション料金コースコード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getOp_pcrs_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getOp_pcrs_cd_state()` |

**Block 20** — IF (Option Price Plan Code — String) (L981)

> Dispatch to "Option Price Plan Code" (オプション料金プランコード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("オプション料金プランコード"))` [OP_PPLAN_CD = "オプション料金プランコード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getOp_pplan_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getOp_pplan_cd_state()` |

**Block 21** — IF (Parent Contract ID Code — String) (L991)

> Dispatch to "Parent Contract ID Code" (親契約識別コード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("親契約識別コード"))` [OYA_KEI_SKBT_CD = "親契約識別コード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getOya_kei_skbt_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getOya_kei_skbt_cd_state()` |

**Block 22** — IF (Office Task Fee Auto-Apply — String) (L1001)

> Dispatch to "Office Task Fee Auto-Apply" (事務手数料自動適用要不要). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("事務手数料自動適用要不要"))` [RULE0059_AUTO_APPLY = "事務手数料自動適用要不要"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getRule0059_auto_aply_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getRule0059_auto_aply_state()` |

**Block 23** — IF (Progress Memo — String) (L1011)

> Dispatch to "Progress Memo" (進捗メモ). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("進捗メモ"))` [PRG_MEMO = "進捗メモ"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getPrg_memo_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getPrg_memo_state()` |

**Block 24** — IF (Progress Status — String) (L1021)

> Dispatch to "Progress Status" (進捗ステータス). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("進捗ステータス"))` [PRG_STAT = "進捗ステータス"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getPrg_stat_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getPrg_stat_state()` |

**Block 25** — IF (Progress Special Item 1 — String) (L1031)

> Dispatch to "Progress Special Item 1" (進捗特記事項1). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("進捗特記事項1"))` [PRG_TKJK_1 = "進捗特記事項1"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getPrg_tkjk_1_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getPrg_tkjk_1_state()` |

**Block 26** — IF (Net Tab Option Info Control Code — String) (L1041)

> Dispatch to "Net Tab Option Info Control Code" (ネットタブオプション情報制御コード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("ネットタブオプション情報制御コード"))` [NET_TAB_OP_IF_CTL_CD = "ネットタブオプション情報制御コード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getNet_tab_op_if_ctl_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getNet_tab_op_if_ctl_cd_state()` |

**Block 27** — IF (Movement DateTime — String) (L1051)

> Dispatch to "Movement DateTime" (異動年月日時分秒). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("異動年月日時分秒"))` [IDO_DTM = "異動年月日時分秒"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getIdo_dtm_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getIdo_dtm_state()` |

**Block 28** — IF (Return Status Code — String) (L1061)

> Dispatch to "Return Status Code" (配送返品状態コード). Supports `value` and `state` sub-keys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (keyElement.equals("配送返品状態コード"))` [HAISO_HMPIN_STAT_CD = "配送返品状態コード"] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` → `getHaiso_hmpin_stat_cd_value()` |
| 3 | IF-ELSE IF | `else if (subkey.equalsIgnoreCase("state"))` → `getHaiso_hmpin_stat_cd_state()` |

**Block 29** — ELSE (unknown field) (L1070)

> If none of the known field names match, fall through to the implicit `return null;` at the end of the method.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // Unknown keyElement — implicit fallback |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `利用開始日` (Use_staymd) | Field | Start Date — the date when the customer's service usage begins |
| `顧客契約引継リスト` (cust_kei_hktgi_list) | Field | Customer Contract List — list of customer contract inheritance records transferred during Smart Link Premium registration |
| `異動理由リスト` (ido_rsn_list) | Field | Movement Reason List — list of reasons for service transfer/change |
| `サービス契約番号` (svc_kei_no) | Field | Service Contract Number — unique identifier for the customer's service contract |
| `SYSID` | Field | System ID — internal system identifier |
| `異動区分` (ido_div) | Field | Movement Division — classification code for the type of service movement |
| `運用日` (unyo_ymd) | Field | Operational Date — the date of the business operation/transaction |
| `運用日时分秒` (unyo_dtm) | Field | Operational Date/Time/Sec — full timestamp of the business operation |
| `サービス契約ステータス` (svc_kei_stat) | Field | Service Contract Status — current status of the service contract (active, terminated, etc.) |
| `申請明細番号` (mskm_dtl_no) | Field | Application Detail Number — unique ID for a specific line item in a service application |
| `更新年月日時分秒（更新前）` (upd_dtm_bf) | Field | Update DateTime (Before) — timestamp of the previous update to the record |
| `申請状態識別コード（承認済）` (mskm_stat_skbt_cd_shonin) | Field | Application Status Code (Approved) — code indicating the application has been approved |
| `申請種別コード` (mskm_sbt_cd) | Field | Application Type Code — classification of the application type |
| `オプションサービスコード` (op_svc_cd) | Field | Option Service Code — code identifying an optional service attached to the main service |
| `オプション料金コースコード` (op_pcrs_cd) | Field | Option Price Course Code — code for the pricing course of an option service |
| `オプション料金プランコード` (op_pplan_cd) | Field | Option Price Plan Code — code for the pricing plan of an option service |
| `親契約識別コード` (oya_kei_skbt_cd) | Field | Parent Contract ID Code — identifier for the parent/master contract when this is a sub-contract |
| `事務手数料自動適用要不要` (rule0059_auto_aply) | Field | Office Task Fee Auto-Apply — flag indicating whether office task fees are automatically applied |
| `進捗メモ` (prg_memo) | Field | Progress Memo — free-text notes on the progress of the registration |
| `進捗ステータス` (prg_stat) | Field | Progress Status — current status of the registration progress |
| `進捗特記事項1` (prg_tkjk_1) | Field | Progress Special Item 1 — special note field for progress tracking |
| `ネットタブオプション情報制御コード` (net_tab_op_if_ctl_cd) | Field | Net Tab Option Info Control Code — control code for displaying option info in the Net tab |
| `異動年月日時分秒` (ido_dtm) | Field | Movement DateTime — timestamp of when the service movement occurred |
| `配送返品状態コード` (haiso_hmpin_stat_cd) | Field | Return Status Code — status code for shipping/return of equipment |
| `keyElement` | Field | Parsed field name — the first segment of the key path after splitting by "/" |
| `keyRemain` | Field | Remainder of key — the portion of the key after the first "/" segment |
| Smart Link Premium | Business term | A premium service plan offered by K-Opticom (スマートリンクプレミアム) — this screen handles registration confirmation |
| KKW00844 | Screen ID | Screen identifier for Smart Link Premium Registration Confirmation (スマートリンクプレミアム登録確認) |
| data-type bean | Technical pattern | A bean that wraps a data item with value, state, and enabled properties, implementing X33VDataTypeBeanInterface |
| data-type bean list | Technical pattern | A List of data-type beans used for repeatable/scrollable form sections |
| shared info bean | Technical pattern | A bean type accessed via `"//"` prefixed keys, handled by the parent class `loadCommonInfoData` |
| X33VDataTypeBeanInterface | Technical interface | Interface implemented by data-type bean list elements, providing their own `loadModelData` for recursive field access |
| `value` | Sub-key | Returns the actual data value of a field |
| `state` | Sub-key | Returns the UI state (e.g., enabled, displayable) of a field |
| `enable` | Sub-key | Returns the boolean enablement flag (only used by "Start Date" field) |
| `*` | Wildcard | Used in list paths (e.g., `"Customer Contract List/*"`) to return the list size instead of element data |
