# Business Logic — KKW22301SF02DBean.storeModelData() [156 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW22301SF.KKW22301SF02DBean` |
| Layer | Bean (Data Binding / View DTO Layer) |
| Module | `KKW22301SF` (Package: `eo.web.webview.KKW22301SF`) |

## 1. Role

### KKW22301SF02DBean.storeModelData()

This method serves as a **unified data routing and binding dispatcher** for the KKW22301SF screen's display bean. Its business purpose is to take an arbitrary field name (`key`) and sub-field descriptor (`subkey`), determine which bean property corresponds to that combination, and assign the incoming value to the correct typed field on the bean instance. It implements a **routing/dispatch pattern** — effectively a switch-on-key that maps human-readable Japanese field names (e.g., "サービス開始年月日" = Service Start Date) to their internal bean property setters (e.g., `setSvc_sta_ymd_value()`).

The method supports **11 distinct display fields**, each representing a dimension of telecom service contract or discount campaign data. For every field, it recognizes three subkey operations — `value` (sets the data value), `enable` (sets the UI enabled/disabled state), and `state` (sets the field's display state/status). This enables the calling screen to populate the entire bean from a flat key-subkey-value triple list, which is the standard pattern used by the Futurity X33 web framework for dynamic form binding.

The `isSetAsString` parameter exists to support legacy Long-type fields where a string value must be explicitly typed into the bean's value property — in this method's implementation it is accepted but not actively used (all value setters take `String`). The method has no side effects beyond the bean's own fields; it is a pure data-binding utility called during screen initialization or form re-population.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])
    NULCHK["Check if key or subkey is null"]
    NULL_Y["Yes - return early"]
    NULL_N["No - continue"]
    SEARCHSEP["Find '/' separator index in key"]
    SEPERATE["Branch: separated key (contains '/')]"]
    NOSEP["Branch: non-separated key (no '/')"]

    START --> NULCHK
    NULCHK --> |"key == null || subkey == null"| NULL_Y
    NULCHK --> |"else"| NULL_N
    NULL_N --> SEARCHSEP
    SEARCHSEP --> |"separaterPoint != -1"| SEPARATE
    SEARCHSEP --> |"separaterPoint == -1"| NOSEP

    SEPARATE --> SEPDSP(["Check separated key for each field"])
    NOSEP --> NODSP(["Check non-separated key for each field"])

    SEPDSP --> END_NODE(["Return void"])
    NODSP --> DSP_CAMPAIGN(["if key = 表示用キャンペーンコード"])
    DSP_CAMPAIGN --> |"equals"| DSP_SUB["Check subkey (case-insensitive)"]
    DSP_CAMPAIGN --> |"else"| WRIB_SVC["else if key = 割引サービス名"]
    WRIB_SVC --> |"equals"| WRIB_SVC_SUB["Check subkey (case-insensitive)"]
    WRIB_SVC --> |"else"| SVC_STA["else if key = サービス開始年月日"]
    SVC_STA --> |"equals"| SVC_STA_SUB["Check subkey (case-insensitive)"]
    SVC_STA --> |"else"| SVC_END["else if key = サービス終了年月日"]
    SVC_END --> |"equals"| SVC_END_SUB["Check subkey (case-insensitive)"]
    SVC_END --> |"else"| MSMK_YMD["else if key = 申込年月日"]
    MSMK_YMD --> |"equals"| MSMK_SUB["Check subkey (case-insensitive)"]
    MSMK_YMD --> |"else"| KNRN_SVC["else if key = 関連お客さまID"]
    KNRN_SVC --> |"equals"| KNRN_SUB["Check subkey (case-insensitive)"]
    KNRN_SVC --> |"else"| STATUS_NM["else if key = ステータス名"]
    STATUS_NM --> |"equals"| STATUS_SUB["Check subkey (case-insensitive)"]
    STATUS_NM --> |"else"| WRIB_STAYMD["else if key = 割引開始日"]
    WRIB_STAYMD --> |"equals"| WRIB_STAYMD_SUB["Check subkey (case-insensitive)"]
    WRIB_STAYMD --> |"else"| WRIB_ENDYMD["else if key = 割引終了日"]
    WRIB_ENDYMD --> |"equals"| WRIB_ENDYMD_SUB["Check subkey (case-insensitive)"]
    WRIB_ENDYMD --> |"else"| WRIB_SHIN["else if key = セット割申請経路名"]
    WRIB_SHIN --> |"equals"| WRIB_SHIN_SUB["Check subkey (case-insensitive)"]
    WRIB_SHIN --> |"else"| WRIB_TRGT["else if key = セット割対象区分"]
    WRIB_TRGT --> |"equals"| WRIB_TRGT_SUB["Check subkey (case-insensitive)"]
    WRIB_TRGT --> |"else"| END_NODE

    DSP_SUB --> |"value"| DSP_SETVAL["setDsp_campaign_cd_value"]
    DSP_SUB --> |"enable"| DSP_SETEN["setDsp_campaign_cd_enabled"]
    DSP_SUB --> |"state"| DSP_SETST["setDsp_campaign_cd_state"]
    DSP_SUB --> |"else"| END_NODE
    DSP_SETVAL --> END_NODE
    DSP_SETEN --> END_NODE
    DSP_SETST --> END_NODE

    WRIB_SVC_SUB --> |"value"| WRIB_SVC_SETVAL["setWrib_svc_nm_value"]
    WRIB_SVC_SUB --> |"enable"| WRIB_SVC_SETEN["setWrib_svc_nm_enabled"]
    WRIB_SVC_SUB --> |"state"| WRIB_SVC_SETST["setWrib_svc_nm_state"]
    WRIB_SVC_SUB --> |"else"| END_NODE
    WRIB_SVC_SETVAL --> END_NODE
    WRIB_SVC_SETEN --> END_NODE
    WRIB_SVC_SETST --> END_NODE

    SVC_STA_SUB --> |"value"| SVC_STA_SETVAL["setSvc_sta_ymd_value"]
    SVC_STA_SUB --> |"enable"| SVC_STA_SETEN["setSvc_sta_ymd_enabled"]
    SVC_STA_SUB --> |"state"| SVC_STA_SETST["setSvc_sta_ymd_state"]
    SVC_STA_SUB --> |"else"| END_NODE
    SVC_STA_SETVAL --> END_NODE
    SVC_STA_SETEN --> END_NODE
    SVC_STA_SETST --> END_NODE

    SVC_END_SUB --> |"value"| SVC_END_SETVAL["setSvc_endymd_value"]
    SVC_END_SUB --> |"enable"| SVC_END_SETEN["setSvc_endymd_enabled"]
    SVC_END_SUB --> |"state"| SVC_END_SETST["setSvc_endymd_state"]
    SVC_END_SUB --> |"else"| END_NODE
    SVC_END_SETVAL --> END_NODE
    SVC_END_SETEN --> END_NODE
    SVC_END_SETST --> END_NODE

    MSMK_SUB --> |"value"| MSMK_SETVAL["setMskm_ymd_value"]
    MSMK_SUB --> |"enable"| MSMK_SETEN["setMskm_ymd_enabled"]
    MSMK_SUB --> |"state"| MSMK_SETST["setMskm_ymd_state"]
    MSMK_SUB --> |"else"| END_NODE
    MSMK_SETVAL --> END_NODE
    MSMK_SETEN --> END_NODE
    MSMK_SETST --> END_NODE

    KNRN_SUB --> |"value"| KNRN_SETVAL["setKnrn_svc_kei_no_value"]
    KNRN_SUB --> |"enable"| KNRN_SETEN["setKnrn_svc_kei_no_enabled"]
    KNRN_SUB --> |"state"| KNRN_SETST["setKnrn_svc_kei_no_state"]
    KNRN_SUB --> |"else"| END_NODE
    KNRN_SETVAL --> END_NODE
    KNRN_SETEN --> END_NODE
    KNRN_SETST --> END_NODE

    STATUS_SUB --> |"value"| STATUS_SETVAL["setStatus_nm_value"]
    STATUS_SUB --> |"enable"| STATUS_SETEN["setStatus_nm_enabled"]
    STATUS_SUB --> |"state"| STATUS_SETST["setStatus_nm_state"]
    STATUS_SUB --> |"else"| END_NODE
    STATUS_SETVAL --> END_NODE
    STATUS_SETEN --> END_NODE
    STATUS_SETST --> END_NODE

    WRIB_STAYMD_SUB --> |"value"| WRIB_STAYMD_SETVAL["setWrib_staymd_value"]
    WRIB_STAYMD_SUB --> |"enable"| WRIB_STAYMD_SETEN["setWrib_staymd_enabled"]
    WRIB_STAYMD_SUB --> |"state"| WRIB_STAYMD_SETST["setWrib_staymd_state"]
    WRIB_STAYMD_SUB --> |"else"| END_NODE
    WRIB_STAYMD_SETVAL --> END_NODE
    WRIB_STAYMD_SETEN --> END_NODE
    WRIB_STAYMD_SETST --> END_NODE

    WRIB_ENDYMD_SUB --> |"value"| WRIB_ENDYMD_SETVAL["setWrib_endymd_value"]
    WRIB_ENDYMD_SUB --> |"enable"| WRIB_ENDYMD_SETEN["setWrib_endymd_enabled"]
    WRIB_ENDYMD_SUB --> |"state"| WRIB_ENDYMD_SETST["setWrib_endymd_state"]
    WRIB_ENDYMD_SUB --> |"else"| END_NODE
    WRIB_ENDYMD_SETVAL --> END_NODE
    WRIB_ENDYMD_SETEN --> END_NODE
    WRIB_ENDYMD_SETST --> END_NODE

    WRIB_SHIN_SUB --> |"value"| WRIB_SHIN_SETVAL["setWrib_shin_route_nm_value"]
    WRIB_SHIN_SUB --> |"enable"| WRIB_SHIN_SETEN["setWrib_shin_route_nm_enabled"]
    WRIB_SHIN_SUB --> |"state"| WRIB_SHIN_SETST["setWrib_shin_route_nm_state"]
    WRIB_SHIN_SUB --> |"else"| END_NODE
    WRIB_SHIN_SETVAL --> END_NODE
    WRIB_SHIN_SETEN --> END_NODE
    WRIB_SHIN_SETST --> END_NODE

    WRIB_TRGT_SUB --> |"value"| WRIB_TRGT_SETVAL["setWrib_trgt_div_value"]
    WRIB_TRGT_SUB --> |"enable"| WRIB_TRGT_SETEN["setWrib_trgt_div_enabled"]
    WRIB_TRGT_SUB --> |"state"| WRIB_TRGT_SETST["setWrib_trgt_div_state"]
    WRIB_TRGT_SUB --> |"else"| END_NODE
    WRIB_TRGT_SETVAL --> END_NODE
    WRIB_TRGT_SETEN --> END_NODE
    WRIB_TRGT_SETST --> END_NODE
```

**Processing Summary:**

| Step | Logic | Business Meaning |
|------|-------|------------------|
| 1 | Null check on `key` and `subkey` | Guard: abort if field name or sub-field type is unspecified (L671) |
| 2 | Search for "/" separator in `key` | Determine if key is a composite/nested identifier vs. a flat field name (L674) |
| 3a | Key contains "/" (separated) | Route into the separated-key branch (L678) — currently no field matches a "/" containing key, so this path is inert but reserved for future use |
| 3b | Key does not contain "/" (non-separated) | Proceed through the 11-field if/else chain to match the exact Japanese field name (L682–L822) |
| 4 | Field name match + subkey check | For each matched field, route to one of three setter operations: `value`, `enable`, or `state` (case-insensitive comparison) |
| 5 | No match | Silently falls through all branches and returns without error — unmatched key/subkey combinations are no-ops |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Japanese display field name identifying which bean property group to populate. Valid values: `"表示用キャンペーンコード"` (Display Campaign Code), `"割引サービス名"` (Discount Service Name), `"サービス開始年月日"` (Service Start Date), `"サービス終了年月日"` (Service End Date), `"申込年月日"` (Application Date), `"関連お客さまID"` (Related Customer ID), `"ステータス名"` (Status Name), `"割引開始日"` (Discount Start Date), `"割引終了日"` (Discount End Date), `"セット割申請経路名"` (Set Discount Application Route Name), `"セット割対象区分"` (Set Discount Target Classification). |
| 2 | `subkey` | `String` | Sub-field type within the key group, identifying the specific attribute to set. Values: `"value"` (the actual data), `"enable"` (UI enabled/disabled flag), `"state"` (display state/status string). Comparison is case-insensitive. |
| 3 | `in_value` | `Object` | The data to be stored. For `value` subkeys: a `String` containing the field value. For `enable` subkeys: a `Boolean` toggling field availability. For `state` subkeys: a `String` representing the field's current state. |
| 4 | `isSetAsString` | `boolean` | Flag for Long-type value properties to force string-type assignment. **In this method's implementation, this parameter is not actively used** — all value setters accept `String` and no Long-specific branching occurs. |

**Instance fields read/written by this method:**

| Field | Access | Description |
|-------|--------|-------------|
| `dsp_campaign_cd_value` | Set | Display campaign code data value |
| `dsp_campaign_cd_enabled` | Set | UI enabled flag for campaign code field |
| `dsp_campaign_cd_state` | Set | Display state for campaign code field |
| `wrib_svc_nm_value` | Set | Discount service name data value |
| `wrib_svc_nm_enabled` | Set | UI enabled flag for discount service name |
| `wrib_svc_nm_state` | Set | Display state for discount service name |
| `svc_sta_ymd_value` | Set | Service start date data value |
| `svc_sta_ymd_enabled` | Set | UI enabled flag for service start date |
| `svc_sta_ymd_state` | Set | Display state for service start date |
| `svc_endymd_value` | Set | Service end date data value |
| `svc_endymd_enabled` | Set | UI enabled flag for service end date |
| `svc_endymd_state` | Set | Display state for service end date |
| `mskm_ymd_value` | Set | Application date data value |
| `mskm_ymd_enabled` | Set | UI enabled flag for application date |
| `mskm_ymd_state` | Set | Display state for application date |
| `knrn_svc_kei_no_value` | Set | Related customer ID data value |
| `knrn_svc_kei_no_enabled` | Set | UI enabled flag for related customer ID |
| `knrn_svc_kei_no_state` | Set | Display state for related customer ID |
| `status_nm_value` | Set | Status name data value |
| `status_nm_enabled` | Set | UI enabled flag for status name |
| `status_nm_state` | Set | Display state for status name |
| `wrib_staymd_value` | Set | Discount start date data value |
| `wrib_staymd_enabled` | Set | UI enabled flag for discount start date |
| `wrib_staymd_state` | Set | Display state for discount start date |
| `wrib_endymd_value` | Set | Discount end date data value |
| `wrib_endymd_enabled` | Set | UI enabled flag for discount end date |
| `wrib_endymd_state` | Set | Display state for discount end date |
| `wrib_shin_route_nm_value` | Set | Set discount application route name data value |
| `wrib_shin_route_nm_enabled` | Set | UI enabled flag for route name |
| `wrib_shin_route_nm_state` | Set | Display state for route name |
| `wrib_trgt_div_value` | Set | Set discount target classification data value |
| `wrib_trgt_div_enabled` | Set | UI enabled flag for target classification |
| `wrib_trgt_div_state` | Set | Display state for target classification |

## 4. CRUD Operations / Called Services

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

This method performs **no external service calls, database queries, or CBS invocations**. All operations are pure bean field assignments (Update) on the bean's own properties.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `KKW22301SF02DBean.setDsp_campaign_cd_value` | - | - | Updates `dsp_campaign_cd_value` field — sets display campaign code data |
| U | `KKW22301SF02DBean.setDsp_campaign_cd_enabled` | - | - | Updates `dsp_campaign_cd_enabled` field — sets display campaign code enabled flag |
| U | `KKW22301SF02DBean.setDsp_campaign_cd_state` | - | - | Updates `dsp_campaign_cd_state` field — sets display campaign code state |
| U | `KKW22301SF02DBean.setWrib_svc_nm_value` | - | - | Updates `wrib_svc_nm_value` field — sets discount service name data |
| U | `KKW22301SF02DBean.setWrib_svc_nm_enabled` | - | - | Updates `wrib_svc_nm_enabled` field — sets discount service name enabled flag |
| U | `KKW22301SF02DBean.setWrib_svc_nm_state` | - | - | Updates `wrib_svc_nm_state` field — sets discount service name state |
| U | `KKW22301SF02DBean.setSvc_sta_ymd_value` | - | - | Updates `svc_sta_ymd_value` field — sets service start date data |
| U | `KKW22301SF02DBean.setSvc_sta_ymd_enabled` | - | - | Updates `svc_sta_ymd_enabled` field — sets service start date enabled flag |
| U | `KKW22301SF02DBean.setSvc_sta_ymd_state` | - | - | Updates `svc_sta_ymd_state` field — sets service start date state |
| U | `KKW22301SF02DBean.setSvc_endymd_value` | - | - | Updates `svc_endymd_value` field — sets service end date data |
| U | `KKW22301SF02DBean.setSvc_endymd_enabled` | - | - | Updates `svc_endymd_enabled` field — sets service end date enabled flag |
| U | `KKW22301SF02DBean.setSvc_endymd_state` | - | - | Updates `svc_endymd_state` field — sets service end date state |
| U | `KKW22301SF02DBean.setMskm_ymd_value` | - | - | Updates `mskm_ymd_value` field — sets application date data |
| U | `KKW22301SF02DBean.setMskm_ymd_enabled` | - | - | Updates `mskm_ymd_enabled` field — sets application date enabled flag |
| U | `KKW22301SF02DBean.setMskm_ymd_state` | - | - | Updates `mskm_ymd_state` field — sets application date state |
| U | `KKW22301SF02DBean.setKnrn_svc_kei_no_value` | - | - | Updates `knrn_svc_kei_no_value` field — sets related customer ID data |
| U | `KKW22301SF02DBean.setKnrn_svc_kei_no_enabled` | - | - | Updates `knrn_svc_kei_no_enabled` field — sets related customer ID enabled flag |
| U | `KKW22301SF02DBean.setKnrn_svc_kei_no_state` | - | - | Updates `knrn_svc_kei_no_state` field — sets related customer ID state |
| U | `KKW22301SF02DBean.setStatus_nm_value` | - | - | Updates `status_nm_value` field — sets status name data |
| U | `KKW22301SF02DBean.setStatus_nm_enabled` | - | - | Updates `status_nm_enabled` field — sets status name enabled flag |
| U | `KKW22301SF02DBean.setStatus_nm_state` | - | - | Updates `status_nm_state` field — sets status name state |
| U | `KKW22301SF02DBean.setWrib_staymd_value` | - | - | Updates `wrib_staymd_value` field — sets discount start date data |
| U | `KKW22301SF02DBean.setWrib_staymd_enabled` | - | - | Updates `wrib_staymd_enabled` field — sets discount start date enabled flag |
| U | `KKW22301SF02DBean.setWrib_staymd_state` | - | - | Updates `wrib_staymd_state` field — sets discount start date state |
| U | `KKW22301SF02DBean.setWrib_endymd_value` | - | - | Updates `wrib_endymd_value` field — sets discount end date data |
| U | `KKW22301SF02DBean.setWrib_endymd_enabled` | - | - | Updates `wrib_endymd_enabled` field — sets discount end date enabled flag |
| U | `KKW22301SF02DBean.setWrib_endymd_state` | - | - | Updates `wrib_endymd_state` field — sets discount end date state |
| U | `KKW22301SF02DBean.setWrib_shin_route_nm_value` | - | - | Updates `wrib_shin_route_nm_value` field — sets set discount application route name |
| U | `KKW22301SF02DBean.setWrib_shin_route_nm_enabled` | - | - | Updates `wrib_shin_route_nm_enabled` field — sets route name enabled flag |
| U | `KKW22301SF02DBean.setWrib_shin_route_nm_state` | - | - | Updates `wrib_shin_route_nm_state` field — sets route name state |
| U | `KKW22301SF02DBean.setWrib_trgt_div_value` | - | - | Updates `wrib_trgt_div_value` field — sets set discount target classification |
| U | `KKW22301SF02DBean.setWrib_trgt_div_enabled` | - | - | Updates `wrib_trgt_div_enabled` field — sets target classification enabled flag |
| U | `KKW22301SF02DBean.setWrib_trgt_div_state` | - | - | Updates `wrib_trgt_div_state` field — sets target classification state |

## 5. Dependency Trace

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

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW22301SF02DBean.storeModelData(String, String, Object)` (L657) | `KKW22301SF02DBean.storeModelData(key, subkey, in_value)` → `storeModelData(key, subkey, in_value, false)` → `storeModelData(key, subkey, in_value, isSetAsString)` | `setWrib_trgt_div_state`, `setWrib_trgt_div_enabled`, `setWrib_trgt_div_value` (bean field updates) |
| 2 | `KKW22301SF02DBean.storeModelData(String, String, Object, String)` (L646) | `KKW22301SF02DBean.storeModelData(gamenId, key, subkey, in_value)` → `storeModelData(key, subkey, in_value)` → `storeModelData(key, subkey, in_value, false)` → `storeModelData(key, subkey, in_value, isSetAsString)` | `setWrib_trgt_div_state`, `setWrib_trgt_div_enabled`, `setWrib_trgt_div_value` (bean field updates) |

**Notes:**
- The method is called via **two overloaded entry points** within the same bean class — none are screen entry points or CBS methods.
- There are **no external callers** (no Screen `KKSV*`, no CBS, no Batch) within 8 hops of the call graph. This is a **low-level internal utility** used only for bean population within the KKW22301SF module's own bean initialization logic.
- The `gamenId` parameter in the outermost overload (L646) is received but never used — it appears to be a vestige from a prior overload chain.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] Null Guard (L671)

> Early exit: if the field name (`key`) or sub-field descriptor (`subkey`) is null, abort processing entirely. This prevents NullPointerException when the caller passes incomplete field metadata.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(key == null || subkey == null)` |
| 2 | RETURN | `return;` // Early abort on null input |

**Block 2** — [SET] Separator Detection (L674)

> Search for a "/" delimiter in the key to distinguish flat field names from nested/compound identifiers. Currently all supported field names are flat (no "/"), but this branch point exists for future extensibility.

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

**Block 3** — [IF/ELSE-IF CHAIN] Field Name Dispatch (L682–L822)

> The main dispatch logic. Each top-level `if`/`else if` block matches one of the 11 supported Japanese field names. Within each block, three nested `if`/`else if` branches route to the correct setter based on the `subkey` value (`value`, `enable`, or `state`, compared case-insensitively).

### Block 3.1 — [IF] Display Campaign Code — `"表示用キャンペーンコード"` (L682–L695)

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(key.equals("表示用キャンペーンコード"))` // Check: key = Display Campaign Code |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setDsp_campaign_cd_value((String)in_value)` // Set display campaign code value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setDsp_campaign_cd_enabled setter |
| 5 | CALL | `setDsp_campaign_cd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setDsp_campaign_cd_state((String)in_value)` |

### Block 3.2 — [ELSE-IF] Discount Service Name — `"割引サービス名"` (L699–L712)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("割引サービス名"))` // Check: key = Discount Service Name |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setWrib_svc_nm_value((String)in_value)` // Set discount service name value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setWrib_svc_nm_enabled setter |
| 5 | CALL | `setWrib_svc_nm_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setWrib_svc_nm_state((String)in_value)` |

### Block 3.3 — [ELSE-IF] Service Start Date — `"サービス開始年月日"` (L716–L729)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("サービス開始年月日"))` // Check: key = Service Start Date |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setSvc_sta_ymd_value((String)in_value)` // Set service start date value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setSvc_sta_ymd_enabled setter |
| 5 | CALL | `setSvc_sta_ymd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setSvc_sta_ymd_state((String)in_value)` |

### Block 3.4 — [ELSE-IF] Service End Date — `"サービス終了年月日"` (L733–L746)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("サービス終了年月日"))` // Check: key = Service End Date |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setSvc_endymd_value((String)in_value)` // Set service end date value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setSvc_endymd_enabled setter |
| 5 | CALL | `setSvc_endymd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setSvc_endymd_state((String)in_value)` |

### Block 3.5 — [ELSE-IF] Application Date — `"申込年月日"` (L750–L763)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("申込年月日"))` // Check: key = Application Date |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setMskm_ymd_value((String)in_value)` // Set application date value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setMskm_ymd_enabled setter |
| 5 | CALL | `setMskm_ymd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setMskm_ymd_state((String)in_value)` |

### Block 3.6 — [ELSE-IF] Related Customer ID — `"関連お客さまID"` (L768–L781)

> Added in ANK-3521-00-00 (2018/12/21) as part of the Set Discount Reference feature.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("関連お客さまID"))` // Check: key = Related Customer ID |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setKnrn_svc_kei_no_value((String)in_value)` // Set related customer ID value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setKnrn_svc_kei_no_enabled setter |
| 5 | CALL | `setKnrn_svc_kei_no_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setKnrn_svc_kei_no_state((String)in_value)` |

### Block 3.7 — [ELSE-IF] Status Name — `"ステータス名"` (L786–L799)

> Added in ANK-4195-00-00 (2022/01/26) as part of K-Opticom × mineo Set Discount promotion.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("ステータス名"))` // Check: key = Status Name |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setStatus_nm_value((String)in_value)` // Set status name value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setStatus_nm_enabled setter |
| 5 | CALL | `setStatus_nm_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setStatus_nm_state((String)in_value)` |

### Block 3.8 — [ELSE-IF] Discount Start Date — `"割引開始日"` (L803–L816)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("割引開始日"))` // Check: key = Discount Start Date |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setWrib_staymd_value((String)in_value)` // Set discount start date value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setWrib_staymd_enabled setter |
| 5 | CALL | `setWrib_staymd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setWrib_staymd_state((String)in_value)` |

### Block 3.9 — [ELSE-IF] Discount End Date — `"割引終了日"` (L820–L833)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("割引終了日"))` // Check: key = Discount End Date |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setWrib_endymd_value((String)in_value)` // Set discount end date value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setWrib_endymd_enabled setter |
| 5 | CALL | `setWrib_endymd_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setWrib_endymd_state((String)in_value)` |

### Block 3.10 — [ELSE-IF] Set Discount Application Route Name — `"セット割申請経路名"` (L837–L850)

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("セット割申請経路名"))` // Check: key = Set Discount Application Route Name |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setWrib_shin_route_nm_value((String)in_value)` // Set route name value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setWrib_shin_route_nm_enabled setter |
| 5 | CALL | `setWrib_shin_route_nm_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setWrib_shin_route_nm_state((String)in_value)` |

### Block 3.11 — [ELSE-IF] Set Discount Target Classification — `"セット割対象区分"` (L854–L867)

> Part of ANK-4195-00-00 (2022/01/26): K-Opticom × mineo Set Discount promotion.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if(key.equals("セット割対象区分"))` // Check: key = Set Discount Target Classification |
| 2 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 3 | CALL | `setWrib_trgt_div_value((String)in_value)` // Set target classification value |
| 4 | ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` // subkey = "enable" — run setWrib_trgt_div_enabled setter |
| 5 | CALL | `setWrib_trgt_div_enabled((Boolean)in_value)` |
| 6 | ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` // subkey = "state" — set status |
| 7 | CALL | `setWrib_trgt_div_state((String)in_value)` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `dsp_campaign_cd` | Field | Display Campaign Code — a marketing/campaign code shown on the screen for promotional service identification |
| `wrib_svc_nm` | Field | Discount Service Name — the name of the discounted telecom service (from `wrib` = 割引, discount) |
| `svc_sta_ymd` | Field | Service Start Date (Year/Month/Day) — the date when a telecom service contract begins |
| `svc_endymd` | Field | Service End Date (Year/Month/Day) — the date when a telecom service contract terminates |
| `mskm_ymd` | Field | Application Date (Year/Month/Day) — the date the service order was submitted by the customer |
| `knrn_svc_kei_no` | Field | Related Customer ID — an identifier linking this service line to a related customer record (added in ANK-3521) |
| `status_nm` | Field | Status Name — descriptive text for the current state of the service/contract |
| `wrib_staymd` | Field | Discount Start Date — the date a discount promotion begins (from `wrib` = 割引, discount; `stay` = 開始, start) |
| `wrib_endymd` | Field | Discount End Date — the date a discount promotion expires |
| `wrib_shin_route_nm` | Field | Set Discount Application Route Name — the channel/path through which a set discount was applied (e.g., online, store) |
| `wrib_trgt_div` | Field | Set Discount Target Classification — categorization of which customers/services qualify for a set discount |
| `ymd` | Abbreviation | Year/Month/Day — a date field naming convention (年/月/日) used throughout the bean |
| `wrib` (割引) | Abbreviation | Discount — short for 割引 (waribiki), referring to promotional or bundled pricing |
| `mskm` (申込) | Abbreviation | Application — short for 申込 (moushikomi), referring to customer order/application |
| `knrn` (関連) | Abbreviation | Related — short for 関連 (kanren), referring to linked or associated customer records |
| `st` (開始) | Abbreviation | Start — short for 開始 (kaishi), referring to commencement dates |
| `end` (終了) | Abbreviation | End — short for 終了 (shouryou), referring to termination dates |
| `shin` (申請) | Abbreviation | Application — short for 申請 (shinsei), referring to the application process |
| `route_nm` | Abbreviation | Route Name — the application channel or path |
| `trgt_div` | Abbreviation | Target Division/Classification — the category of eligible customers or services |
| `セット割` (Set Discount) | Business term | Set Discount (セット割) — a bundled discount plan where multiple K-Opticom services (e.g., fiber internet + mineo mobile) are contracted together at a reduced rate |
| `KK-Opticom` | Business term | K-Opticom — Japan's largest independent fiber-optic telecom provider |
| `mineo` | Business term | mineo — a Japanese MVNO (mobile virtual network operator) bundled with K-Opticom fiber in set discount plans |
| `DBean` | Abbreviation | Data Bean — a Java bean class in the Futurity X33 framework used to bind view (JSP/JSF) data to the presentation layer |
| `X33VViewBaseBean` | Type | Futurity X33 framework base class — the parent class providing common bean infrastructure (initialization, data binding) |
| `Futurity X33` | Technology | Fujitsu's web application framework — a JSF-based MVC framework used for building the K-Opticom customer portal screens |
| `subkey` | Concept | Sub-field identifier — distinguishes between value, enable, and state attributes of a bean property |
| `value` | Subkey | The actual data value for a field |
| `enable` | Subkey | Boolean flag indicating whether a field is UI-enabled (editable) or disabled (read-only) |
| `state` | Subkey | A string representing the field's display state (e.g., visible, hidden, required) |
