# Business Logic — CRW02702SF01DBean.storeModelData() [165 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.CRW02702SF.CRW02702SF01DBean` |
| Layer | Web View (UI Bean / Presentation Layer) |
| Module | `CRW02702SF` (Package: `eo.web.webview.CRW02702SF`) |

## 1. Role

### CRW02702SF01DBean.storeModelData()

This method serves as a **unified model-binding setter** for the `CRW02702SF01DBean` UI bean, which is used by the web view layer of the K-Opticom telecom operations system to display and manage **option service information** (オプションサービス情報) for a customer's contracted lines. It implements a **routing/dispatch pattern**: given a business field name (`key`) and a property accessor type (`subkey`), the method routes the incoming value to the correct strongly-typed setter method on the bean itself.

The method handles **13 distinct field groups** used in the option service display screen (CSW02702SF). Each field group supports up to three subkey properties — `value` (the data value), `enable` (whether the field is editable), and `state` (the display state such as disabled, error, or normal). Some fields (option service contract number, option service code, and option content link display flag) only support `value` and `state`, as they are display-only and not user-editable.

The method also features a special handling path for `isSetAsString`: when this boolean flag is true, it ensures that `Long`-typed fields receive their values as `String` representations. This supports the system's generic data-binding mechanism where values arrive as strings but must be cast to their proper bean property types.

Its role in the larger system is to act as the **central deserialization bridge** between the generic HTTP-request model data (passed as `Object` and `String` key pairs) and the strongly-typed bean properties that drive the JSF/ICEfaces view layer. It is called by the screen's controller/CBS during initialization or postback processing.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData params"])

    START --> CheckNull{"key or subkey null?"}

    CheckNull -->|Yes| EARLY_RETURN(["Return early"])
    CheckNull -->|No| CheckKey{"Field key?"}

    CheckKey -->|"明細インデックス"| Branch1["l_detail_index"]
    CheckKey -->|"オプションサービス名"| Branch2["l_op_svc_cd_nm"]
    CheckKey -->|"オプション内容"| Branch3["l_op_svc_niy"]
    CheckKey -->|"サブオプション内容"| Branch4["l_sbop_svc_niy"]
    CheckKey -->|"利用状態"| Branch5["l_op_svc_kei_stat_nm"]
    CheckKey -->|"利用開始日"| Branch6["l_svc_staymd"]
    CheckKey -->|"解約予定日"| Branch7["l_rsv_tsta_kibo_ymd"]
    CheckKey -->|"利用終了日"| Branch8["l_svc_endymd"]
    CheckKey -->|"オプションサービス契約番号"| Branch9["l_op_svc_kei_no"]
    CheckKey -->|"オプションサービスコード"| Branch10["l_op_svc_cd"]
    CheckKey -->|"オプション内容リンク表示フラグ"| Branch11["l_op_svc_niy_link_dsp_flg"]
    CheckKey -->|"行スタイルクラス"| Branch12["l_line_style_class"]
    CheckKey -->|"行スタイルID"| Branch13["l_line_style_id"]
    CheckKey -->|"unmatched"| NOOP(["No operation"])

    Branch1 --> SubKey1{"subkey?"}
    SubKey1 -->|"value"| S1V["setL_detail_index_value"]
    SubKey1 -->|"enable"| S1E["setL_detail_index_enabled"]
    SubKey1 -->|"state"| S1S["setL_detail_index_state"]

    Branch2 --> SubKey2{"subkey?"}
    SubKey2 -->|"value"| S2V["setL_op_svc_cd_nm_value"]
    SubKey2 -->|"enable"| S2E["setL_op_svc_cd_nm_enabled"]
    SubKey2 -->|"state"| S2S["setL_op_svc_cd_nm_state"]

    Branch3 --> SubKey3{"subkey?"}
    SubKey3 -->|"value"| S3V["setL_op_svc_niy_value"]
    SubKey3 -->|"enable"| S3E["setL_op_svc_niy_enabled"]
    SubKey3 -->|"state"| S3S["setL_op_svc_niy_state"]

    Branch4 --> SubKey4{"subkey?"}
    SubKey4 -->|"value"| S4V["setL_sbop_svc_niy_value"]
    SubKey4 -->|"enable"| S4E["setL_sbop_svc_niy_enabled"]
    SubKey4 -->|"state"| S4S["setL_sbop_svc_niy_state"]

    Branch5 --> SubKey5{"subkey?"}
    SubKey5 -->|"value"| S5V["setL_op_svc_kei_stat_nm_value"]
    SubKey5 -->|"enable"| S5E["setL_op_svc_kei_stat_nm_enabled"]
    SubKey5 -->|"state"| S5S["setL_op_svc_kei_stat_nm_state"]

    Branch6 --> SubKey6{"subkey?"}
    SubKey6 -->|"value"| S6V["setL_svc_staymd_value"]
    SubKey6 -->|"enable"| S6E["setL_svc_staymd_enabled"]
    SubKey6 -->|"state"| S6S["setL_svc_staymd_state"]

    Branch7 --> SubKey7{"subkey?"}
    SubKey7 -->|"value"| S7V["setL_rsv_tsta_kibo_ymd_value"]
    SubKey7 -->|"enable"| S7E["setL_rsv_tsta_kibo_ymd_enabled"]
    SubKey7 -->|"state"| S7S["setL_rsv_tsta_kibo_ymd_state"]

    Branch8 --> SubKey8{"subkey?"}
    SubKey8 -->|"value"| S8V["setL_svc_endymd_value"]
    SubKey8 -->|"enable"| S8E["setL_svc_endymd_enabled"]
    SubKey8 -->|"state"| S8S["setL_svc_endymd_state"]

    Branch9 --> SubKey9{"subkey?"}
    SubKey9 -->|"value"| S9V["setL_op_svc_kei_no_value"]
    SubKey9 -->|"state"| S9S["setL_op_svc_kei_no_state"]

    Branch10 --> SubKey10{"subkey?"}
    SubKey10 -->|"value"| S10V["setL_op_svc_cd_value"]
    SubKey10 -->|"state"| S10S["setL_op_svc_cd_state"]

    Branch11 --> SubKey11{"subkey?"}
    SubKey11 -->|"value"| S11V["setL_op_svc_niy_link_dsp_flg_value"]
    SubKey11 -->|"state"| S11S["setL_op_svc_niy_link_dsp_flg_state"]

    Branch12 --> SubKey12{"subkey?"}
    SubKey12 -->|"value"| S12V["setL_line_style_class_value"]
    SubKey12 -->|"state"| S12S["setL_line_style_class_state"]

    Branch13 --> SubKey13{"subkey?"}
    SubKey13 -->|"value"| S13V["setL_line_style_id_value"]
    SubKey13 -->|"state"| S13S["setL_line_style_id_state"]

    S1V --> END_NODE(["Return / Next"])
    S1E --> END_NODE
    S1S --> END_NODE
    S2V --> END_NODE
    S2E --> END_NODE
    S2S --> END_NODE
    S3V --> END_NODE
    S3E --> END_NODE
    S3S --> END_NODE
    S4V --> END_NODE
    S4E --> END_NODE
    S4S --> END_NODE
    S5V --> END_NODE
    S5E --> END_NODE
    S5S --> END_NODE
    S6V --> END_NODE
    S6E --> END_NODE
    S6S --> END_NODE
    S7V --> END_NODE
    S7E --> END_NODE
    S7S --> END_NODE
    S8V --> END_NODE
    S8E --> END_NODE
    S8S --> END_NODE
    S9V --> END_NODE
    S9S --> END_NODE
    S10V --> END_NODE
    S10S --> END_NODE
    S11V --> END_NODE
    S11S --> END_NODE
    S12V --> END_NODE
    S12S --> END_NODE
    S13V --> END_NODE
    S13S --> END_NODE
    NOOP --> END_NODE
    EARLY_RETURN --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The Japanese field name identifying which option-service model property to set. Valid values correspond to the 13 display fields on the option service screen: 明細インデックス (Detail Index), オプションサービス名 (Option Service Name), オプション内容 (Option Content), サブオプション内容 (Sub-Option Content), 利用状態 (Usage Status), 利用開始日 (Service Start Date), 解約予定日 (Cancellation Planned Date), 利用終了日 (Service End Date), オプションサービス契約番号 (Option Service Contract Number), オプションサービスコード (Option Service Code), オプション内容リンク表示フラグ (Option Content Link Display Flag), 行スタイルクラス (Row Style Class), 行スタイルID (Row Style ID). Case-sensitive matching. |
| 2 | `subkey` | `String` | The property accessor type within a field group. Determines whether the value being set is the field data value (`value`), the editability flag (`enable`), or the display state (`state`). Case-insensitive matching (`equalsIgnoreCase`). |
| 3 | `in_value` | `Object` | The data to assign to the target bean property. Cast to the appropriate type based on the field/subkey combination: `String` for most values, `Boolean` for enable flags and the link display flag. |
| 4 | `isSetAsString` | `boolean` | When `true`, indicates that `Long`-typed field values should be set via their String property setter (e.g., `setL_..._value` receives a string representation of a Long). Supports the generic data-binding mechanism where values arrive as strings but must be mapped to strongly-typed bean properties. |

**Instance fields / external state read:** None. This method only reads its parameters and calls setter methods on `this`.

## 4. CRUD Operations / Called Services

All operations in this method are **setter calls** on the bean's own fields (local state update — U). No external SC, CBS, database, or entity access occurs.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `CRW02702SF01DBean.setL_detail_index_value` | — | Bean field `l_detail_index` (Detail Index value) | Sets the detail index String value |
| U | `CRW02702SF01DBean.setL_detail_index_enabled` | — | Bean field `l_detail_index_enabled` (Detail Index editability) | Sets whether the detail index field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_detail_index_state` | — | Bean field `l_detail_index_state` (Detail Index display state) | Sets the display state of the detail index field |
| U | `CRW02702SF01DBean.setL_op_svc_cd_nm_value` | — | Bean field `l_op_svc_cd_nm` (Option Service Name) | Sets the option service name String value |
| U | `CRW02702SF01DBean.setL_op_svc_cd_nm_enabled` | — | Bean field `l_op_svc_cd_nm_enabled` (Option Service Name editability) | Sets whether the option service name field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_op_svc_cd_nm_state` | — | Bean field `l_op_svc_cd_nm_state` (Option Service Name display state) | Sets the display state of the option service name field |
| U | `CRW02702SF01DBean.setL_op_svc_niy_value` | — | Bean field `l_op_svc_niy` (Option Content) | Sets the option content String value |
| U | `CRW02702SF01DBean.setL_op_svc_niy_enabled` | — | Bean field `l_op_svc_niy_enabled` (Option Content editability) | Sets whether the option content field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_op_svc_niy_state` | — | Bean field `l_op_svc_niy_state` (Option Content display state) | Sets the display state of the option content field |
| U | `CRW02702SF01DBean.setL_sbop_svc_niy_value` | — | Bean field `l_sbop_svc_niy` (Sub-Option Content) | Sets the sub-option content String value |
| U | `CRW02702SF01DBean.setL_sbop_svc_niy_enabled` | — | Bean field `l_sbop_svc_niy_enabled` (Sub-Option Content editability) | Sets whether the sub-option content field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_sbop_svc_niy_state` | — | Bean field `l_sbop_svc_niy_state` (Sub-Option Content display state) | Sets the display state of the sub-option content field |
| U | `CRW02702SF01DBean.setL_op_svc_kei_stat_nm_value` | — | Bean field `l_op_svc_kei_stat_nm` (Usage Status Name) | Sets the usage status name String value |
| U | `CRW02702SF01DBean.setL_op_svc_kei_stat_nm_enabled` | — | Bean field `l_op_svc_kei_stat_nm_enabled` (Usage Status Name editability) | Sets whether the usage status name field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_op_svc_kei_stat_nm_state` | — | Bean field `l_op_svc_kei_stat_nm_state` (Usage Status Name display state) | Sets the display state of the usage status name field |
| U | `CRW02702SF01DBean.setL_svc_staymd_value` | — | Bean field `l_svc_staymd` (Service Start Date) | Sets the service start date String value (YYYYMMDD format) |
| U | `CRW02702SF01DBean.setL_svc_staymd_enabled` | — | Bean field `l_svc_staymd_enabled` (Service Start Date editability) | Sets whether the service start date field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_svc_staymd_state` | — | Bean field `l_svc_staymd_state` (Service Start Date display state) | Sets the display state of the service start date field |
| U | `CRW02702SF01DBean.setL_rsv_tsta_kibo_ymd_value` | — | Bean field `l_rsv_tsta_kibo_ymd` (Cancellation Planned Date) | Sets the cancellation planned date String value (YYYYMMDD format) |
| U | `CRW02702SF01DBean.setL_rsv_tsta_kibo_ymd_enabled` | — | Bean field `l_rsv_tsta_kibo_ymd_enabled` (Cancellation Planned Date editability) | Sets whether the cancellation planned date field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_rsv_tsta_kibo_ymd_state` | — | Bean field `l_rsv_tsta_kibo_ymd_state` (Cancellation Planned Date display state) | Sets the display state of the cancellation planned date field |
| U | `CRW02702SF01DBean.setL_svc_endymd_value` | — | Bean field `l_svc_endymd` (Service End Date) | Sets the service end date String value (YYYYMMDD format) |
| U | `CRW02702SF01DBean.setL_svc_endymd_enabled` | — | Bean field `l_svc_endymd_enabled` (Service End Date editability) | Sets whether the service end date field is editable (Boolean) |
| U | `CRW02702SF01DBean.setL_svc_endymd_state` | — | Bean field `l_svc_endymd_state` (Service End Date display state) | Sets the display state of the service end date field |
| U | `CRW02702SF01DBean.setL_op_svc_kei_no_value` | — | Bean field `l_op_svc_kei_no` (Option Service Contract Number) | Sets the contract number String value (display-only, no enable) |
| U | `CRW02702SF01DBean.setL_op_svc_kei_no_state` | — | Bean field `l_op_svc_kei_no_state` (Contract Number display state) | Sets the display state of the contract number field |
| U | `CRW02702SF01DBean.setL_op_svc_cd_value` | — | Bean field `l_op_svc_cd` (Option Service Code) | Sets the option service code String value (display-only, no enable) |
| U | `CRW02702SF01DBean.setL_op_svc_cd_state` | — | Bean field `l_op_svc_cd_state` (Option Service Code display state) | Sets the display state of the option service code field |
| U | `CRW02702SF01DBean.setL_op_svc_niy_link_dsp_flg_value` | — | Bean field `l_op_svc_niy_link_dsp_flg` (Option Content Link Display Flag) | Sets the link display flag Boolean value |
| U | `CRW02702SF01DBean.setL_op_svc_niy_link_dsp_flg_state` | — | Bean field `l_op_svc_niy_link_dsp_flg_state` (Link Display Flag state) | Sets the display state of the link display flag field |
| U | `CRW02702SF01DBean.setL_line_style_class_value` | — | Bean field `l_line_style_class` (Row Style Class) | Sets the CSS style class String value for row styling |
| U | `CRW02702SF01DBean.setL_line_style_class_state` | — | Bean field `l_line_style_class_state` (Row Style Class state) | Sets the display state of the row style class field |
| U | `CRW02702SF01DBean.setL_line_style_id_value` | — | Bean field `l_line_style_id` (Row Style ID) | Sets the CSS ID String value for row styling |
| U | `CRW02702SF01DBean.setL_line_style_id_state` | — | Bean field `l_line_style_id_state` (Row Style ID state) | Sets the display state of the row style ID field |

## 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: `setL_line_style_id_state` [-], `setL_line_style_id_value` [-], `setL_line_style_class_state` [-], `setL_line_style_class_value` [-], `setL_op_svc_niy_link_dsp_flg_state` [-], `setL_op_svc_niy_link_dsp_flg_value` [-], `setL_op_svc_cd_state` [-], `setL_op_svc_cd_value` [-], `setL_op_svc_kei_no_state` [-], `setL_op_svc_kei_no_value` [-], `setL_svc_endymd_state` [-], `setL_svc_endymd_enabled` [-], `setL_svc_endymd_value` [-], `setL_rsv_tsta_kibo_ymd_state` [-], `setL_rsv_tsta_kibo_ymd_enabled` [-], `setL_rsv_tsta_kibo_ymd_value` [-], `setL_svc_staymd_state` [-], `setL_svc_staymd_enabled` [-], `setL_svc_staymd_value` [-], `setL_op_svc_kei_stat_nm_state` [-], `setL_op_svc_kei_stat_nm_enabled` [-], `setL_op_svc_kei_stat_nm_value` [-], `setL_sbop_svc_niy_state` [-], `setL_sbop_svc_niy_enabled` [-], `setL_sbop_svc_niy_value` [-], `setL_op_svc_niy_state` [-], `setL_op_svc_niy_enabled` [-], `setL_op_svc_niy_value` [-], `setL_op_svc_cd_nm_state` [-], `setL_op_svc_cd_nm_enabled` [-], `setL_op_svc_cd_nm_value` [-], `setL_detail_index_state` [-], `setL_detail_index_enabled` [-], `setL_detail_index_value` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Internal Caller (CRW02702SF01DBean) | — | All 35 setter calls listed in Section 4 |
| 2 | Internal Caller (CRW02702SF01DBean) | — | All 35 setter calls listed in Section 4 |

**Note:** This method is a pure bean property setter with no external service or database dependencies. It is called internally (likely by the screen's CBS or data-binding layer) during the initialization or postback processing of the `CRW02702SF` option service display screen. The method reads no external state and writes only to its own bean properties.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null check) (L695)

Guard clause: if either `key` or `subkey` is `null`, the method returns immediately without processing. This prevents `NullPointerException` on subsequent `key.equals()` calls.

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/")` // Computes position of first '/' in key, but result is never used — unused variable [line 699] |
| 2 | RETURN | `return;` // Early return — 項目名とサブキーがnullの場合、処理を中止 (If field name and subkey are null, abort processing) |

### Block 2 — IF/ELSE-IF chain (field routing by key) (L702–L857)

This is the main dispatch body: an if/else-if chain matching `key` against 13 Japanese field names. Each branch then nests a subkey dispatch.

---

**Block 2.1** — IF `"明細インデックス"` (Detail Index) (L702)

> Handles the detail index field (item ID: `l_detail_index`). Supports all three subkey types: value, enable, and state.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — subkey that "value"の場合、データ値を設定します (When subkey is "value", sets the data value) |
| 1.1 | CALL | `setL_detail_index_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — subkeyが"enable"の場合、l_detail_index_enabledのsetterを実行する (When subkey is "enable", executes the l_detail_index_enabled setter) |
| 2.1 | CALL | `setL_detail_index_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — subkeyが"state"の場合、ステータスを返す (When subkey is "state", sets the status) |
| 3.1 | CALL | `setL_detail_index_state((String)in_value);` |

---

**Block 2.2** — ELSE-IF `"オプションサービス名"` (Option Service Name) (L716)

> Handles the option service name field (item ID: `l_op_svc_cd_nm`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_op_svc_cd_nm_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_op_svc_cd_nm_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_op_svc_cd_nm_state((String)in_value);` |

---

**Block 2.3** — ELSE-IF `"オプション内容"` (Option Content) (L730)

> Handles the option content field (item ID: `l_op_svc_niy`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_op_svc_niy_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_op_svc_niy_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_op_svc_niy_state((String)in_value);` |

---

**Block 2.4** — ELSE-IF `"サブオプション内容"` (Sub-Option Content) (L744)

> Handles the sub-option content field (item ID: `l_sbop_svc_niy`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_sbop_svc_niy_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_sbop_svc_niy_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_sbop_svc_niy_state((String)in_value);` |

---

**Block 2.5** — ELSE-IF `"利用状態"` (Usage Status) (L758)

> Handles the usage status name field (item ID: `l_op_svc_kei_stat_nm`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_op_svc_kei_stat_nm_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_op_svc_kei_stat_nm_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_op_svc_kei_stat_nm_state((String)in_value);` |

---

**Block 2.6** — ELSE-IF `"利用開始日"` (Service Start Date) (L772)

> Handles the service start date field (item ID: `l_svc_staymd`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_svc_staymd_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_svc_staymd_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_svc_staymd_state((String)in_value);` |

---

**Block 2.7** — ELSE-IF `"解約予定日"` (Cancellation Planned Date) (L786)

> Handles the cancellation planned date field (item ID: `l_rsv_tsta_kibo_ymd`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_rsv_tsta_kibo_ymd_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_rsv_tsta_kibo_ymd_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_rsv_tsta_kibo_ymd_state((String)in_value);` |

---

**Block 2.8** — ELSE-IF `"利用終了日"` (Service End Date) (L800)

> Handles the service end date field (item ID: `l_svc_endymd`). Supports value, enable, and state subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_svc_endymd_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("enable"))` — enable flag |
| 2.1 | CALL | `setL_svc_endymd_enabled((Boolean)in_value);` |
| 3 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 3.1 | CALL | `setL_svc_endymd_state((String)in_value);` |

---

**Block 2.9** — ELSE-IF `"オプションサービス契約番号"` (Option Service Contract Number) (L814)

> Handles the option service contract number field (item ID: `l_op_svc_kei_no`). **Note: only supports `value` and `state` subkeys** — no `enable` branch. This is a display-only field, not user-editable.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_op_svc_kei_no_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 2.1 | CALL | `setL_op_svc_kei_no_state((String)in_value);` |

---

**Block 2.10** — ELSE-IF `"オプションサービスコード"` (Option Service Code) (L825)

> Handles the option service code field (item ID: `l_op_svc_cd`). **Note: only supports `value` and `state` subkeys** — no `enable` branch. This is a display-only field.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_op_svc_cd_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 2.1 | CALL | `setL_op_svc_cd_state((String)in_value);` |

---

**Block 2.11** — ELSE-IF `"オプション内容リンク表示フラグ"` (Option Content Link Display Flag) (L836)

> Handles the option content link display flag field (item ID: `l_op_svc_niy_link_dsp_flg`). **Note: only supports `value` and `state` subkeys**. The `value` setter casts to `Boolean` (not `String`). No `enable` branch — this is a display-only flag.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value (Boolean cast) |
| 1.1 | CALL | `setL_op_svc_niy_link_dsp_flg_value((Boolean)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 2.1 | CALL | `setL_op_svc_niy_link_dsp_flg_state((String)in_value);` |

---

**Block 2.12** — ELSE-IF `"行スタイルクラス"` (Row Style Class) (L847)

> Handles the row CSS style class field (item ID: `l_line_style_class`). **Note: only supports `value` and `state` subkeys** — no `enable` branch. This is a UI styling field, not user-editable data.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_line_style_class_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 2.1 | CALL | `setL_line_style_class_state((String)in_value);` |

---

**Block 2.13** — ELSE-IF `"行スタイルID"` (Row Style ID) (L857)

> Handles the row CSS style ID field (item ID: `l_line_style_id`). **Note: only supports `value` and `state` subkeys** — no `enable` branch. This is a UI styling field.

| # | Type | Code |
|---|------|------|
| 1 | IF-ELSE-IF | `if(subkey.equalsIgnoreCase("value"))` — data value |
| 1.1 | CALL | `setL_line_style_id_value((String)in_value);` |
| 2 | IF-ELSE-IF | `else if(subkey.equalsIgnoreCase("state"))` — display state |
| 2.1 | CALL | `setL_line_style_id_state((String)in_value);` |

---

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `明細インデックス` | Field | Detail Index — internal row index/identifier for option service detail lines in a tabular display |
| `オプションサービス名` | Field | Option Service Name — the display name of an option service (e.g., virus protection, backup service) attached to a customer's contracted line |
| `オプション内容` | Field | Option Content — the description/content details of the selected option service |
| `サブオプション内容` | Field | Sub-Option Content — content details of a sub-option (secondary/child option) nested under a parent option service |
| `利用状態` | Field | Usage Status — the current operational status of the option service (e.g., active, suspended, canceled) |
| `利用開始日` | Field | Service Start Date — the date when the option service became active (YYYYMMDD format) |
| `解約予定日` | Field | Cancellation Planned Date — the scheduled date for option service cancellation |
| `利用終了日` | Field | Service End Date — the date when the option service usage ended or will end |
| `オプションサービス契約番号` | Field | Option Service Contract Number — the contract number associated with the option service (display-only, not editable) |
| `オプションサービスコード` | Field | Option Service Code — the internal code identifying the option service type (display-only, not editable) |
| `オプション内容リンク表示フラグ` | Field | Option Content Link Display Flag — a Boolean flag indicating whether the option content display should include a hyperlink |
| `行スタイルクラス` | Field | Row Style Class — CSS class name applied to a row in the option service detail table for visual formatting |
| `行スタイルID` | Field | Row Style ID — CSS ID applied to a row in the option service detail table |
| `l_detail_index` | Field | Bean property ID for the detail index value (Long/String) |
| `l_op_svc_cd_nm` | Field | Bean property ID for the option service code/name value |
| `l_op_svc_niy` | Field | Bean property ID for the option content value (`niyo` = 内容, content/details) |
| `l_sbop_svc_niy` | Field | Bean property ID for the sub-option content value |
| `l_op_svc_kei_stat_nm` | Field | Bean property ID for the option service detail status name (`kei` = 内容 detail, `stat` = status) |
| `l_svc_staymd` | Field | Bean property ID for the service start date (`staymd` = 利用開始日, service start year/month/day) |
| `l_rsv_tsta_kibo_ymd` | Field | Bean property ID for the cancellation planned date (`rsv` = reserved, `tsta` = start, `kibo` = wish/request, `ymd` = year/month/day) |
| `l_svc_endymd` | Field | Bean property ID for the service end date (`endymd` = 利用終了日, service end year/month/day) |
| `l_op_svc_kei_no` | Field | Bean property ID for the option service detail contract number (`kei` = 内容 detail, `no` = number) |
| `l_op_svc_cd` | Field | Bean property ID for the option service code |
| `l_op_svc_niy_link_dsp_flg` | Field | Bean property ID for the option content link display flag (`niyo` = content, `link` = link, `dsp` = display, `flg` = flag) |
| `l_line_style_class` | Field | Bean property ID for the row CSS style class |
| `l_line_style_id` | Field | Bean property ID for the row CSS style ID |
| `key` | Parameter | Field name — the business identifier of the property to set, using Japanese names that match the screen field labels |
| `subkey` | Parameter | Property accessor — determines which aspect of the field to set: `value` (data), `enable` (editability), or `state` (display state) |
| `isSetAsString` | Parameter | Long型項目ValueプロパティへString型値の設定を行う場合true — When true, indicates that Long-typed field values should be set via their String-type value property |
| CRW02702SF | Module | The screen module for the option service information display/change screen in the K-Opticom telecom operations system |
| DBean | Pattern | Data Bean — a UI-layer bean that holds form data and display-state metadata for a web screen |
| K-Opticom | Business term | A Japanese ISP providing FTTH (Fiber To The Home) internet, phone, and optional add-on services to residential and business customers |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband access service offered by K-Opticom |
| オプションサービス | Business term | Option Service — additional paid services (e.g., virus protection, security, backup) that customers can add to their base internet/phone contract |
| サブオプション | Business term | Sub-Option — a secondary option service nested under a primary option service |