# Business Logic — KKW22101SF01DBean.typeModelData() [277 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW22101SF.KKW22101SF01DBean` |
| Layer | Web View Bean / Form Controller |
| Module | `KKW22101SF` (Package: `eo.web.webview.KKW22101SF`) |

## 1. Role

### KKW22101SF01DBean.typeModelData()

This method is the **type model dispatcher** for the KKW22101SF (精算金計算 - Settlement Amount Calculation) screen. It determines the Java type of form field data at runtime, enabling the screen framework to build dynamic UI components without hard-coding field types. The method implements a **routing/dispatch pattern**: it matches an incoming `key` (field name) against a registry of 20+ business fields supported by the settlement screen, then routes to the appropriate type resolution branch. For simple scalar fields (the vast majority), it returns `String.class` — with the subkey further distinguishing whether the caller wants the field's `value` or its validation `state` (status). For the two list-based fields — "異動理由コード" (Reason Code for Alteration) and "オプションサービス契約番号" (Option Service Contract Number) — the method delegates index-based lookup to child `X33VDataTypeStringBean` instances stored in their respective list containers (`ido_rsn_cd_list` and `op_svc_kei_no_list`), enabling dynamic per-row type resolution. When no matching key is found (or a null is passed), the method returns `null` gracefully, signaling the framework to treat the field as unsupported. This is a **shared utility** used by the screen's data-binding layer to construct form metadata at runtime.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["typeModelData key subkey"])
    CHECK_NULL{"key null or subkey null"}
    RETURN_NULL([return null])
    CALC_SEP["get separaterPoint from key"]
    DISPATCH{dispatch on key}
    SIMPLE_RETURN([return String.class])
    LIST_INTEGRAL_INDEX([return Integer.class])
    LIST_DELEGATE([return bean.typeModelData subkey])
    DEFAULT_RETURN([return null])
    SUBSTR_1["get substring after slash"]
    IDX_CHECK_1{"key equals star"}
    IDX_PARSE_1["parse Integer from key"]
    IDX_BND_1{"index in list bounds"}
    SUBSTR_2["get substring after slash"]
    IDX_CHECK_2{"key equals star"}
    IDX_PARSE_2["parse Integer from key"]
    IDX_BND_2{"index in list bounds"}

    START --> CHECK_NULL
    CHECK_NULL -->|true| RETURN_NULL
    CHECK_NULL -->|false| CALC_SEP
    CALC_SEP --> DISPATCH

    DISPATCH -->|システムID| SIMPLE_RETURN
    DISPATCH -->|サービス契約番号| SIMPLE_RETURN
    DISPATCH -->|異動区分| SIMPLE_RETURN
    DISPATCH -->|異動理由コード/idx| SUBSTR_1
    DISPATCH -->|異動理由メモ| SIMPLE_RETURN
    DISPATCH -->|異動区分選択画面遷移パターン| SIMPLE_RETURN
    DISPATCH -->|オプションサービス契約番号/idx| SUBSTR_2
    DISPATCH -->|処理区分| SIMPLE_RETURN
    DISPATCH -->|申込番号| SIMPLE_RETURN
    DISPATCH -->|申込明細番号| SIMPLE_RETURN
    DISPATCH -->|特定ID項目名| SIMPLE_RETURN
    DISPATCH -->|特定ID項目値| SIMPLE_RETURN
    DISPATCH -->|ポップアップモード| SIMPLE_RETURN
    DISPATCH -->|サービスコード| SIMPLE_RETURN
    DISPATCH -->|料金グループコード| SIMPLE_RETURN
    DISPATCH -->|料金コースコード| SIMPLE_RETURN
    DISPATCH -->|料金プランコード| SIMPLE_RETURN
    DISPATCH -->|変更前サービスコード| SIMPLE_RETURN
    DISPATCH -->|変更前料金グループコード| SIMPLE_RETURN
    DISPATCH -->|変更前料金コースコード| SIMPLE_RETURN
    DISPATCH -->|変更前料金プランコード| SIMPLE_RETURN
    DISPATCH -->|割引自動適用対象外フラグ| SIMPLE_RETURN
    DISPATCH -->|外部システムコード| SIMPLE_RETURN

    SUBSTR_1 --> IDX_CHECK_1
    IDX_CHECK_1 -->|true| LIST_INTEGRAL_INDEX
    IDX_CHECK_1 -->|false| IDX_PARSE_1
    IDX_PARSE_1 --> IDX_BND_1
    IDX_BND_1 -->|false| RETURN_NULL
    IDX_BND_1 -->|true| LIST_DELEGATE

    SUBSTR_2 --> IDX_CHECK_2
    IDX_CHECK_2 -->|true| LIST_INTEGRAL_INDEX
    IDX_CHECK_2 -->|false| IDX_PARSE_2
    IDX_PARSE_2 --> IDX_BND_2
    IDX_BND_2 -->|false| RETURN_NULL
    IDX_BND_2 -->|true| LIST_DELEGATE

    DISPATCH -->|no match| DEFAULT_RETURN
```

**CRITICAL — Constant Resolution:**
This method does not use named constants from a `*Const*` class for its branch conditions. Instead, all field name strings are **literal Japanese constants** defined inline (e.g., `"システムID"`, `"サービス契約番号"`, `"異動理由コード"`). These Japanese field names are the business-facing labels of the settlement screen's form fields.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The field name (item name) used to look up the data type. For simple fields, this is a Japanese label (e.g., "システムID" for System ID). For list-based fields, it is the field name plus a slash and an index or asterisk (e.g., "異動理由コード/0" or "異動理由コード/*"). |
| 2 | `subkey` | `String` | The sub-field name within a field definition. Typically either `"value"` (returns the data type of the field's actual value) or `"state"` (returns the validation/status type of the field, e.g., error state). |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `ido_rsn_cd_list` | `X33VDataTypeList` | List container holding alteration reason code entries. Each element is an `X33VDataTypeStringBean` representing a row in the alteration reason code list. |
| `op_svc_kei_no_list` | `X33VDataTypeList` | List container holding option service contract number entries. Each element is an `X33VDataTypeStringBean` representing a row in the option service contract list. |

## 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` (pre-computed; not directly invoked in this method) |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` (pre-computed; not directly invoked in this method) |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` (pre-computed; not directly invoked in this method) |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` (pre-computed; not directly invoked in this method) |
| - | `KKW22101SF01DBean.typeModelData` | KKW22101SF01DBean | - | Calls `typeModelData` in `KKW22101SF01DBean` (recursive delegation for list items) |

**Method calls actually executed within this method:**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `String.indexOf` | - | - | JDK method — locates the first `/` separator in the `key` string |
| - | `String.equals` | - | - | JDK method — compares `key` against registered field name literals |
| - | `String.equalsIgnoreCase` | - | - | JDK method — compares `subkey` against "value" or "state" (case-insensitive) |
| - | `String.substring` | - | - | JDK method — extracts the index portion after the `/` in list-type field keys |
| - | `Integer.valueOf` | - | - | JDK method — parses the extracted index string to an Integer |
| - | `X33VDataTypeList.get` | - | - | Retrieves the element at `tmpIndex` from the list container |
| - | `X33VDataTypeStringBean.typeModelData` | - | - | Delegates to child bean's typeModelData for per-row type resolution |

**Note:** This method performs **no database or service component calls**. It is a pure type-resolution utility that operates on in-memory data structures and Java standard library calls only.

## 5. Dependency Trace

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

The code graph reports that the direct callers of this method are:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class:KKW22101SF01DBean | `KKW22101SF01DBean.typeModelData` (internal/self) | N/A — pure type lookup |

**Additional context from broader system:**
This method follows the standard pattern used across the `eo.web.webview.*` module — many DBean classes (e.g., `FUW00912SF01DBean`, `FUW00926SFBean`, `FUW00959SF01DBean`, `FUW00964SFBean`, `FUW00964SF01DBean`, `FUW00964SF04DBean`, `FUW00964SF07DBean`) define identical `typeModelData(String key, String subkey)` signatures. These are invoked by the screen framework's data-binding layer during form rendering to determine UI field types dynamically. The screen ID associated with this module is `KKW22101` (精算金計算 - Settlement Amount Calculation), as defined in `JKKScreenConst`.

## 6. Per-Branch Detail Blocks

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

Early null-guard. Returns `null` immediately if either argument is null. This prevents NPE in subsequent string comparisons.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/")` // locate slash separator for potential future use [-> ""] |
| 2 | RETURN | `return null;` // key or subkey is null — no type resolution possible |

**Block 2** — [IF/ELSE-IF chain — Simple String Fields] (L1307–L1569)

The bulk of the method is a long if/else-if chain that dispatches on the `key` parameter. All simple (non-list) fields follow the same pattern: match the `key`, then check the `subkey` to determine whether to return the type for the field's `value` or `state`.

### Block 2.1 — [IF] `key.equals("システムID")` (L1307)
Field name: "システムID" (System ID). Item ID: `sysid`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` // check if requesting the value's type |
| 2 | RETURN | `return String.class;` // system ID is always a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` // check if requesting validation state type |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.2 — [ELSE-IF] `key.equals("サービス契約番号")` (L1318)
Field name: "サービス契約番号" (Service Contract Number). Item ID: `svc_kei_no`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // service contract number is always a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.3 — [ELSE-IF] `key.equals("異動区分")` (L1329)
Field name: "異動区分" (Alteration Division/Type). Item ID: `ido_div`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // alteration type classification is a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.4 — [ELSE-IF] `key.equals("異動理由コード")` (L1340)
Field name: "異動理由コード" (Alteration Reason Code). Item ID: `ido_rsn_cd`. **List-based field** — supports index-based lookup into `ido_rsn_cd_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.substring(separaterPoint + 1)` // extract index portion after "/" — e.g., from "異動理由コード/0" extract "0" [-> key substring operation] |
| 2 | IF | `key.equals("*")` // if asterisk is specified as the index, return the list size type |
| 3 | RETURN | `return Integer.class;` // list element count is an Integer |
| 4 | SET | `Integer tmpIndexInt = null;` // initialize for index parsing |
| 5 | TRY-CATCH | `Integer.valueOf(key)` // parse index string to Integer |
| 6 | CATCH | `NumberFormatException e` // index is not a valid number — return null |
| 7 | RETURN | `return null;` // failed to parse index |
| 8 | IF | `tmpIndexInt == null` // double-check for null after parse attempt |
| 9 | RETURN | `return null;` // index is null |
| 10 | SET | `int tmpIndex = tmpIndexInt.intValue();` // extract primitive int from Integer wrapper |
| 11 | IF | `tmpIndex < 0 || tmpIndex >= ido_rsn_cd_list.size()` // check index bounds against list size |
| 12 | RETURN | `return null;` // index out of range — no valid entry at this position |
| 13 | CALL | `((X33VDataTypeStringBean)ido_rsn_cd_list.get(tmpIndex)).typeModelData(subkey)` // retrieve the bean at index and delegate to its typeModelData |

**Block 2.4.1** — [nested TRY-CATCH] `(NumberFormatException)` (L1367)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // invalid index string — graceful degradation |

### Block 2.5 — [ELSE-IF] `key.equals("異動理由メモ")` (L1378)
Field name: "異動理由メモ" (Alteration Reason Memo). Item ID: `ido_rsn_memo`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // memo is always a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.6 — [ELSE-IF] `key.equals("異動区分選択画面遷移パターン")` (L1389)
Field name: "異動区分選択画面遷移パターン" (Alteration Type Selection Screen Transition Pattern). Item ID: `hktgi_ido_div_seni_ptn`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // screen transition pattern is a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.7 — [ELSE-IF] `key.equals("オプションサービス契約番号")` (L1400)
Field name: "オプションサービス契約番号" (Option Service Contract Number). Item ID: `op_svc_kei_no`. **List-based field** — supports index-based lookup into `op_svc_kei_no_list`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key.substring(separaterPoint + 1)` // extract index portion after "/" — e.g., from "オプションサービス契約番号/0" extract "0" [-> key substring operation] |
| 2 | IF | `key.equals("*")` // if asterisk is specified as the index, return the list size type |
| 3 | RETURN | `return Integer.class;` // list element count is an Integer |
| 4 | SET | `Integer tmpIndexInt = null;` // initialize for index parsing |
| 5 | TRY-CATCH | `Integer.valueOf(key)` // parse index string to Integer |
| 6 | CATCH | `NumberFormatException e` // index is not a valid number — return null |
| 7 | RETURN | `return null;` // failed to parse index |
| 8 | IF | `tmpIndexInt == null` // double-check for null after parse attempt |
| 9 | RETURN | `return null;` // index is null |
| 10 | SET | `int tmpIndex = tmpIndexInt.intValue();` // extract primitive int from Integer wrapper |
| 11 | IF | `tmpIndex < 0 || tmpIndex >= op_svc_kei_no_list.size()` // check index bounds against list size |
| 12 | RETURN | `return null;` // index out of range — no valid entry at this position |
| 13 | CALL | `((X33VDataTypeStringBean)op_svc_kei_no_list.get(tmpIndex)).typeModelData(subkey)` // retrieve the bean at index and delegate to its typeModelData |

**Block 2.7.1** — [nested TRY-CATCH] `(NumberFormatException)` (L1428)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // invalid index string — graceful degradation |

### Block 2.8 — [ELSE-IF] `key.equals("処理区分")` (L1436)
Field name: "処理区分" (Processing Division/Type). Item ID: `tran_div`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // processing type is a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.9 — [ELSE-IF] `key.equals("申込番号")` (L1447)
Field name: "申込番号" (Application Number). Item ID: `mskm_no`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // application number is a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.10 — [ELSE-IF] `key.equals("申込明細番号")` (L1458)
Field name: "申込明細番号" (Application Detail Number). Item ID: `mskm_dtl_no`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` // detail number is a String |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` // validation state is also a String |

### Block 2.11 — [ELSE-IF] `key.equals("特定ID項目名")` (L1469)
Field name: "特定ID項目名" (Specific ID Item Name). Item ID: `tokutei_id_kmk_nm`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.12 — [ELSE-IF] `key.equals("特定ID項目値")` (L1480)
Field name: "特定ID項目値" (Specific ID Item Value). Item ID: `tokutei_id_kmk_value`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.13 — [ELSE-IF] `key.equals("ポップアップモード")` (L1491)
Field name: "ポップアップモード" (Popup Mode). Item ID: `popup_mode`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.14 — [ELSE-IF] `key.equals("サービスコード")` (L1502)
Field name: "サービスコード" (Service Code). Item ID: `svc_cd`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.15 — [ELSE-IF] `key.equals("料金グループコード")` (L1513)
Field name: "料金グループコード" (Price Group Code). Item ID: `prc_grp_cd`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.16 — [ELSE-IF] `key.equals("料金コースコード")` (L1524)
Field name: "料金コースコード" (Price Course Code). Item ID: `pcrs_cd`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.17 — [ELSE-IF] `key.equals("料金プランコード")` (L1535)
Field name: "料金プランコード" (Price Plan Code). Item ID: `pplan_cd`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.18 — [ELSE-IF] `key.equals("変更前サービスコード")` (L1546)
Field name: "変更前サービスコード" (Pre-Change Service Code). Item ID: `svc_cd_bf`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.19 — [ELSE-IF] `key.equals("変更前料金グループコード")` (L1557)
Field name: "変更前料金グループコード" (Pre-Change Price Group Code). Item ID: `prc_grp_cd_bf`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.20 — [ELSE-IF] `key.equals("変更前料金コースコード")` (L1568)
Field name: "変更前料金コースコード" (Pre-Change Price Course Code). Item ID: `pcrs_cd_bf`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.21 — [ELSE-IF] `key.equals("変更前料金プランコード")` (L1579)
Field name: "変更前料金プランコード" (Pre-Change Price Plan Code). Item ID: `pplan_cd_bf`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.22 — [ELSE-IF] `key.equals("割引自動適用対象外フラグ")` (L1590)
Field name: "割引自動適用対象外フラグ" (Discount Auto-Apply Exclusion Flag). Item ID: `wrib_auto_aply_tg_gai_flg`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

### Block 2.23 — [ELSE-IF] `key.equals("外部システムコード")` (L1601)
Field name: "外部システムコード" (External System Code). Item ID: `syscd`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return String.class;` |
| 3 | EXEC | `subkey.equalsIgnoreCase("state")` |
| 4 | RETURN | `return String.class;` |

**Block 3** — [DEFAULT] `(no matching key)` (L1611)
No matching field name was found.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // no matching property found — signal unsupported field to the framework |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `sysid` | Field | System ID — internal system identifier for the telecom order management platform |
| `svc_kei_no` | Field | Service Contract Number — unique identifier for a service contract line item |
| `ido_div` | Field | Alteration Division/Type — classification of the type of service alteration (e.g., new, change, cancellation) |
| `ido_rsn_cd` | Field | Alteration Reason Code — the specific reason code for a service alteration, stored as a list of entries |
| `ido_rsn_memo` | Field | Alteration Reason Memo — free-text memo explaining the alteration reason |
| `hktgi_ido_div_seni_ptn` | Field | Alteration Type Selection Screen Transition Pattern — controls which screen the user navigates to when selecting alteration types |
| `op_svc_kei_no` | Field | Option Service Contract Number — identifier for an optional/add-on service contract, stored as a list of entries |
| `tran_div` | Field | Processing Division/Type — indicates the type of processing operation being performed |
| `mskm_no` | Field | Application Number — unique identifier for a service application/order |
| `mskm_dtl_no` | Field | Application Detail Number — sub-identifier for a specific line item within an application |
| `tokutei_id_kmk_nm` | Field | Specific ID Item Name — name of a specific (identified) field used for targeted lookups |
| `tokutei_id_kmk_value` | Field | Specific ID Item Value — the value of a specific (identified) field |
| `popup_mode` | Field | Popup Mode — controls whether a popup dialog should be displayed for this field |
| `svc_cd` | Field | Service Code — code identifying the type of telecom service (e.g., FTTH, mail, ENUM) |
| `prc_grp_cd` | Field | Price Group Code — classification code for pricing groups |
| `pcrs_cd` | Field | Price Course Code — code identifying a specific pricing course/plan |
| `pplan_cd` | Field | Price Plan Code — code identifying a specific pricing plan |
| `svc_cd_bf` | Field | Pre-Change Service Code — the service code before a modification (used for audit/rollback) |
| `prc_grp_cd_bf` | Field | Pre-Change Price Group Code — the price group code before a modification |
| `pcrs_cd_bf` | Field | Pre-Change Price Course Code — the price course code before a modification |
| `pplan_cd_bf` | Field | Pre-Change Price Plan Code — the price plan code before a modification |
| `wrib_auto_aply_tg_gai_flg` | Field | Discount Auto-Apply Exclusion Flag — indicates whether discount auto-application is excluded for this field |
| `syscd` | Field | External System Code — identifier for an external system integrated with this platform |
| KKW22101 | Screen ID | Settlement Amount Calculation screen — handles calculation and display of settlement amounts for service contracts |
| 精算金計算 | Screen Name (Japanese) | Settlement Amount Calculation — the Japanese label for the KKW22101 screen |
| DBean | Pattern | Data Bean — a View/Controller-layer bean that holds screen data, handles input, and provides type metadata to the framework |
| X33VDataTypeStringBean | Class | A generic data type bean that provides type information (value type, state type) for a single string-typed field entry |
| X33VDataTypeList | Class | A list container class that holds multiple `X33VDataTypeBeanInterface` elements for list-based screen fields |
| value | Subkey | The subkey requesting the data type of the field's actual value |
| state | Subkey | The subkey requesting the data type of the field's validation/status state (e.g., error, required) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service offered by K-Opticom |