# Business Logic — KKW01030SF03DBean.storeModelData() [283 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15101SF.KKW01030SF03DBean` |
| Layer | UI Bean / View Model (inferred from package `eo.web.webview` and method purpose — acts as a data-binding bridge between UI layer and domain entities) |
| Module | `KKA15101SF` (Package: `eo.web.webview.KKA15101SF`) |

## 1. Role

### KKW01030SF03DBean.storeModelData()

This method serves as the central **model-data dispatcher** for the `KKA15101SF` screen module. It receives data from the UI presentation layer in a generic form (String key, String subkey, Object value) and routes it to the appropriate strongly-typed JavaBean setter on `KKW01030SF03DBean`. Its core business purpose is to **deserialize incoming UI model data into typed bean properties**, enabling the screen to accept arbitrary key-value pairs from the view and safely store them into the appropriate field — whether the field represents a date (start/end date), a campaign detail, a billing flag, or a penalty record.

The method implements the **routing/dispatch design pattern**: it uses a chain of if/else-if comparisons on the `key` parameter (which holds a Japanese-labeled field name such as "終了年月日" for "End Date" or "キャンペーンコード" for "Campaign Code") to determine which group of setters to invoke. Within each group, it further dispatches on the `subkey` parameter ("value", "enable", or "state") to call the corresponding typed setter for data, enabled-state, or display-state.

The `isSetAsString` parameter is present in the signature but **not used within the method body** — it appears to be a reserved extension point for future string-formatting behavior. The method has no external service calls, no database operations, and no transactional responsibility. It is purely an in-memory model mapper called by the screen controller to populate the bean after receiving data from the view.

The method handles **23 distinct field groups**, each representing a business concept in the telecom service order domain: record counts, selection flags, contract details, campaign information, application dates, billing flags, discount services, and penalty records. Each field group supports 2-3 subkey variations, providing a flexible data binding mechanism.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL["key == null or subkey == null"]
    CHECK_NULL -->|Yes| EARLY_EXIT["Early return (no processing)"]
    CHECK_NULL -->|No| DISPATCH["Route to field group based on key"]

    DISPATCH --> G1["Group 1: 番号/件数 (Number/Count)"]
    DISPATCH --> G2["Group 2: 選択 (Selection)"]
    DISPATCH --> G3["Group 3: 番号 (Number)"]
    DISPATCH --> G4["Group 4: 契約種別 (Contract Type)"]
    DISPATCH --> G5["Group 5: 更新年月日時刻更新前 (Updated DateTime Before)"]
    DISPATCH --> G6["Group 6: キャンペーンコード (Campaign Code)"]
    DISPATCH --> G7["Group 7: キャンペーン名 (Campaign Name)"]
    DISPATCH --> G8["Group 8: ステータス (Status)"]
    DISPATCH --> G9["Group 9: ステータス名称 (Status Name)"]
    DISPATCH --> G10["Group 10: タイプコード (Type Code)"]
    DISPATCH --> G11["Group 11: タイプコード名称 (Type Code Name)"]
    DISPATCH --> G12["Group 12: 即時適用フラグ (Immediate Apply Flag)"]
    DISPATCH --> G13["Group 13: 即時適用フラグ名称 (Immediate Apply Flag Name)"]
    DISPATCH --> G14["Group 14: 申込年月日 (Application Date)"]
    DISPATCH --> G15["Group 15: 開始年月日 (Start Date)"]
    DISPATCH --> G16["Group 16: 終了年月日 (End Date)"]
    DISPATCH --> G17["Group 17: 割引サービスコード (Discount Service Code)"]
    DISPATCH --> G18["Group 18: 課金可否フラグ (Billing Flag)"]
    DISPATCH --> G19["Group 19: 課金可否フラグ名称 (Billing Flag Name)"]
    DISPATCH --> G20["Group 20: 更新後終了年月日 (Post-Update End Date)"]
    DISPATCH --> G21["Group 21: 違約金名 (Penalty Name)"]
    DISPATCH --> G22["Group 22: 違約金コード (Penalty Code)"]
    DISPATCH --> G23["Group 23: 前月解約 (Previous Month Cancellation)"]
    DISPATCH --> UNMATCHED["No match - returns silently"]

    G1 --> G1_VAL["subkey=value -> setNo_cnt_value"]
    G1 --> G1_EN["subkey=enable -> setNo_cnt_enabled"]
    G1 --> G1_ST["subkey=state -> setNo_cnt_state"]

    G2 --> G2_VAL["subkey=value -> setChoice_value"]
    G2 --> G2_EN["subkey=enable -> setChoice_enabled"]
    G2 --> G2_ST["subkey=state -> setChoice_state"]

    G3 --> G3_VAL["subkey=value -> setNo_value"]
    G3 --> G3_ST["subkey=state -> setNo_state"]

    G4 --> G4_VAL["subkey=value -> setKei_kind_value"]
    G4 --> G4_ST["subkey=state -> setKei_kind_state"]

    G5 --> G5_VAL["subkey=value -> setUpd_dtm_bf_value"]
    G5 --> G5_ST["subkey=state -> setUpd_dtm_bf_state"]

    G6 --> G6_VAL["subkey=value -> setCampaign_cd_value"]
    G6 --> G6_EN["subkey=enable -> setCampaign_cd_enabled"]
    G6 --> G6_ST["subkey=state -> setCampaign_cd_state"]

    G7 --> G7_VAL["subkey=value -> setCampaign_nm_value"]
    G7 --> G7_EN["subkey=enable -> setCampaign_nm_enabled"]
    G7 --> G7_ST["subkey=state -> setCampaign_nm_state"]

    G8 --> G8_VAL["subkey=value -> setStat_value"]
    G8 --> G8_ST["subkey=state -> setStat_state"]

    G9 --> G9_VAL["subkey=value -> setStat_nm_value"]
    G9 --> G9_EN["subkey=enable -> setStat_nm_enabled"]
    G9 --> G9_ST["subkey=state -> setStat_nm_state"]

    G10 --> G10_VAL["subkey=value -> setType_cd_value"]
    G10 --> G10_ST["subkey=state -> setType_cd_state"]

    G11 --> G11_VAL["subkey=value -> setType_cd_nm_value"]
    G11 --> G11_EN["subkey=enable -> setType_cd_nm_enabled"]
    G11 --> G11_ST["subkey=state -> setType_cd_nm_state"]

    G12 --> G12_VAL["subkey=value -> setAply_jun_value"]
    G12 --> G12_ST["subkey=state -> setAply_jun_state"]

    G13 --> G13_VAL["subkey=value -> setAply_jun_nm_value"]
    G13 --> G13_EN["subkey=enable -> setAply_jun_nm_enabled"]
    G13 --> G13_ST["subkey=state -> setAply_jun_nm_state"]

    G14 --> G14_VAL["subkey=value -> setMskm_ymd_value"]
    G14 --> G14_EN["subkey=enable -> setMskm_ymd_enabled"]
    G14 --> G14_ST["subkey=state -> setMskm_ymd_state"]

    G15 --> G15_VAL["subkey=value -> setStaymd_value"]
    G15 --> G15_EN["subkey=enable -> setStaymd_enabled"]
    G15 --> G15_ST["subkey=state -> setStaymd_state"]

    G16 --> G16_VAL["subkey=value -> setEndymd_value"]
    G16 --> G16_EN["subkey=enable -> setEndymd_enabled"]
    G16 --> G16_ST["subkey=state -> setEndymd_state"]

    G17 --> G17_VAL["subkey=value -> setWrib_svc_cd_value"]
    G17 --> G17_EN["subkey=enable -> setWrib_svc_cd_enabled"]
    G17 --> G17_ST["subkey=state -> setWrib_svc_cd_state"]

    G18 --> G18_VAL["subkey=value -> setKakin_yohi_value"]
    G18 --> G18_ST["subkey=state -> setKakin_yohi_state"]

    G19 --> G19_VAL["subkey=value -> setKakin_yohi_nm_value"]
    G19 --> G19_EN["subkey=enable -> setKakin_yohi_nm_enabled"]
    G19 --> G19_ST["subkey=state -> setKakin_yohi_nm_state"]

    G20 --> G20_VAL["subkey=value -> setEndymd_af_value"]
    G20 --> G20_EN["subkey=enable -> setEndymd_af_enabled"]
    G20 --> G20_ST["subkey=state -> setEndymd_af_state"]

    G21 --> G21_VAL["subkey=value -> setPnlty_nm_value"]
    G21 --> G21_ST["subkey=state -> setPnlty_nm_state"]

    G22 --> G22_VAL["subkey=value -> setPnlty_cd_value"]
    G22 --> G22_EN["subkey=enable -> setPnlty_cd_enabled"]
    G22 --> G22_ST["subkey=state -> setPnlty_cd_state"]

    G23 --> G23_VAL["subkey=value -> setWrib_svc_kei_zengetu_kaiyaku_value"]
    G23 --> G23_ST["subkey=state -> setWrib_svc_kei_zengetu_kaiyaku_state"]

    G1_VAL --> END_N["Return / Next"]
    G1_EN --> END_N
    G1_ST --> END_N
    G2_VAL --> END_N
    G2_EN --> END_N
    G2_ST --> END_N
    G3_VAL --> END_N
    G3_ST --> END_N
    G4_VAL --> END_N
    G4_ST --> END_N
    G5_VAL --> END_N
    G5_ST --> END_N
    G6_VAL --> END_N
    G6_EN --> END_N
    G6_ST --> END_N
    G7_VAL --> END_N
    G7_EN --> END_N
    G7_ST --> END_N
    G8_VAL --> END_N
    G8_ST --> END_N
    G9_VAL --> END_N
    G9_EN --> END_N
    G9_ST --> END_N
    G10_VAL --> END_N
    G10_ST --> END_N
    G11_VAL --> END_N
    G11_EN --> END_N
    G11_ST --> END_N
    G12_VAL --> END_N
    G12_ST --> END_N
    G13_VAL --> END_N
    G13_EN --> END_N
    G13_ST --> END_N
    G14_VAL --> END_N
    G14_EN --> END_N
    G14_ST --> END_N
    G15_VAL --> END_N
    G15_EN --> END_N
    G15_ST --> END_N
    G16_VAL --> END_N
    G16_EN --> END_N
    G16_ST --> END_N
    G17_VAL --> END_N
    G17_EN --> END_N
    G17_ST --> END_N
    G18_VAL --> END_N
    G18_ST --> END_N
    G19_VAL --> END_N
    G19_EN --> END_N
    G19_ST --> END_N
    G20_VAL --> END_N
    G20_EN --> END_N
    G20_ST --> END_N
    G21_VAL --> END_N
    G21_ST --> END_N
    G22_VAL --> END_N
    G22_EN --> END_N
    G22_ST --> END_N
    G23_VAL --> END_N
    G23_ST --> END_N
    UNMATCHED --> END_N
```

**Processing Flow Summary:**

1. **Null Guard (L1143-L1145):** If `key` or `subkey` is null, the method returns immediately without processing. Comment: "key, subkey が null の場合、処理を中止" (Abort processing if key or subkey is null).
2. **Field Group Dispatch (L1151-L1395):** A long chain of 23 `else-if` branches compares `key` against Japanese-labeled field names. Each branch routes to the appropriate setter group.
3. **Subkey Dispatch:** Within each field group, a nested if/else-if chain dispatches on `subkey`:
   - `subkey.equalsIgnoreCase("value")` -> calls the typed `setXxx_value()` setter
   - `subkey.equalsIgnoreCase("enable")` -> calls the typed `setXxx_enabled()` setter (where available)
   - `subkey.equalsIgnoreCase("state")` -> calls the typed `setXxx_state()` setter (where available)
4. **Silent Fall-Through:** If no field group matches, the method completes without any action.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Japanese-labeled field name that identifies which bean property to populate. Examples: "番号/件数" (Number/Count), "終了年月日" (End Date), "キャンペーンコード" (Campaign Code), "違約金コード" (Penalty Code). Acts as the primary routing key for the dispatcher. |
| 2 | `subkey` | `String` | Property modifier that specifies which aspect of the field to set. Takes values "value" (the actual data value), "enable" (whether the field is enabled in the UI), or "state" (display status, e.g., "normal", "error", "disabled"). Case-insensitive comparison. |
| 3 | `in_value` | `Object` | The actual data to be stored. Type depends on the field group: typically `String` for textual fields, `Boolean` for enable flags, `String` for state descriptions. Cast at runtime to the expected type before passing to the setter. |
| 4 | `isSetAsString` | `boolean` | Reserved parameter not used in the method body. Appears to be a placeholder for future string-formatting control. |

**Instance fields accessed:** None directly — all state is modified through setter method calls which update bean properties internally.

## 4. CRUD Operations / Called Services

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

The `storeModelData` method makes **zero** external service calls, database operations, or business service component invocations. All method calls within this method are calls to **bean setter methods** on `KKW01030SF03DBean` itself (in-memory property assignment only).

The called setters (all `setXxx_value`, `setXxx_enabled`, `setXxx_state` variants) are classified as **U (Update)** operations since they modify the bean's in-memory state. No SC Codes or database entities are involved.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `KKW01030SF03DBean.setNo_cnt_value` | KKW01030SF03DBean | - | Sets the record count value |
| U | `KKW01030SF03DBean.setNo_cnt_enabled` | KKW01030SF03DBean | - | Sets the record count enabled flag |
| U | `KKW01030SF03DBean.setNo_cnt_state` | KKW01030SF03DBean | - | Sets the record count display state |
| U | `KKW01030SF03DBean.setChoice_value` | KKW01030SF03DBean | - | Sets the selection flag value |
| U | `KKW01030SF03DBean.setChoice_enabled` | KKW01030SF03DBean | - | Sets the selection enabled flag |
| U | `KKW01030SF03DBean.setChoice_state` | KKW01030SF03DBean | - | Sets the selection display state |
| U | `KKW01030SF03DBean.setNo_value` | KKW01030SF03DBean | - | Sets the number value |
| U | `KKW01030SF03DBean.setNo_state` | KKW01030SF03DBean | - | Sets the number display state |
| U | `KKW01030SF03DBean.setKei_kind_value` | KKW01030SF03DBean | - | Sets the contract type value |
| U | `KKW01030SF03DBean.setKei_kind_state` | KKW01030SF03DBean | - | Sets the contract type display state |
| U | `KKW01030SF03DBean.setUpd_dtm_bf_value` | KKW01030SF03DBean | - | Sets the updated datetime before value |
| U | `KKW01030SF03DBean.setUpd_dtm_bf_state` | KKW01030SF03DBean | - | Sets the updated datetime before display state |
| U | `KKW01030SF03DBean.setCampaign_cd_value` | KKW01030SF03DBean | - | Sets the campaign code value |
| U | `KKW01030SF03DBean.setCampaign_cd_enabled` | KKW01030SF03DBean | - | Sets the campaign code enabled flag |
| U | `KKW01030SF03DBean.setCampaign_cd_state` | KKW01030SF03DBean | - | Sets the campaign code display state |
| U | `KKW01030SF03DBean.setCampaign_nm_value` | KKW01030SF03DBean | - | Sets the campaign name value |
| U | `KKW01030SF03DBean.setCampaign_nm_enabled` | KKW01030SF03DBean | - | Sets the campaign name enabled flag |
| U | `KKW01030SF03DBean.setCampaign_nm_state` | KKW01030SF03DBean | - | Sets the campaign name display state |
| U | `KKW01030SF03DBean.setStat_value` | KKW01030SF03DBean | - | Sets the status value |
| U | `KKW01030SF03DBean.setStat_state` | KKW01030SF03DBean | - | Sets the status display state |
| U | `KKW01030SF03DBean.setStat_nm_value` | KKW01030SF03DBean | - | Sets the status name value |
| U | `KKW01030SF03DBean.setStat_nm_enabled` | KKW01030SF03DBean | - | Sets the status name enabled flag |
| U | `KKW01030SF03DBean.setStat_nm_state` | KKW01030SF03DBean | - | Sets the status name display state |
| U | `KKW01030SF03DBean.setType_cd_value` | KKW01030SF03DBean | - | Sets the type code value |
| U | `KKW01030SF03DBean.setType_cd_state` | KKW01030SF03DBean | - | Sets the type code display state |
| U | `KKW01030SF03DBean.setType_cd_nm_value` | KKW01030SF03DBean | - | Sets the type code name value |
| U | `KKW01030SF03DBean.setType_cd_nm_enabled` | KKW01030SF03DBean | - | Sets the type code name enabled flag |
| U | `KKW01030SF03DBean.setType_cd_nm_state` | KKW01030SF03DBean | - | Sets the type code name display state |
| U | `KKW01030SF03DBean.setAply_jun_value` | KKW01030SF03DBean | - | Sets the immediate apply flag value |
| U | `KKW01030SF03DBean.setAply_jun_state` | KKW01030SF03DBean | - | Sets the immediate apply flag display state |
| U | `KKW01030SF03DBean.setAply_jun_nm_value` | KKW01030SF03DBean | - | Sets the immediate apply flag name value |
| U | `KKW01030SF03DBean.setAply_jun_nm_enabled` | KKW01030SF03DBean | - | Sets the immediate apply flag name enabled flag |
| U | `KKW01030SF03DBean.setAply_jun_nm_state` | KKW01030SF03DBean | - | Sets the immediate apply flag name display state |
| U | `KKW01030SF03DBean.setMskm_ymd_value` | KKW01030SF03DBean | - | Sets the application date value |
| U | `KKW01030SF03DBean.setMskm_ymd_enabled` | KKW01030SF03DBean | - | Sets the application date enabled flag |
| U | `KKW01030SF03DBean.setMskm_ymd_state` | KKW01030SF03DBean | - | Sets the application date display state |
| U | `KKW01030SF03DBean.setStaymd_value` | KKW01030SF03DBean | - | Sets the start date value |
| U | `KKW01030SF03DBean.setStaymd_enabled` | KKW01030SF03DBean | - | Sets the start date enabled flag |
| U | `KKW01030SF03DBean.setStaymd_state` | KKW01030SF03DBean | - | Sets the start date display state |
| U | `KKW01030SF03DBean.setEndymd_value` | KKW01030SF03DBean | - | Sets the end date value |
| U | `KKW01030SF03DBean.setEndymd_enabled` | KKW01030SF03DBean | - | Sets the end date enabled flag |
| U | `KKW01030SF03DBean.setEndymd_state` | KKW01030SF03DBean | - | Sets the end date display state |
| U | `KKW01030SF03DBean.setWrib_svc_cd_value` | KKW01030SF03DBean | - | Sets the discount service code value |
| U | `KKW01030SF03DBean.setWrib_svc_cd_enabled` | KKW01030SF03DBean | - | Sets the discount service code enabled flag |
| U | `KKW01030SF03DBean.setWrib_svc_cd_state` | KKW01030SF03DBean | - | Sets the discount service code display state |
| U | `KKW01030SF03DBean.setKakin_yohi_value` | KKW01030SF03DBean | - | Sets the billing flag value |
| U | `KKW01030SF03DBean.setKakin_yohi_state` | KKW01030SF03DBean | - | Sets the billing flag display state |
| U | `KKW01030SF03DBean.setKakin_yohi_nm_value` | KKW01030SF03DBean | - | Sets the billing flag name value |
| U | `KKW01030SF03DBean.setKakin_yohi_nm_enabled` | KKW01030SF03DBean | - | Sets the billing flag name enabled flag |
| U | `KKW01030SF03DBean.setKakin_yohi_nm_state` | KKW01030SF03DBean | - | Sets the billing flag name display state |
| U | `KKW01030SF03DBean.setEndymd_af_value` | KKW01030SF03DBean | - | Sets the post-update end date value |
| U | `KKW01030SF03DBean.setEndymd_af_enabled` | KKW01030SF03DBean | - | Sets the post-update end date enabled flag |
| U | `KKW01030SF03DBean.setEndymd_af_state` | KKW01030SF03DBean | - | Sets the post-update end date display state |
| U | `KKW01030SF03DBean.setPnlty_nm_value` | KKW01030SF03DBean | - | Sets the penalty name value |
| U | `KKW01030SF03DBean.setPnlty_nm_state` | KKW01030SF03DBean | - | Sets the penalty name display state |
| U | `KKW01030SF03DBean.setPnlty_cd_value` | KKW01030SF03DBean | - | Sets the penalty code value |
| U | `KKW01030SF03DBean.setPnlty_cd_enabled` | KKW01030SF03DBean | - | Sets the penalty code enabled flag |
| U | `KKW01030SF03DBean.setPnlty_cd_state` | KKW01030SF03DBean | - | Sets the penalty code display state |
| U | `KKW01030SF03DBean.setWrib_svc_kei_zengetu_kaiyaku_value` | KKW01030SF03DBean | - | Sets the previous month cancellation value |
| U | `KKW01030SF03DBean.setWrib_svc_kei_zengetu_kaiyaku_state` | KKW01030SF03DBean | - | Sets the previous month cancellation display state |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen: KKW01030SF03DBean.storeModelData() | (Self-reference / recursive call pattern) | setWrib_svc_kei_zengetu_kaiyaku_state [U], setWrib_svc_kei_zengetu_kaiyaku_value [U], setPnlty_cd_state [U], setPnlty_cd_enabled [U], setPnlty_cd_value [U], setPnlty_nm_state [U], setPnlty_nm_value [U], setEndymd_af_state [U], setEndymd_af_enabled [U], setEndymd_af_value [U], setKakin_yohi_nm_state [U], setKakin_yohi_nm_enabled [U], setKakin_yohi_nm_value [U], setKakin_yohi_state [U], setKakin_yohi_value [U], setWrib_svc_cd_state [U], setWrib_svc_cd_enabled [U], setWrib_svc_cd_value [U], setEndymd_state [U], setEndymd_enabled [U] |
| 2 | Screen: KKW01030SF03DBean.storeModelData() | (Self-reference / recursive call pattern) | (same as above — same method, different call site) |

**Analysis:** Both direct callers are within `KKW01030SF03DBean` itself, suggesting this method is called from other methods within the same class to populate bean properties. No external screen or batch entry points were found in the 8-hop call graph. This method is purely an internal utility used by the bean's own methods (likely called by the screen controller or other bean methods that process incoming model data).

## 6. Per-Branch Detail Blocks

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

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

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

**Block 2** — [IF-ELSE-IF chain] `(key.equals("番号/件数"))` (L1151)

> Field Group 1: "番号/件数" (Number/Count) — item ID: `no_cnt`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setNo_cnt_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setNo_cnt_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、no_cnt_enabled の setter を実行する" (Execute no_cnt_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setNo_cnt_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 3** — [IF-ELSE-IF chain] `(key.equals("選択"))` (L1163)

> Field Group 2: "選択" (Selection) — item ID: `choice`. Data type: Boolean. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setChoice_value((Boolean)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setChoice_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、choice_enabled の setter を実行する" (Execute choice_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setChoice_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 4** — [IF-ELSE-IF chain] `(key.equals("番号"))` (L1173)

> Field Group 3: "番号" (Number) — item ID: `no`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setNo_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setNo_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 5** — [IF-ELSE-IF chain] `(key.equals("契約種別"))` (L1181)

> Field Group 4: "契約種別" (Contract Type) — item ID: `kei_kind`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setKei_kind_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setKei_kind_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 6** — [IF-ELSE-IF chain] `(key.equals("更新年月日時刻更新前"))` (L1189)

> Field Group 5: "更新年月日時刻更新前" (Updated DateTime Before) — item ID: `upd_dtm_bf`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setUpd_dtm_bf_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setUpd_dtm_bf_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 7** — [IF-ELSE-IF chain] `(key.equals("キャンペーンコード"))` (L1197)

> Field Group 6: "キャンペーンコード" (Campaign Code) — item ID: `campaign_cd`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setCampaign_cd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setCampaign_cd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、campaign_cd_enabled の setter を実行する" (Execute campaign_cd_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setCampaign_cd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 8** — [IF-ELSE-IF chain] `(key.equals("キャンペーン名"))` (L1207)

> Field Group 7: "キャンペーン名" (Campaign Name) — item ID: `campaign_nm`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setCampaign_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setCampaign_nm_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、campaign_nm_enabled の setter を実行する" (Execute campaign_nm_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setCampaign_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 9** — [IF-ELSE-IF chain] `(key.equals("ステータス"))` (L1217)

> Field Group 8: "ステータス" (Status) — item ID: `stat`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setStat_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setStat_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 10** — [IF-ELSE-IF chain] `(key.equals("ステータス名称"))` (L1225)

> Field Group 9: "ステータス名称" (Status Name) — item ID: `stat_nm`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setStat_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setStat_nm_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、stat_nm_enabled の setter を実行する" (Execute stat_nm_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setStat_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 11** — [IF-ELSE-IF chain] `(key.equals("タイプコード"))` (L1235)

> Field Group 10: "タイプコード" (Type Code) — item ID: `type_cd`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setType_cd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setType_cd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 12** — [IF-ELSE-IF chain] `(key.equals("タイプコード名称"))` (L1243)

> Field Group 11: "タイプコード名称" (Type Code Name) — item ID: `type_cd_nm`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setType_cd_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setType_cd_nm_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、type_cd_nm_enabled の setter を実行する" (Execute type_cd_nm_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setType_cd_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 13** — [IF-ELSE-IF chain] `(key.equals("即時適用フラグ"))` (L1253)

> Field Group 12: "即時適用フラグ" (Immediate Apply Flag) — item ID: `aply_jun`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setAply_jun_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setAply_jun_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 14** — [IF-ELSE-IF chain] `(key.equals("即時適用フラグ名称"))` (L1261)

> Field Group 13: "即時適用フラグ名称" (Immediate Apply Flag Name) — item ID: `aply_jun_nm`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setAply_jun_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setAply_jun_nm_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、aply_jun_nm_enabled の setter を実行する" (Execute aply_jun_nm_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setAply_jun_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 15** — [IF-ELSE-IF chain] `(key.equals("申込年月日"))` (L1271)

> Field Group 14: "申込年月日" (Application Date) — item ID: `mskm_ymd`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setMskm_ymd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setMskm_ymd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、mskm_ymd_enabled の setter を実行する" (Execute mskm_ymd_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setMskm_ymd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 16** — [IF-ELSE-IF chain] `(key.equals("開始年月日"))` (L1281)

> Field Group 15: "開始年月日" (Start Date) — item ID: `staymd`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setStaymd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setStaymd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、staymd_enabled の setter を実行する" (Execute staymd_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setStaymd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 17** — [IF-ELSE-IF chain] `(key.equals("終了年月日"))` (L1291)

> Field Group 16: "終了年月日" (End Date) — item ID: `endymd`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setEndymd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setEndymd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、endymd_enabled の setter を実行する" (Execute endymd_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setEndymd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 18** — [IF-ELSE-IF chain] `(key.equals("割引サービスコード"))` (L1301)

> Field Group 17: "割引サービスコード" (Discount Service Code) — item ID: `wrib_svc_cd`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setWrib_svc_cd_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setWrib_svc_cd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、wrib_svc_cd_enabled の setter を実行する" (Execute wrib_svc_cd_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setWrib_svc_cd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 19** — [IF-ELSE-IF chain] `(key.equals("課金可否フラグ"))` (L1311)

> Field Group 18: "課金可否フラグ" (Billing Flag) — item ID: `kakin_yohi`. Data type: String. Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setKakin_yohi_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setKakin_yohi_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 20** — [IF-ELSE-IF chain] `(key.equals("課金可否フラグ名称"))` (L1319)

> Field Group 19: "課金可否フラグ名称" (Billing Flag Name) — item ID: `kakin_yohi_nm`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setKakin_yohi_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setKakin_yohi_nm_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、kakin_yohi_nm_enabled の setter を実行する" (Execute kakin_yohi_nm_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setKakin_yohi_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 21** — [IF-ELSE-IF chain] `(key.equals("更新後終了年月日"))` (L1329)

> Field Group 20: "更新後終了年月日" (Post-Update End Date) — item ID: `endymd_af`. Data type: String. Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setEndymd_af_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setEndymd_af_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、endymd_af_enabled の setter を実行する" (Execute endymd_af_enabled setter when subkey is "enable") |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setEndymd_af_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 22** — [IF-ELSE-IF chain] `(key.equals("違約金名"))` (L1339)

> Field Group 21: "違約金名" (Penalty Name) — item ID: `pnlty_nm`. Data type: String. Supports value and state subkeys (no enable).
> Japanese comment: "データタイプが String の項目 '違約金名' (項目ID:pnlty_nm)" (Data type is String field 'Penalty Name' (item ID: pnlty_nm))

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setPnlty_nm_value((String)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setPnlty_nm_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、in_value を cast して項目ID_state の setter を実行する" (When subkey is 'state', cast in_value and execute the itemID_state setter) |

**Block 23** — [IF-ELSE-IF chain] `(key.equals("違約金コード"))` (L1347)

> Field Group 22: "違約金コード" (Penalty Code) — item ID: `pnlty_cd`. Data type: String (but note: `setPnlty_cd_value` receives `(Boolean)in_value` cast — this appears to be a data type inconsistency in the source code). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setPnlty_cd_value((Boolean)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` -> `setPnlty_cd_enabled((Boolean)in_value)` // Japanese comment: "subkey が 'enable' の場合、wrib_svc_cd_enabled の setter を実行する" (Execute wrib_svc_cd_enabled setter when subkey is "enable" — note: comment references wrong setter name) |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setPnlty_cd_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 24** — [IF-ELSE-IF chain] `(key.equals("前月解約"))` (L1359)

> Field Group 23: "前月解約" (Previous Month Cancellation) — item ID: `wrib_svc_kei_zengetu_kaiyaku`. Data type: String (but `setWrib_svc_kei_zengetu_kaiyaku_value` receives `(Boolean)in_value` cast — another data type inconsistency). Supports value and state subkeys (no enable).

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` -> `setWrib_svc_kei_zengetu_kaiyaku_value((Boolean)in_value)` |
| 2 | ELSE-IF | `subkey.equalsIgnoreCase("state")` -> `setWrib_svc_kei_zengetu_kaiyaku_state((String)in_value)` // Japanese comment: "subkey が 'state' の場合、ステータスを返す" (Return status when subkey is "state") |

**Block 25** — [END] — (L1367)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` (implicit, end of void method) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `no_cnt` | Field | Record count — the total number of records displayed or processed in a list context |
| `choice` | Field | Selection flag — indicates whether an item has been selected by the user |
| `no` | Field | Number — a sequential or identification number (generic) |
| `kei_kind` | Field | Contract type — classifies the type of service contract (e.g., new, modification, renewal) |
| `upd_dtm_bf` | Field | Updated datetime before — the timestamp before the most recent update operation |
| `campaign_cd` | Field | Campaign code — identifier for a promotional or marketing campaign |
| `campaign_nm` | Field | Campaign name — human-readable name of a promotional campaign |
| `stat` | Field | Status — the current state of a record or service |
| `stat_nm` | Field | Status name — human-readable label for the status |
| `type_cd` | Field | Type code — a classification code for the service or record type |
| `type_cd_nm` | Field | Type code name — human-readable label for the type code |
| `aply_jun` | Field | Immediate apply flag — indicates whether changes should take effect immediately |
| `aply_jun_nm` | Field | Immediate apply flag name — human-readable label for the immediate apply flag |
| `mskm_ymd` | Field | Application date — the date when the service order/application was submitted |
| `staymd` | Field | Start date — the date when the service becomes active |
| `endymd` | Field | End date — the date when the service expires or terminates |
| `wrib_svc_cd` | Field | Discount service code — code identifying a discounted or free service benefit |
| `kakin_yohi` | Field | Billing flag — indicates whether billing is applicable (課金可否 = "billing applicability") |
| `kakin_yohi_nm` | Field | Billing flag name — human-readable label for the billing flag |
| `endymd_af` | Field | Post-update end date — the end date after a modification/extension has been applied |
| `pnlty_nm` | Field | Penalty name — human-readable label for a contract cancellation penalty |
| `pnlty_cd` | Field | Penalty code — code identifying a specific type of cancellation penalty |
| `wrib_svc_kei_zengetu_kaiyaku` | Field | Previous month cancellation — flag indicating whether the service was cancelled in the previous month |
| 番号/件数 | Japanese field | Number/Count — display label for the record count field |
| 選択 | Japanese field | Selection — display label for the selection flag field |
| 番号 | Japanese field | Number — display label for the number field |
| 契約種別 | Japanese field | Contract type — display label for the contract type field |
| 更新年月日時刻更新前 | Japanese field | Updated datetime before — display label for the pre-update timestamp |
| キャンペーンコード | Japanese field | Campaign code — display label for the campaign code |
| キャンペーン名 | Japanese field | Campaign name — display label for the campaign name |
| ステータス | Japanese field | Status — display label for the status |
| ステータス名称 | Japanese field | Status name — display label for the status name |
| タイプコード | Japanese field | Type code — display label for the type code |
| タイプコード名称 | Japanese field | Type code name — display label for the type code name |
| 即時適用フラグ | Japanese field | Immediate apply flag — display label for the immediate apply flag |
| 即時適用フラグ名称 | Japanese field | Immediate apply flag name — display label for the immediate apply flag name |
| 申込年月日 | Japanese field | Application date — display label for the application date |
| 開始年月日 | Japanese field | Start date — display label for the start date |
| 終了年月日 | Japanese field | End date — display label for the end date |
| 割引サービスコード | Japanese field | Discount service code — display label for the discount service code |
| 課金可否フラグ | Japanese field | Billing flag — display label for the billing applicability flag (課金 = billing, 可否 = applicability) |
| 課金可否フラグ名称 | Japanese field | Billing flag name — display label for the billing flag name |
| 更新後終了年月日 | Japanese field | Post-update end date — display label for the end date after modification |
| 違約金名 | Japanese field | Penalty name — display label for the penalty name (違約金 = cancellation penalty) |
| 違約金コード | Japanese field | Penalty code — display label for the penalty code |
| 前月解約 | Japanese field | Previous month cancellation — display label for the cancellation flag (前月 = previous month, 解約 = cancellation/termination) |
