# Business Logic — KKW01030SF03DBean.loadModelData() [285 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15101SF.KKW01030SF03DBean` |
| Layer | View / Screen Component (Web Client framework — X33VViewBaseBean descendant) |
| Module | `KKA15101SF` (Package: `eo.web.webview.KKA15101SF`) |

## 1. Role

### KKW01030SF03DBean.loadModelData()

`loadModelData` is the central data routing dispatcher for the `KKA15101SF` screen's data bean. It implements a key-based dispatch pattern (also known as a routing or proxy getter pattern) that allows UI components to retrieve typed field data from this bean using a simple two-level string key scheme: a Japanese-language display label (the `key`) and a property accessor name (the `subkey`). This is a standard X33/X31 framework method inherited from `X31CBaseBean` and implemented to support the X33VDataTypeBeanInterface contract.

The method handles 23 distinct business fields, each corresponding to a contract/service item displayed on a telecom service order screen (KKA15101SF). These fields cover service identifiers (number, contract type), campaign data, dates (application start, start date, end date, end date after update), flags (instant application flag, billing necessity flag), pricing codes (discount service code, penalty code), and status/type metadata. Each field supports up to three property subtypes: `value` (the primary data value), `enable` (whether the field is editable/enabled), and `state` (the validation or error state string).

The design pattern implemented here is a **routing/dispatch pattern with delegation to typed getters**. Rather than exposing individual getters directly to the view layer, the framework calls this single `loadModelData` method, which routes based on the `key` and `subkey` to the appropriate strongly-typed getter. This abstraction decouples the UI from the bean's internal field structure and allows the framework to uniformly access any field's value, enable flag, or state without knowing the bean's internals.

In the larger system, this method serves as the data access bridge between the X33 view rendering infrastructure and the screen's data model. It is called during page load and re-render cycles to populate form fields from bean state. No database, SC, or CBS interactions occur — it is a pure read-through of in-memory bean fields.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData key, subkey"])
    START --> CHECK_NULL["Check if key or subkey is null"]
    CHECK_NULL --> |Yes| RETURN_NULL_1["Return null"]
    CHECK_NULL --> |No| FIND_SEP["Compute indexOf('/') on key"]
    FIND_SEP --> KEY_ROUTE["Route by key string match"]

    KEY_ROUTE --> K1["key == 番号/件数"]
    KEY_ROUTE --> K2["key == 選択"]
    KEY_ROUTE --> K3["key == 番号"]
    KEY_ROUTE --> K4["key == 契約種別"]
    KEY_ROUTE --> K5["key == 更新年月日時分更新前"]
    KEY_ROUTE --> K6["key == キャンペーンコード"]
    KEY_ROUTE --> K7["key == キャンペーン名"]
    KEY_ROUTE --> K8["key == ステータス"]
    KEY_ROUTE --> K9["key == ステータス名称"]
    KEY_ROUTE --> K10["key == タイプコード"]
    KEY_ROUTE --> K11["key == タイプコード名称"]
    KEY_ROUTE --> K12["key == 即時適用フラグ"]
    KEY_ROUTE --> K13["key == 即時適用フラグ名称"]
    KEY_ROUTE --> K14["key == 申請年月日"]
    KEY_ROUTE --> K15["key == 開始年月日"]
    KEY_ROUTE --> K16["key == 終了年月日"]
    KEY_ROUTE --> K17["key == 割引サービスコード"]
    KEY_ROUTE --> K18["key == 課金要否フラグ"]
    KEY_ROUTE --> K19["key == 課金要否フラグ名称"]
    KEY_ROUTE --> K20["key == 更新後終了年月日"]
    KEY_ROUTE --> K21["key == 違約金名"]
    KEY_ROUTE --> K22["key == 違約金コード"]
    KEY_ROUTE --> K23["key == 前月解約"]
    KEY_ROUTE --> K24["No match"]

    K1 --> K1_SUB["Route by subkey"]
    K2 --> K1_SUB
    K3 --> K1_SUB
    K4 --> K1_SUB
    K5 --> K1_SUB
    K6 --> K1_SUB
    K7 --> K1_SUB
    K8 --> K1_SUB
    K9 --> K1_SUB
    K10 --> K1_SUB
    K11 --> K1_SUB
    K12 --> K1_SUB
    K13 --> K1_SUB
    K14 --> K1_SUB
    K15 --> K1_SUB
    K16 --> K1_SUB
    K17 --> K1_SUB
    K18 --> K1_SUB
    K19 --> K1_SUB
    K20 --> K1_SUB
    K21 --> K1_SUB
    K22 --> K1_SUB
    K23 --> K1_SUB

    K1_SUB --> SUB_VAL["subkey equals value"]
    K1_SUB --> SUB_ENA["subkey equals enable"]
    K1_SUB --> SUB_STA["subkey equals state"]
    K1_SUB --> SUB_OTHER["Other subkey"]

    SUB_VAL --> GET_VALUE["Get value getter"]
    SUB_ENA --> GET_ENA["Get enabled getter"]
    SUB_STA --> GET_STA["Get state getter"]
    SUB_OTHER --> GET_VALUE

    GET_VALUE --> RETURN_DATA["Return data value"]
    GET_ENA --> RETURN_DATA
    GET_STA --> RETURN_DATA
    RETURN_NULL_1 --> END_N["Return null"]
    K24 --> END_N
```

**Flow Description:**

1. **Null Guard:** Checks if `key` or `subkey` is null. If either is null, returns null immediately.
2. **Separator Computation:** Computes `key.indexOf("/")` — this value is stored in `separaterPoint` but is not used further in this method (reserved for future use or framework coordination).
3. **Key Routing (23 branches):** Each `key.equals()` comparison dispatches to the corresponding group of getter methods for that field. The `equalsIgnoreCase()` checks on `subkey` are case-insensitive to allow flexible invocations from the framework.
4. **Subkey Routing (within each key):**
   - `value` → Returns the primary data value of the field (type varies: String or Boolean depending on field).
   - `enable` → Returns the enabled/ editable flag for the field (Boolean).
   - `state` → Returns the validation state string for the field (String).
   - Any other subkey → Falls through the chain and ultimately returns null.
5. **Fallback:** If no key matches, returns null.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Japanese-language field label that identifies which screen field to query. Acts as a routing key mapped to a specific business data item (e.g., "番号／件数" for item count, "契約種別" for contract type, "開始年月日" for start date). The value must match one of the 23 defined field labels exactly (case-sensitive). |
| 2 | `subkey` | `String` | Property accessor name that determines which aspect of the field to retrieve. Valid values (case-insensitive) are: `"value"` (primary data), `"enable"` (editability flag), or `"state"` (validation/error state). Controls the getter method dispatched to within the matched key group. |

**Instance fields read by this method:**

All access is indirect through getter methods (which read protected fields). The fields accessed include:

| Field Name | Type | Business Meaning |
|-----------|------|------------------|
| `no_cnt_value` | `String` | Item count value |
| `no_cnt_enabled` | `Boolean` | Whether item count field is editable |
| `no_cnt_state` | `String` | Validation state of item count |
| `choice_value` | `Boolean` | Selection flag value |
| `choice_enabled` | `Boolean` | Whether selection field is editable |
| `choice_state` | `String` | Validation state of selection |
| `no_value`, `no_state` | `String` | Number/ID value and state |
| `kei_kind_value`, `kei_kind_state` | `String` | Contract type value and state |
| `upd_dtm_bf_value`, `upd_dtm_bf_state` | `String` | Pre-update timestamp value and state |
| `campaign_cd_value`, `campaign_cd_enabled`, `campaign_cd_state` | `String/Boolean` | Campaign code value, enabled flag, state |
| `campaign_nm_value`, `campaign_nm_enabled`, `campaign_nm_state` | `String/Boolean` | Campaign name value, enabled flag, state |
| `stat_value`, `stat_state` | `String` | Status value and state |
| `stat_nm_value`, `stat_nm_enabled`, `stat_nm_state` | `String/Boolean` | Status name value, enabled flag, state |
| `type_cd_value`, `type_cd_state` | `String` | Type code value and state |
| `type_cd_nm_value`, `type_cd_nm_enabled`, `type_cd_nm_state` | `String/Boolean` | Type code name value, enabled flag, state |
| `aply_jun_value`, `aply_jun_state` | `String` | Instant application flag value and state |
| `aply_jun_nm_value`, `aply_jun_nm_enabled`, `aply_jun_nm_state` | `String/Boolean` | Instant application name value, enabled flag, state |
| `mskm_ymd_value`, `mskm_ymd_enabled`, `mskm_ymd_state` | `String/Boolean` | Application date value, enabled flag, state |
| `staymd_value`, `staymd_enabled`, `staymd_state` | `String/Boolean` | Start date value, enabled flag, state |
| `endymd_value`, `endymd_enabled`, `endymd_state` | `String/Boolean` | End date value, enabled flag, state |
| `wrib_svc_cd_value`, `wrib_svc_cd_enabled`, `wrib_svc_cd_state` | `String/Boolean` | Discount service code value, enabled flag, state |
| `kakin_yohi_value`, `kakin_yohi_state` | `String` | Billing necessity flag value and state |
| `kakin_yohi_nm_value`, `kakin_yohi_nm_enabled`, `kakin_yohi_nm_state` | `String/Boolean` | Billing necessity name value, enabled flag, state |
| `endymd_af_value`, `endymd_af_enabled`, `endymd_af_state` | `String/Boolean` | Post-update end date value, enabled flag, state |
| `pnlty_nm_value`, `pnlty_nm_state` | `String` | Penalty name value and state |
| `pnlty_cd_value`, `pnlty_cd_enabled`, `pnlty_cd_state` | `String/Boolean` | Penalty code value, enabled flag, state |
| `wrib_svc_kei_zengetu_kaiyaku_value`, `wrib_svc_kei_zengetu_kaiyaku_enabled`, `wrib_svc_kei_zengetu_kaiyaku_state` | `String/Boolean` | Previous month cancellation flag value, enabled flag, state |

## 4. CRUD Operations / Called Services

This method performs **no database access, no SC/CBS calls, and no CRUD operations**. It is a pure in-memory data routing dispatcher. All operations are internal getter calls on the bean's own fields.

### Internal Getter Invocations

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW01030SF03DBean.getNo_cnt_value` | (self) | (in-memory field) | Returns item count value |
| R | `KKW01030SF03DBean.getNo_cnt_enabled` | (self) | (in-memory field) | Returns item count enabled flag |
| R | `KKW01030SF03DBean.getNo_cnt_state` | (self) | (in-memory field) | Returns item count validation state |
| R | `KKW01030SF03DBean.getChoice_value` | (self) | (in-memory field) | Returns selection flag value |
| R | `KKW01030SF03DBean.getChoice_enabled` | (self) | (in-memory field) | Returns selection field enabled flag |
| R | `KKW01030SF03DBean.getChoice_state` | (self) | (in-memory field) | Returns selection validation state |
| R | `KKW01030SF03DBean.getNo_value` | (self) | (in-memory field) | Returns number/ID value |
| R | `KKW01030SF03DBean.getNo_state` | (self) | (in-memory field) | Returns number/ID validation state |
| R | `KKW01030SF03DBean.getKei_kind_value` | (self) | (in-memory field) | Returns contract type value |
| R | `KKW01030SF03DBean.getKei_kind_state` | (self) | (in-memory field) | Returns contract type validation state |
| R | `KKW01030SF03DBean.getUpd_dtm_bf_value` | (self) | (in-memory field) | Returns pre-update timestamp value |
| R | `KKW01030SF03DBean.getUpd_dtm_bf_state` | (self) | (in-memory field) | Returns pre-update timestamp state |
| R | `KKW01030SF03DBean.getCampaign_cd_value` | (self) | (in-memory field) | Returns campaign code value |
| R | `KKW01030SF03DBean.getCampaign_cd_enabled` | (self) | (in-memory field) | Returns campaign code enabled flag |
| R | `KKW01030SF03DBean.getCampaign_cd_state` | (self) | (in-memory field) | Returns campaign code state |
| R | `KKW01030SF03DBean.getCampaign_nm_value` | (self) | (in-memory field) | Returns campaign name value |
| R | `KKW01030SF03DBean.getCampaign_nm_enabled` | (self) | (in-memory field) | Returns campaign name enabled flag |
| R | `KKW01030SF03DBean.getCampaign_nm_state` | (self) | (in-memory field) | Returns campaign name state |
| R | `KKW01030SF03DBean.getStat_value` | (self) | (in-memory field) | Returns status value |
| R | `KKW01030SF03DBean.getStat_state` | (self) | (in-memory field) | Returns status state |
| R | `KKW01030SF03DBean.getStat_nm_value` | (self) | (in-memory field) | Returns status name value |
| R | `KKW01030SF03DBean.getStat_nm_enabled` | (self) | (in-memory field) | Returns status name enabled flag |
| R | `KKW01030SF03DBean.getStat_nm_state` | (self) | (in-memory field) | Returns status name state |
| R | `KKW01030SF03DBean.getType_cd_value` | (self) | (in-memory field) | Returns type code value |
| R | `KKW01030SF03DBean.getType_cd_state` | (self) | (in-memory field) | Returns type code state |
| R | `KKW01030SF03DBean.getType_cd_nm_value` | (self) | (in-memory field) | Returns type code name value |
| R | `KKW01030SF03DBean.getType_cd_nm_enabled` | (self) | (in-memory field) | Returns type code name enabled flag |
| R | `KKW01030SF03DBean.getType_cd_nm_state` | (self) | (in-memory field) | Returns type code name state |
| R | `KKW01030SF03DBean.getAply_jun_value` | (self) | (in-memory field) | Returns instant application flag value |
| R | `KKW01030SF03DBean.getAply_jun_state` | (self) | (in-memory field) | Returns instant application flag state |
| R | `KKW01030SF03DBean.getAply_jun_nm_value` | (self) | (in-memory field) | Returns instant application name value |
| R | `KKW01030SF03DBean.getAply_jun_nm_enabled` | (self) | (in-memory field) | Returns instant application name enabled flag |
| R | `KKW01030SF03DBean.getAply_jun_nm_state` | (self) | (in-memory field) | Returns instant application name state |
| R | `KKW01030SF03DBean.getMskm_ymd_value` | (self) | (in-memory field) | Returns application date value |
| R | `KKW01030SF03DBean.getMskm_ymd_enabled` | (self) | (in-memory field) | Returns application date enabled flag |
| R | `KKW01030SF03DBean.getMskm_ymd_state` | (self) | (in-memory field) | Returns application date state |
| R | `KKW01030SF03DBean.getStaymd_value` | (self) | (in-memory field) | Returns start date value |
| R | `KKW01030SF03DBean.getStaymd_enabled` | (self) | (in-memory field) | Returns start date enabled flag |
| R | `KKW01030SF03DBean.getStaymd_state` | (self) | (in-memory field) | Returns start date state |
| R | `KKW01030SF03DBean.getEndymd_value` | (self) | (in-memory field) | Returns end date value |
| R | `KKW01030SF03DBean.getEndymd_enabled` | (self) | (in-memory field) | Returns end date enabled flag |
| R | `KKW01030SF03DBean.getEndymd_state` | (self) | (in-memory field) | Returns end date state |
| R | `KKW01030SF03DBean.getWrib_svc_cd_value` | (self) | (in-memory field) | Returns discount service code value |
| R | `KKW01030SF03DBean.getWrib_svc_cd_enabled` | (self) | (in-memory field) | Returns discount service code enabled flag |
| R | `KKW01030SF03DBean.getWrib_svc_cd_state` | (self) | (in-memory field) | Returns discount service code state |
| R | `KKW01030SF03DBean.getKakin_yohi_value` | (self) | (in-memory field) | Returns billing necessity flag value |
| R | `KKW01030SF03DBean.getKakin_yohi_state` | (self) | (in-memory field) | Returns billing necessity flag state |
| R | `KKW01030SF03DBean.getKakin_yohi_nm_value` | (self) | (in-memory field) | Returns billing necessity name value |
| R | `KKW01030SF03DBean.getKakin_yohi_nm_enabled` | (self) | (in-memory field) | Returns billing necessity name enabled flag |
| R | `KKW01030SF03DBean.getKakin_yohi_nm_state` | (self) | (in-memory field) | Returns billing necessity name state |
| R | `KKW01030SF03DBean.getEndymd_af_value` | (self) | (in-memory field) | Returns post-update end date value |
| R | `KKW01030SF03DBean.getEndymd_af_enabled` | (self) | (in-memory field) | Returns post-update end date enabled flag |
| R | `KKW01030SF03DBean.getEndymd_af_state` | (self) | (in-memory field) | Returns post-update end date state |
| R | `KKW01030SF03DBean.getPnlty_nm_value` | (self) | (in-memory field) | Returns penalty name value |
| R | `KKW01030SF03DBean.getPnlty_nm_state` | (self) | (in-memory field) | Returns penalty name state |
| R | `KKW01030SF03DBean.getPnlty_cd_value` | (self) | (in-memory field) | Returns penalty code value |
| R | `KKW01030SF03DBean.getPnlty_cd_enabled` | (self) | (in-memory field) | Returns penalty code enabled flag |
| R | `KKW01030SF03DBean.getPnlty_cd_state` | (self) | (in-memory field) | Returns penalty code state |
| R | `KKW01030SF03DBean.getWrib_svc_kei_zengetu_kaiyaku_value` | (self) | (in-memory field) | Returns previous month cancellation flag value |
| R | `KKW01030SF03DBean.getWrib_svc_kei_zengetu_kaiyaku_enabled` | (self) | (in-memory field) | Returns previous month cancellation enabled flag |
| R | `KKW01030SF03DBean.getWrib_svc_kei_zengetu_kaiyaku_state` | (self) | (in-memory field) | Returns previous month cancellation state |

## 5. Dependency Trace

The `KKW01030SF03DBean` class implements `X33VDataTypeBeanInterface`, which defines `loadModelData(String key, String subkey)` as a framework contract. The method is invoked by the X33 view framework infrastructure when rendering data fields on screen `KKA15101SF`.

In practice, the framework internally casts bean instances to `X33VDataTypeBeanInterface` and calls `loadModelData` during data binding. The `KKW01030SFBean` (the parent screen bean for the KKA15101SF screen) creates `KKW01030SF03DBean` instances for list-type data type beans (e.g., the "選択キャンペーン一覧" / Selected Campaign List field).

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKA15101SF | `KKW01030SFBean` (creates `KKW01030SF03DBean` instances for data-type bean fields) -> X33 framework casts to `X33VDataTypeBeanInterface` -> `KKW01030SF03DBean.loadModelData(key, subkey)` | (in-memory getter only — no external endpoints) |
| 2 | Screen:KKA15101SF | X33VViewBaseBean data binding -> `X33VDataTypeBeanInterface.loadModelData` dispatch -> `KKW01030SF03DBean.loadModelData(key, subkey)` | (in-memory getter only — no external endpoints) |

**Called methods (this method's outgoing calls):**

This method calls only its own getter methods (all internal R operations, detailed in Section 4). No external SCs, CBS, or database tables are reached.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null guard) (L827)

> Checks if either parameter is null. Returns null immediately.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` — If key or subkey is null, return null (日本語: key, subkey がnullの場合、nullを返す) |
| 2 | RETURN | `return null;` |

### Block 2 — EXEC (separator computation) (L831)

> Computes the position of "/" in key. Stored but not used in this method (reserved).

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` — Compute separator index (reserved, not used further) |

### Block 3 — ELSE-IF (key == "番号／件数") [番号／件数 = "Item Count"] (L834)

> Handles the item count field (data type String). Supports value, enable, and state subkeys.

**Block 3.1 — ELSE-IF (subkey == "value") (L835)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getNo_cnt_value();` — Returns the item count value (String) |

**Block 3.2 — ELSE-IF (subkey == "enable") (L837)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getNo_cnt_enabled();` — Returns the item count enabled flag (Boolean) (日本語: subkey が"enable"の場合、no_cnt_enable の getter の値を返す) |

**Block 3.3 — ELSE-IF (subkey == "state") (L839)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getNo_cnt_state();` — Returns the item count validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 4 — ELSE-IF (key == "選択") [選択 = "Selection"] (L843)

> Handles the selection field (data type Boolean). Supports value, enable, and state subkeys.

**Block 4.1 — ELSE-IF (subkey == "value") (L844)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getChoice_value();` — Returns the selection flag value (Boolean) |

**Block 4.2 — ELSE-IF (subkey == "enable") (L846)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getChoice_enabled();` — Returns the selection field enabled flag (Boolean) (日本語: subkey が"enable"の場合、choice_enable の getter の値を返す) |

**Block 4.3 — ELSE-IF (subkey == "state") (L848)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getChoice_state();` — Returns the selection validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 5 — ELSE-IF (key == "番号") [番号 = "Number/ID"] (L852)

> Handles the number/ID field (data type String). Supports value and state subkeys only (no enable subkey).

**Block 5.1 — ELSE-IF (subkey == "value") (L853)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getNo_value();` — Returns the number/ID value (String) |

**Block 5.2 — ELSE-IF (subkey == "state") (L855)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getNo_state();` — Returns the number/ID validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 6 — ELSE-IF (key == "契約種別") [契約種別 = "Contract Type"] (L859)

> Handles the contract type field (data type String). Supports value and state subkeys only.

**Block 6.1 — ELSE-IF (subkey == "value") (L860)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKei_kind_value();` — Returns the contract type value (String) |

**Block 6.2 — ELSE-IF (subkey == "state") (L862)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKei_kind_state();` — Returns the contract type validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 7 — ELSE-IF (key == "更新年月日時分更新前") [更新年月日時分更新前 = "Pre-Update Timestamp"] (L866)

> Handles the pre-update timestamp field (data type String). Supports value and state subkeys only.

**Block 7.1 — ELSE-IF (subkey == "value") (L867)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getUpd_dtm_bf_value();` — Returns the pre-update timestamp value (String) |

**Block 7.2 — ELSE-IF (subkey == "state") (L869)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getUpd_dtm_bf_state();` — Returns the pre-update timestamp state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 8 — ELSE-IF (key == "キャンペーンコード") [キャンペーンコード = "Campaign Code"] (L873)

> Handles the campaign code field (data type String). Supports value, enable, and state subkeys.

**Block 8.1 — ELSE-IF (subkey == "value") (L874)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_cd_value();` — Returns the campaign code value (String) |

**Block 8.2 — ELSE-IF (subkey == "enable") (L876)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_cd_enabled();` — Returns the campaign code enabled flag (Boolean) (日本語: subkey が"enable"の場合、campaign_cd_enable の getter の値を返す) |

**Block 8.3 — ELSE-IF (subkey == "state") (L878)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_cd_state();` — Returns the campaign code validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 9 — ELSE-IF (key == "キャンペーン名") [キャンペーン名 = "Campaign Name"] (L882)

> Handles the campaign name field (data type String). Supports value, enable, and state subkeys.

**Block 9.1 — ELSE-IF (subkey == "value") (L883)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_nm_value();` — Returns the campaign name value (String) |

**Block 9.2 — ELSE-IF (subkey == "enable") (L885)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_nm_enabled();` — Returns the campaign name enabled flag (Boolean) (日本語: subkey が"enable"の場合、campaign_nm_enable の getter の値を返す) |

**Block 9.3 — ELSE-IF (subkey == "state") (L887)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getCampaign_nm_state();` — Returns the campaign name validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 10 — ELSE-IF (key == "ステータス") [ステータス = "Status"] (L891)

> Handles the status field (data type String). Supports value and state subkeys only.

**Block 10.1 — ELSE-IF (subkey == "value") (L892)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStat_value();` — Returns the status value (String) |

**Block 10.2 — ELSE-IF (subkey == "state") (L894)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStat_state();` — Returns the status validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 11 — ELSE-IF (key == "ステータス名称") [ステータス名称 = "Status Name"] (L898)

> Handles the status name field (data type String). Supports value, enable, and state subkeys.

**Block 11.1 — ELSE-IF (subkey == "value") (L899)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStat_nm_value();` — Returns the status name value (String) |

**Block 11.2 — ELSE-IF (subkey == "enable") (L901)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStat_nm_enabled();` — Returns the status name enabled flag (Boolean) (日本語: subkey が"enable"の場合、stat_nm_enable の getter の値を返す) |

**Block 11.3 — ELSE-IF (subkey == "state") (L903)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStat_nm_state();` — Returns the status name validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 12 — ELSE-IF (key == "タイプコード") [タイプコード = "Type Code"] (L907)

> Handles the type code field (data type String). Supports value and state subkeys only.

**Block 12.1 — ELSE-IF (subkey == "value") (L908)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getType_cd_value();` — Returns the type code value (String) |

**Block 12.2 — ELSE-IF (subkey == "state") (L910)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getType_cd_state();` — Returns the type code validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 13 — ELSE-IF (key == "タイプコード名称") [タイプコード名称 = "Type Code Name"] (L914)

> Handles the type code name field (data type String). Supports value, enable, and state subkeys.

**Block 13.1 — ELSE-IF (subkey == "value") (L915)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getType_cd_nm_value();` — Returns the type code name value (String) |

**Block 13.2 — ELSE-IF (subkey == "enable") (L917)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getType_cd_nm_enabled();` — Returns the type code name enabled flag (Boolean) (日本語: subkey が"enable"の場合、type_cd_nm_enable の getter の値を返す) |

**Block 13.3 — ELSE-IF (subkey == "state") (L919)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getType_cd_nm_state();` — Returns the type code name validation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 14 — ELSE-IF (key == "即時適用フラグ") [即時適用フラグ = "Instant Application Flag"] (L923)

> Handles the instant application flag field (data type String). Supports value and state subkeys only.

**Block 14.1 — ELSE-IF (subkey == "value") (L924)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getAply_jun_value();` — Returns the instant application flag value (String) |

**Block 14.2 — ELSE-IF (subkey == "state") (L926)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getAply_jun_state();` — Returns the instant application flag state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 15 — ELSE-IF (key == "即時適用フラグ名称") [即時適用フラグ名称 = "Instant Application Flag Name"] (L930)

> Handles the instant application flag name field (data type String). Supports value, enable, and state subkeys.

**Block 15.1 — ELSE-IF (subkey == "value") (L931)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getAply_jun_nm_value();` — Returns the instant application flag name value (String) |

**Block 15.2 — ELSE-IF (subkey == "enable") (L933)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getAply_jun_nm_enabled();` — Returns the instant application flag name enabled flag (Boolean) (日本語: subkey が"enable"の場合、aply_jun_nm_enable の getter の値を返す) |

**Block 15.3 — ELSE-IF (subkey == "state") (L935)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getAply_jun_nm_state();` — Returns the instant application flag name state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 16 — ELSE-IF (key == "申請年月日") [申請年月日 = "Application Date"] (L939)

> Handles the application date field (data type String). Supports value, enable, and state subkeys.

**Block 16.1 — ELSE-IF (subkey == "value") (L940)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_value();` — Returns the application date value (String) |

**Block 16.2 — ELSE-IF (subkey == "enable") (L942)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_enabled();` — Returns the application date enabled flag (Boolean) (日本語: subkey が"enable"の場合、mskm_ymd_enable の getter の値を返す) |

**Block 16.3 — ELSE-IF (subkey == "state") (L944)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_state();` — Returns the application date state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 17 — ELSE-IF (key == "開始年月日") [開始年月日 = "Start Date"] (L948)

> Handles the start date field (data type String). Supports value, enable, and state subkeys.

**Block 17.1 — ELSE-IF (subkey == "value") (L949)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStaymd_value();` — Returns the start date value (String) |

**Block 17.2 — ELSE-IF (subkey == "enable") (L951)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStaymd_enabled();` — Returns the start date enabled flag (Boolean) (日本語: subkey が"enable"の場合、staymd_enable の getter の値を返す) |

**Block 17.3 — ELSE-IF (subkey == "state") (L953)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStaymd_state();` — Returns the start date state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 18 — ELSE-IF (key == "終了年月日") [終了年月日 = "End Date"] (L957)

> Handles the end date field (data type String). Supports value, enable, and state subkeys.

**Block 18.1 — ELSE-IF (subkey == "value") (L958)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_value();` — Returns the end date value (String) |

**Block 18.2 — ELSE-IF (subkey == "enable") (L960)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_enabled();` — Returns the end date enabled flag (Boolean) (日本語: subkey が"enable"の場合、endymd_enable の getter の値を返す) |

**Block 18.3 — ELSE-IF (subkey == "state") (L962)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_state();` — Returns the end date state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 19 — ELSE-IF (key == "割引サービスコード") [割引サービスコード = "Discount Service Code"] (L966)

> Handles the discount service code field (data type String). Supports value, enable, and state subkeys.

**Block 19.1 — ELSE-IF (subkey == "value") (L967)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_cd_value();` — Returns the discount service code value (String) |

**Block 19.2 — ELSE-IF (subkey == "enable") (L969)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_cd_enabled();` — Returns the discount service code enabled flag (Boolean) (日本語: subkey が"enable"の場合、wrib_svc_cd_enable の getter の値を返す) |

**Block 19.3 — ELSE-IF (subkey == "state") (L971)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_cd_state();` — Returns the discount service code state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 20 — ELSE-IF (key == "課金要否フラグ") [課金要否フラグ = "Billing Necessity Flag"] (L975)

> Handles the billing necessity flag field (data type String). Supports value and state subkeys only.

**Block 20.1 — ELSE-IF (subkey == "value") (L976)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKakin_yohi_value();` — Returns the billing necessity flag value (String) |

**Block 20.2 — ELSE-IF (subkey == "state") (L978)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKakin_yohi_state();` — Returns the billing necessity flag state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 21 — ELSE-IF (key == "課金要否フラグ名称") [課金要否フラグ名称 = "Billing Necessity Flag Name"] (L982)

> Handles the billing necessity flag name field (data type String). Supports value, enable, and state subkeys.

**Block 21.1 — ELSE-IF (subkey == "value") (L983)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKakin_yohi_nm_value();` — Returns the billing necessity flag name value (String) |

**Block 21.2 — ELSE-IF (subkey == "enable") (L985)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKakin_yohi_nm_enabled();` — Returns the billing necessity flag name enabled flag (Boolean) (日本語: subkey が"enable"の場合、kakin_yohi_nm_enable の getter の値を返す) |

**Block 21.3 — ELSE-IF (subkey == "state") (L987)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKakin_yohi_nm_state();` — Returns the billing necessity flag name state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 22 — ELSE-IF (key == "更新後終了年月日") [更新後終了年月日 = "Post-Update End Date"] (L991)

> Handles the post-update end date field (data type String). Supports value, enable, and state subkeys.

**Block 22.1 — ELSE-IF (subkey == "value") (L992)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_af_value();` — Returns the post-update end date value (String) |

**Block 22.2 — ELSE-IF (subkey == "enable") (L994)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_af_enabled();` — Returns the post-update end date enabled flag (Boolean) (日本語: subkey が"enable"の場合、endymd_af_enable の getter の値を返す) |

**Block 22.3 — ELSE-IF (subkey == "state") (L996)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getEndymd_af_state();` — Returns the post-update end date state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 23 — ELSE-IF (key == "違約金名") [違約金名 = "Penalty Name"] (L1000)

> Handles the penalty name field (data type String). Supports value and state subkeys only.

**Block 23.1 — ELSE-IF (subkey == "value") (L1001)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getPnlty_nm_value();` — Returns the penalty name value (String) |

**Block 23.2 — ELSE-IF (subkey == "state") (L1003)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getPnlty_nm_state();` — Returns the penalty name state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 24 — ELSE-IF (key == "違約金コード") [違約金コード = "Penalty Code"] (L1007)

> Handles the penalty code field (data type Boolean). Supports value, enable, and state subkeys.

**Block 24.1 — ELSE-IF (subkey == "value") (L1008)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getPnlty_cd_value();` — Returns the penalty code value (Boolean) |

**Block 24.2 — ELSE-IF (subkey == "enable") (L1010)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getPnlty_cd_enabled();` — Returns the penalty code enabled flag (Boolean) (日本語: subkey が"enable"の場合、pnlty_cd_enable の getter の値を返す) |

**Block 24.3 — ELSE-IF (subkey == "state") (L1012)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getPnlty_cd_state();` — Returns the penalty code state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 25 — ELSE-IF (key == "前月解約") [前月解約 = "Previous Month Cancellation"] (L1016)

> Handles the previous month cancellation flag field (data type Boolean). Supports value and state subkeys only.

**Block 25.1 — ELSE-IF (subkey == "value") (L1017)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_kei_zengetu_kaiyaku_value();` — Returns the previous month cancellation flag value (Boolean) |

**Block 25.2 — ELSE-IF (subkey == "state") (L1019)**

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_kei_zengetu_kaiyaku_state();` — Returns the previous month cancellation state (String) (日本語: subkey が"state"の場合、ステータスを返す) |

### Block 26 — RETURN (L1023)

> No matching key found. Returns null as fallback.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` — If no matching key is found, return null (日本語: 条件に一致するプロパティが存在しない場合は、nullを返す) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `no_cnt_value` | Field | Item count — the number of items/lines in a service contract |
| `choice_value` | Field | Selection flag — a Boolean indicating whether this option/item is selected |
| `no_value` | Field | Number/ID — the service contract line item identifier |
| `kei_kind_value` | Field | Contract type — the classification of the service contract (e.g., new, renewal, change) |
| `upd_dtm_bf_value` | Field | Pre-update timestamp — the date/time before the last update was made to the record |
| `campaign_cd_value` | Field | Campaign code — the promotion/campaign identifier associated with the service contract |
| `campaign_nm_value` | Field | Campaign name — the display name of the associated promotion campaign |
| `stat_value` | Field | Status — the current operational status of the contract line |
| `stat_nm_value` | Field | Status name — the human-readable label for the current status |
| `type_cd_value` | Field | Type code — a code identifying the service item type |
| `type_cd_nm_value` | Field | Type code name — the human-readable label for the service item type |
| `aply_jun_value` | Field | Instant application flag — indicates whether the service change takes effect immediately |
| `aply_jun_nm_value` | Field | Instant application flag name — the display label for the instant application flag |
| `mskm_ymd_value` | Field | Application date (申請年月日) — the date the service was applied for/registered |
| `staymd_value` | Field | Start date (開始年月日) — the date the service becomes active |
| `endymd_value` | Field | End date (終了年月日) — the date the service terminates |
| `wrib_svc_cd_value` | Field | Discount service code (割引サービスコード) — a code identifying discount/promotional services |
| `kakin_yohi_value` | Field | Billing necessity flag (課金要否フラグ) — whether billing applies to this item |
| `kakin_yohi_nm_value` | Field | Billing necessity flag name (課金要否フラグ名称) — display label for the billing flag |
| `endymd_af_value` | Field | Post-update end date (更新後終了年月日) — the revised end date after a contract change |
| `pnlty_nm_value` | Field | Penalty name (違約金名) — the name of the early termination penalty |
| `pnlty_cd_value` | Field | Penalty code (違約金コード) — the code identifying the penalty type (Boolean: true = penalty applies) |
| `wrib_svc_kei_zengetu_kaiyaku_value` | Field | Previous month cancellation (前月解約) — flag indicating whether the customer cancelled the previous month (Boolean) |
| `enable` | Subkey | Property accessor requesting the enabled/editable flag of a field (Boolean) |
| `value` | Subkey | Property accessor requesting the primary data value of a field |
| `state` | Subkey | Property accessor requesting the validation/error state string of a field |
| X33VDataTypeBeanInterface | Interface | Fujitsu Futurity X33 framework interface that requires `loadModelData` for typed data access |
| KKA15101SF | Screen | Service contract line item management screen — handles viewing and editing contract details |
| KKW01030SF03DBean | Bean | Data-type bean for the KKA15101SF screen, holding typed field data for a single contract line |
| X33VViewBaseBean | Base class | Fujitsu Futurity X33 framework base class for view-layer beans |
| X31CBaseBean | Parent class | Fujitsu Futurity X31 framework base class providing `loadModelData` contract |
| フラグ (flag) | Japanese term | Boolean toggle indicating a yes/no or true/false condition |
| 件数 (count) | Japanese term | Item count / number of lines in a contract |
| 契約 (contract) | Japanese term | Service contract |
| 種別 (type) | Japanese term | Classification / type |
| 申請 (application) | Japanese term | Application / registration of a service request |
| 解約 (cancellation) | Japanese term | Contract cancellation |
| 違約金 (penalty) | Japanese term | Early termination penalty / breach-of-contract fee |
| 割引 (discount) | Japanese term | Discount / price reduction |
| 課金 (billing) | Japanese term | Billing / charge assessment |
| 要否 (necessity) | Japanese term | Whether applicable (yes/no) |
| 適用 (application/effect) | Japanese term | Application / taking effect (of a service change) |
| 即時 (instant) | Japanese term | Immediate / instant |
| 名称 (name) | Japanese term | Name / display label |
| 前月 (previous month) | Japanese term | Previous month |
| 更新後 (post-update) | Japanese term | After update |
| 更新前 (pre-update) | Japanese term | Before update |