# Business Logic — KKW01023SF01DBean.loadModelData() [111 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01023SF.KKW01023SF01DBean` |
| Layer | Data Bean / View Model (Web View presentation layer) |
| Module | `KKW01023SF` (Package: `eo.web.webview.KKW01023SF`) |

## 1. Role

### KKW01023SF01DBean.loadModelData()

This method is the central data-loading dispatcher for the Discount Service Contract Display screen (`KKW01023SF`), which handles the initial display and inquiry of discount service contracts (割引サービス契約照会) in the K-Opticom customer backbone system. It implements the `X33VDataTypeBeanInterface.loadModelData(String key, String subkey)` contract from the Fujitsu Futurity web framework, serving as the entry point through which the view-layer retrieves field values, enablement flags, and status indicators for screen components.

The method follows a **routing/dispatch pattern**: it receives a `key` (the business field name in Japanese, such as "照会選択" for consultation selection, or "キャンペーンコード" for campaign code) and a `subkey` (the data facet — "value", "enable", or "state"). Based on the `key` value, it routes to the appropriate group of three getter methods that return the field's current value, enabled/disabled state, and input status respectively. This design centralizes all model data access for the screen's data-type beans into a single polymorphic entry point, enabling the X33V framework to dynamically load field data without hard-coding property names in the view templates.

The method supports **8 distinct business fields**: Consultation Selection (照会選択), Number (番号), Campaign Code (キャンペーンコード), Campaign Name (キャンペーン名), Type Code (タイプコード), Type Code Name (タイプコード名称), Category Code (種類コード), and Category Code Name (種類コード名称). For each field, it provides up to 3 sub-key lookups (value/enable/state), yielding up to 23 distinct data retrieval paths. This makes it the foundational data access method for the entire screen's presentation layer.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL["Check key and subkey are not null"]

    CHECK_NULL --> NULL_CHECK{"key or subkey is null?"}
    NULL_CHECK -->|Yes| RETURN_NULL["Return null"]

    NULL_CHECK -->|No| KEY_ROUTES{"Branch on key value"}

    KEY_ROUTES -->|key = 照会選択| BRANCH_CHOICE["Branch: 照会選択 (Consultation Selection)"]
    KEY_ROUTES -->|key = 番号| BRANCH_NO["Branch: 番号 (Number)"]
    KEY_ROUTES -->|key = キャンペーンコード| BRANCH_CAMPAIGN_CD["Branch: キャンペーンコード (Campaign Code)"]
    KEY_ROUTES -->|key = キャンペーン名| BRANCH_CAMPAIGN_NM["Branch: キャンペーン名 (Campaign Name)"]
    KEY_ROUTES -->|key = タイプコード| BRANCH_TYPE_CD["Branch: タイプコード (Type Code)"]
    KEY_ROUTES -->|key = タイプコード名称| BRANCH_TYPE_CD_NM["Branch: タイプコード名称 (Type Code Name)"]
    KEY_ROUTES -->|key = 種類コード| BRANCH_SBT_CD["Branch: 種類コード (Category Code)"]
    KEY_ROUTES -->|key = 種類コード名称| BRANCH_SBT_CD_NM["Branch: 種類コード名称 (Category Code Name)"]
    KEY_ROUTES -->|No match| RETURN_NULL

    BRANCH_CHOICE --> CHOICE_SUB{"Branch on subkey (case-insensitive)"}
    CHOICE_SUB -->|subkey = value| CALL_CHOICE_VAL["getChoice_value()"]
    CHOICE_SUB -->|subkey = enable| CALL_CHOICE_ENAB["getChoice_enabled()"]
    CHOICE_SUB -->|subkey = state| CALL_CHOICE_ST["getChoice_state()"]
    CHOICE_SUB -->|No match| RETURN_NULL

    BRANCH_NO --> NO_SUB{"Branch on subkey (case-insensitive)"}
    NO_SUB -->|subkey = value| CALL_NO_VAL["getNo_value()"]
    NO_SUB -->|subkey = enable| CALL_NO_ENAB["getNo_enabled()"]
    NO_SUB -->|subkey = state| CALL_NO_ST["getNo_state()"]
    NO_SUB -->|No match| RETURN_NULL

    BRANCH_CAMPAIGN_CD --> CC_SUB{"Branch on subkey (case-insensitive)"}
    CC_SUB -->|subkey = value| CALL_CC_VAL["getCampaign_cd_value()"]
    CC_SUB -->|subkey = enable| CALL_CC_ENAB["getCampaign_cd_enabled()"]
    CC_SUB -->|subkey = state| CALL_CC_ST["getCampaign_cd_state()"]
    CC_SUB -->|No match| RETURN_NULL

    BRANCH_CAMPAIGN_NM --> CNM_SUB{"Branch on subkey (case-insensitive)"}
    CNM_SUB -->|subkey = value| CALL_CNM_VAL["getCampaign_nm_value()"]
    CNM_SUB -->|subkey = enable| CALL_CNM_ENAB["getCampaign_nm_enabled()"]
    CNM_SUB -->|subkey = state| CALL_CNM_ST["getCampaign_nm_state()"]
    CNM_SUB -->|No match| RETURN_NULL

    BRANCH_TYPE_CD --> TCD_SUB{"Branch on subkey (case-insensitive)"}
    TCD_SUB -->|subkey = value| CALL_TCD_VAL["getType_cd_value()"]
    TCD_SUB -->|subkey = state| CALL_TCD_ST["getType_cd_state()"]
    TCD_SUB -->|No match| RETURN_NULL

    BRANCH_TYPE_CD_NM --> TCDNM_SUB{"Branch on subkey (case-insensitive)"}
    TCDNM_SUB -->|subkey = value| CALL_TCDNM_VAL["getType_cd_nm_value()"]
    TCDNM_SUB -->|subkey = enable| CALL_TCDNM_ENAB["getType_cd_nm_enabled()"]
    TCDNM_SUB -->|subkey = state| CALL_TCDNM_ST["getType_cd_nm_state()"]
    TCDNM_SUB -->|No match| RETURN_NULL

    BRANCH_SBT_CD --> SBT_SUB{"Branch on subkey (case-insensitive)"}
    SBT_SUB -->|subkey = value| CALL_SBT_VAL["getSbt_cd_value()"]
    SBT_SUB -->|subkey = state| CALL_SBT_ST["getSbt_cd_state()"]
    SBT_SUB -->|No match| RETURN_NULL

    BRANCH_SBT_CD_NM --> SBTNM_SUB{"Branch on subkey (case-insensitive)"}
    SBTNM_SUB -->|subkey = value| CALL_SBTNM_VAL["getSbt_cd_nm_value()"]
    SBTNM_SUB -->|subkey = enable| CALL_SBTNM_ENAB["getSbt_cd_nm_enabled()"]
    SBTNM_SUB -->|subkey = state| CALL_SBTNM_ST["getSbt_cd_nm_state()"]
    SBTNM_SUB -->|No match| RETURN_NULL

    CALL_CHOICE_VAL --> END
    CALL_CHOICE_ENAB --> END
    CALL_CHOICE_ST --> END
    CALL_NO_VAL --> END
    CALL_NO_ENAB --> END
    CALL_NO_ST --> END
    CALL_CC_VAL --> END
    CALL_CC_ENAB --> END
    CALL_CC_ST --> END
    CALL_CNM_VAL --> END
    CALL_CNM_ENAB --> END
    CALL_CNM_ST --> END
    CALL_TCD_VAL --> END
    CALL_TCD_ST --> END
    CALL_TCDNM_VAL --> END
    CALL_TCDNM_ENAB --> END
    CALL_TCDNM_ST --> END
    CALL_SBT_VAL --> END
    CALL_SBT_ST --> END
    CALL_SBTNM_VAL --> END
    CALL_SBTNM_ENAB --> END
    CALL_SBTNM_ST --> END
    RETURN_NULL --> END

    END(["Return / Next"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The Japanese business field name identifying which screen field's data to load. It represents the high-level category of the data item: "照会選択" (Consultation Selection — boolean checkbox for consultation list rows), "番号" (Number — sequential row number), "キャンペーンコード" (Campaign Code — string identifier for the discount campaign), "キャンペーン名" (Campaign Name — human-readable campaign title), "タイプコード" (Type Code — service type classification code), "タイプコード名称" (Type Code Name — descriptive name of the type code), "種類コード" (Category Code — sub-category classification), "種類コード名称" (Category Code Name — descriptive name of the category code). |
| 2 | `subkey` | `String` | The data facet selector within a field, specifying which attribute of the field to return. It is case-insensitive and maps to: "value" (the current data value of the field), "enable" (whether the field is enabled/editable — applies to fields that support toggleable editability), or "state" (the UI state string of the field, used for rendering controls like enabled/disabled styling). |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `choice_value` | `Boolean` | Consultation selection checkbox value (default `false`) |
| `choice_enabled` | `Boolean` | Consultation selection enabled flag (default `false`) |
| `choice_state` | `String` | Consultation selection state string (default `""`) |
| `no_value` | `String` | Row number display value (default `""`) |
| `no_enabled` | `Boolean` | Number field enabled flag (default `false`) |
| `no_state` | `String` | Number field state string (default `""`) |
| `campaign_cd_value` | `String` | Campaign code display value (default `""`) |
| `campaign_cd_enabled` | `Boolean` | Campaign code enabled flag (default `false`) |
| `campaign_cd_state` | `String` | Campaign code state string (default `""`) |
| `campaign_nm_value` | `String` | Campaign name display value (default `""`) |
| `campaign_nm_enabled` | `Boolean` | Campaign name enabled flag (default `false`) |
| `campaign_nm_state` | `String` | Campaign name state string (default `""`) |
| `type_cd_value` | `String` | Type code display value (default `""`) |
| `type_cd_state` | `String` | Type code state string (default `""`) |
| `type_cd_nm_value` | `String` | Type code name display value (default `""`) |
| `type_cd_nm_enabled` | `Boolean` | Type code name enabled flag (default `false`) |
| `type_cd_nm_state` | `String` | Type code name state string (default `""`) |
| `sbt_cd_value` | `String` | Category code display value (default `""`) |
| `sbt_cd_state` | `String` | Category code state string (default `""`) |
| `sbt_cd_nm_value` | `String` | Category code name display value (default `""`) |
| `sbt_cd_nm_enabled` | `Boolean` | Category code name enabled flag (default `false`) |
| `sbt_cd_nm_state` | `String` | Category code name state string (default `""`) |

## 4. CRUD Operations / Called Services

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

All 23 method calls are internal getter calls within the same bean — they read instance fields and return their values. These are **pure Read (R)** operations that expose the current state of the bean's data model to the view layer.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW01023SF01DBean.getCampaign_cd_enabled` | KKW01023SF01DBean | - | Returns `campaign_cd_enabled` field (Boolean enable flag for campaign code) |
| R | `KKW01023SF01DBean.getCampaign_cd_state` | KKW01023SF01DBean | - | Returns `campaign_cd_state` field (String UI state for campaign code) |
| R | `KKW01023SF01DBean.getCampaign_cd_value` | KKW01023SF01DBean | - | Returns `campaign_cd_value` field (String display value for campaign code) |
| R | `KKW01023SF01DBean.getCampaign_nm_enabled` | KKW01023SF01DBean | - | Returns `campaign_nm_enabled` field (Boolean enable flag for campaign name) |
| R | `KKW01023SF01DBean.getCampaign_nm_state` | KKW01023SF01DBean | - | Returns `campaign_nm_state` field (String UI state for campaign name) |
| R | `KKW01023SF01DBean.getCampaign_nm_value` | KKW01023SF01DBean | - | Returns `campaign_nm_value` field (String display value for campaign name) |
| R | `KKW01023SF01DBean.getChoice_enabled` | KKW01023SF01DBean | - | Returns `choice_enabled` field (Boolean enable flag for consultation selection checkbox) |
| R | `KKW01023SF01DBean.getChoice_state` | KKW01023SF01DBean | - | Returns `choice_state` field (String UI state for consultation selection) |
| R | `KKW01023SF01DBean.getChoice_value` | KKW01023SF01DBean | - | Returns `choice_value` field (Boolean value of consultation selection checkbox) |
| R | `KKW01023SF01DBean.getNo_enabled` | KKW01023SF01DBean | - | Returns `no_enabled` field (Boolean enable flag for number field) |
| R | `KKW01023SF01DBean.getNo_state` | KKW01023SF01DBean | - | Returns `no_state` field (String UI state for number field) |
| R | `KKW01023SF01DBean.getNo_value` | KKW01023SF01DBean | - | Returns `no_value` field (String display value for row number) |
| R | `KKW01023SF01DBean.getSbt_cd_nm_enabled` | KKW01023SF01DBean | - | Returns `sbt_cd_nm_enabled` field (Boolean enable flag for category code name) |
| R | `KKW01023SF01DBean.getSbt_cd_nm_state` | KKW01023SF01DBean | - | Returns `sbt_cd_nm_state` field (String UI state for category code name) |
| R | `KKW01023SF01DBean.getSbt_cd_nm_value` | KKW01023SF01DBean | - | Returns `sbt_cd_nm_value` field (String display value for category code name) |
| R | `KKW01023SF01DBean.getSbt_cd_state` | KKW01023SF01DBean | - | Returns `sbt_cd_state` field (String UI state for category code) |
| R | `KKW01023SF01DBean.getSbt_cd_value` | KKW01023SF01DBean | - | Returns `sbt_cd_value` field (String display value for category code) |
| R | `KKW01023SF01DBean.getType_cd_nm_enabled` | KKW01023SF01DBean | - | Returns `type_cd_nm_enabled` field (Boolean enable flag for type code name) |
| R | `KKW01023SF01DBean.getType_cd_nm_state` | KKW01023SF01DBean | - | Returns `type_cd_nm_state` field (String UI state for type code name) |
| R | `KKW01023SF01DBean.getType_cd_nm_value` | KKW01023SF01DBean | - | Returns `type_cd_nm_value` field (String display value for type code name) |
| R | `KKW01023SF01DBean.getType_cd_state` | KKW01023SF01DBean | - | Returns `type_cd_state` field (String UI state for type code) |
| R | `KKW01023SF01DBean.getType_cd_value` | KKW01023SF01DBean | - | Returns `type_cd_value` field (String display value for type code) |

**Note:** This method performs exclusively Read (R) operations. It has no C/U/D (Create/Update/Delete) endpoints. The underlying bean instance fields are populated by the `KKW01023SFLogic` business logic class via the `Service.KKSV0231` service invocation (see Section 5 dependency trace), but those population steps occur outside this method's scope.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0231 (割引サービス契約照会) | `KKW01023SFLogic.actionInit` / `actionView` -> `Service.KKSV0231.invokeAndApplySFBean` -> SFBean -> X33V framework (JSP/data-type bean) -> `KKW01023SF01DBean.loadModelData` | `getChoice_value [R] in-memory field`<br>`getNo_value [R] in-memory field`<br>`getCampaign_cd_value [R] in-memory field`<br>`getCampaign_nm_value [R] in-memory field`<br>`getType_cd_value [R] in-memory field`<br>`getType_cd_nm_value [R] in-memory field`<br>`getSbt_cd_value [R] in-memory field`<br>`getChoice_enabled [R] in-memory field`<br>`getCampaign_cd_enabled [R] in-memory field`<br>`getCampaign_nm_enabled [R] in-memory field`<br>`getType_cd_nm_enabled [R] in-memory field`<br>`getSbt_cd_nm_enabled [R] in-memory field`<br>`getChoice_state [R] in-memory field`<br>`getNo_state [R] in-memory field`<br>`getCampaign_cd_state [R] in-memory field`<br>`getCampaign_nm_state [R] in-memory field`<br>`getType_cd_state [R] in-memory field`<br>`getType_cd_nm_state [R] in-memory field`<br>`getSbt_cd_state [R] in-memory field`<br>`getSbt_cd_nm_state [R] in-memory field` |

**Call Chain Details:**
- **KKSV0231** is the "Discount Service Contract Display" screen (割引サービス契約照会画面). The screen's business logic is handled by `KKW01023SFLogic`, which invokes the `KKSV0231` service to fetch discount service contract data and applies it to the `SFBean`. The X33V framework then triggers `loadModelData` on data-type beans (`KKW01023SF01DBean`, `02DBean`, `03DBean`, `04DBean`) to populate individual screen components.
- The `KKW01023SFBean` class serves as the main data bean for the screen and delegates to the `01DBean` through the `X33VDataTypeBeanInterface` contract.
- The method is **not directly called by application code** from other classes — it is invoked exclusively through the X33V framework's data-type bean mechanism, where the framework calls `loadModelData(key, subkey)` for each field during view rendering.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null guard) `(key == null || subkey == null)` (L343)

Guard against null inputs. If either parameter is null, return null immediately to prevent NPE during subsequent string comparisons.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key == null || subkey == null` // null guard check |
| 2 | RETURN | `return null;` // key, subkeyがnullの場合、nullを返す (If key/subkey is null, return null) |

**Block 2** — EXEC (separator point search) (L346)

Computes the position of the "/" separator in the key string. Note: this value is assigned but never used in the current method body (dead code).

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` // Note: variable is assigned but never used |

**Block 3** — IF-ELSE-IF chain (key = "照会選択") `(key.equals("照会選択"))` (L349)

Branch for the **Consultation Selection** field (照会選択). This is a boolean-type field represented by a checkbox in the consultation list rows. The subkey determines which attribute to return.

> Business description: Determines what data to return for the consultation selection checkbox (照会選択 — used to select rows in the discount service contract list).

**Block 3.1** — IF-ELSE-IF chain (subkey) (L351)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getChoice_value();` // returns choice_value (Boolean, default false) |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getChoice_enabled();` // returns choice_enabled (Boolean, default false) // subkeyが"enable"の場合、choice_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of choice_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getChoice_state();` // returns choice_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 4** — ELSE-IF (key = "番号") `(key.equals("番号"))` (L358)

Branch for the **Number** field (番号 — sequential row number displayed in the contract list).

> Business description: Returns data for the row number display field (番号 — shows the sequence number of each contract line item in the list).

**Block 4.1** — IF-ELSE-IF chain (subkey) (L360)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getNo_value();` // returns no_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getNo_enabled();` // returns no_enabled (Boolean, default false) // subkeyが"enable"の場合、no_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of no_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getNo_state();` // returns no_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 5** — ELSE-IF (key = "キャンペーンコード") `(key.equals("キャンペーンコード"))` (L367)

Branch for the **Campaign Code** field (キャンペーンコード — the identifier for the discount campaign applied to a service contract).

> Business description: Returns data for the campaign code field, which identifies the specific discount campaign linked to a service contract line item.

**Block 5.1** — IF-ELSE-IF chain (subkey) (L369)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getCampaign_cd_value();` // returns campaign_cd_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getCampaign_cd_enabled();` // returns campaign_cd_enabled (Boolean, default false) // subkeyが"enable"の場合、campaign_cd_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of campaign_cd_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getCampaign_cd_state();` // returns campaign_cd_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 6** — ELSE-IF (key = "キャンペーン名") `(key.equals("キャンペーン名"))` (L376)

Branch for the **Campaign Name** field (キャンペーン名 — the human-readable name/title of the discount campaign).

> Business description: Returns data for the campaign name display field, providing the descriptive title of the discount campaign associated with a contract.

**Block 6.1** — IF-ELSE-IF chain (subkey) (L378)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getCampaign_nm_value();` // returns campaign_nm_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getCampaign_nm_enabled();` // returns campaign_nm_enabled (Boolean, default false) // subkeyが"enable"の場合、campaign_nm_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of campaign_nm_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getCampaign_nm_state();` // returns campaign_nm_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 7** — ELSE-IF (key = "タイプコード") `(key.equals("タイプコード"))` (L385)

Branch for the **Type Code** field (タイプコード — the service type classification code, e.g., fiber, DSL, mobile).

> Business description: Returns data for the type code field, which classifies the type of telecom service (e.g., FTTH, VDSL, Ethernet) for the contract line item. Note: this branch does NOT have an "enable" subkey — only "value" and "state" are supported.

**Block 7.1** — IF-ELSE-IF chain (subkey) (L387)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getType_cd_value();` // returns type_cd_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 4 | CALL | `return getType_cd_state();` // returns type_cd_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 5 | ELSE | // no match — falls through to final `return null` |

**Block 8** — ELSE-IF (key = "タイプコード名称") `(key.equals("タイプコード名称"))` (L392)

Branch for the **Type Code Name** field (タイプコード名称 — the descriptive human-readable name for the type code).

> Business description: Returns data for the type code name field, which provides the human-readable description of the service type classification.

**Block 8.1** — IF-ELSE-IF chain (subkey) (L394)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getType_cd_nm_value();` // returns type_cd_nm_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getType_cd_nm_enabled();` // returns type_cd_nm_enabled (Boolean, default false) // subkeyが"enable"の場合、type_cd_nm_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of type_cd_nm_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getType_cd_nm_state();` // returns type_cd_nm_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 9** — ELSE-IF (key = "種類コード") `(key.equals("種類コード"))` (L401)

Branch for the **Category Code** field (種類コード — the sub-category classification code for the service contract).

> Business description: Returns data for the category code field, which further classifies the service contract type within a broader type classification. Note: this branch does NOT have an "enable" subkey — only "value" and "state" are supported.

**Block 9.1** — IF-ELSE-IF chain (subkey) (L403)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getSbt_cd_value();` // returns sbt_cd_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 4 | CALL | `return getSbt_cd_state();` // returns sbt_cd_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 5 | ELSE | // no match — falls through to final `return null` |

**Block 10** — ELSE-IF (key = "種類コード名称") `(key.equals("種類コード名称"))` (L408)

Branch for the **Category Code Name** field (種類コード名称 — the descriptive human-readable name for the category code).

> Business description: Returns data for the category code name field, providing the human-readable description of the service sub-category classification.

**Block 10.1** — IF-ELSE-IF chain (subkey) (L410)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // case-insensitive check for value subkey |
| 2 | CALL | `return getSbt_cd_nm_value();` // returns sbt_cd_nm_value (String, default "") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // case-insensitive check for enable subkey |
| 4 | CALL | `return getSbt_cd_nm_enabled();` // returns sbt_cd_nm_enabled (Boolean, default false) // subkeyが"enable"の場合、sbt_cd_nm_enableのgetterの戻り値を返す (When subkey is "enable", return the getter value of sbt_cd_nm_enable) |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // case-insensitive check for state subkey |
| 6 | CALL | `return getSbt_cd_nm_state();` // returns sbt_cd_nm_state (String, default "") // subkeyが"state"の場合、ステータスを返す (When subkey is "state", return the status) |
| 7 | ELSE | // no match — falls through to final `return null` |

**Block 11** — RETURN (default fallback) (L417)

Catch-all: no matching key-subkey combination was found.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // 条件に一致するプロパティが存在しない場合は、nullを返す (If no matching property exists, return null) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `choice_value` | Field | Consultation selection boolean — whether a checkbox is checked for a discount service contract row in the list display |
| `choice_enabled` | Field | Consultation selection enabled flag — whether the checkbox is editable/interactable |
| `choice_state` | Field | Consultation selection state string — UI rendering state for the checkbox control |
| `no_value` | Field | Row number display value — sequential number shown for each contract line item |
| `no_enabled` | Field | Number field enabled flag — whether the row number display is active |
| `no_state` | Field | Number field state string — UI rendering state for the row number |
| `campaign_cd_value` | Field | Campaign code value — the identifier code for the discount campaign applied to a service contract |
| `campaign_cd_enabled` | Field | Campaign code enabled flag — whether the campaign code field is editable |
| `campaign_cd_state` | Field | Campaign code state string — UI rendering state for the campaign code field |
| `campaign_nm_value` | Field | Campaign name value — the human-readable title of the discount campaign |
| `campaign_nm_enabled` | Field | Campaign name enabled flag — whether the campaign name field is editable |
| `campaign_nm_state` | Field | Campaign name state string — UI rendering state for the campaign name field |
| `type_cd_value` | Field | Type code value — the classification code for the service type (e.g., FTTH, VDSL, Ethernet) |
| `type_cd_state` | Field | Type code state string — UI rendering state for the type code field |
| `type_cd_nm_value` | Field | Type code name value — the descriptive name of the service type code |
| `type_cd_nm_enabled` | Field | Type code name enabled flag — whether the type code name field is editable |
| `type_cd_nm_state` | Field | Type code name state string — UI rendering state for the type code name field |
| `sbt_cd_value` | Field | Sub-category code value — the secondary classification code for service contracts |
| `sbt_cd_state` | Field | Sub-category code state string — UI rendering state for the sub-category code field |
| `sbt_cd_nm_value` | Field | Sub-category code name value — the descriptive name of the sub-category code |
| `sbt_cd_nm_enabled` | Field | Sub-category code name enabled flag — whether the sub-category code name field is editable |
| `sbt_cd_nm_state` | Field | Sub-category code name state string — UI rendering state for the sub-category code name field |
| 照会選択 | Japanese field name | Consultation Selection — the checkbox used to select rows in the discount service contract inquiry list |
| 番号 | Japanese field name | Number — the sequential row number displayed in the contract list |
| キャンペーンコード | Japanese field name | Campaign Code — identifier for the discount campaign (割引キャンペーン) |
| キャンペーン名 | Japanese field name | Campaign Name — human-readable title of the discount campaign |
| タイプコード | Japanese field name | Type Code — service type classification code (e.g., FTTH, VDSL, ENET) |
| タイプコード名称 | Japanese field name | Type Code Name — descriptive name of the type code |
| 種類コード | Japanese field name | Category Code — sub-category classification code (種別コード) |
| 種類コード名称 | Japanese field name | Category Code Name — descriptive name of the category code |
| KKW01023SF | Screen code | Discount Service Contract Inquiry screen module (割引サービス契約照会) |
| KKSV0231 | Screen ID | The actual web screen that renders the discount service contract inquiry page |
| SFBean | Term | Service Form Bean — the data transfer bean used to pass data between the presentation layer and service layer |
| X33V | Framework | Fujitsu Futurity web framework — the presentation framework providing the data-type bean contract |
| X33VDataTypeBeanInterface | Interface | The interface contract that defines `loadModelData(String key, String subkey)` for dynamic data loading |
| 割引サービス契約 | Business term | Discount Service Contract — a service contract that includes promotional pricing or discount campaigns |
| 照会 | Business term | Inquiry/Display — the screen operation for viewing/searching data without modifying it |
