# Business Logic — KKW22301SF02DBean.loadModelData() [159 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW22301SF.KKW22301SF02DBean` |
| Layer | Web View Bean (View Layer — X33 framework data bean) |
| Module | `KKW22301SF` (Package: `eo.web.webview.KKW22301SF`) |

## 1. Role

### KKW22301SF02DBean.loadModelData()

This method serves as the central **data model dispatcher** for the Settlement Free Plan Registration screen (KKW22301 / セット割登録). It implements a **key-based routing pattern** that translates human-readable item names (e.g., "表示用キャンペーンコード", "割引サービス名") and sub-attribute queries ("value", "enable", "state") into typed data accessor calls on the bean's own getter methods. In the X33 framework architecture, this is the standard `loadModelData` override that enables the framework's generic data-binding mechanism — when the framework needs to fetch the value, enabled flag, or display state of a screen item, it delegates here.

The method handles 11 distinct **data type categories**, each supporting three sub-attributes: `value` (the actual data value), `enable` (whether the field is editable/active), and `state` (the UI status such as display-only or disabled). These categories cover campaign codes, discount service names, service start/end dates, application dates, related customer IDs, status names, and settlement discount configuration details. If the key does not match any recognized category, or if either parameter is null, the method returns null gracefully.

This method is **called by the parent screen bean** (`KKW22301SFBean`) during its `loadModelData` flow when the framework requests data for any item belonging to the KKW22301SF02DBean data-view bean type. It is also invoked when the `addListDataInstance` method creates instances of the "キャンペーン一覧" (Campaign List) data-type bean, since each bean instance needs its model data loaded by key. The method implements **no business logic of its own** — it is purely a structural dispatcher that provides the X33 framework with access to the bean's typed data fields.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(key, subkey)"])
    NULL_CHECK["key or subkey is null?"]
    SEPARATOR["sep = key.indexOf('/')"]
    DSP_CAMPAIGN["key == 表示用キャンペーンコード"]
    SUBKEY_CHECK["subkey matches?"]

    DSP_VALUE["return getDsp_campaign_cd_value()"]
    DSP_ENABLE["return getDsp_campaign_cd_enabled()"]
    DSP_STATE["return getDsp_campaign_cd_state()"]
    DEFAULT_NULL["return null"]

    START --> NULL_CHECK
    NULL_CHECK -->|Yes| DEFAULT_NULL
    NULL_CHECK -->|No| SEPARATOR
    SEPARATOR --> DSP_CAMPAIGN

    DSP_CAMPAIGN -->|Yes| SUBKEY_CHECK
    SUBKEY_CHECK -->|value| DSP_VALUE
    SUBKEY_CHECK -->|enable| DSP_ENABLE
    SUBKEY_CHECK -->|state| DSP_STATE
    SUBKEY_CHECK -->|other| DEFAULT_NULL

    DSP_CAMPAIGN -->|No| WRIB_SVC_NM["key == 割引サービス名"]
    WRIB_SVC_NM -->|Yes| SUBKEY_CHECK
    WRIB_SVC_NM -->|No| SUBSTA_YMD["key == サービス開始年月日"]
    SUBSTA_YMD -->|Yes| SUBKEY_CHECK
    SUBSTA_YMD -->|No| SUBEND_YMD["key == サービス終了年月日"]
    SUBEND_YMD -->|Yes| SUBKEY_CHECK
    SUBEND_YMD -->|No| SUBMIT_YMD["key == 申込年月日"]
    SUBMIT_YMD -->|Yes| SUBKEY_CHECK
    SUBMIT_YMD -->|No| KNRN_SVC["key == 関連お客さまID"]
    KNRN_SVC -->|Yes| SUBKEY_CHECK
    KNRN_SVC -->|No| STATUS_NM["key == ステータス名"]
    STATUS_NM -->|Yes| SUBKEY_CHECK
    STATUS_NM -->|No| W_STAYMD["key == 割引開始日"]
    W_STAYMD -->|Yes| SUBKEY_CHECK
    W_STAYMD -->|No| W_ENDYMD["key == 割引終了日"]
    W_ENDYMD -->|Yes| SUBKEY_CHECK
    W_ENDYMD -->|No| W_ROUTE_NM["key == セット割申請経路名"]
    W_ROUTE_NM -->|Yes| SUBKEY_CHECK
    W_ROUTE_NM -->|No| W_TRGT_DIV["key == セット割対象区分"]
    W_TRGT_DIV -->|Yes| SUBKEY_CHECK
    W_TRGT_DIV -->|No| DEFAULT_NULL
```

**Processing flow:**

1. **Null guard** (L479–L483): If either `key` or `subkey` is null, the method returns `null` immediately. This prevents NPEs when the framework queries for uninitialized items.

2. **Separator computation** (L485): Computes `sep` from `key.indexOf("/")`. This variable is calculated but never used in this method — it is leftover infrastructure that appears to have been intended for hierarchical key parsing (e.g., `parent/child` format) but was never implemented.

3. **Key-based dispatch** (L488–L634): A chain of 11 `if-else if` branches matches the `key` parameter against Japanese display names. Each matched key then dispatches to one of three sub-branches based on `subkey` (case-insensitive):
   - `value` — returns the actual data value getter
   - `enable` — returns the enabled/flag getter (Boolean)
   - `state` — returns the display status string getter
4. **Fallback** (L636): If no key matches, returns `null`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **item name** (display label) that identifies which data category to query. Values are Japanese display strings corresponding to screen fields, such as "表示用キャンペーンコード" (Display Campaign Code), "割引サービス名" (Discount Service Name), "サービス開始年月日" (Service Start Date), etc. Each key maps to a specific domain concept in the Settlement Free Plan Registration feature. |
| 2 | `subkey` | `String` | The **sub-attribute** that specifies which aspect of the data to return. Accepted values (case-insensitive) are: `"value"` (the field's actual data), `"enable"` (whether the field is editable), or `"state"` (the UI display state string). This enables a single method to serve three different accessor types across all data categories. |

**Instance fields accessed:** This method reads no instance fields directly. All data is returned via getter method calls, which in turn access the bean's internal typed fields (e.g., `dsp_campaign_cd_value`, `wrib_svc_nm_enabled`, `svc_sta_ymd_state`, etc.) defined elsewhere in `KKW22301SF02DBean`.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW22301SF02DBean.getDsp_campaign_cd_value` | KKW22301SF02DBean | - | Returns the display campaign code String value |
| R | `KKW22301SF02DBean.getDsp_campaign_cd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the display campaign code field |
| R | `KKW22301SF02DBean.getDsp_campaign_cd_state` | KKW22301SF02DBean | - | Returns the display state for the campaign code field |
| R | `KKW22301SF02DBean.getWrib_svc_nm_value` | KKW22301SF02DBean | - | Returns the discount service name String value |
| R | `KKW22301SF02DBean.getWrib_svc_nm_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the discount service name field |
| R | `KKW22301SF02DBean.getWrib_svc_nm_state` | KKW22301SF02DBean | - | Returns the display state for the discount service name field |
| R | `KKW22301SF02DBean.getSvc_sta_ymd_value` | KKW22301SF02DBean | - | Returns the service start date String value |
| R | `KKW22301SF02DBean.getSvc_sta_ymd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the service start date field |
| R | `KKW22301SF02DBean.getSvc_sta_ymd_state` | KKW22301SF02DBean | - | Returns the display state for the service start date field |
| R | `KKW22301SF02DBean.getSvc_endymd_value` | KKW22301SF02DBean | - | Returns the service end date String value |
| R | `KKW22301SF02DBean.getSvc_endymd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the service end date field |
| R | `KKW22301SF02DBean.getSvc_endymd_state` | KKW22301SF02DBean | - | Returns the display state for the service end date field |
| R | `KKW22301SF02DBean.getMskm_ymd_value` | KKW22301SF02DBean | - | Returns the application date String value |
| R | `KKW22301SF02DBean.getMskm_ymd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the application date field |
| R | `KKW22301SF02DBean.getMskm_ymd_state` | KKW22301SF02DBean | - | Returns the display state for the application date field |
| R | `KKW22301SF02DBean.getKnrn_svc_kei_no_value` | KKW22301SF02DBean | - | Returns the related customer ID String value |
| R | `KKW22301SF02DBean.getKnrn_svc_kei_no_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the related customer ID field |
| R | `KKW22301SF02DBean.getKnrn_svc_kei_no_state` | KKW22301SF02DBean | - | Returns the display state for the related customer ID field |
| R | `KKW22301SF02DBean.getStatus_nm_value` | KKW22301SF02DBean | - | Returns the status name String value |
| R | `KKW22301SF02DBean.getStatus_nm_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the status name field |
| R | `KKW22301SF02DBean.getStatus_nm_state` | KKW22301SF02DBean | - | Returns the display state for the status name field |
| R | `KKW22301SF02DBean.getWrib_staymd_value` | KKW22301SF02DBean | - | Returns the discount start date String value |
| R | `KKW22301SF02DBean.getWrib_staymd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the discount start date field |
| R | `KKW22301SF02DBean.getWrib_staymd_state` | KKW22301SF02DBean | - | Returns the display state for the discount start date field |
| R | `KKW22301SF02DBean.getWrib_endymd_value` | KKW22301SF02DBean | - | Returns the discount end date String value |
| R | `KKW22301SF02DBean.getWrib_endymd_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the discount end date field |
| R | `KKW22301SF02DBean.getWrib_endymd_state` | KKW22301SF02DBean | - | Returns the display state for the discount end date field |
| R | `KKW22301SF02DBean.getWrib_shin_route_nm_value` | KKW22301SF02DBean | - | Returns the settlement discount application route name String value |
| R | `KKW22301SF02DBean.getWrib_shin_route_nm_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the application route name field |
| R | `KKW22301SF02DBean.getWrib_shin_route_nm_state` | KKW22301SF02DBean | - | Returns the display state for the application route name field |
| R | `KKW22301SF02DBean.getWrib_trgt_div_value` | KKW22301SF02DBean | - | Returns the settlement discount target classification value |
| R | `KKW22301SF02DBean.getWrib_trgt_div_enabled` | KKW22301SF02DBean | - | Returns the enabled flag for the target classification field |
| R | `KKW22301SF02DBean.getWrib_trgt_div_state` | KKW22301SF02DBean | - | Returns the display state for the target classification field |

**CRUD Summary:** This method performs **zero write operations** (no C/U/D). All 33 called accessor methods are **Read (R)** operations — they are simple getter delegations that return values from the bean's internal typed data fields. There are **no database queries, no SC/CBS calls, no entity operations**. This method is a pure data-dispatch utility with no persistent side effects.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW22301 | `KKW22301SFBean.loadModelData` -> `KKW22301SF02DBean.loadModelData` (via `campaign_icrn` key dispatch) | `getDsp_campaign_cd_value [R]`, `getDsp_campaign_cd_enabled [R]`, `getDsp_campaign_cd_state [R]` (and same for all 11 data categories) |
| 2 | Screen:KKW22301 | `KKW22301SFBean.addListDataInstance` -> creates `KKW22301SF02DBean` instance (for "キャンペーン一覧" list) | `KKW22301SF02DBean` instances are created to hold campaign list row data; `loadModelData` is called by the X33 framework on each instance |

**Caller context:** The `KKW22301SFBean.java` file references `KKW22301SF02DBean` in two places:
- **`getKoumokuIds`** (line ~2177): When the key equals `"キャンペーン一覧"` (Campaign List), it delegates to `KKW22301SF02DBean.listKoumokuIds()`. This is for listing column IDs, not for calling `loadModelData` directly.
- **`addListDataInstance`** (line ~2237): When the key equals `"キャンペーン一覧"`, it instantiates `KKW22301SF02DBean` and adds it to the `campaign_icrn_list` data-type list. The framework subsequently calls `loadModelData` on each bean instance during data binding.

No other classes in the codebase directly call `KKW22301SF02DBean.loadModelData`. The method is exclusively used within the KKW22301SF module as part of the X33 framework's generic data access mechanism.

## 6. Per-Branch Detail Blocks

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

> Early exit: If the framework passes a null key or subkey (e.g., for an uninitialized item), return null immediately to prevent NullPointerException.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // key,subkeyがnullの場合、nullを返す — Returns null if key or subkey is null |

**Block 2** — [EXEC] separator computation (L485)

> Computes a separator position from the key string. This variable is declared but never used in this method — unused infrastructure for potential hierarchical key parsing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sep = key.indexOf("/");` // 項目ごとに処理を入れる — Reserved for future hierarchical key routing (unused) |

**Block 3** — [IF-ELSEIF CHAIN] 11-way key dispatch (L488–L634)

> The core dispatch logic. Each branch handles one data type category and has 3 nested sub-branches (value/enable/state).

---

**Block 3.1** — [IF] `key.equals("表示用キャンペーンコード")` (L488)
> Data type: Display Campaign Code (Item ID: dsp_campaign_cd)

**Block 3.1.1** — [IF] `subkey.equalsIgnoreCase("value")` (L489)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getDsp_campaign_cd_value();` // 表示用キャンペーンコードのvalueを取得 |

**Block 3.1.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L492)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getDsp_campaign_cd_enabled();` // subkeyが"enable"の場合、dsp_campaign_cd_enableのgetterの戻り値を返す |

**Block 3.1.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L495)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getDsp_campaign_cd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.2** — [ELSE-IF] `key.equals("割引サービス名")` (L500)
> Data type: Discount Service Name (Item ID: wrib_svc_nm)

**Block 3.2.1** — [IF] `subkey.equalsIgnoreCase("value")` (L501)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_nm_value();` |

**Block 3.2.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L504)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_nm_enabled();` // subkeyが"enable"の場合、wrib_svc_nm_enableのgetterの戻り値を返す |

**Block 3.2.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L507)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_svc_nm_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.3** — [ELSE-IF] `key.equals("サービス開始年月日")` (L512)
> Data type: Service Start Date and Time (Item ID: svc_sta_ymd)

**Block 3.3.1** — [IF] `subkey.equalsIgnoreCase("value")` (L513)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_sta_ymd_value();` |

**Block 3.3.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L516)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_sta_ymd_enabled();` // subkeyが"enable"の場合、svc_sta_ymd_enableのgetterの戻り値を返す |

**Block 3.3.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L519)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_sta_ymd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.4** — [ELSE-IF] `key.equals("サービス終了年月日")` (L524)
> Data type: Service End Date and Time (Item ID: svc_endymd)

**Block 3.4.1** — [IF] `subkey.equalsIgnoreCase("value")` (L525)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_endymd_value();` |

**Block 3.4.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L528)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_endymd_enabled();` // subkeyが"enable"の場合、svc_endymd_enableのgetterの戻り値を返す |

**Block 3.4.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L531)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_endymd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.5** — [ELSE-IF] `key.equals("申込年月日")` (L536)
> Data type: Application Date (Item ID: mskm_ymd)

**Block 3.5.1** — [IF] `subkey.equalsIgnoreCase("value")` (L537)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_value();` |

**Block 3.5.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L540)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_enabled();` // subkeyが"enable"の場合、mskm_ymd_enableのgetterの戻り値を返す |

**Block 3.5.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L543)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getMskm_ymd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.6** — [ELSE-IF] `key.equals("関連お客さまID")` (L548)
> Data type: Related Customer ID (Item ID: knrn_svc_kei_no)
> Added in: ANK-3521-00-00 (2018/12/21) — Settlement Free Reference Feature Addition

**Block 3.6.1** — [IF] `subkey.equalsIgnoreCase("value")` (L549)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKnrn_svc_kei_no_value();` |

**Block 3.6.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L552)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKnrn_svc_kei_no_enabled();` // subkeyが"enable"の場合、knrn_svc_kei_no_enableのgetterの戻り値を返す |

**Block 3.6.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L555)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getKnrn_svc_kei_no_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.7** — [ELSE-IF] `key.equals("ステータス名")` (L560)
> Data type: Status Name (Item ID: status_nm)
> Added in: ANK-4195-00-00 (2022/01/26) — eo Light Net x mineo Settlement Free Policy Start Response

**Block 3.7.1** — [IF] `subkey.equalsIgnoreCase("value")` (L561)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStatus_nm_value();` |

**Block 3.7.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L564)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStatus_nm_enabled();` // subkeyが"enable"の場合、status_nm_enableのgetterの戻り値を返す |

**Block 3.7.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L567)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getStatus_nm_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.8** — [ELSE-IF] `key.equals("割引開始日")` (L571)
> Data type: Discount Start Date (Item ID: wrib_staymd)

**Block 3.8.1** — [IF] `subkey.equalsIgnoreCase("value")` (L572)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_staymd_value();` |

**Block 3.8.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L575)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_staymd_enabled();` // subkeyが"enable"の場合、wrib_staymd_enableのgetterの戻り値を返す |

**Block 3.8.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L578)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_staymd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.9** — [ELSE-IF] `key.equals("割引終了日")` (L582)
> Data type: Discount End Date (Item ID: wrib_endymd)

**Block 3.9.1** — [IF] `subkey.equalsIgnoreCase("value")` (L583)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_endymd_value();` |

**Block 3.9.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L586)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_endymd_enabled();` // subkeyが"enable"の場合、wrib_endymd_enableのgetterの戻り値を返す |

**Block 3.9.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L589)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_endymd_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.10** — [ELSE-IF] `key.equals("セット割申請経路名")` (L593)
> Data type: Settlement Discount Application Route Name (Item ID: wrib_shin_route_nm)

**Block 3.10.1** — [IF] `subkey.equalsIgnoreCase("value")` (L594)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_shin_route_nm_value();` |

**Block 3.10.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L597)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_shin_route_nm_enabled();` // subkeyが"enable"の場合、wrib_shin_route_nm_enableのgetterの戻り値を返す |

**Block 3.10.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L600)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_shin_route_nm_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 3.11** — [ELSE-IF] `key.equals("セット割対象区分")` (L604)
> Data type: Settlement Discount Target Classification (Item ID: wrib_trgt_div)

**Block 3.11.1** — [IF] `subkey.equalsIgnoreCase("value")` (L605)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_trgt_div_value();` |

**Block 3.11.2** — [ELSE-IF] `subkey.equalsIgnoreCase("enable")` (L608)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_trgt_div_enabled();` // subkeyが"enable"の場合、wrib_trgt_div_enableのgetterの戻り値を返す |

**Block 3.11.3** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L611)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getWrib_trgt_div_state();` // subkeyが"state"の場合、ステータスを返す |

**Block 4** — [RETURN] fallback (L634)

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

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `dsp_campaign_cd` | Field ID | Display Campaign Code — the campaign code identifier used for display on the Settlement Free Plan Registration screen |
| `wrib_svc_nm` | Field ID | Discount Service Name — the name of the discounted telecom service (e.g., eo Hikari, mineo) |
| `svc_sta_ymd` | Field ID | Service Start Date and Time — the date when the service contract begins (ymd = year/month/day) |
| `svc_endymd` | Field ID | Service End Date and Time — the date when the service contract expires |
| `mskm_ymd` | Field ID | Application Date — the date the service application was submitted (ymd = year/month/day) |
| `knrn_svc_kei_no` | Field ID | Related Customer Line Number — the customer ID for related/secondary customer accounts in a settlement discount bundle |
| `status_nm` | Field ID | Status Name — the current status identifier of the settlement discount registration |
| `wrib_staymd` | Field ID | Discount Start Date — the date when the discount rate becomes effective (wrib = wari-biki, discount) |
| `wrib_endymd` | Field ID | Discount End Date — the date when the discount rate expires |
| `wrib_shin_route_nm` | Field ID | Settlement Discount Application Route Name — the name of the application channel/route used for the settlement discount request |
| `wrib_trgt_div` | Field ID | Settlement Discount Target Classification — the classification/type of items eligible for the settlement discount |
| セット割 | Business term | Settlement Discount (Settlement Waribiki) — a service where multiple telecom contracts under the same customer are bundled, and a discount is applied to the total billing |
| セット割登録 | Business term | Settlement Free Plan Registration — the screen/feature (KKW22301) for registering a customer to a bundled discount plan |
| ANK-3521-00-00 | Change ID | Settlement Free Reference Feature Addition — Jira/issue ID for the 2018/12/21 update that added "Related Customer ID" support |
| ANK-4195-00-00 | Change ID | eo Light Net x mineo Settlement Free Policy Start Response — Jira/issue ID for the 2022/01/26 update that added Status Name and Settlement Discount Target Classification fields |
| X33 | Framework | Fujitsu Futurity X33 — the enterprise web application framework used for building the optical telecom customer management system |
| DBean | Pattern | Data Bean — an X33 framework component that manages typed data for screen display, implementing `X33VListedBeanInterface` for data-type list support |
| value | Subkey | The actual data value for a field (String for dates/codes, Boolean for flags) |
| enable | Subkey | The enabled/active flag for a field — determines if the user can edit or interact with the field |
| state | Subkey | The UI display state string — controls how the framework renders the field (e.g., normal, disabled, hidden) |
| `sep` | Variable | Separator position — unused leftover from potential hierarchical key routing (`key.indexOf("/")`), always 0 or -1 in current usage |
