# Business Logic — KKW02701SF01DBean.typeModelData() [257 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02701SF.KKW02701SF01DBean` |
| Layer | D-BEAN (Web view data binding component) |
| Module | `KKW02701SF` (Package: `eo.web.webview.KKW02701SF`) |

## 1. Role

### KKW02701SF01DBean.typeModelData()

This method serves as the **data type resolution dispatch** for the service contract modification screen (KKW02701SF). It is called by the web framework's data binding layer to determine the Java runtime type (`Class<?>`) of each UI field model at render time, enabling the JSF view layer to correctly bind, validate, and display form data.

The method implements a **routing/dispatch pattern**: it evaluates the `key` parameter (the field name) against 21 distinct field types, each with its own data type contract. For most simple scalar fields, the method returns `String.class` for either the `value` subkey (the actual field data) or the `state` subkey (the UI state — e.g., enabled/disabled/readonly). For two array/list fields ("異動理由コード" and "オプションサービス契約番号"), it supports indexed access via a `/index` suffix in the key, returning `Integer.class` when the subkey is `"*"` (to report the list size), and delegating to the individual element's `typeModelData` method for specific index lookups.

This method plays a central role in the **view-model contract** between the screen's D-BEAN and the JSF data binding infrastructure. It is part of the `X33VDataTypeBeanInterface` implementation, and is invoked by the parent bean (`KKW02701SFBean`) which delegates its own `typeModelData` calls to this method for fields owned by `KKW02701SF01DBean`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["typeModelData key, subkey"])
    NULL_CHECK{key is null or subkey is null}
    FIND_SEP{sep = key indexOf /}
    SIMPLE_RETURN["Return String.class"]
    LIST_RETURN["Return Integer.class"]
    DELEGATE_RETURN["Delegate to bean.typeModelData subkey"]
    CATCH_NULL["Return null"]
    OOB_NULL["Return null"]
    NO_MATCH_RETURN["Return null"]

    START --> NULL_CHECK
    NULL_CHECK -->|Yes| NO_MATCH_RETURN
    NULL_CHECK -->|No| FIND_SEP
    FIND_SEP --> BRANCH_1["key = システムID"]
    BRANCH_1 --> SYSID_SUB{subkey is value or state}
    SYSID_SUB -->|Yes| SIMPLE_RETURN
    SYSID_SUB -->|No| NO_MATCH_RETURN

    BRANCH_1 --> BRANCH_2["key = サービス契約番号"]
    BRANCH_2 --> SvcKeiNoSub{subkey is value or state}
    SvcKeiNoSub -->|Yes| SIMPLE_RETURN
    SvcKeiNoSub -->|No| NO_MATCH_RETURN

    BRANCH_2 --> BRANCH_3["key = 異動区分"]
    BRANCH_3 --> IdoDivSub{subkey is value or state}
    IdoDivSub -->|Yes| SIMPLE_RETURN
    IdoDivSub -->|No| NO_MATCH_RETURN

    BRANCH_3 --> BRANCH_4A{key is 異動理由コード}
    BRANCH_4A -->|Yes| IDX_SPLIT{key equals *}
    IDX_SPLIT -->|Yes| LIST_RETURN
    IDX_SPLIT -->|No| PARSE_INT{parseInt success}
    PARSE_INT -->|No| CATCH_NULL
    PARSE_INT -->|Yes| OOB_CHECK{index out of bounds}
    OOB_CHECK -->|Yes| OOB_NULL
    OOB_CHECK -->|No| DELEGATE_RETURN

    BRANCH_4A --> BRANCH_4B{key is オプションサービス契約番号}
    BRANCH_4B -->|Yes| IDX_SPLIT2{key equals *}
    IDX_SPLIT2 -->|Yes| LIST_RETURN
    IDX_SPLIT2 -->|No| PARSE_INT2{parseInt success}
    PARSE_INT2 -->|No| CATCH_NULL
    PARSE_INT2 -->|Yes| OOB_CHECK2{index out of bounds}
    OOB_CHECK2 -->|Yes| OOB_NULL
    OOB_CHECK2 -->|No| DELEGATE_RETURN

    BRANCH_4B --> REMAINING["Remaining 19 simple fields"]
    REMAINING --> SimpleSub{subkey is value or state}
    SimpleSub -->|Yes| SIMPLE_RETURN
    SimpleSub -->|No| NO_MATCH_RETURN
```

**Processing Summary:**

1. **Null Guard (L1209)**: If either `key` or `subkey` is `null`, return `null` immediately. (key, subkey that are null, return null / key, subkey that are null, return null)
2. **Separator Detection (L1212)**: Extract the position of "/" in the key string, which is used for array/index field parsing.
3. **Simple Scalar Field Branches (L1215–L1447)**: 19 simple fields match directly by name, then check the `subkey`:
   - If `subkey` is `"value"` (case-insensitive) → return `String.class` (the actual field data type)
   - If `subkey` is `"state"` (case-insensitive) → return `String.class` (the UI state type)
4. **Array Field Branches (L1238–L1301)**: Two fields support indexed list access:
   - Parse the remainder after the "/" separator
   - If `"*"`, return `Integer.class` (list size type)
   - Parse remainder as integer index; on `NumberFormatException`, return `null`
   - Check index bounds; if out of range, return `null`
   - Otherwise, delegate to the `typeModelData(subkey)` method of the element bean at that index
5. **Fallback (L1455)**: No matching field found → return `null`. (If no matching property exists, return null / 条件に合致するプロパティが存在しない場合は、nullを返す)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The field name (項目名) of a UI data model entry. Represents the business field being queried — e.g., "システムID" (System ID), "サービス契約番号" (Service Contract Number), "異動理由コード" (Reason Code for Status Change). For simple scalar fields, it is the literal field name. For array/list fields, it follows the pattern "FieldName/index" (e.g., "異動理由コード/0") or "FieldName/*" (to request the list size type). |
| 2 | `subkey` | `String` | The sub-property within the field model. `"value"` refers to the actual data value of the field. `"state"` refers to the UI state (enabled/disabled/readonly status) of the field. The comparison is case-insensitive. Other values return `null` for simple fields. |

**Instance Fields Read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `hktgi_ido_rsn_cd_list` | `X33VDataTypeList` | List of reason codes for status change records — contains `X33VDataTypeStringBean` elements, each representing a single reason code entry. |
| `hktgi_op_svc_kei_no_list` | `X33VDataTypeList` | List of optional service contract numbers — contains `X33VDataTypeStringBean` elements, each representing an optional service subscription. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| - | `KKW02701SF01DBean.typeModelData` | KKW02701SF01DBean | - | Calls `typeModelData` in `KKW02701SF01DBean` |

### Direct Method Calls Within This Method

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `String.indexOf` | - | - | Finds "/" separator position in key string for array field parsing |
| - | `String.substring` | - | - | Extracts index portion from key (e.g., "異動理由コード/0" → "0") |
| - | `String.equalsIgnoreCase` | - | - | Case-insensitive comparison of subkey against "value" and "state" |
| - | `String.equals` | - | - | Exact comparison of key against field name literals and "*" |
| - | `Integer.valueOf` | - | - | Parses index string remainder to integer |
| - | `X33VDataTypeList.size` | - | - | Gets list size for bounds checking of array field elements |
| - | `X33VDataTypeList.get` | - | - | Retrieves element bean at specified index from list |
| - | `X33VDataTypeStringBean.typeModelData` | - | - | Delegates type resolution to individual list element's type model |

**Classification:** This method performs **no database or CRUD operations**. It is a pure **type-resolution utility** — a metadata dispatch method that operates entirely in memory on field name strings and class type references. It reads instance fields (`hktgi_ido_rsn_cd_list`, `hktgi_op_svc_kei_no_list`) from the D-BEAN's own state to support indexed list access delegation.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02701SF (Bean Layer) | `KKW02701SFBean.typeModelData(gamenId, key, subkey)` → `typeModelData(key, subkey)` → `KKW02701SF01DBean.typeModelData` | N/A (pure type resolution, no CRUD) |
| 2 | Screen:KKW02701SF (View Binding) | JSF Data Binding Framework → `KKW02701SFBean.typeModelData` → `KKW02701SF01DBean.typeModelData` | N/A (pure type resolution, no CRUD) |

**Notes:**
- The primary caller is the parent screen bean `KKW02701SFBean`, which delegates its own `typeModelData(String, String)` implementation to `KKW02701SF01DBean.typeModelData()` (as confirmed by code graph analysis).
- The `KKW02701SFBean.typeModelData(String, String)` method directly calls `return typeModelData(key, subkey);` which invokes this method via Java's virtual dispatch.
- No other screen modules call this method directly — it is scoped to the KKW02701SF module's D-BEAN.
- Since this method performs no database operations, the Terminal column shows "N/A".

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key == null || subkey == null)` (L1209)

> Null guard: early return if either parameter is null. (If key, subkey are null, return null / key, subkeyがnullの場合、nullを返す)

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

---

**Block 2** — [SET] `int separaterPoint = key.indexOf("/")` (L1212)

> Extract the separator position. Used later for array field index parsing. (Get the next element of key / keyの次の要素を取得)

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` |

---

**Block 3** — [IF-ELSE-IF Chain] Field Type Dispatch (L1215–L1456)

> This is the main dispatch: 21 field branches, each matching a field name constant and returning the type based on subkey.

---

**Block 3.1** — [IF] `(key.equals("システムID"))` — システムID (System ID) (L1215)

> Simple String field: システムID — the system-assigned ID (項目ID:hktgi_sysid)

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

---

**Block 3.2** — [ELSE-IF] `(key.equals("サービス契約番号"))` — サービス契約番号 (Service Contract Number) (L1227)

> Simple String field: サービス契約番号 — the service contract number (項目ID:hktgi_svc_kei_no)

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

---

**Block 3.3** — [ELSE-IF] `(key.equals("異動区分"))` — 異動区分 (Status Change Category) (L1239)

> Simple String field: 異動区分 — the category/type of status change (項目ID:hktgi_ido_div)

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

---

**Block 3.4** — [ELSE-IF] `(key.equals("異動理由コード"))` — 異動理由コード (Reason Code for Status Change, Array Field) (L1251)

> Array field: 異動理由コード — reason codes for status changes. Supports indexed access via `/index` suffix. Each element is an `X33VDataTypeStringBean` (String型。項目ID:hktgi_ido_rsn_cd).

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1);` // Get the next element of key (from "異動理由コード/0", take after the first "/" / keyの次の要素を取得) |
| 2 | IF | `key.equals("*")` → `return Integer.class;` // If "*" is specified instead of index, return the list element count (インデックス値の代わりに"*"が指定されていたなら、リストの要素数を返す) |
| 3 | SET | `Integer tmpIndexInt = null;` |
| 4 | TRY | `tmpIndexInt = Integer.valueOf(key);` |
| 5 | CATCH | `NumberFormatException e` → `return null;` // If index value is not a numeric string, return null here (インデックス値が数値文字列でない場合は、ここでnullを返す) |
| 6 | IF | `tmpIndexInt == null` → `return null;` |
| 7 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 8 | IF | `tmpIndex < 0 || tmpIndex >= hktgi_ido_rsn_cd_list.size()` → `return null;` // If index exceeds list size minus 1, return null (インデックス値がリスト個数-1を超えれば、ここでnullを返す) |
| 9 | RETURN | `return ((X33VDataTypeStringBean)hktgi_ido_rsn_cd_list.get(tmpIndex)).typeModelData(subkey);` |

---

**Block 3.5** — [ELSE-IF] `(key.equals("異動理由メモ"))` — 異動理由メモ (Status Change Reason Memo) (L1278)

> Simple String field: 異動理由メモ — memo field for status change reasons (項目ID:hktgi_ido_rsn_memo)

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

---

**Block 3.6** — [ELSE-IF] `(key.equals("オプションサービス契約番号"))` — オプションサービス契約番号 (Optional Service Contract Number, Array Field) (L1290)

> Array field: オプションサービス契約番号 — optional service contract numbers. Same indexed access pattern as Block 3.4. Each element is an `X33VDataTypeStringBean` (String型。項目ID:hktgi_op_svc_kei_no).

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1);` // From "オプションサービス契約番号/0", take after first "/" |
| 2 | IF | `key.equals("*")` → `return Integer.class;` // If "*" is specified, return list element count |
| 3 | SET | `Integer tmpIndexInt = null;` |
| 4 | TRY | `tmpIndexInt = Integer.valueOf(key);` |
| 5 | CATCH | `NumberFormatException e` → `return null;` |
| 6 | IF | `tmpIndexInt == null` → `return null;` |
| 7 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 8 | IF | `tmpIndex < 0 || tmpIndex >= hktgi_op_svc_kei_no_list.size()` → `return null;` |
| 9 | RETURN | `return ((X33VDataTypeStringBean)hktgi_op_svc_kei_no_list.get(tmpIndex)).typeModelData(subkey);` |

---

**Block 3.7** — [ELSE-IF] `(key.equals("処理区分"))` — 処理区分 (Processing Category) (L1317)

> Simple String field: 処理区分 — processing category (項目ID:hktgi_tran_div)

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

---

**Block 3.8** — [ELSE-IF] `(key.equals("申込番号"))` — 申込番号 (Application Number) (L1329)

> Simple String field: 申込番号 — application/order number (項目ID:hktgi_mskm_no)

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

---

**Block 3.9** — [ELSE-IF] `(key.equals("申込詳細番号"))` — 申込詳細番号 (Application Detail Number) (L1341)

> Simple String field: 申込詳細番号 — application detail number (項目ID:hktgi_mskm_dtl_no)

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

---

**Block 3.10** — [ELSE-IF] `(key.equals("特定ID項目名"))` — 特定ID項目名 (Specific ID Field Name) (L1353)

> Simple String field: 特定ID項目名 — name of the specific ID field (項目ID:hktgi_tokutei_id_kmk_nm)

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

---

**Block 3.11** — [ELSE-IF] `(key.equals("特定ID項目値"))` — 特定ID項目値 (Specific ID Field Value) (L1365)

> Simple String field: 特定ID項目値 — value of the specific ID field (項目ID:hktgi_tokutei_id_kmk_value)

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

---

**Block 3.12** — [ELSE-IF] `(key.equals("ポップアップモード"))` — ポップアップモード (Popup Mode) (L1377)

> Simple String field: ポップアップモード — popup mode indicator (項目ID:hktgi_popup_mode)

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

---

**Block 3.13** — [ELSE-IF] `(key.equals("サービスコード"))` — サービスコード (Service Code) (L1388)

> Simple String field: サービスコード — service code (項目ID:hktgi_svc_cd)

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

---

**Block 3.14** — [ELSE-IF] `(key.equals("料金グループコード"))` — 料金グループコード (Fee Group Code) (L1400)

> Simple String field: 料金グループコード — fee/pricing group code (項目ID:hktgi_prc_grp_cd)

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

---

**Block 3.15** — [ELSE-IF] `(key.equals("料金コースコード"))` — 料金コースコード (Fee Course Code) (L1412)

> Simple String field: 料金コースコード — fee/course pricing code (項目ID:hktgi_prcs_cd)

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

---

**Block 3.16** — [ELSE-IF] `(key.equals("料金プランコード"))` — 料金プランコード (Fee Plan Code) (L1424)

> Simple String field: 料金プランコード — fee/plan pricing code (項目ID:hktgi_pplan_cd)

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

---

**Block 3.17** — [ELSE-IF] `(key.equals("変更前サービスコード"))` — 変更前サービスコード (Pre-Change Service Code) (L1436)

> Simple String field: 変更前サービスコード — service code before change (項目ID:hktgi_svc_cd_bf)

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

---

**Block 3.18** — [ELSE-IF] `(key.equals("変更前料金グループコード"))` — 変更前料金グループコード (Pre-Change Fee Group Code) (L1448)

> Simple String field: 変更前料金グループコード — fee group code before change (項目ID:hktgi_prc_grp_cd_bf)

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

---

**Block 3.19** — [ELSE-IF] `(key.equals("変更前料金コースコード"))` — 変更前料金コースコード (Pre-Change Fee Course Code) (L1460)

> Simple String field: 変更前料金コースコード — fee course code before change (項目ID:hktgi_prcs_cd_bf)

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

---

**Block 3.20** — [ELSE-IF] `(key.equals("変更前料金プランコード"))` — 変更前料金プランコード (Pre-Change Fee Plan Code) (L1472)

> Simple String field: 変更前料金プランコード — fee plan code before change (項目ID:hktgi_pplan_cd_bf)

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

---

**Block 3.21** — [ELSE-IF] `(key.equals("割引自動適用対象外フラグ"))` — 割引自動適用対象外フラグ (Discount Auto-Apply Exclusion Flag) (L1484)

> Simple String field: 割引自動適用対象外フラグ — flag indicating whether discount auto-apply is excluded (項目ID:hktgi_wrib_auto_aply_tg_gai_flg)

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

---

**Block 4** — [RETURN] Fallback (L1496)

> No matching property found — return null. (If no matching property exists, return null / 条件に合致するプロパティが存在しない場合は、nullを返す)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hktgi_sysid` | Field | System ID — internal system-assigned unique identifier for a record |
| `hktgi_svc_kei_no` | Field | Service Contract Number — the primary service contract identifier |
| `hktgi_ido_div` | Field | Status Change Category — classifies the type/category of a status change operation |
| `hktgi_ido_rsn_cd` | Field | Status Change Reason Code — code indicating the reason for a status change |
| `hktgi_ido_rsn_memo` | Field | Status Change Reason Memo — free-text memo for the status change reason |
| `hktgi_op_svc_kei_no` | Field | Optional Service Contract Number — identifier for an optional/add-on service subscription |
| `hktgi_tran_div` | Field | Processing Category — classification of the processing type (e.g., new, modify, cancel) |
| `hktgi_mskm_no` | Field | Application Number — the main application/order number |
| `hktgi_mskm_dtl_no` | Field | Application Detail Number — line-item/detail number within an application |
| `hktgi_tokutei_id_kmk_nm` | Field | Specific ID Field Name — name of a designated/specific ID field |
| `hktgi_tokutei_id_kmk_value` | Field | Specific ID Field Value — value of a designated/specific ID field |
| `hktgi_popup_mode` | Field | Popup Mode — indicates whether the screen is displayed in popup mode |
| `hktgi_svc_cd` | Field | Service Code — code identifying the service type |
| `hktgi_prc_grp_cd` | Field | Fee Group Code — code grouping pricing/fee categories |
| `hktgi_prcs_cd` | Field | Fee Course Code — code for a specific fee/pricing course |
| `hktgi_pplan_cd` | Field | Fee Plan Code — code for a specific pricing plan |
| `hktgi_svc_cd_bf` | Field | Pre-Change Service Code — service code before a modification (old value) |
| `hktgi_prc_grp_cd_bf` | Field | Pre-Change Fee Group Code — fee group code before a modification |
| `hktgi_prcs_cd_bf` | Field | Pre-Change Fee Course Code — fee course code before a modification |
| `hktgi_pplan_cd_bf` | Field | Pre-Change Fee Plan Code — fee plan code before a modification |
| `hktgi_wrib_auto_aply_tg_gai_flg` | Field | Discount Auto-Apply Exclusion Flag — flag controlling whether automatic discount application is excluded |
| `D-BEAN` | Acronym | Data Bean — a presentation-layer Java bean that holds form data and UI state for a JSF screen |
| `typeModelData` | Method | Data type resolution method — returns the Java Class type for a given field model, used by JSF data binding |
| `subkey` | Field | Sub-property identifier — "value" for actual data, "state" for UI state |
| `X33VDataTypeBeanInterface` | Interface | Contract interface for beans that can resolve their field data types |
| `X33VListedBeanInterface` | Interface | Contract interface for beans that support list/repeating data |
| `X33VDataTypeStringBean` | Class | Data type bean for String fields within a list — each list element is an instance |
| `X33VDataTypeList` | Class | List container for typed data bean elements — supports indexed access |
| システムID | Japanese | System ID — auto-generated internal system identifier |
| サービス契約番号 | Japanese | Service Contract Number — primary key for a service contract |
| 異動区分 | Japanese | Status Change Category — type of change (e.g., add, modify, terminate) |
| 異動理由コード | Japanese | Status Change Reason Code — code explaining why a status change occurred |
| 異動理由メモ | Japanese | Status Change Reason Memo — free-text explanation for the status change |
| オプションサービス契約番号 | Japanese | Optional Service Contract Number — add-on/optional service subscription number |
| 処理区分 | Japanese | Processing Category — classifies the processing operation type |
| 申込番号 | Japanese | Application Number — main order/application identifier |
| 申込詳細番号 | Japanese | Application Detail Number — line-item identifier within an application |
| 特定ID項目名 | Japanese | Specific ID Field Name — name field for a designated/identified ID |
| 特定ID項目値 | Japanese | Specific ID Field Value — value field for a designated/identified ID |
| ポップアップモード | Japanese | Popup Mode — UI mode indicating display in a popup window |
| サービスコード | Japanese | Service Code — code identifying the type of service |
| 料金グループコード | Japanese | Fee Group Code — group classification for pricing |
| 料金コースコード | Japanese | Fee Course Code — specific pricing course code |
| 料金プランコード | Japanese | Fee Plan Code — specific pricing plan code |
| 割引自動適用対象外フラグ | Japanese | Discount Auto-Apply Exclusion Flag — whether automatic discount application is excluded for this record |
| JSF | Acronym | JavaServer Faces — Java EE web framework for building component-based UIs |
| D-BEAN | Acronym | Data Bean — presentation-layer bean holding screen form data and UI state |