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

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15101SF.KKW01030SF03DBean` |
| Layer | Web / UI Bean (WebView data-binding layer) |
| Module | `KKA15101SF` (Package: `eo.web.webview.KKA15101SF`) |

## 1. Role

### KKW01030SF03DBean.typeModelData()

This method serves as a **data-type lookup dispatcher** within the Futurity Web33 UI framework. Its business purpose is to determine the correct Java runtime type (`Class<?>`) for a given screen field identified by a Japanese-language field label (`key`) and a sub-property name (`subkey`). It is a critical part of the framework's dynamic data binding mechanism: the X33 view framework uses this method at runtime to build SelectItem lists and data binding metadata so that JSF/HTML UI components render with the correct input types (String text fields, Boolean checkboxes, etc.).

The method implements a **routing/dispatch pattern** — a flat if-else chain of 23 field-label branches. Each branch matches one of the ~23 UI fields displayed on the KKA15101SF screen (a service order detail/inquiry screen). Within each branch, the `subkey` parameter determines which property of the field's metadata model is being queried.

**Service type categories by subkey:**
- **`value`**: The Java type of the field's data value (most fields are `String.class`, some are `Boolean.class`).
- **`enable`**: Whether the field is enabled in the UI (`Boolean.class` where applicable).
- **`state`**: The visual state of the field in the UI (`String.class` for all fields — always returns a state descriptor like "normal", "disabled", "error").

The method does **not** perform any CRUD operations, database access, or service calls. It is a pure, stateless lookup utility. It has no external dependencies beyond the Java standard library.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["typeModelData params"])
    START --> CHECK_NULL{"key==null or subkey==null"}
    CHECK_NULL --> |true| RET_NULL1["Return null"]
    CHECK_NULL --> |false| BRANCH1{"key equals 番号／件数"}
    BRANCH1 --> |true| B1_SUB{"subkey"}
    B1_SUB --> |value| RET1A["Return String.class"]
    B1_SUB --> |enable| RET1B["Return Boolean.class"]
    B1_SUB --> |state| RET1C["Return String.class"]
    BRANCH1 --> |false| BRANCH2{"key equals 選択"}
    BRANCH2 --> |true| B2_SUB{"subkey"}
    B2_SUB --> |value| RET2A["Return Boolean.class"]
    B2_SUB --> |enable| RET2B["Return Boolean.class"]
    B2_SUB --> |state| RET2C["Return String.class"]
    BRANCH2 --> |false| BRANCH3{"key equals 番号"}
    BRANCH3 --> |true| B3_SUB{"subkey"}
    B3_SUB --> |value| RET3A["Return String.class"]
    B3_SUB --> |state| RET3B["Return String.class"]
    BRANCH3 --> |false| BRANCH4{"key equals 契約種別"}
    BRANCH4 --> |true| B4_SUB{"subkey"}
    B4_SUB --> |value| RET4A["Return String.class"]
    B4_SUB --> |state| RET4B["Return String.class"]
    BRANCH4 --> |false| BRANCH5{"key equals 更新年月日時分秒更新前"}
    BRANCH5 --> |true| B5_SUB{"subkey"}
    B5_SUB --> |value| RET5A["Return String.class"]
    B5_SUB --> |state| RET5B["Return String.class"]
    BRANCH5 --> |false| BRANCH6{"key equals キャンペーンコード"}
    BRANCH6 --> |true| B6_SUB{"subkey"}
    B6_SUB --> |value| RET6A["Return String.class"]
    B6_SUB --> |enable| RET6B["Return Boolean.class"]
    B6_SUB --> |state| RET6C["Return String.class"]
    BRANCH6 --> |false| BRANCH7{"key equals キャンペーン名"}
    BRANCH7 --> |true| B7_SUB{"subkey"}
    B7_SUB --> |value| RET7A["Return String.class"]
    B7_SUB --> |enable| RET7B["Return Boolean.class"]
    B7_SUB --> |state| RET7C["Return String.class"]
    BRANCH7 --> |false| BRANCH8{"key equals ステータス"}
    BRANCH8 --> |true| B8_SUB{"subkey"}
    B8_SUB --> |value| RET8A["Return String.class"]
    B8_SUB --> |state| RET8B["Return String.class"]
    BRANCH8 --> |false| BRANCH9{"key equals ステータス名称"}
    BRANCH9 --> |true| B9_SUB{"subkey"}
    B9_SUB --> |value| RET9A["Return String.class"]
    B9_SUB --> |enable| RET9B["Return Boolean.class"]
    B9_SUB --> |state| RET9C["Return String.class"]
    BRANCH9 --> |false| BRANCH10{"key equals タイプコード"}
    BRANCH10 --> |true| B10_SUB{"subkey"}
    B10_SUB --> |value| RET10A["Return String.class"]
    B10_SUB --> |state| RET10B["Return String.class"]
    BRANCH10 --> |false| BRANCH11{"key equals タイプコード名称"}
    BRANCH11 --> |true| B11_SUB{"subkey"}
    B11_SUB --> |value| RET11A["Return String.class"]
    B11_SUB --> |enable| RET11B["Return Boolean.class"]
    B11_SUB --> |state| RET11C["Return String.class"]
    BRANCH11 --> |false| BRANCH12{"key equals 即時適用フラグ"}
    BRANCH12 --> |true| B12_SUB{"subkey"}
    B12_SUB --> |value| RET12A["Return String.class"]
    B12_SUB --> |state| RET12B["Return String.class"]
    BRANCH12 --> |false| BRANCH13{"key equals 即時適用フラグ名称"}
    BRANCH13 --> |true| B13_SUB{"subkey"}
    B13_SUB --> |value| RET13A["Return String.class"]
    B13_SUB --> |enable| RET13B["Return Boolean.class"]
    B13_SUB --> |state| RET13C["Return String.class"]
    BRANCH13 --> |false| BRANCH14{"key equals 申込む年月日"}
    BRANCH14 --> |true| B14_SUB{"subkey"}
    B14_SUB --> |value| RET14A["Return String.class"]
    B14_SUB --> |enable| RET14B["Return Boolean.class"]
    B14_SUB --> |state| RET14C["Return String.class"]
    BRANCH14 --> |false| BRANCH15{"key equals 開始年月日"}
    BRANCH15 --> |true| B15_SUB{"subkey"}
    B15_SUB --> |value| RET15A["Return String.class"]
    B15_SUB --> |enable| RET15B["Return Boolean.class"]
    B15_SUB --> |state| RET15C["Return String.class"]
    BRANCH15 --> |false| BRANCH16{"key equals 終了年月日"}
    BRANCH16 --> |true| B16_SUB{"subkey"}
    B16_SUB --> |value| RET16A["Return String.class"]
    B16_SUB --> |enable| RET16B["Return Boolean.class"]
    B16_SUB --> |state| RET16C["Return String.class"]
    BRANCH16 --> |false| BRANCH17{"key equals 割引サービスコード"}
    BRANCH17 --> |true| B17_SUB{"subkey"}
    B17_SUB --> |value| RET17A["Return String.class"]
    B17_SUB --> |enable| RET17B["Return Boolean.class"]
    B17_SUB --> |state| RET17C["Return String.class"]
    BRANCH17 --> |false| BRANCH18{"key equals 課金要否フラグ"}
    BRANCH18 --> |true| B18_SUB{"subkey"}
    B18_SUB --> |value| RET18A["Return String.class"]
    B18_SUB --> |state| RET18B["Return String.class"]
    BRANCH18 --> |false| BRANCH19{"key equals 課金要否フラグ名称"}
    BRANCH19 --> |true| B19_SUB{"subkey"}
    B19_SUB --> |value| RET19A["Return String.class"]
    B19_SUB --> |enable| RET19B["Return Boolean.class"]
    B19_SUB --> |state| RET19C["Return String.class"]
    BRANCH19 --> |false| BRANCH20{"key equals 更新後終了年月日"}
    BRANCH20 --> |true| B20_SUB{"subkey"}
    B20_SUB --> |value| RET20A["Return String.class"]
    B20_SUB --> |enable| RET20B["Return Boolean.class"]
    B20_SUB --> |state| RET20C["Return String.class"]
    BRANCH20 --> |false| BRANCH21{"key equals 違約金名"}
    BRANCH21 --> |true| B21_SUB{"subkey"}
    B21_SUB --> |value| RET21A["Return String.class"]
    B21_SUB --> |state| RET21B["Return String.class"]
    BRANCH21 --> |false| BRANCH22{"key equals 違約金コード"}
    BRANCH22 --> |true| B22_SUB{"subkey"}
    B22_SUB --> |value| RET22A["Return Boolean.class"]
    B22_SUB --> |enable| RET22B["Return Boolean.class"]
    B22_SUB --> |state| RET22C["Return String.class"]
    BRANCH22 --> |false| BRANCH23{"key equals 前月解約"}
    BRANCH23 --> |true| B23_SUB{"subkey"}
    B23_SUB --> |value| RET23A["Return String.class"]
    B23_SUB --> |state| RET23B["Return String.class"]
    BRANCH23 --> |false| RET_NULL2["Return null"]
```

**Flow summary:**

1. **Null guard**: If either `key` or `subkey` is null, return null immediately.
2. **Field dispatch**: Branch on `key` (case-sensitive exact match) against 23 Japanese field label strings.
3. **Subkey dispatch**: Within each matching field branch, branch on `subkey` (case-insensitive match via `equalsIgnoreCase`) to return the appropriate `Class<?>`:
   - `value` → the Java type of the field's data value
   - `enable` → `Boolean.class` (only on fields that have an enabled/disabled state)
   - `state` → `String.class` (on ALL fields — provides UI state descriptors)
4. **Fallback**: If no field branch matches, return null.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The Japanese-language display label of a screen field. Case-sensitive match. Values include: `番号／件数` (Number/Count), `選択` (Selection), `番号` (Number), `契約種別` (Contract Type), `更新年月日時分秒更新前` (Pre-Update Timestamp), `キャンペーンコード` (Campaign Code), `キャンペーン名` (Campaign Name), `ステータス` (Status), `ステータス名称` (Status Name), `タイプコード` (Type Code), `タイプコード名称` (Type Code Name), `即時適用フラグ` (Immediate Application Flag), `即時適用フラグ名称` (Immediate Application Flag Name), `申込む年月日` (Application Date), `開始年月日` (Start Date), `終了年月日` (End Date), `割引サービスコード` (Discount Service Code), `課金要否フラグ` (Billing Flag), `課金要否フラグ名称` (Billing Flag Name), `更新後終了年月日` (Post-Update End Date), `違約金名` (Penalty Name), `違約金コード` (Penalty Code), `前月解約` (Previous Month Cancellation). |
| 2 | `subkey` | `String` | The metadata property being queried for the field. Case-insensitive match. Values are: `value` (the data type of the field's value), `enable` (whether the field is enabled/disabled in the UI), `state` (the UI state descriptor of the field). |

**Instance fields read by this method:** None. This method is stateless and uses only its parameters.

## 4. CRUD Operations / Called Services

This method performs **no database or service component operations**. It is a pure type-lookup utility with no side effects.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| *(none)* | — | — | — | This method is a stateless type lookup. No SC, CBS, Entity, or DB access. |

## 5. Dependency Trace

This method is called by the X33 view framework's data binding infrastructure (inherited via the `X33VDataTypeBeanInterface` interface). The following classes in the codebase also have a `typeModelData` method — they are sibling implementations for different screens and share the same contract.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | *(Framework)* | `X33VViewBaseBean` data binding -> `typeModelData(key, subkey)` | *(none — pure type lookup)* |
| 2 | *(Framework)* | `X33VDataTypeBeanInterface` interface contract -> `KKW01030SF03DBean.typeModelData` | *(none — pure type lookup)* |

**Note:** The `typeModelData` method name appears in many other beans (e.g., `FUW00912SFBean`, `FUW00926SFBean`, `FUW00959SFBean`, `FUW00964SFBean`, etc.), but these are **separate method implementations** on different bean classes. They all implement the same `X33VDataTypeBeanInterface` contract. None of them call `KKW01030SF03DBean.typeModelData` directly — the framework instantiates the correct bean and invokes the method polymorphically.

## 6. Per-Branch Detail Blocks

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

> If either parameter is null, return null immediately. This is a defensive guard against invalid lookups.

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

**Block 2** — PROCESS (separator point) (L1469)

> Compute the index of the "/" separator character in `key`. This value is computed but never used further — it appears to be leftover dead code from a previous implementation.

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

**Block 3** — ELSE-IF (field: 番号／件数 / Number and Count) `(key.equals("番号／件数"))` (L1472)

> Field Item ID: `no_cnt`. The "Number/Count" field displays a record count. Its `value` is a `String` (the count as text), and it has an `enable` property controlling visibility/editability.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` // returns state status (subkeyが"state"の場合、ステータスを返す) |

**Block 4** — ELSE-IF (field: 選択 / Selection) `(key.equals("選択"))` (L1485)

> Field Item ID: `choice`. A Boolean selection field (checkbox). Both `value` and `enable` are `Boolean.class`.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return Boolean.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 5** — ELSE-IF (field: 番号 / Number) `(key.equals("番号"))` (L1497)

> Field Item ID: `no`. A plain String number field. No `enable` property.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 6** — ELSE-IF (field: 契約種別 / Contract Type) `(key.equals("契約種別"))` (L1507)

> Field Item ID: `kei_kind`. A String field representing the contract type classification.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 7** — ELSE-IF (field: 更新年月日時分秒更新前 / Pre-Update Timestamp) `(key.equals("更新年月日時分秒更新前"))` (L1517)

> Field Item ID: `upd_dtm_bf`. A String field storing the timestamp before an update was applied.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 8** — ELSE-IF (field: キャンペーンコード / Campaign Code) `(key.equals("キャンペーンコード"))` (L1527)

> Field Item ID: `campaign_cd`. A String field for campaign/promotion code, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 9** — ELSE-IF (field: キャンペーン名 / Campaign Name) `(key.equals("キャンペーン名"))` (L1538)

> Field Item ID: `campaign_nm`. A String field for the campaign/promotion name, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 10** — ELSE-IF (field: ステータス / Status) `(key.equals("ステータス"))` (L1549)

> Field Item ID: `stat`. A String field representing the status code (not a Boolean — unlike the "選択" field).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 11** — ELSE-IF (field: ステータス名称 / Status Name) `(key.equals("ステータス名称"))` (L1559)

> Field Item ID: `stat_nm`. A String field for the status label/description, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 12** — ELSE-IF (field: タイプコード / Type Code) `(key.equals("タイプコード"))` (L1570)

> Field Item ID: `type_cd`. A String field for the type code value.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 13** — ELSE-IF (field: タイプコード名称 / Type Code Name) `(key.equals("タイプコード名称"))` (L1580)

> Field Item ID: `type_cd_nm`. A String field for the type code description, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 14** — ELSE-IF (field: 即時適用フラグ / Immediate Application Flag) `(key.equals("即時適用フラグ"))` (L1591)

> Field Item ID: `aply_jun`. A String flag indicating whether changes apply immediately.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 15** — ELSE-IF (field: 即時適用フラグ名称 / Immediate Application Flag Name) `(key.equals("即時適用フラグ名称"))` (L1601)

> Field Item ID: `aply_jun_nm`. A String field for the immediate application flag description, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 16** — ELSE-IF (field: 申込む年月日 / Application Date) `(key.equals("申込む年月日"))` (L1612)

> Field Item ID: `mskm_ymd`. A String field for the service application/order date.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 17** — ELSE-IF (field: 開始年月日 / Start Date) `(key.equals("開始年月日"))` (L1622)

> Field Item ID: `staymd`. A String field for the service start date.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 18** — ELSE-IF (field: 終了年月日 / End Date) `(key.equals("終了年月日"))` (L1632)

> Field Item ID: `endymd`. A String field for the service end date.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 19** — ELSE-IF (field: 割引サービスコード / Discount Service Code) `(key.equals("割引サービスコード"))` (L1642)

> Field Item ID: `wrib_svc_cd`. A String field for the discount service code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 20** — ELSE-IF (field: 課金要否フラグ / Billing Flag) `(key.equals("課金要否フラグ"))` (L1652)

> Field Item ID: `kakin_yohi`. A String flag indicating whether billing applies.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 21** — ELSE-IF (field: 課金要否フラグ名称 / Billing Flag Name) `(key.equals("課金要否フラグ名称"))` (L1662)

> Field Item ID: `kakin_yohi_nm`. A String field for the billing flag description, with an `enable` flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 22** — ELSE-IF (field: 更新後終了年月日 / Post-Update End Date) `(key.equals("更新後終了年月日"))` (L1672)

> Field Item ID: `endymd_af`. A String field for the end date after an update.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 23** — ELSE-IF (field: 違約金名 / Penalty Name) `(key.equals("違約金名"))` (L1683)

> Field Item ID: `pnlty_nm`. A String field for the cancellation/penalty fee name (違約金名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` // returns state status (subkeyが"state"の場合、ステータスを返す) |

**Block 24** — ELSE-IF (field: 違約金コード / Penalty Code) `(key.equals("違約金コード"))` (L1693)

> Field Item ID: `pnlty_cd`. Uniquely, both `value` and `enable` return `Boolean.class` for this field. This is distinct from other code fields which return `String.class` for `value`.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return Boolean.class;` // value is Boolean (not String like most code fields) |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` → `return Boolean.class;` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 25** — ELSE-IF (field: 前月解約 / Previous Month Cancellation) `(key.equals("前月解約"))` (L1705)

> Field Item ID: `wrib_svc_kei_zengetu_kaiyaku`. A String field indicating whether the service was cancelled in the previous month.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` → `return String.class;` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` → `return String.class;` |

**Block 26** — ELSE (no match) (L1715)

> If no field branch matches the provided `key`, return null. This handles unrecognized or newly-added fields that have not yet been registered in this type model.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `no_cnt` | Field | Item ID: Number/Count — the record count display field on the screen |
| `no` | Field | Item ID: Number — a plain number identifier field |
| `kei_kind` | Field | Item ID: Contract Type — classifies the type of service contract |
| `choice` | Field | Item ID: Selection — a Boolean checkbox field for user selection |
| `campaign_cd` | Field | Item ID: Campaign Code — the code identifying a promotional campaign |
| `campaign_nm` | Field | Item ID: Campaign Name — the display name of a promotional campaign |
| `stat` | Field | Item ID: Status — the status code value of a record |
| `stat_nm` | Field | Item ID: Status Name — the descriptive label for a status code |
| `type_cd` | Field | Item ID: Type Code — a type classification code (e.g., service type) |
| `type_cd_nm` | Field | Item ID: Type Code Name — the descriptive name for a type code |
| `aply_jun` | Field | Item ID: Immediate Application Flag — whether changes take effect immediately |
| `aply_jun_nm` | Field | Item ID: Immediate Application Flag Name — label for the immediate application flag |
| `mskm_ymd` | Field | Item ID: Application Date — the date a service order was submitted |
| `staymd` | Field | Item ID: Start Date — the service start date |
| `endymd` | Field | Item ID: End Date — the service end date |
| `endymd_af` | Field | Item ID: Post-Update End Date — the updated end date after a modification |
| `wrib_svc_cd` | Field | Item ID: Discount Service Code — code for a discount/promotional service |
| `kakin_yohi` | Field | Item ID: Billing Flag — whether billing applies to the service |
| `kakin_yohi_nm` | Field | Item ID: Billing Flag Name — descriptive label for the billing flag |
| `pnlty_cd` | Field | Item ID: Penalty Code — the cancellation/penalty fee code |
| `pnlty_nm` | Field | Item ID: Penalty Name — the cancellation/penalty fee name |
| `upd_dtm_bf` | Field | Item ID: Pre-Update Timestamp — the timestamp before a record was updated |
| `wrib_svc_kei_zengetu_kaiyaku` | Field | Item ID: Previous Month Cancellation — indicates whether service was cancelled the previous month |
| 番号／件数 | Japanese label | Number/Count — field label for the record count |
| 選択 | Japanese label | Selection — field label for a Boolean selection (checkbox) |
| 番号 | Japanese label | Number — field label for a numeric identifier |
| 契約種別 | Japanese label | Contract Type — field label for the contract type classification |
| 更新年月日時分秒更新前 | Japanese label | Pre-Update Timestamp (YYYY/MM/DD HH:MM:SS) — field label for the pre-modification timestamp |
| キャンペーンコード | Japanese label | Campaign Code — field label for the promotional campaign code |
| キャンペーン名 | Japanese label | Campaign Name — field label for the promotional campaign name |
| ステータス | Japanese label | Status — field label for the status code |
| ステータス名称 | Japanese label | Status Name — field label for the status description |
| タイプコード | Japanese label | Type Code — field label for the type classification code |
| タイプコード名称 | Japanese label | Type Code Name — field label for the type code description |
| 即時適用フラグ | Japanese label | Immediate Application Flag — field label for whether changes apply immediately |
| 即時適用フラグ名称 | Japanese label | Immediate Application Flag Name — field label for the immediate application flag description |
| 申込む年月日 | Japanese label | Application Date — field label for the service order submission date |
| 開始年月日 | Japanese label | Start Date — field label for the service start date |
| 終了年月日 | Japanese label | End Date — field label for the service end date |
| 割引サービスコード | Japanese label | Discount Service Code — field label for the discount/promotional service code |
| 課金要否フラグ | Japanese label | Billing Flag — field label for whether billing applies |
| 課金要否フラグ名称 | Japanese label | Billing Flag Name — field label for the billing flag description |
| 更新後終了年月日 | Japanese label | Post-Update End Date — field label for the end date after modification |
| 違約金名 | Japanese label | Penalty Name — field label for the cancellation fee/penalty name |
| 違約金コード | Japanese label | Penalty Code — field label for the cancellation fee/penalty code |
| 前月解約 | Japanese label | Previous Month Cancellation — field label for previous month service cancellation |
| X33VDataTypeBeanInterface | Interface | Futurity Web33 data type bean interface — defines the contract for type-model-based UI data binding |
| X33VViewBaseBean | Class | Futurity Web33 base view bean — parent class providing core web framework functionality |
| subkey `value` | Subkey | Metadata property — the Java Class type of the field's data value |
| subkey `enable` | Subkey | Metadata property — the Java Class type of the field's enabled/disabled state |
| subkey `state` | Subkey | Metadata property — the Java Class type of the field's UI state descriptor |
| X33VDataTypeList | Class | Futurity Web33 data type list — container for field metadata in listed beans |
| X33VDataTypeStringBean | Class | Futurity Web33 String data type bean — data type bean for String fields |
| X33VDataTypeBooleanBean | Class | Futurity Web33 Boolean data type bean — data type bean for Boolean fields |
