# Business Logic — KKW01023SF03DBean.loadModelData() [117 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01023SF.KKW01023SF03DBean` |
| Layer | Data Bean (View model / DataType Bean) |
| Module | `KKW01023SF` (Package: `eo.web.webview.KKW01023SF`) |

## 1. Role

### KKW01023SF03DBean.loadModelData()

This method serves as a **routing and dispatch dispatcher** for the "Discount Service Contract Content" (割引サービス契約内訳) screen (Screen ID: KKW01023). It implements a key-value lookup pattern where Japanese field names (`key`) are mapped to internal field getters by a specific attribute subkey (`subkey`). The method is a standard implementation of the X33V framework's `X33VDataTypeBeanInterface.loadModelData` contract, enabling the framework's data-binding layer to dynamically resolve any property of this data bean at runtime through a single unified interface. It handles **8 distinct field categories**: Number (番号), Service Content (内容内容), Category Code (種類コード), Category Code Name (種類コード名称), Discount Application Count (割引適回回数), First Discount Application Date (初回割引適年月日), Service Charge Start Date (サービス課金開始年月日), and Service Charge End Date (サービス課金終了年月日). For each field, the method supports **3 attribute types**: `value` (the data value), `enable` (whether the field is editable/interactive), and `state` (the field's display state). The method plays the role of a **shared utility dispatcher** — it is called by the parent screen bean (`KKW01023SFBean`) during form initialization and data population, allowing the framework to uniformly access all bean properties regardless of their internal naming conventions. It implements the routing/dispatch design pattern with a series of if-else conditional branches and has no external dependencies beyond its own internal getter methods.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL["key or subkey is null?"]
    CHECK_NULL -->|Yes| RETURN_NULL["Return null"]
    CHECK_NULL -->|No| NO_KEY["Check key value"]

    NO_KEY --> KEY_NO["key equals 番号"]
    KEY_NO -->|Yes| BRANCH_NO["Block: Number field"]
    KEY_NO -->|No| KEY_UCWK["key equals 内容内容"]
    KEY_UCWK -->|Yes| BRANCH_UCWK["Block: Service content field"]
    KEY_UCWK -->|No| KEY_SBT["key equals 種類コード"]
    KEY_SBT -->|Yes| BRANCH_SBT["Block: Category code field"]
    KEY_SBT -->|No| KEY_SBT_NM["key equals 種類コード名称"]
    KEY_SBT_NM -->|Yes| BRANCH_SBT_NM["Block: Category code name field"]
    KEY_SBT_NM -->|No| KEY_WRIB["key equals 割引適回回数"]
    KEY_WRIB -->|Yes| BRANCH_WRIB["Block: Discount application count field"]
    KEY_WRIB -->|No| KEY_FIRST["key equals 初回割引適年月日"]
    KEY_FIRST -->|Yes| BRANCH_FIRST["Block: First discount date field"]
    KEY_FIRST -->|No| KEY_STAY["key equals サービス課金開始年月日"]
    KEY_STAY -->|Yes| BRANCH_STAY["Block: Service charge start date field"]
    KEY_STAY -->|No| KEY_END["key equals サービス課金終了年月日"]
    KEY_END -->|Yes| BRANCH_END["Block: Service charge end date field"]
    KEY_END -->|No| RETURN_DEFAULT["Return null"]

    BRANCH_NO --> SUBKEY_CHECK_NO["Check subkey value"]
    SUBKEY_CHECK_NO -->|value| GET_NO_VAL["getNo_value"]
    SUBKEY_CHECK_NO -->|enable| GET_NO_EN["getNo_enabled"]
    SUBKEY_CHECK_NO -->|state| GET_NO_ST["getNo_state"]
    GET_NO_VAL --> END_NODE(["Return result"])
    GET_NO_EN --> END_NODE
    GET_NO_ST --> END_NODE

    BRANCH_UCWK --> SUBKEY_CHECK_UCWK["Check subkey value"]
    SUBKEY_CHECK_UCWK -->|value| GET_UCWK_VAL["getUcwk_ny_value"]
    SUBKEY_CHECK_UCWK -->|enable| GET_UCWK_EN["getUcwk_ny_enabled"]
    SUBKEY_CHECK_UCWK -->|state| GET_UCWK_ST["getUcwk_ny_state"]
    GET_UCWK_VAL --> END_NODE
    GET_UCWK_EN --> END_NODE
    GET_UCWK_ST --> END_NODE

    BRANCH_SBT --> SUBKEY_CHECK_SBT["Check subkey value"]
    SUBKEY_CHECK_SBT -->|value| GET_SBT_VAL["getSbt_cd_value"]
    SUBKEY_CHECK_SBT -->|enable| GET_SBT_EN["getSbt_cd_enabled"]
    SUBKEY_CHECK_SBT -->|state| GET_SBT_ST["getSbt_cd_state"]
    GET_SBT_VAL --> END_NODE
    GET_SBT_EN --> END_NODE
    GET_SBT_ST --> END_NODE

    BRANCH_SBT_NM --> SUBKEY_CHECK_SBT_NM["Check subkey value"]
    SUBKEY_CHECK_SBT_NM -->|value| GET_SBT_NM_VAL["getSbt_cd_nm_value"]
    SUBKEY_CHECK_SBT_NM -->|enable| GET_SBT_NM_EN["getSbt_cd_nm_enabled"]
    SUBKEY_CHECK_SBT_NM -->|state| GET_SBT_NM_ST["getSbt_cd_nm_state"]
    GET_SBT_NM_VAL --> END_NODE
    GET_SBT_NM_EN --> END_NODE
    GET_SBT_NM_ST --> END_NODE

    BRANCH_WRIB --> SUBKEY_CHECK_WRIB["Check subkey value"]
    SUBKEY_CHECK_WRIB -->|value| GET_WRIB_VAL["getWrib_aply_cnt_value"]
    SUBKEY_CHECK_WRIB -->|enable| GET_WRIB_EN["getWrib_aply_cnt_enabled"]
    SUBKEY_CHECK_WRIB -->|state| GET_WRIB_ST["getWrib_aply_cnt_state"]
    GET_WRIB_VAL --> END_NODE
    GET_WRIB_EN --> END_NODE
    GET_WRIB_ST --> END_NODE

    BRANCH_FIRST --> SUBKEY_CHECK_FIRST["Check subkey value"]
    SUBKEY_CHECK_FIRST -->|value| GET_FIRST_VAL["getFirst_wrib_aply_ymd_value"]
    SUBKEY_CHECK_FIRST -->|enable| GET_FIRST_EN["getFirst_wrib_aply_ymd_enabled"]
    SUBKEY_CHECK_FIRST -->|state| GET_FIRST_ST["getFirst_wrib_aply_ymd_state"]
    GET_FIRST_VAL --> END_NODE
    GET_FIRST_EN --> END_NODE
    GET_FIRST_ST --> END_NODE

    BRANCH_STAY --> SUBKEY_CHECK_STAY["Check subkey value"]
    SUBKEY_CHECK_STAY -->|value| GET_STAY_VAL["getSvc_chrg_staymd_value"]
    SUBKEY_CHECK_STAY -->|enable| GET_STAY_EN["getSvc_chrg_staymd_enabled"]
    SUBKEY_CHECK_STAY -->|state| GET_STAY_ST["getSvc_chrg_staymd_state"]
    GET_STAY_VAL --> END_NODE
    GET_STAY_EN --> END_NODE
    GET_STAY_ST --> END_NODE

    BRANCH_END --> SUBKEY_CHECK_END["Check subkey value"]
    SUBKEY_CHECK_END -->|value| GET_END_VAL["getSvc_chrg_endymd_value"]
    SUBKEY_CHECK_END -->|enable| GET_END_EN["getSvc_chrg_endymd_enabled"]
    SUBKEY_CHECK_END -->|state| GET_END_ST["getSvc_chrg_endymd_state"]
    GET_END_VAL --> END_NODE
    GET_END_EN --> END_NODE
    GET_END_ST --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The Japanese field name (item name) that identifies which data property to retrieve. It maps to one of 8 business fields in the discount service contract content form: "番号" (Number), "内容内容" (Service Content), "種類コード" (Category Code), "種類コード名称" (Category Code Name), "割引適回回数" (Discount Application Count), "初回割引適年月日" (First Discount Date), "サービス課金開始年月日" (Service Charge Start Date), or "サービス課金終了年月日" (Service Charge End Date). The value directly determines which getter chain is invoked. |
| 2 | `subkey` | `String` | The attribute type specifier that determines which aspect of the field to return. Case-insensitive matching against "value" (the actual data value), "enable" (whether the field is editable — controls UI interactivity), or "state" (the field's display state — used for visual feedback such as required/invalid indicators). |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `no_value`, `no_enabled`, `no_state` | `String`, `Boolean`, `String` | Number field data, enabled state, and display state |
| `ucwk_ny_value`, `ucwk_ny_enabled`, `ucwk_ny_state` | `String`, `Boolean`, `String` | Service content data, enabled state, and display state |
| `sbt_cd_value`, `sbt_cd_enabled`, `sbt_cd_state` | `String`, `Boolean`, `String` | Category code data, enabled state, and display state |
| `sbt_cd_nm_value`, `sbt_cd_nm_enabled`, `sbt_cd_nm_state` | `String`, `Boolean`, `String` | Category code name data, enabled state, and display state |
| `wrib_aply_cnt_value`, `wrib_aply_cnt_enabled`, `wrib_aply_cnt_state` | `String`, `Boolean`, `String` | Discount application count data, enabled state, and display state |
| `first_wrib_aply_ymd_value`, `first_wrib_aply_ymd_enabled`, `first_wrib_aply_ymd_state` | `String`, `Boolean`, `String` | First discount application date data, enabled state, and display state |
| `svc_chrg_staymd_value`, `svc_chrg_staymd_enabled`, `svc_chrg_staymd_state` | `String`, `Boolean`, `String` | Service charge start date data, enabled state, and display state |
| `svc_chrg_endymd_value`, `svc_chrg_endymd_enabled`, `svc_chrg_endymd_state` | `String`, `Boolean`, `String` | Service charge end date data, enabled state, and display state |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW01023SF03DBean.getNo_value` | KKW01023SF03DBean | - | Returns the internal `no_value` field (Number data value) |
| R | `KKW01023SF03DBean.getNo_enabled` | KKW01023SF03DBean | - | Returns the internal `no_enabled` field (Number field editable flag) |
| R | `KKW01023SF03DBean.getNo_state` | KKW01023SF03DBean | - | Returns the internal `no_state` field (Number field display state) |
| R | `KKW01023SF03DBean.getUcwk_ny_value` | KKW01023SF03DBean | - | Returns the internal `ucwk_ny_value` field (Service content data value) |
| R | `KKW01023SF03DBean.getUcwk_ny_enabled` | KKW01023SF03DBean | - | Returns the internal `ucwk_ny_enabled` field (Service content editable flag) |
| R | `KKW01023SF03DBean.getUcwk_ny_state` | KKW01023SF03DBean | - | Returns the internal `ucwk_ny_state` field (Service content display state) |
| R | `KKW01023SF03DBean.getSbt_cd_value` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_value` field (Category code data value) |
| R | `KKW01023SF03DBean.getSbt_cd_enabled` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_enabled` field (Category code editable flag) |
| R | `KKW01023SF03DBean.getSbt_cd_state` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_state` field (Category code display state) |
| R | `KKW01023SF03DBean.getSbt_cd_nm_value` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_nm_value` field (Category code name data value) |
| R | `KKW01023SF03DBean.getSbt_cd_nm_enabled` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_nm_enabled` field (Category code name editable flag) |
| R | `KKW01023SF03DBean.getSbt_cd_nm_state` | KKW01023SF03DBean | - | Returns the internal `sbt_cd_nm_state` field (Category code name display state) |
| R | `KKW01023SF03DBean.getWrib_aply_cnt_value` | KKW01023SF03DBean | - | Returns the internal `wrib_aply_cnt_value` field (Discount application count data value) |
| R | `KKW01023SF03DBean.getWrib_aply_cnt_enabled` | KKW01023SF03DBean | - | Returns the internal `wrib_aply_cnt_enabled` field (Discount count editable flag) |
| R | `KKW01023SF03DBean.getWrib_aply_cnt_state` | KKW01023SF03DBean | - | Returns the internal `wrib_aply_cnt_state` field (Discount count display state) |
| R | `KKW01023SF03DBean.getFirst_wrib_aply_ymd_value` | KKW01023SF03DBean | - | Returns the internal `first_wrib_aply_ymd_value` field (First discount date data value) |
| R | `KKW01023SF03DBean.getFirst_wrib_aply_ymd_enabled` | KKW01023SF03DBean | - | Returns the internal `first_wrib_aply_ymd_enabled` field (First discount date editable flag) |
| R | `KKW01023SF03DBean.getFirst_wrib_aply_ymd_state` | KKW01023SF03DBean | - | Returns the internal `first_wrib_aply_ymd_state` field (First discount date display state) |
| R | `KKW01023SF03DBean.getSvc_chrg_staymd_value` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_staymd_value` field (Service charge start date data value) |
| R | `KKW01023SF03DBean.getSvc_chrg_staymd_enabled` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_staymd_enabled` field (Service charge start date editable flag) |
| R | `KKW01023SF03DBean.getSvc_chrg_staymd_state` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_staymd_state` field (Service charge start date display state) |
| R | `KKW01023SF03DBean.getSvc_chrg_endymd_value` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_endymd_value` field (Service charge end date data value) |
| R | `KKW01023SF03DBean.getSvc_chrg_endymd_enabled` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_endymd_enabled` field (Service charge end date editable flag) |
| R | `KKW01023SF03DBean.getSvc_chrg_endymd_state` | KKW01023SF03DBean | - | Returns the internal `svc_chrg_endymd_state` field (Service charge end date display state) |

**CRUD Summary:** This method performs **zero external database operations**. All 24 method calls are internal getter invocations on the same bean instance — they are simple field reads (CRUD type: R) with no SC (Service Component), CBS (Business Service), or entity/table interactions.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW01023 | `KKW01023SFBean.getInstance` → `new KKW01023SF03DBean()` → `KKW01023SF03DBean.loadModelData(key, subkey)` | `getNo_value [R] no_value`, `getNo_enabled [R] no_enabled`, `getNo_state [R] no_state`, `getUcwk_ny_value [R] ucwk_ny_value`, `getUcwk_ny_enabled [R] ucwk_ny_enabled`, `getUcwk_ny_state [R] ucwk_ny_state`, `getSbt_cd_value [R] sbt_cd_value`, `getSbt_cd_enabled [R] sbt_cd_enabled`, `getSbt_cd_state [R] sbt_cd_state`, `getSbt_cd_nm_value [R] sbt_cd_nm_value`, `getSbt_cd_nm_enabled [R] sbt_cd_nm_enabled`, `getSbt_cd_nm_state [R] sbt_cd_nm_state`, `getWrib_aply_cnt_value [R] wrib_aply_cnt_value`, `getWrib_aply_cnt_enabled [R] wrib_aply_cnt_enabled`, `getWrib_aply_cnt_state [R] wrib_aply_cnt_state`, `getFirst_wrib_aply_ymd_value [R] first_wrib_aply_ymd_value`, `getFirst_wrib_aply_ymd_enabled [R] first_wrib_aply_ymd_enabled`, `getFirst_wrib_aply_ymd_state [R] first_wrib_aply_ymd_state`, `getSvc_chrg_staymd_value [R] svc_chrg_staymd_value`, `getSvc_chrg_staymd_enabled [R] svc_chrg_staymd_enabled`, `getSvc_chrg_staymd_state [R] svc_chrg_staymd_state`, `getSvc_chrg_endymd_value [R] svc_chrg_endymd_value`, `getSvc_chrg_endymd_enabled [R] svc_chrg_endymd_enabled`, `getSvc_chrg_endymd_state [R] svc_chrg_endymd_state` |

**Caller Notes:**
- The method is invoked by the parent screen bean `KKW01023SFBean`, which creates instances of `KKW01023SF03DBean` as data-type beans for the "Discount Service Contract Content" (割引サービス契約内訳) field group within the KKW01023 screen.
- The screen ID `KKW01023` is defined as "割引サービス契約照会" (Discount Service Contract Inquiry) in `JKKScreenConst`.
- No direct callers were found outside the `KKW01023SF` package — this method is scoped to the single screen module.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null check) (L360)

> If either `key` or `subkey` is null, return null immediately. This prevents null pointer exceptions during framework data binding.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` // key, subkey that are null → return null (key,subkeyがnullの場合、nullを返す) |
| 2 | RETURN | `return null;` |

---

### Block 2 — PROCESSING (separator detection) (L364)

> Detect the separator position in the key string by searching for "/". This value is computed but not used in any conditional branch in this method — it appears to be reserved for future use.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/")` // Find the position of the "/" separator in key (項目ごとに処理を入れる) |

---

### Block 3 — IF-ELSE chain: key routing

> Route processing based on the Japanese field name in `key`. Each branch handles one of the 8 supported field categories and delegates to one of 3 attribute getters based on `subkey`.

#### Block 3.1 — IF-IF (key == "番号") (L367)

> The Number field (項目ID: no). Used for identifying the contract number in discount service line items.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key.equals("番号"))` // Data type String field "Number" (項目ID: no) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` // subkey is "value" |
| 3 | CALL | `getNo_value()` |
| 4 | RETURN | `return getNo_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、no_enableのgetterの戻り値を返す) |
| 6 | CALL | `getNo_enabled()` |
| 7 | RETURN | `return getNo_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getNo_state()` |
| 10 | RETURN | `return getNo_state();` |

#### Block 3.2 — ELSE-IF (key == "内容内容") (L380)

> The Service Content field (項目ID: ucwk_ny). Represents the details of the discount service contract arrangement.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("内容内容"))` // Data type String field "Service Content" (項目ID: ucwk_ny) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getUcwk_ny_value()` |
| 4 | RETURN | `return getUcwk_ny_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、ucwk_ny_enableのgetterの戻り値を返す) |
| 6 | CALL | `getUcwk_ny_enabled()` |
| 7 | RETURN | `return getUcwk_ny_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getUcwk_ny_state()` |
| 10 | RETURN | `return getUcwk_ny_state();` |

#### Block 3.3 — ELSE-IF (key == "種類コード") (L393)

> The Category Code field (項目ID: sbt_cd). Classifies the type of service or discount category.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("種類コード"))` // Data type String field "Category Code" (項目ID: sbt_cd) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getSbt_cd_value()` |
| 4 | RETURN | `return getSbt_cd_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、sbt_cd_enableのgetterの戻り値を返す) |
| 6 | CALL | `getSbt_cd_enabled()` |
| 7 | RETURN | `return getSbt_cd_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getSbt_cd_state()` |
| 10 | RETURN | `return getSbt_cd_state();` |

#### Block 3.4 — ELSE-IF (key == "種類コード名称") (L406)

> The Category Code Name field (項目ID: sbt_cd_nm). Provides the human-readable description of the category code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("種類コード名称"))` // Data type String field "Category Code Name" (項目ID: sbt_cd_nm) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getSbt_cd_nm_value()` |
| 4 | RETURN | `return getSbt_cd_nm_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、sbt_cd_nm_enableのgetterの戻り値を返す) |
| 6 | CALL | `getSbt_cd_nm_enabled()` |
| 7 | RETURN | `return getSbt_cd_nm_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getSbt_cd_nm_state()` |
| 10 | RETURN | `return getSbt_cd_nm_state();` |

#### Block 3.5 — ELSE-IF (key == "割引適回回数") (L419)

> The Discount Application Count field (項目ID: wrib_aply_cnt). Specifies how many times a discount can be applied.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("割引適回回数"))` // Data type String field "Discount Application Count" (項目ID: wrib_aply_cnt) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getWrib_aply_cnt_value()` |
| 4 | RETURN | `return getWrib_aply_cnt_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、wrib_aply_cnt_enableのgetterの戻り値を返す) |
| 6 | CALL | `getWrib_aply_cnt_enabled()` |
| 7 | RETURN | `return getWrib_aply_cnt_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getWrib_aply_cnt_state()` |
| 10 | RETURN | `return getWrib_aply_cnt_state();` |

#### Block 3.6 — ELSE-IF (key == "初回割引適年月日") (L432)

> The First Discount Application Date field (項目ID: first_wrib_aply_ymd). Indicates the date when the first discount becomes applicable.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("初回割引適年月日"))` // Data type String field "First Discount Date" (項目ID: first_wrib_aply_ymd) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getFirst_wrib_aply_ymd_value()` |
| 4 | RETURN | `return getFirst_wrib_aply_ymd_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、first_wrib_aply_ymd_enableのgetterの戻り値を返す) |
| 6 | CALL | `getFirst_wrib_aply_ymd_enabled()` |
| 7 | RETURN | `return getFirst_wrib_aply_ymd_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getFirst_wrib_aply_ymd_state()` |
| 10 | RETURN | `return getFirst_wrib_aply_ymd_state();` |

#### Block 3.7 — ELSE-IF (key == "サービス課金開始年月日") (L445)

> The Service Charge Start Date field (項目ID: svc_chrg_staymd). Specifies when service billing begins.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("サービス課金開始年月日"))` // Data type String field "Service Charge Start Date" (項目ID: svc_chrg_staymd) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getSvc_chrg_staymd_value()` |
| 4 | RETURN | `return getSvc_chrg_staymd_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、svc_chrg_staymd_enableのgetterの戻り値を返す) |
| 6 | CALL | `getSvc_chrg_staymd_enabled()` |
| 7 | RETURN | `return getSvc_chrg_staymd_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getSvc_chrg_staymd_state()` |
| 10 | RETURN | `return getSvc_chrg_staymd_state();` |

#### Block 3.8 — ELSE-IF (key == "サービス課金終了年月日") (L458)

> The Service Charge End Date field (項目ID: svc_chrg_endymd). Specifies when service billing ends.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("サービス課金終了年月日"))` // Data type String field "Service Charge End Date" (項目ID: svc_chrg_endymd) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `getSvc_chrg_endymd_value()` |
| 4 | RETURN | `return getSvc_chrg_endymd_value();` |
| 5 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // subkey is "enable" (subkeyが"enable"の場合、svc_chrg_endymd_enableのgetterの戻り値を返す) |
| 6 | CALL | `getSvc_chrg_endymd_enabled()` |
| 7 | RETURN | `return getSvc_chrg_endymd_enabled();` |
| 8 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // subkey is "state" (subkeyが"state"の場合、ステータスを返す) |
| 9 | CALL | `getSvc_chrg_endymd_state()` |
| 10 | RETURN | `return getSvc_chrg_endymd_state();` |

---

### Block 4 — ELSE (no matching key) (L471)

> If no property matches the given key, return null. (条件に一致するプロパティが存在しない場合は、nullを返す。)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `no_value` | Field | Number data value — internal tracking identifier for a discount service contract line item |
| `no_enabled` | Field | Number field editable flag — whether the number field is interactive in the UI |
| `no_state` | Field | Number field display state — visual state indicator (e.g., required, invalid, disabled) for the number field |
| `ucwk_ny_value` | Field | Service content data value — the details/description of the discount service contract arrangement |
| `ucwk_ny_enabled` | Field | Service content field editable flag — whether the service content field is interactive |
| `ucwk_ny_state` | Field | Service content field display state — visual feedback state for the service content field |
| `sbt_cd_value` | Field | Category code data value — classification code for the service or discount type |
| `sbt_cd_enabled` | Field | Category code field editable flag — whether the category code field is interactive |
| `sbt_cd_state` | Field | Category code field display state — visual feedback state for the category code field |
| `sbt_cd_nm_value` | Field | Category code name data value — human-readable label for the category code |
| `sbt_cd_nm_enabled` | Field | Category code name field editable flag — whether the category code name field is interactive |
| `sbt_cd_nm_state` | Field | Category code name field display state — visual feedback state for the category code name field |
| `wrib_aply_cnt_value` | Field | Discount application count data value — number of times a discount is applied |
| `wrib_aply_cnt_enabled` | Field | Discount count field editable flag — whether the discount count field is interactive |
| `wrib_aply_cnt_state` | Field | Discount count field display state — visual feedback state for the discount count field |
| `first_wrib_aply_ymd_value` | Field | First discount date data value — the date when the first discount becomes effective (year-month-day format) |
| `first_wrib_aply_ymd_enabled` | Field | First discount date field editable flag — whether the first discount date field is interactive |
| `first_wrib_aply_ymd_state` | Field | First discount date field display state — visual feedback state for the first discount date field |
| `svc_chrg_staymd_value` | Field | Service charge start date data value — the date when service billing begins (year-month-day format) |
| `svc_chrg_staymd_enabled` | Field | Service charge start date field editable flag — whether the start date field is interactive |
| `svc_chrg_staymd_state` | Field | Service charge start date field display state — visual feedback state for the start date field |
| `svc_chrg_endymd_value` | Field | Service charge end date data value — the date when service billing ends (year-month-day format) |
| `svc_chrg_endymd_enabled` | Field | Service charge end date field editable flag — whether the end date field is interactive |
| `svc_chrg_endymd_state` | Field | Service charge end date field display state — visual feedback state for the end date field |
| "番号" | Field (Japanese) | Number — the contract/line item number identifier |
| "内容内容" | Field (Japanese) | Service Content — details of the discount service contract arrangement |
| "種類コード" | Field (Japanese) | Category Code — classification code for service types |
| "種類コード名称" | Field (Japanese) | Category Code Name — human-readable name of the category code |
| "割引適回回数" | Field (Japanese) | Discount Application Count — how many times a discount is applicable |
| "初回割引適年月日" | Field (Japanese) | First Discount Application Date — when the first discount becomes effective |
| "サービス課金開始年月日" | Field (Japanese) | Service Charge Start Date — when billing begins |
| "サービス課金終了年月日" | Field (Japanese) | Service Charge End Date — when billing ends |
| `loadModelData` | Method | Data loading dispatcher — framework-standard method that routes key/subkey lookups to field getters |
| X33V | Framework | Fujitsu Futurity X33V — web client framework for building Java-based enterprise web applications with data binding |
| X33VDataTypeBeanInterface | Interface | Data type bean interface — defines contract for beans that expose data through `loadModelData` / `setModelData` |
| X31CBaseBean | Class | Base bean class — common base for all X31 framework bean types |
| KKW01023SF | Module | Discount Service Contract Inquiry screen module — handles inquiry/discount service contract viewing |
| KKW01023 | Screen ID | Screen identifier for "Discount Service Contract Inquiry" (割引サービス契約照会) |
| `separaterPoint` | Field | Separator index — stores position of "/" in key; computed but unused in current implementation (reserved for future use) |
| Data Bean | Pattern | A bean that holds and exposes data properties through getter/setter methods, used by the framework for UI data binding |
| dispatch pattern | Pattern | The method routes requests to specific getters based on key/subkey values, acting as a centralized lookup entry point |
| value attribute | Concept | One of three subkey values — retrieves the actual data stored in a field |
| enable attribute | Concept | One of three subkey values — retrieves whether the field is editable/enabled in the UI |
| state attribute | Concept | One of three subkey values — retrieves the display state of a field for visual feedback (e.g., required, error, disabled) |
