# Business Logic — KKW01023SF03DBean.storeModelData() [115 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01023SF.KKW01023SF03DBean` |
| Layer | Service Component / DAO (Model Data Router — Web-layer data-binding bean in the `eo.web.webview` package) |
| Module | `KKW01023SF` (Package: `eo.web.webview.KKW01023SF`) |

## 1. Role

### KKW01023SF03DBean.storeModelData()

This method is a **field dispatch router** (routing/dispatch pattern) used to bind incoming model data into the corresponding setter methods of the `KKW01023SF03DBean` DTO (Data Transfer Object / Bean). In business terms, it populates field-level properties for a **service order (SOD) screen** that manages telecom service contract line items — specifically, fields related to discounts, service classification codes, charge billing dates, and line identification numbers.

The method implements a **double dispatch** design: the first dispatch resolves the **item key** (a Japanese-labeled field name such as "番号", "種別コード", "サービス課金開始年月日") to a group of properties, and the second dispatch resolves the **subkey** ("value", "enable", "state") to a specific attribute of that field — the actual data value, the enabled/disabled flag, or the display state. This routing eliminates the need for large switch statements or conditional logic spread across multiple screen controllers.

The method plays a **central data-binding utility role** within the `KKW01023SF` service order screen module. It is called during model population (e.g., when data is returned from the service layer after a query or creation operation) to populate the bean's field properties so that the JSP/Facelets view can render the correct values, enable/disable states, and form-field states.

It handles **8 distinct field categories**, each with 3 sub-properties:

| # | Field Key (Japanese) | Item ID | Sub-property "value" Setter | Sub-property "enable" Setter | Sub-property "state" Setter |
|---|----------------------|---------|----------------------------|------------------------------|----------------------------|
| 1 | 番号 (Number) | `no` | `setNo_value` | `setNo_enabled` | `setNo_state` |
| 2 | 内容内容 (Content Details) | `ucwk_ny` | `setUcwk_ny_value` | `setUcwk_ny_enabled` | `setUcwk_ny_state` |
| 3 | 種別コード (Classification Code) | `sbt_cd` | `setSbt_cd_value` | `setSbt_cd_enabled` | `setSbt_cd_state` |
| 4 | 種別コード名称 (Classification Code Name) | `sbt_cd_nm` | `setSbt_cd_nm_value` | `setSbt_cd_nm_enabled` | `setSbt_cd_nm_state` |
| 5 | 割引適用回数 (Discount Application Count) | `wrib_aply_cnt` | `setWrib_aply_cnt_value` | `setWrib_aply_cnt_enabled` | `setWrib_aply_cnt_state` |
| 6 | 初回割引適用年月日 (First Discount Apply Date) | `first_wrib_aply_ymd` | `setFirst_wrib_aply_ymd_value` | `setFirst_wrib_aply_ymd_enabled` | `setFirst_wrib_aply_ymd_state` |
| 7 | サービス課金開始年月日 (Service Charge Start Date) | `svc_chrg_staymd` | `setSvc_chrg_staymd_value` | `setSvc_chrg_staymd_enabled` | `setSvc_chrg_staymd_state` |
| 8 | サービス課金終了年月日 (Service Charge End Date) | `svc_chrg_endymd` | `setSvc_chrg_endymd_value` | `setSvc_chrg_endymd_enabled` | `setSvc_chrg_endymd_state` |

For each field category, the subkey dispatch routes "value" to the `*_value` setter, "enable" to the `*_enabled` setter (with Boolean cast), and "state" to the `*_state` setter (with String cast). An unused `separaterPoint` computation and the `isSetAsString` parameter are present in the signature but do not participate in the active logic path — they appear to be scaffolding for future extended data type handling (e.g., Long-type value string conversion).

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])

    START --> CHECK_NULL{key or subkey is null?}
    CHECK_NULL -->|Yes| END_RETURN["Return early - no-op"]
    CHECK_NULL -->|No| BRANCH_1{key equals 番号}
    BRANCH_1 -->|Yes| BLOCK_NO["Handle Number field"]
    BRANCH_1 -->|No| BRANCH_2{key equals 内容内容}
    BRANCH_2 -->|Yes| BLOCK_UCWK["Handle Content Details field"]
    BRANCH_2 -->|No| BRANCH_3{key equals 種別コード}
    BRANCH_3 -->|Yes| BLOCK_SBT["Handle Classification Code field"]
    BRANCH_3 -->|No| BRANCH_4{key equals 種別コード名称}
    BRANCH_4 -->|Yes| BLOCK_SBT_NM["Handle Classification Code Name field"]
    BRANCH_4 -->|No| BRANCH_5{key equals 割引適用回数}
    BRANCH_5 -->|Yes| BLOCK_WRIB["Handle Discount Count field"]
    BRANCH_5 -->|No| BRANCH_6{key equals 初回割引適用年月日}
    BRANCH_6 -->|Yes| BLOCK_FIRST["Handle First Discount Date field"]
    BRANCH_6 -->|No| BRANCH_7{key equals サービス課金開始年月日}
    BRANCH_7 -->|Yes| BLOCK_STAY["Handle Service Charge Start field"]
    BRANCH_7 -->|No| BRANCH_8{key equals サービス課金終了年月日}
    BRANCH_8 -->|Yes| BLOCK_ENDYM["Handle Service Charge End field"]
    BRANCH_8 -->|No| END_UNKNOWN["No matching field key - no-op"]

    BLOCK_NO --> NO_SUBKEY{subkey equals value}
    NO_SUBKEY -->|Yes| SET_NO_VALUE["setNo_value in_value"]
    NO_SUBKEY -->|No| NO_ENABLE{subkey equals enable}
    NO_ENABLE -->|Yes| SET_NO_ENABLED["setNo_enabled in_value"]
    NO_ENABLE -->|No| NO_STATE{subkey equals state}
    NO_STATE -->|Yes| SET_NO_STATE["setNo_state in_value"]
    NO_STATE -->|No| END_NO_SUB

    BLOCK_UCWK --> UCWK_SUBKEY{subkey equals value}
    UCWK_SUBKEY -->|Yes| SET_UCWK_VALUE["setUcwk_ny_value in_value"]
    UCWK_SUBKEY -->|No| UCWK_ENABLE{subkey equals enable}
    UCWK_ENABLE -->|Yes| SET_UCWK_ENABLED["setUcwk_ny_enabled in_value"]
    UCWK_ENABLE -->|No| UCWK_STATE{subkey equals state}
    UCWK_STATE -->|Yes| SET_UCWK_STATE["setUcwk_ny_state in_value"]
    UCWK_STATE -->|No| END_UCWK_SUB

    BLOCK_SBT --> SBT_SUBKEY{subkey equals value}
    SBT_SUBKEY -->|Yes| SET_SBT_VALUE["setSbt_cd_value in_value"]
    SBT_SUBKEY -->|No| SBT_ENABLE{subkey equals enable}
    SBT_ENABLE -->|Yes| SET_SBT_ENABLED["setSbt_cd_enabled in_value"]
    SBT_ENABLE -->|No| SBT_STATE{subkey equals state}
    SBT_STATE -->|Yes| SET_SBT_STATE["setSbt_cd_state in_value"]
    SBT_STATE -->|No| END_SBT_SUB

    BLOCK_SBT_NM --> SBT_NM_SUBKEY{subkey equals value}
    SBT_NM_SUBKEY -->|Yes| SET_SBT_NM_VALUE["setSbt_cd_nm_value in_value"]
    SBT_NM_SUBKEY -->|No| SBT_NM_ENABLE{subkey equals enable}
    SBT_NM_ENABLE -->|Yes| SET_SBT_NM_ENABLED["setSbt_cd_nm_enabled in_value"]
    SBT_NM_ENABLE -->|No| SBT_NM_STATE{subkey equals state}
    SBT_NM_STATE -->|Yes| SET_SBT_NM_STATE["setSbt_cd_nm_state in_value"]
    SBT_NM_STATE -->|No| END_SBT_NM_SUB

    BLOCK_WRIB --> WRIB_SUBKEY{subkey equals value}
    WRIB_SUBKEY -->|Yes| SET_WRIB_VALUE["setWrib_aply_cnt_value in_value"]
    WRIB_SUBKEY -->|No| WRIB_ENABLE{subkey equals enable}
    WRIB_ENABLE -->|Yes| SET_WRIB_ENABLED["setWrib_aply_cnt_enabled in_value"]
    WRIB_ENABLE -->|No| WRIB_STATE{subkey equals state}
    WRIB_STATE -->|Yes| SET_WRIB_STATE["setWrib_aply_cnt_state in_value"]
    WRIB_STATE -->|No| END_WRIB_SUB

    BLOCK_FIRST --> FIRST_SUBKEY{subkey equals value}
    FIRST_SUBKEY -->|Yes| SET_FIRST_VALUE["setFirst_wrib_aply_ymd_value in_value"]
    FIRST_SUBKEY -->|No| FIRST_ENABLE{subkey equals enable}
    FIRST_ENABLE -->|Yes| SET_FIRST_ENABLED["setFirst_wrib_aply_ymd_enabled in_value"]
    FIRST_ENABLE -->|No| FIRST_STATE{subkey equals state}
    FIRST_STATE -->|Yes| SET_FIRST_STATE["setFirst_wrib_aply_ymd_state in_value"]
    FIRST_STATE -->|No| END_FIRST_SUB

    BLOCK_STAY --> STAY_SUBKEY{subkey equals value}
    STAY_SUBKEY -->|Yes| SET_STAY_VALUE["setSvc_chrg_staymd_value in_value"]
    STAY_SUBKEY -->|No| STAY_ENABLE{subkey equals enable}
    STAY_ENABLE -->|Yes| SET_STAY_ENABLED["setSvc_chrg_staymd_enabled in_value"]
    STAY_ENABLE -->|No| STAY_STATE{subkey equals state}
    STAY_STATE -->|Yes| SET_STAY_STATE["setSvc_chrg_staymd_state in_value"]
    STAY_STATE -->|No| END_STAY_SUB

    BLOCK_ENDYM --> ENDYM_SUBKEY{subkey equals value}
    ENDYM_SUBKEY -->|Yes| SET_ENDYM_VALUE["setSvc_chrg_endymd_value in_value"]
    ENDYM_SUBKEY -->|No| ENDYM_ENABLE{subkey equals enable}
    ENDYM_ENABLE -->|Yes| SET_ENDYM_ENABLED["setSvc_chrg_endymd_enabled in_value"]
    ENDYM_ENABLE -->|No| ENDYM_STATE{subkey equals state}
    ENDYM_STATE -->|Yes| SET_ENDYM_STATE["setSvc_chrg_endymd_state in_value"]
    ENDYM_STATE -->|No| END_ENDYM_SUB

    SET_NO_VALUE --> END_RETURN
    SET_NO_ENABLED --> END_RETURN
    SET_NO_STATE --> END_NO_SUB
    END_NO_SUB --> END_RETURN

    SET_UCWK_VALUE --> END_RETURN
    SET_UCWK_ENABLED --> END_RETURN
    SET_UCWK_STATE --> END_UCWK_SUB
    END_UCWK_SUB --> END_RETURN

    SET_SBT_VALUE --> END_RETURN
    SET_SBT_ENABLED --> END_RETURN
    SET_SBT_STATE --> END_SBT_SUB
    END_SBT_SUB --> END_RETURN

    SET_SBT_NM_VALUE --> END_RETURN
    SET_SBT_NM_ENABLED --> END_RETURN
    SET_SBT_NM_STATE --> END_SBT_NM_SUB
    END_SBT_NM_SUB --> END_RETURN

    SET_WRIB_VALUE --> END_RETURN
    SET_WRIB_ENABLED --> END_RETURN
    SET_WRIB_STATE --> END_WRIB_SUB
    END_WRIB_SUB --> END_RETURN

    SET_FIRST_VALUE --> END_RETURN
    SET_FIRST_ENABLED --> END_RETURN
    SET_FIRST_STATE --> END_FIRST_SUB
    END_FIRST_SUB --> END_RETURN

    SET_STAY_VALUE --> END_RETURN
    SET_STAY_ENABLED --> END_RETURN
    SET_STAY_STATE --> END_STAY_SUB
    END_STAY_SUB --> END_RETURN

    SET_ENDYM_VALUE --> END_RETURN
    SET_ENDYM_ENABLED --> END_RETURN
    SET_ENDYM_STATE --> END_ENDYM_SUB
    END_ENDYM_SUB --> END_RETURN
```

**Processing summary:**

1. **Null guard** (L512-515): If either `key` or `subkey` is null, return immediately — no state modification. (Japanese: key,subkeyがnullの場合、処理を中止 — "If key or subkey is null, abort processing")
2. **Separator computation** (L517): Computes `separaterPoint = key.indexOf("/")` — finds the position of a "/" character within the key. This value is computed but never used in any subsequent conditional branch; it appears to be scaffolding for potential compound-key support (e.g., "番号/value" format).
3. **Field key dispatch** (L520-619): Eight sequential `else if` branches compare `key` against Japanese-labeled field names. Each branch contains a nested subkey dispatch:
   - **番号** (Number) — handles line identification number
   - **内容内容** (Content Details) — handles service content details
   - **種別コード** (Classification Code) — handles service classification code
   - **種別コード名称** (Classification Code Name) — handles the name/description of the classification code
   - **割引適用回数** (Discount Application Count) — handles how many times a discount has been applied
   - **初回割引適用年月日** (First Discount Apply Date) — handles the date of the first discount application
   - **サービス課金開始年月日** (Service Charge Start Date) — handles when service billing starts
   - **サービス課金終了年月日** (Service Charge End Date) — handles when service billing ends
4. **Subkey dispatch** (within each field branch): For each field key, three `else if` branches match the subkey:
   - `value` → calls `set<Field>_value((String)in_value)` — sets the data value
   - `enable` → calls `set<Field>_enabled((Boolean)in_value)` — sets the enabled/disabled flag (Japanese: subkeyが"enable"の場合、no_enabledのsetterを実行する — "When subkey is 'enable', execute the no_enabled setter")
   - `state` → calls `set<Field>_state((String)in_value)` — sets the state (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status")
5. **No-op fallthrough** (L619): If the key does not match any known field name, the method falls through all conditions and returns void with no side effects.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **Japanese-labeled field name** identifying which screen property group to populate. Represents a business data element from the service order screen, such as "番号" (line number), "種別コード" (service classification code), or "サービス課金開始年月日" (service charge start date). Determines which set of 3 sub-property setters is invoked. Can take any of the 8 defined Japanese field names; an unrecognized key results in a no-op (no state modification). |
| 2 | `subkey` | `String` | The **sub-property type selector** within the matched field group. Specifies which attribute of the field to populate: "value" (the actual data content), "enable" (whether the field is enabled/disabled for user interaction), or "state" (display state / form-field state). Comparison is case-insensitive via `equalsIgnoreCase`. An unrecognized subkey results in no setter invocation within the matched field group. |
| 3 | `in_value` | `Object` | The **data payload** to assign to the resolved setter. Cast to `(String)` for value/state setters, or `(Boolean)` for enable setters. Contains the actual business data being bound into the bean (e.g., a service classification code string, a discount count, a date string). |
| 4 | `isSetAsString` | `boolean` | Reserved for future use. Per Javadoc: "Long型項目ValueプロパティへString型値の設定を行う場合true" — "True when setting a String-type value to a Long-type item's Value property." Currently **unused** in the method body; appears to be scaffolding for potential type-coercion handling of Long-type fields. |

### Instance Fields / External State Read

| Source | Description |
|--------|-------------|
| None | This method does not read any instance fields or external state. It is a pure input-to-output routing method that only invokes setters on `this` (the bean itself). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `KKW01023SF03DBean.setFirst_wrib_aply_ymd_enabled` | KKW01023SF03DBean | - | Calls `setFirst_wrib_aply_ymd_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the first discount apply date field |
| - | `KKW01023SF03DBean.setFirst_wrib_aply_ymd_state` | KKW01023SF03DBean | - | Calls `setFirst_wrib_aply_ymd_state` in `KKW01023SF03DBean` — Sets the state for the first discount apply date field |
| - | `KKW01023SF03DBean.setFirst_wrib_aply_ymd_value` | KKW01023SF03DBean | - | Calls `setFirst_wrib_aply_ymd_value` in `KKW01023SF03DBean` — Sets the data value for the first discount apply date field |
| - | `KKW01023SF03DBean.setNo_enabled` | KKW01023SF03DBean | - | Calls `setNo_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the line number field |
| - | `KKW01023SF03DBean.setNo_state` | KKW01023SF03DBean | - | Calls `setNo_state` in `KKW01023SF03DBean` — Sets the state for the line number field |
| - | `KKW01023SF03DBean.setNo_value` | KKW01023SF03DBean | - | Calls `setNo_value` in `KKW01023SF03DBean` — Sets the data value for the line number field |
| - | `KKW01023SF03DBean.setSbt_cd_enabled` | KKW01023SF03DBean | - | Calls `setSbt_cd_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the classification code field |
| - | `KKW01023SF03DBean.setSbt_cd_nm_enabled` | KKW01023SF03DBean | - | Calls `setSbt_cd_nm_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the classification code name field |
| - | `KKW01023SF03DBean.setSbt_cd_nm_state` | KKW01023SF03DBean | - | Calls `setSbt_cd_nm_state` in `KKW01023SF03DBean` — Sets the state for the classification code name field |
| - | `KKW01023SF03DBean.setSbt_cd_nm_value` | KKW01023SF03DBean | - | Calls `setSbt_cd_nm_value` in `KKW01023SF03DBean` — Sets the data value for the classification code name field |
| - | `KKW01023SF03DBean.setSbt_cd_state` | KKW01023SF03DBean | - | Calls `setSbt_cd_state` in `KKW01023SF03DBean` — Sets the state for the classification code field |
| - | `KKW01023SF03DBean.setSbt_cd_value` | KKW01023SF03DBean | - | Calls `setSbt_cd_value` in `KKW01023SF03DBean` — Sets the data value for the classification code field |
| - | `KKW01023SF03DBean.setSvc_chrg_endymd_enabled` | KKW01023SF03DBean | - | Calls `setSvc_chrg_endymd_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the service charge end date field |
| - | `KKW01023SF03DBean.setSvc_chrg_endymd_state` | KKW01023SF03DBean | - | Calls `setSvc_chrg_endymd_state` in `KKW01023SF03DBean` — Sets the state for the service charge end date field |
| - | `KKW01023SF03DBean.setSvc_chrg_endymd_value` | KKW01023SF03DBean | - | Calls `setSvc_chrg_endymd_value` in `KKW01023SF03DBean` — Sets the data value for the service charge end date field |
| - | `KKW01023SF03DBean.setSvc_chrg_staymd_enabled` | KKW01023SF03DBean | - | Calls `setSvc_chrg_staymd_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the service charge start date field |
| - | `KKW01023SF03DBean.setSvc_chrg_staymd_state` | KKW01023SF03DBean | - | Calls `setSvc_chrg_staymd_state` in `KKW01023SF03DBean` — Sets the state for the service charge start date field |
| - | `KKW01023SF03DBean.setSvc_chrg_staymd_value` | KKW01023SF03DBean | - | Calls `setSvc_chrg_staymd_value` in `KKW01023SF03DBean` — Sets the data value for the service charge start date field |
| - | `KKW01023SF03DBean.setUcwk_ny_enabled` | KKW01023SF03DBean | - | Calls `setUcwk_ny_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the content details field |
| - | `KKW01023SF03DBean.setUcwk_ny_state` | KKW01023SF03DBean | - | Calls `setUcwk_ny_state` in `KKW01023SF03DBean` — Sets the state for the content details field |
| - | `KKW01023SF03DBean.setUcwk_ny_value` | KKW01023SF03DBean | - | Calls `setUcwk_ny_value` in `KKW01023SF03DBean` — Sets the data value for the content details field |
| - | `KKW01023SF03DBean.setWrib_aply_cnt_enabled` | KKW01023SF03DBean | - | Calls `setWrib_aply_cnt_enabled` in `KKW01023SF03DBean` — Sets the enabled/disabled flag for the discount application count field |
| - | `KKW01023SF03DBean.setWrib_aply_cnt_state` | KKW01023SF03DBean | - | Calls `setWrib_aply_cnt_state` in `KKW01023SF03DBean` — Sets the state for the discount application count field |
| - | `KKW01023SF03DBean.setWrib_aply_cnt_value` | KKW01023SF03DBean | - | Calls `setWrib_aply_cnt_value` in `KKW01023SF03DBean` — Sets the data value for the discount application count field |

### Classification

All 24 setter method calls are classified as **U (Update)** operations within the bean's own state. The method performs **no direct database, entity, or SC/CBS operations** — it is a pure in-memory data-binding router. No SC Codes, CBS identifiers, or DB tables are involved.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `setSvc_chrg_endymd_state` [-], `setSvc_chrg_endymd_enabled` [-], `setSvc_chrg_endymd_value` [-], `setSvc_chrg_staymd_state` [-], `setSvc_chrg_staymd_enabled` [-], `setSvc_chrg_staymd_value` [-], `setFirst_wrib_aply_ymd_state` [-], `setFirst_wrib_aply_ymd_enabled` [-], `setFirst_wrib_aply_ymd_value` [-], `setWrib_aply_cnt_state` [-], `setWrib_aply_cnt_enabled` [-], `setWrib_aply_cnt_value` [-], `setSbt_cd_nm_state` [-], `setSbt_cd_nm_enabled` [-], `setSbt_cd_nm_value` [-], `setSbt_cd_state` [-], `setSbt_cd_enabled` [-], `setSbt_cd_value` [-], `setUcwk_ny_state` [-], `setUcwk_ny_enabled` [-], `setUcwk_ny_value` [-], `setNo_state` [-], `setNo_enabled` [-], `setNo_value` [-]

### Caller Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | KKW01023SF03DBean (self-call) | `KKW01023SF03DBean.storeModelData` | Bean setter update (24 terminal setters) |
| 2 | KKW01023SF03DBean (self-call) | `KKW01023SF03DBean.storeModelData` | Bean setter update (24 terminal setters) |

This method is called internally by the same bean class (`KKW01023SF03DBean`) from other methods within the same class. It serves as a data-population utility invoked during screen model initialization — when the screen controller or another bean method needs to populate multiple field properties based on incoming key/subkey data structures (likely from a map-based data transfer format).

The method's terminal operations are exclusively **bean state setters** (24 distinct `set<Field>_<attr>` calls), each performing an in-memory field update with no external side effects.

## 6. Per-Branch Detail Blocks

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

> Null guard: If either key or subkey is null, abort processing immediately. (Japanese: key,subkeyがnullの場合、処理を中止 — "If key or subkey is null, abort processing")

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

---

**Block 2** — [SET] `separaterPoint` computation (L517)

> Computes the position of "/" within the key. Value is never used in subsequent logic — scaffolding for potential compound-key format support.

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

---

**Block 3** — [IF-ELSE-IF-ELSE-IF-ELSE-IF-ELSE-IF-ELSE-IF-ELSE-IF-ELSE-IF-ELSE-ELSE] Field key dispatch — 8 field categories (L520-619)

> Dispatches processing based on which Japanese-labeled field key is provided. Each branch contains a nested subkey dispatch with 3 alternatives.

---

**Block 3.1** — [IF] `key.equals("番号")` (番号 = "Number", Item ID: `no`) (L520)

> Handles the line identification number field. (Japanese: データタイプがStringの項目"番号" — "Data type is String item 'Number'")

**Block 3.1.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "番号" (L521-529)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setNo_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、no_enabledのsetterを実行する — "When subkey is 'enable', execute the no_enabled setter") |
| 2 | EXEC | `setNo_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setNo_state((String)in_value);` |

---

**Block 3.2** — [ELSE-IF] `key.equals("内容内容")` (内容内容 = "Content Details", Item ID: `ucwk_ny`) (L531-532)

> Handles the content details field. (Japanese: データタイプがStringの項目"内容内容" — "Data type is String item 'Content Details'")

**Block 3.2.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "内容内容" (L533-541)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setUcwk_ny_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、ucwk_ny_enabledのsetterを実行する — "When subkey is 'enable', execute the ucwk_ny_enabled setter") |
| 2 | EXEC | `setUcwk_ny_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setUcwk_ny_state((String)in_value);` |

---

**Block 3.3** — [ELSE-IF] `key.equals("種別コード")` (種別コード = "Classification Code", Item ID: `sbt_cd`) (L543-544)

> Handles the service classification code field. (Japanese: データタイプがStringの項目"種別コード" — "Data type is String item 'Classification Code'")

**Block 3.3.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "種別コード" (L545-553)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setSbt_cd_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、sbt_cd_enabledのsetterを実行する — "When subkey is 'enable', execute the sbt_cd_enabled setter") |
| 2 | EXEC | `setSbt_cd_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setSbt_cd_state((String)in_value);` |

---

**Block 3.4** — [ELSE-IF] `key.equals("種別コード名称")` (種別コード名称 = "Classification Code Name", Item ID: `sbt_cd_nm`) (L556-557)

> Handles the classification code name field. (Japanese: データタイプがStringの項目"種別コード名称" — "Data type is String item 'Classification Code Name'")

**Block 3.4.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "種別コード名称" (L558-566)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setSbt_cd_nm_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、sbt_cd_nm_enabledのsetterを実行する — "When subkey is 'enable', execute the sbt_cd_nm_enabled setter") |
| 2 | EXEC | `setSbt_cd_nm_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setSbt_cd_nm_state((String)in_value);` |

---

**Block 3.5** — [ELSE-IF] `key.equals("割引適用回数")` (割引適用回数 = "Discount Application Count", Item ID: `wrib_aply_cnt`) (L569-570)

> Handles the discount application count field. (Japanese: データタイプがStringの項目"割引適用回数" — "Data type is String item 'Discount Application Count'")

**Block 3.5.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "割引適用回数" (L571-579)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setWrib_aply_cnt_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、wrib_aply_cnt_enabledのsetterを実行する — "When subkey is 'enable', execute the wrib_aply_cnt_enabled setter") |
| 2 | EXEC | `setWrib_aply_cnt_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setWrib_aply_cnt_state((String)in_value);` |

---

**Block 3.6** — [ELSE-IF] `key.equals("初回割引適用年月日")` (初回割引適用年月日 = "First Discount Apply Date", Item ID: `first_wrib_aply_ymd`) (L582-583)

> Handles the first discount application date field. (Japanese: データタイプがStringの項目"初回割引適用年月日" — "Data type is String item 'First Discount Apply Date'")

**Block 3.6.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "初回割引適用年月日" (L584-592)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setFirst_wrib_aply_ymd_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、first_wrib_aply_ymd_enabledのsetterを実行する — "When subkey is 'enable', execute the first_wrib_aply_ymd_enabled setter") |
| 2 | EXEC | `setFirst_wrib_aply_ymd_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setFirst_wrib_aply_ymd_state((String)in_value);` |

---

**Block 3.7** — [ELSE-IF] `key.equals("サービス課金開始年月日")` (サービス課金開始年月日 = "Service Charge Start Date", Item ID: `svc_chrg_staymd`) (L595-596)

> Handles the service charge start date field. (Japanese: データタイプがStringの項目"サービス課金開始年月日" — "Data type is String item 'Service Charge Start Date'")

**Block 3.7.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "サービス課金開始年月日" (L597-605)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setSvc_chrg_staymd_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、svc_chrg_staymd_enabledのsetterを実行する — "When subkey is 'enable', execute the svc_chrg_staymd_enabled setter") |
| 2 | EXEC | `setSvc_chrg_staymd_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setSvc_chrg_staymd_state((String)in_value);` |

---

**Block 3.8** — [ELSE-IF] `key.equals("サービス課金終了年月日")` (サービス課金終了年月日 = "Service Charge End Date", Item ID: `svc_chrg_endymd`) (L608-609)

> Handles the service charge end date field. (Japanese: データタイプがStringの項目"サービス課金終了年月日" — "Data type is String item 'Service Charge End Date'")

**Block 3.8.1** — [IF-ELSE-IF-ELSE-IF] Subkey dispatch for "サービス課金終了年月日" (L610-618)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 1 | EXEC | `setSvc_chrg_endymd_value((String)in_value);` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // (Japanese: subkeyが"enable"の場合、svc_chrg_endymd_enabledのsetterを実行する — "When subkey is 'enable', execute the svc_chrg_endymd_enabled setter") |
| 2 | EXEC | `setSvc_chrg_endymd_enabled((Boolean)in_value);` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // (Japanese: subkeyが"state"の場合、ステータスを返す — "When subkey is 'state', return status") |
| 3 | EXEC | `setSvc_chrg_endymd_state((String)in_value);` |

---

**Block 3.9** — [ELSE] Fallthrough (L619)

> If the key does not match any of the 8 defined field categories, the method implicitly falls through all conditions and returns void with no side effects. No explicit action is taken.

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `no` | Field | Line number — internal tracking ID for a service contract line item |
| `ucwk_ny` | Field | Service content details — description/nature of the service being ordered |
| `sbt_cd` | Field | Service classification code — categorizes the type of service (e.g., FTTH, Mail, voice line) |
| `sbt_cd_nm` | Field | Service classification code name — human-readable name corresponding to the classification code |
| `wrib_aply_cnt` | Field | Discount application count — number of times a promotional discount has been applied to the service |
| `first_wrib_aply_ymd` | Field | First discount application date — the date when the first discount was applied (年 = year, 月 = month, 日 = day) |
| `svc_chrg_staymd` | Field | Service charge start date — when billing for the service begins (start year/month/day) |
| `svc_chrg_endymd` | Field | Service charge end date — when billing for the service ends (end year/month/day) |
| 番号 | Japanese field label | "Number" — line item identifier |
| 内容内容 | Japanese field label | "Content Details" — service content description |
| 種別コード | Japanese field label | "Classification Code" — service type code |
| 種別コード名称 | Japanese field label | "Classification Code Name" — name of the service classification code |
| 割引適用回数 | Japanese field label | "Discount Application Count" — how many times discount has been applied |
| 初回割引適用年月日 | Japanese field label | "First Discount Application Year-Month-Day" — date of the first discount |
| サービス課金開始年月日 | Japanese field label | "Service Charge Start Year-Month-Day" — billing start date |
| サービス課金終了年月日 | Japanese field label | "Service Charge End Year-Month-Day" — billing end date |
| value | Subkey | Data property — the actual business value of the field |
| enable | Subkey | Enabled/disabled property — whether the field is interactive (editable) on the screen |
| state | Subkey | State property — display/state metadata for the field (e.g., readonly, hidden) |
| SOD | Acronym | Service Order Data — the telecom order fulfillment entity/model |
| FTTH | Business term | Fiber To The Home — fiber-optic internet broadband service |
| KKW01023SF | Module | Web service order screen module — handles service order screen operations |
| DBean | Architectural term | Data Bean — DTO (Data Transfer Object) / model object used by JSP/JSF screens for data binding |
| SC | Architectural term | Service Component — service layer class handling business logic |
| CBS | Architectural term | Common Business Service — shared utility service component |
| `isSetAsString` | Parameter | Reserved flag for converting String values to Long-type item Value properties — currently unused |
