# Business Logic — DKW00301SF05DBean.typeModelData() [616 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.DKW00301SF.DKW00301SF05DBean` |
| Layer | Service / Web-Bean (Web View Data Bean — sits between the presentation layer and the business logic layer) |
| Module | `DKW00301SF` (Package: `eo.web.webview.DKW00301SF`) |

## 1. Role

### DKW00301SF05DBean.typeModelData()

This method serves as the **central type-mapping router** for the return (返品) screen in the telecom service order fulfillment system. Its business purpose is to resolve the Java type (`Class<?>`) of any data field displayed on the return processing screen, based on a composite key (field name) and a subkey (field attribute). This enables the web framework to dynamically determine how to render and validate each UI component — for example, whether a field is a boolean toggle, a numeric counter, or a text entry.

The method implements a **dispatch/routing pattern**: it receives a `key` (the Japanese field label, e.g., "返品機器番号" — Return Device Number) and a `subkey` (the property of that field — "value", "enable", or "state"), then dispatches to the appropriate type resolution branch. Fields are categorized into three type families: **String** (most text fields — recipient name, device number, status), **Boolean** (interactive controls — enable/disable flags on selection fields, row color, item number), **Long** (numeric counters — item number, list selection index).

The method also implements **recursive delegation for list-type fields** — the "機器提供コード名称リスト" (Device Provisioning Code Name List) uses a composite key format `"機器提供コード名称リスト/index/propertyName"` (機器提供コード名称リスト followed by index and property name). When the system encounters such a key, it extracts the index, validates it against the list size, casts the list element to `X33VDataTypeBeanInterface`, and recursively invokes `typeModelData` on the element — enabling per-row type resolution for dynamic grid rows.

Its role in the larger system is that of a **shared screen metadata utility**: it is called by the web presentation layer to resolve field types at render time, supporting the framework's ability to dynamically bind data to form components without hardcoding field metadata.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL["key or subkey is null?"]
    CHECK_NULL -->|Yes| RETURN_NULL_1["return null"]
    CHECK_NULL -->|No| FIND_SEP["Find '/' separator in key"]

    FIND_SEP --> BRANCH_1["key equals 選択?"]
    BRANCH_1 -->|Yes| BR_1_SUB["subkey value/state/enable check"]
    BRANCH_1 -->|No| BRANCH_2["key equals 行カラー?"]
    BRANCH_2 -->|Yes| BR_2_SUB["subkey value/state/enable check"]
    BRANCH_2 -->|No| BRANCH_3["key equals 項番?"]
    BRANCH_3 -->|Yes| BR_3_SUB["subkey value/state/enable check"]
    BRANCH_3 -->|No| BRANCH_4["key matches known field?"]
    BRANCH_4 -->|Yes - String field| BR_STR["return String.class for value/state"]
    BRANCH_4 -->|Yes - Long field| BR_LONG["return Long.class for value"]
    BRANCH_4 -->|Yes - Boolean field| BR_BOOL["return Boolean.class for enable"]
    BRANCH_4 -->|No| BRANCH_LIST["key equals 機器提供コード名称リスト?"]
    BRANCH_LIST -->|Yes| LIST_PROCESS["Extract index from key, validate, recurse"]
    BRANCH_LIST -->|No| RETURN_NULL_2["return null"]

    RETURN_NULL_1 --> END(["Return"])
    BR_1_SUB --> END
    BR_2_SUB --> END
    BR_3_SUB --> END
    BR_STR --> END
    BR_LONG --> END
    BR_BOOL --> END
    LIST_PROCESS --> END
    RETURN_NULL_2 --> END
```

**Processing Description:**

| Step | Processing | Node Type | Description |
|------|-----------|-----------|-------------|
| 1 | Null check | Diamond | Checks if `key` or `subkey` is null. Returns `null` if either is missing. |
| 2 | Separator detection | Rectangle | Searches for '/' in key for list-type field routing. |
| 3 | Field dispatch chain | Diamond sequence | Cascading if-else-if chain matching 31+ known field keys. Each field routes to `value`/`enable`/`state` subkey checks and returns the appropriate `Class<?>`. |
| 4 | List-type recursion | Special | When key equals "機器提供コード名称リスト", extracts index and property from composite key, validates index bounds, then recursively delegates to the list element's `typeModelData`. |
| 5 | Default fallback | Rectangle | Returns `null` when no field matches. |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Field name identifier in Japanese — the display label of a screen field. Examples: "返品機器番号" (Return Device Number), "契約者名" (Contractor Name), "選択" (Selection), "機器提供コード名称リスト" (Device Provisioning Code Name List). Used to identify which field's type is being queried. For list-type fields, uses a composite format `key/index/property` (e.g., "機器提供コード名称リスト/0/プロパティ名"). |
| 2 | `subkey` | `String` | Field attribute selector — specifies which property of the field is being queried. Accepts values: `"value"` (the data type of the field itself), `"enable"` (the type of the field's enable/disable toggle — Boolean), `"state"` (the type of the field's visual state — String). Case-insensitive comparison via `equalsIgnoreCase`. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `kiki_teikyo_cd_list_list` | `List<X33VDataTypeBeanInterface>` | List of device provisioning code name entries — each element implements `X33VDataTypeBeanInterface` and exposes its own `typeModelData` method for per-row type resolution. Used exclusively in the "機器提供コード名称リスト" (Device Provisioning Code Name List) branch. |

## 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` |
| - | `DKW00301SF05DBean.typeModelData` | DKW00301SF05DBean | - | Calls `typeModelData` in `DKW00301SF05DBean` (recursive delegation) |

**CRUD Analysis:** This method performs **no direct database or entity CRUD operations**. It is a pure metadata routing utility — it reads instance field `kiki_teikyo_cd_list_list` from the bean's in-memory state and performs string manipulation and type resolution. There are no SC (Service Component) calls, no CBS (Component Business Service) invocations, and no direct table access.

The only external dependency is the **recursive call** to `typeModelData` on list elements (`X33VDataTypeBeanInterface`), which delegates type resolution to the individual list row beans.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | DKW00301SF05DBean | `DKW00301SF05DBean.typeModelData` -> `typeModelData` (self, recursive) | List element.typeModelData [R] In-memory bean |

**Note:** The pre-computed caller analysis shows that the only direct caller within this codebase is `DKW00301SF05DBean` itself (recursive delegation). This method is typically called from the web presentation layer (JSP/HTML binding framework) which resolves field types at render time. The actual call sites exist in the web template/view layer outside of this bean class, invoking the method dynamically via reflection or framework-level binding mechanisms.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null guard) (L2994)

> If key or subkey is null, return null immediately. This is the entry guard for both parameters.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` // null guard for both parameters |
| 2 | RETURN | `return null;` // Return null if either parameter is missing |

---

**Block 2** — SET (separator detection) (L2999)

> Extract the position of the first '/' in key. Used for list-type field key parsing.

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

---

**Block 3** — IF-ELSE-IF CHAIN — Field Dispatch (L3002–L3606)

> Cascading if-else-if chain that matches the `key` against 31+ known field names. Each branch then checks the `subkey` ("value", "enable", "state") and returns the appropriate type.

**Block 3.1** — ELSE-IF `[key.equals("選択")]` (L3004) [選択="選択" (Selection)]

> The "選択" (Selection) field is a boolean control field with value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `if (key.equals("選択"))` // Selection field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` // value subkey |
| 3 | RETURN | `return Boolean.class;` // Selection value is a boolean |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // enable subkey |
| 5 | RETURN | `return Boolean.class;` // Selection enable is a boolean |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // state subkey (L3010) |
| 7 | RETURN | `return String.class;` // Selection state is a String (status text) |

---

**Block 3.2** — ELSE-IF `[key.equals("行カラー")]` (L3016) [行カラー="行カラー" (Row Color)]

> The "行カラー" (Row Color) field controls row highlighting in the UI.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("行カラー"))` // Row Color field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` // Row color value is a String (e.g., "red", "green") |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` // Row color enable is a boolean |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // state subkey |
| 7 | RETURN | `return String.class;` // Row color state is a String |

---

**Block 3.3** — ELSE-IF `[key.equals("項番")]` (L3022) [項番="項番" (Item Number)]

> The "項番" (Item Number) field is a Long counter used for row numbering in tables.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("項番"))` // Item Number field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return Long.class;` // Item number value is a Long |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` // Item number enable is a boolean |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // state subkey |
| 7 | RETURN | `return String.class;` // Item number state is a String |

---

**Block 3.4** — ELSE-IF `[key.equals("返品機器番号")]` (L3028) [返品機器番号="返品機器番号" (Return Device Number)]

> Return device number — the serial/hardware ID of a device being returned.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品機器番号"))` // Return Device Number field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` // Device number is a String |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // state subkey (no enable) |
| 5 | RETURN | `return String.class;` // Return device number has no enable toggle |

---

**Block 3.5** — ELSE-IF `[key.equals("受入先名称")]` (L3034) [受入先名称="受入先名称" (Receiving Party Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("受入先名称"))` // Receiving Party Name field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.6** — ELSE-IF `[key.equals("受入先")]` (L3042) [受入先="受入先" (Receiving Party)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("受入先"))` // Receiving Party field |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.7** — ELSE-IF `[key.equals("表示用受入先名称")]` (L3050) [表示用受入先名称="表示用受入先名称" (Display Receiving Party Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("表示用受入先名称"))` // Display Receiving Party Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

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

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("サービス契約番号"))` // Service Contract Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.9** — ELSE-IF `[key.equals("案件番号")]` (L3066) [案件番号="案件番号" (Case Number)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("案件番号"))` // Case Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.10** — ELSE-IF `[key.equals("契約者名")]` (L3074) [契約者名="契約者名" (Contractor Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("契約者名"))` // Contractor Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.11** — ELSE-IF `[key.equals("表示用契約者名")]` (L3082) [表示用契約者名="表示用契約者名" (Display Contractor Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("表示用契約者名"))` // Display Contractor Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.12** — ELSE-IF `[key.equals("返品日")]` (L3090) [返品日="返品日" (Return Date)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品日"))` // Return Date |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.13** — ELSE-IF `[key.equals("型番")]` (L3098) [型番="型番" (Model Number)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("型番"))` // Model Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.14** — ELSE-IF `[key.equals("製造番号")]` (L3106) [製造番号="製造番号" (Serial Number / Manufacturing Number)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("製造番号"))` // Manufacturing Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.15** — ELSE-IF `[key.equals("機器契約区分")]` (L3114) [機器契約区分="機器契約区分" (Device Contract Division)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器契約区分"))` // Device Contract Division |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.16** — ELSE-IF `[key.equals("機器契約区分名称")]` (L3122) [機器契約区分名称="機器契約区分名称" (Device Contract Division Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器契約区分名称"))` // Device Contract Division Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.17** — ELSE-IF `[key.equals("機器契約区分選択インデックス")]` (L3130) [機器契約区分選択インデックス="機器契約区分選択インデックス" (Device Contract Division Selection Index)]

> This is a Long type field — the index of the selected device contract division in a dropdown.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器契約区分選択インデックス"))` // Device Contract Division Selection Index |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return Long.class;` // Index is a Long |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.18** — ELSE-IF `[key.equals("商品状態")]` (L3138) [商品状態="商品状態" (Product Status)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("商品状態"))` // Product Status |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.19** — ELSE-IF `[key.equals("商品状態名称")]` (L3146) [商品状態名称="商品状態名称" (Product Status Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("商品状態名称"))` // Product Status Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.20** — ELSE-IF `[key.equals("表示用商品状態名称")]` (L3154) [表示用商品状態名称="表示用商品状態名称" (Display Product Status Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("表示用商品状態名称"))` // Display Product Status Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.21** — ELSE-IF `[key.equals("解約日")]` (L3162) [解約日="解約日" (Cancellation Date)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("解約日"))` // Cancellation Date |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.22** — ELSE-IF `[key.equals("返品種類")]` (L3170) [返品種類="返品種類" (Return Type)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品種類"))` // Return Type |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.23** — ELSE-IF `[key.equals("返品種類名称")]` (L3178) [返品種類名称="返品種類名称" (Return Type Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品種類名称"))` // Return Type Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.24** — ELSE-IF `[key.equals("レンタル解約書")]` (L3186) [レンタル解約書="レンタル解約書" (Rental Cancellation Document)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("レンタル解約書"))` // Rental Cancellation Document |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.25** — ELSE-IF `[key.equals("レンタル解約書名称")]` (L3194) [レンタル解約書名称="レンタル解約書名称" (Rental Cancellation Document Name)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("レンタル解約書名称"))` // Rental Cancellation Document Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.26** — ELSE-IF `[key.equals("承認")]` (L3202) [承認="承認" (Approval)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("承認"))` // Approval |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.27** — ELSE-IF `[key.equals("出荷ロット番号")]` (L3210) [出荷ロット番号="出荷ロット番号" (Shipping Lot Number)]

> No enable toggle — this is a display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("出荷ロット番号"))` // Shipping Lot Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.28** — ELSE-IF `[key.equals("返品理由名称")]` (L3218) [返品理由名称="返品理由名称" (Return Reason Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品理由名称"))` // Return Reason Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.29** — ELSE-IF `[key.equals("返品理由")]` (L3226) [返品理由="返品理由" (Return Reason)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品理由"))` // Return Reason |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.30** — ELSE-IF `[key.equals("返品詳細")]` (L3234) [返品詳細="返品詳細" (Return Details)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品詳細"))` // Return Details |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.31** — ELSE-IF `[key.equals("返品番号")]` (L3242) [返品番号="返品番号" (Return Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品番号"))` // Return Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.32** — ELSE-IF `[key.equals("返品者郵便番号")]` (L3250) [返品者郵便番号="返品者郵便番号" (Returner Postal Code)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者郵便番号"))` // Returner Postal Code |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.33** — ELSE-IF `[key.equals("返品者都道府県名")]` (L3258) [返品者都道府県名="返品者都道府県名" (Returner Prefecture Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者都道府県名"))` // Returner Prefecture Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.34** — ELSE-IF `[key.equals("返品者市区町村名")]` (L3266) [返品者市区町村名="返品者市区町村名" (Returner City/Town/Village Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者市区町村名"))` // Returner City/Town/Village Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.35** — ELSE-IF `[key.equals("返品者大字通称名")]` (L3274) [返品者大字通称名="返品者大字通称名" (Returner District/Main Street Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者大字通称名"))` // Returner District/Main Street Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.36** — ELSE-IF `[key.equals("返品者字丁目名")]` (L3282) [返品者字丁目名="返品者字丁目名" (Returner Chome/Block Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者字丁目名"))` // Returner Chome/Block Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.37** — ELSE-IF `[key.equals("返品者番地号")]` (L3290) [返品者番地号="返品者番地号" (Returner Lot Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者番地号"))` // Returner Lot Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.38** — ELSE-IF `[key.equals("返品者住所補記・建物名")]` (L3298) [返品者住所補記・建物名="返品者住所補記・建物名" (Returner Address Supplement / Building Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者住所補記・建物名"))` // Returner Address Supplement / Building Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.39** — ELSE-IF `[key.equals("返品者住所補記・部屋番号")]` (L3306) [返品者住所補記・部屋番号="返品者住所補記・部屋番号" (Returner Address Supplement / Room Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者住所補記・部屋番号"))` // Returner Address Supplement / Room Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.40** — ELSE-IF `[key.equals("返品者電話番号")]` (L3314) [返品者電話番号="返品者電話番号" (Returner Phone Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者電話番号"))` // Returner Phone Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.41** — ELSE-IF `[key.equals("返品者名")]` (L3322) [返品者名="返品者名" (Returner Name)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者名"))` // Returner Name |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.42** — ELSE-IF `[key.equals("返品者更新年月日时分秒")]` (L3330) [返品者更新年月日时分秒="返品者更新年月日时分秒" (Returner Last Update Timestamp)]

> No enable toggle — display-only timestamp field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品者更新年月日时分秒"))` // Returner Last Update Timestamp |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.43** — ELSE-IF `[key.equals("レコード通番")]` (L3338) [レコード通番="レコード通番" (Record Sequence Number)]

> No enable toggle — system-internal field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("レコード通番"))` // Record Sequence Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.44** — ELSE-IF `[key.equals("機器提供サービス契約番号")]` (L3346) [機器提供サービス契約番号="機器提供サービス契約番号" (Device Provisioning Service Contract Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器提供サービス契約番号"))` // Device Provisioning Service Contract Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.45** — ELSE-IF `[key.equals("機器提供サービス世代登録年月日时分秒")]` (L3354) [機器提供サービス世代登録年月日时分秒="機器提供サービス世代登録年月日时分秒" (Device Provisioning Service Generation Registration Timestamp)]

> No enable toggle — system-internal timestamp field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器提供サービス世代登録年月日时分秒"))` // Device Provisioning Service Generation Registration Timestamp |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.46** — ELSE-IF `[key.equals("返品区分")]` (L3362) [返品区分="返品区分" (Return Classification)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品区分"))` // Return Classification |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.47** — ELSE-IF `[key.equals("入力サービス契約番号")]` (L3370) [入力サービス契約番号="入力サービス契約番号" (Input Service Contract Number)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("入力サービス契約番号"))` // Input Service Contract Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.48** — ELSE-IF `[key.equals("機器変更番号")]` (L3378) [機器変更番号="機器変更番号" (Device Change Number)]

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器変更番号"))` // Device Change Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` |
| 5 | RETURN | `return Boolean.class;` |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` |
| 7 | RETURN | `return String.class;` |

---

**Block 3.49** — ELSE-IF `[key.equals("返品機器サービス契約番号")]` (L3386) [返品機器サービス契約番号="返品機器サービス契約番号" (Return Device Service Contract Number)]

> No enable toggle — display-only field.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("返品機器サービス契約番号"))` // Return Device Service Contract Number |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | RETURN | `return String.class;` |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // No enable toggle |
| 5 | RETURN | `return String.class;` |

---

**Block 3.50** — ELSE-IF `[key.equals("機器提供コード名称リスト")]` (L3394) [機器提供コード名称リスト="機器提供コード名称リスト" (Device Provisioning Code Name List)]

> List-type field. Uses recursive delegation to resolve types for individual list row beans. Key format: `"機器提供コード名称リスト/index/propertyName"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("機器提供コード名称リスト"))` // Device Provisioning Code Name List |
| 2 | SET | `String keyRemain = key.substring(separaterPoint + 1);` // Extract remainder after first '/' |
| 3 | IF | `if (keyRemain.equals("*"))` // "*" indicates request for list size type |
| 4 | RETURN | `return Integer.class;` // List size is an Integer |
| 5 | SET | `separaterPoint = keyRemain.indexOf("/");` // Find next separator |
| 6 | IF | `if (separaterPoint <= 0)` // No separator found or invalid |
| 7 | RETURN | `return null;` // Invalid key format |
| 8 | SET | `key = keyRemain.substring(0, separaterPoint);` // Extract index portion |
| 9 | SET | `Integer tmpIndexInt = null;` // Initialize index variable |
| 10 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key);` // Parse index as integer |
| 11 | CATCH | `catch (NumberFormatException e)` // Index is not a numeric string |
| 12 | RETURN | `return null;` // Invalid index format |
| 13 | IF | `if (tmpIndexInt == null)` // Null after parse (should not happen) |
| 14 | RETURN | `return null;` // Guard against null |
| 15 | SET | `int tmpIndex = tmpIndexInt.intValue();` // Convert to int |
| 16 | IF | `if (tmpIndex < 0 || tmpIndex >= kiki_teikyo_cd_list_list.size())` // Index out of bounds |
| 17 | RETURN | `return null;` // Invalid index |
| 18 | SET | `key = keyRemain.substring(separaterPoint + 1);` // Extract property name |
| 19 | CALL | `((X33VDataTypeBeanInterface)kiki_teikyo_cd_list_list.get(tmpIndex)).typeModelData(key, subkey);` // Recursive delegation to list element |

---

**Block 4** — RETURN (default fallback) (L3605)

> No matching field found — return null to indicate unknown field.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // No matching property type found |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| 選択 (l_choice) | Field | Selection — a boolean control field representing a yes/no or on/off toggle on the return screen |
| 行カラー (l_color) | Field | Row Color — controls the visual highlight color of a table row (e.g., green for valid, red for error) |
| 項番 (l_no) | Field | Item Number — a Long counter used for sequential row numbering in list displays |
| 返品機器番号 (l_hmpin_kiki_no) | Field | Return Device Number — the hardware serial/ID of a device being returned |
| 受入先名称 (l_ukeire_sk_nm) | Field | Receiving Party Name — the name of the entity receiving the returned goods |
| 受入先 (l_ukeire_sk) | Field | Receiving Party — the receiving entity/department identifier |
| 表示用受入先名称 (l_ukeire_sk_nm_disp) | Field | Display Receiving Party Name — the name rendered on-screen for the receiving party |
| サービス契約番号 (l_svkei_no) | Field | Service Contract Number — the internal contract identifier for a telecom service |
| 案件番号 (l_anken_no) | Field | Case Number — the internal case/ticket tracking identifier |
| 契約者名 (l_ksh_nm) | Field | Contractor Name — the name of the person who signed the service contract |
| 表示用契約者名 (l_ksh_nm_disp) | Field | Display Contractor Name — the name rendered on-screen for the contractor |
| 返品日 (l_hmpin_ymd) | Field | Return Date — the date when the return process was initiated |
| 型番 (l_mdl_no) | Field | Model Number — the product model identifier for the device |
| 製造番号 (l_seizo_no) | Field | Manufacturing Number / Serial Number — the unique factory serial ID of the device |
| 機器契約区分 (l_kiki_kei_div) | Field | Device Contract Division — the category/type classification of the device contract |
| 機器契約区分名称 (l_kiki_kei_div_nm) | Field | Device Contract Division Name — human-readable label for the device contract division |
| 機器契約区分選択インデックス (l_kiki_kei_div_select_index) | Field | Device Contract Division Selection Index — the selected index in a dropdown of contract divisions |
| 商品状態 (l_gds_stat) | Field | Product Status — the current condition/status of the product (e.g., new, used, damaged) |
| 商品状態名称 (l_gds_stat_nm) | Field | Product Status Name — human-readable label for the product status |
| 表示用商品状態名称 (l_gds_stat_nm_disp) | Field | Display Product Status Name — the status name rendered on-screen |
| 解約日 (l_dsl_ymd) | Field | Cancellation Date — the date when the service contract was cancelled |
| 返品種類 (l_hmpin_sbt) | Field | Return Type — the classification of the return (e.g., warranty, defect, customer request) |
| 返品種類名称 (l_hmpin_sbt_nm) | Field | Return Type Name — human-readable label for the return type |
| レンタル解約書 (l_rent_dsl) | Field | Rental Cancellation Document — the document/formal notice for rental cancellation |
| レンタル解約書名称 (l_rent_dsl_nm) | Field | Rental Cancellation Document Name — the title/name of the rental cancellation document |
| 承認 (l_shonin) | Field | Approval — the approval status or approval indicator for the return request |
| 出荷ロット番号 (l_shukka_lot_no) | Field | Shipping Lot Number — the lot/batch identifier for shipped goods |
| 返品理由名称 (l_hmpin_rsn_nm) | Field | Return Reason Name — human-readable label for why the item is being returned |
| 返品理由 (l_hmpin_rsn) | Field | Return Reason — the reason code or classification for the return |
| 返品詳細 (l_hmpin_dtl) | Field | Return Details — free-text details describing the return |
| 返品番号 (l_hmpin_no) | Field | Return Number — the unique return transaction identifier |
| 返品者郵便番号 (l_hmpinsha_pcd) | Field | Returner Postal Code — the postal code of the person initiating the return |
| 返品者都道府県名 (l_hmpinsha_state_nm) | Field | Returner Prefecture Name — the prefecture (state-level Japanese administrative division) of the returner |
| 返品者市区町村名 (l_hmpinsha_city_nm) | Field | Returner City/Town/Village Name — the municipality of the returner |
| 返品者大字通称名 (l_hmpinsha_oaztsu_nm) | Field | Returner District/Main Street Name — the larger district-level address component |
| 返品者字丁目名 (l_hmpinsha_azcho_nm) | Field | Returner Chome/Block Name — the block/chome-level address component |
| 返品者番地号 (l_hmpinsha_bnchigo) | Field | Returner Lot Number — the lot/number component of the returner's address |
| 返品者住所補記・建物名 (l_hmpinsha_adrttm) | Field | Returner Address Supplement / Building Name — additional address details, building name |
| 返品者住所補記・部屋番号 (l_hmpinsha_adrrm) | Field | Returner Address Supplement / Room Number — the room/suite number of the returner |
| 返品者電話番号 (l_hmpinsha_telno) | Field | Returner Phone Number — the phone number of the person initiating the return |
| 返品者名 (l_hmpinsha_nm) | Field | Returner Name — the name of the person initiating the return |
| 返品者更新年月日时分秒 (l_hmpinsha_upd_dtm) | Field | Returner Last Update Timestamp — the last-modified date/time for the returner record |
| レコード通番 (l_rec_seq) | Field | Record Sequence Number — system-internal sequential record identifier |
| 機器提供サービス契約番号 (l_kktk_svc_cd) | Field | Device Provisioning Service Contract Number — the contract number for device provisioning |
| 機器提供サービス世代登録年月日时分秒 (kktk_svc_gene_add_dtm) | Field | Device Provisioning Service Generation Registration Timestamp — when the device provisioning service generation was registered |
| 返品区分 (hmpin_kbn) | Field | Return Classification — the classification/type of the return |
| 入力サービス契約番号 (L_SVKEI_NO_INPUT) | Field | Input Service Contract Number — the service contract number entered on the form |
| 機器変更番号 (l_kiki_chg_no) | Field | Device Change Number — the identifier for a device change/upgrade transaction |
| 返品機器サービス契約番号 (l_hmpin_kiki_svc_kei_no) | Field | Return Device Service Contract Number — the contract number associated with the returned device |
| 機器提供コード名称リスト (kiki_teikyo_cd_list) | Field | Device Provisioning Code Name List — a dynamic list of device provisioning codes with per-row type resolution |
| X33VDataTypeBeanInterface | Interface | Type data bean interface — the contract that list elements implement, providing their own `typeModelData` method for recursive type resolution |
| value | Subkey | The data type of the field itself (e.g., the type of a text input, numeric counter, or boolean toggle) |
| enable | Subkey | The type of the field's enable/disable toggle (always Boolean — represents whether the field is interactive) |
| state | Subkey | The type of the field's visual state indicator (always String — represents display state such as "read-only", "error", "disabled") |
| HMPIN | Abbreviation | Return / 返品 — the Japanese domain concept of product return processing |
| KIKI | Abbreviation | Device / 機器 — refers to telecom equipment/devices in the service ecosystem |
| SVKEI | Abbreviation | Service / サービス — refers to telecom service contracts and service lines |
