# Business Logic — KKW02701SF02DBean.storeModelData() [143 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16701SF.KKW02701SF02DBean` |
| Layer | UI / Model Bean (Webview component layer — acts as a data transfer and model-binding object for screen state management) |
| Module | `KKA16701SF` (Package: `eo.web.webview.KKA16701SF`) |

## 1. Role

### KKW02701SF02DBean.storeModelData()

This method serves as a **unified model data router** for the service contract detail screen within the KKA16701SF (service order/view) module. It accepts a typed key/subkey pair and dispatches the incoming value to the correct property setter on the bean instance, effectively implementing a **dispatcher/routing pattern** that replaces what would otherwise be a large block of individual setter calls scattered across screen controllers.

The method handles **eleven business fields** related to telecom service contracts: service contract breakdown number, generation registration timestamp, movement reservation number, application detail number, status, course application date, course name, apartment building ID, apartment building name, new rate plan code, and old rate plan code. Each field supports up to three subkey operations — `value` (set data value), `enable` (set UI enable/disable flag, where applicable), and `state` (set display/editable state string).

Its role in the larger system is that of a **shared model-binding utility** used by the webview layer to populate bean properties dynamically, typically during screen initialization, form submission, or data synchronization from a backend response. It enables a consistent, convention-based mechanism for setting property values without requiring the calling code to know the exact setter name for each field. The `isSetAsString` parameter is declared in the method signature but is not referenced within the method body — it is likely a legacy placeholder for future type coercion support (setting Long-type item Value properties as Strings, as noted in the Javadoc).

No direct database or SC/CBS calls are made. This method operates entirely within the UI model layer, delegating to simple setter methods on the same bean.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> NULL_CHECK{"key or subkey<br/>is null?"}
    NULL_CHECK -->|Yes| EARLY_RETURN(["Return early"])
    NULL_CHECK -->|No| FIND_SLASH["Compute separaterPoint<br/>via indexOf/"]

    FIND_SLASH --> SVC_KEY{"key = \"サービス契約内訳番号\""}
    SVC_KEY -->|Yes| SVC_SUB{"subkey = value"}
    SVC_SUB -->|Yes| SVC_SET[setSvc_kei_ucwk_no_value]
    SVC_SUB -->|No| SVC_STATE{"subkey = state"}
    SVC_STATE -->|Yes| SVC_STATE_SET[setSvc_kei_ucwk_no_state]
    SVC_STATE -->|No| END_NODE([End])

    SVC_KEY -->|No| GENE_KEY{"key = \"世代登録年月日時分秒\""}
    GENE_KEY -->|Yes| GENE_SUB{"subkey = value"}
    GENE_SUB -->|Yes| GENE_SET[setGene_add_dtm_value]
    GENE_SUB -->|No| GENE_STATE{"subkey = state"}
    GENE_STATE -->|Yes| GENE_STATE_SET[setGene_add_dtm_state]
    GENE_STATE -->|No| END_NODE

    GENE_KEY -->|No| IDO_KEY{"key = \"異動予約番号\""}
    IDO_KEY -->|Yes| IDO_SUB{"subkey = value"}
    IDO_SUB -->|Yes| IDO_SET[setIdo_rsv_no_value]
    IDO_SUB -->|No| IDO_STATE{"subkey = state"}
    IDO_STATE -->|Yes| IDO_STATE_SET[setIdo_rsv_no_state]
    IDO_STATE -->|No| END_NODE

    IDO_KEY -->|No| MSMK_KEY{"key = \"申込明細番号\""}
    MSMK_KEY -->|Yes| MSMK_SUB{"subkey = value"}
    MSMK_SUB -->|Yes| MSMK_SET[setMskm_dtl_no_value]
    MSMK_SUB -->|No| MSMK_STATE{"subkey = state"}
    MSMK_STATE -->|Yes| MSMK_STATE_SET[setMskm_dtl_no_state]
    MSMK_STATE -->|No| END_NODE

    MSMK_KEY -->|No| STAT_KEY{"key = \"状態\""}
    STAT_KEY -->|Yes| STAT_SUB{"subkey = value"}
    STAT_SUB -->|Yes| STAT_VALUE[setStat_value]
    STAT_SUB -->|No| STAT_ENB{"subkey = enable"}
    STAT_ENB -->|Yes| STAT_ENB[setStat_enabled]
    STAT_ENB -->|No| STAT_STATE2[setStat_state]
    STAT_STATE2 --> END_NODE

    STAT_KEY -->|No| CYMD_KEY{"key = \"コース適用年月日\""}
    CYMD_KEY -->|Yes| CYMD_SUB{"subkey = value"}
    CYMD_SUB -->|Yes| CYMD_SET[setCourse_aply_ymd_value]
    CYMD_SUB -->|No| CYMD_ENB{"subkey = enable"}
    CYMD_ENB -->|Yes| CYMD_ENB_SET[setCourse_aply_ymd_enabled]
    CYMD_ENB -->|No| CYMD_STATE[setCourse_aply_ymd_state]
    CYMD_STATE --> END_NODE

    CYMD_KEY -->|No| CNM_KEY{"key = \"コース名\""}
    CNM_KEY -->|Yes| CNM_SUB{"subkey = value"}
    CNM_SUB -->|Yes| CNM_SET[setCourse_nm_value]
    CNM_SUB -->|No| CNM_ENB{"subkey = enable"}
    CNM_ENB -->|Yes| CNM_ENB_SET[setCourse_nm_enabled]
    CNM_ENB -->|No| CNM_STATE[setCourse_nm_state]
    CNM_STATE --> END_NODE

    CNM_KEY -->|No| MID_KEY{"key = \"マンションID\""}
    MID_KEY -->|Yes| MID_SUB{"subkey = value"}
    MID_SUB -->|Yes| MID_SET[setMansion_id_value]
    MID_SUB -->|No| MID_ENB{"subkey = enable"}
    MID_ENB -->|Yes| MID_ENB_SET[setMansion_id_enabled]
    MID_ENB -->|No| MID_STATE[setMansion_id_state]
    MID_STATE --> END_NODE

    MID_KEY -->|No| MNM_KEY{"key = \"マンション名\""}
    MNM_KEY -->|Yes| MNM_SUB{"subkey = value"}
    MNM_SUB -->|Yes| MNM_SET[setMansion_nm_value]
    MNM_SUB -->|No| MNM_ENB{"subkey = enable"}
    MNM_ENB -->|Yes| MNM_ENB_SET[setMansion_nm_enabled]
    MNM_ENB -->|No| MNM_STATE[setMansion_nm_state]
    MNM_STATE --> END_NODE

    MNM_KEY -->|No| NPC_KEY{"key = \"新料金コースコード\""}
    NPC_KEY -->|Yes| NPC_SUB{"subkey = value"}
    NPC_SUB -->|Yes| NPC_SET[setNew_pcrs_cd_value]
    NPC_SUB -->|No| NPC_ENB{"subkey = enable"}
    NPC_ENB -->|Yes| NPC_ENB_SET[setNew_pcrs_cd_enabled]
    NPC_ENB -->|No| NPC_STATE[setNew_pcrs_cd_state]
    NPC_STATE --> END_NODE

    NPC_KEY -->|No| OPC_KEY{"key = \"旧料金コースコード\""}
    OPC_KEY -->|Yes| OPC_SUB{"subkey = value"}
    OPC_SUB -->|Yes| OPC_SET[setOld_pcrs_cd_value]
    OPC_SUB -->|No| OPC_ENB{"subkey = enable"}
    OPC_ENB -->|Yes| OPC_ENB_SET[setOld_pcrs_cd_enabled]
    OPC_ENB -->|No| OPC_STATE[setOld_pcrs_cd_state]
    OPC_STATE --> END_NODE

    OPC_KEY -->|No| END_NODE
```

**Control flow summary:**
1. **Null guard** (L618–L621): If `key` or `subkey` is null, return immediately.
2. **Unused computation** (L623): Compute `separaterPoint = key.indexOf("/")`. This value is never used in the method body — likely a leftover from a prior implementation or future use case.
3. **11-way if/else chain**: The method dispatches based on the `key` parameter matching one of 11 Japanese-labeled field names. Each key branch contains a nested 2–3 way subkey dispatch:
   - 5 fields support all three subkeys: `value`, `enable`, `state` (stat, course_aply_ymd, course_nm, mansion_id, mansion_nm, new_pcrs_cd, old_pcrs_cd)
   - 4 fields support only two subkeys: `value` and `state` (svc_kei_ucwk_no, gene_add_dtm, ido_rsv_no, mskm_dtl_no)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **field identifier** in Japanese, representing a screen data element (e.g., "サービス契約内訳番号" for Service Contract Breakdown Number, "コース名" for Course Name). Acts as the routing discriminator that determines which bean property to update. Must match one of the 11 hardcoded Japanese field names. |
| 2 | `subkey` | `String` | The **operation type** within the identified field — either `"value"` (set the data value), `"enable"` (set the UI enabled/disabled flag), or `"state"` (set the display state string such as edit mode or read-only indicator). Case-insensitive comparison is used, so "Value", "VALUE", and "value" all match. |
| 3 | `in_value` | `Object` | The **data payload** to store in the target property. Cast to `String` for value/state operations, or cast to `Boolean` for enable operations. The caller is responsible for providing the correct type. |
| 4 | `isSetAsString` | `boolean` | A **legacy/type coercion flag** documented as "true when setting a String-type value to a Long-type item's Value property." However, this parameter is **never referenced in the method body** — all casts use `(String)` or `(Boolean)` directly. It appears to be a preserved signature artifact for future type conversion support. |

**Instance fields read:** None. This method only calls setter methods (writers) and reads no bean state.

**External state accessed:** None. Pure write-through to bean properties.

## 4. CRUD Operations / Called Services

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

This method does **not** perform any Create, Read, Update, or Delete operations against databases or external services. All calls are internal setter methods (U — Update of bean property state).

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `KKW02701SF02DBean.setSvc_kei_ucwk_no_value` | KKW02701SF02DBean | - | Sets service contract breakdown number value on the bean model |
| U | `KKW02701SF02DBean.setSvc_kei_ucwk_no_state` | KKW02701SF02DBean | - | Sets UI state for service contract breakdown number field |
| U | `KKW02701SF02DBean.setGene_add_dtm_value` | KKW02701SF02DBean | - | Sets generation registration timestamp value on the bean model |
| U | `KKW02701SF02DBean.setGene_add_dtm_state` | KKW02701SF02DBean | - | Sets UI state for generation registration timestamp field |
| U | `KKW02701SF02DBean.setIdo_rsv_no_value` | KKW02701SF02DBean | - | Sets movement reservation number value on the bean model |
| U | `KKW02701SF02DBean.setIdo_rsv_no_state` | KKW02701SF02DBean | - | Sets UI state for movement reservation number field |
| U | `KKW02701SF02DBean.setMskm_dtl_no_value` | KKW02701SF02DBean | - | Sets application detail number value on the bean model |
| U | `KKW02701SF02DBean.setMskm_dtl_no_state` | KKW02701SF02DBean | - | Sets UI state for application detail number field |
| U | `KKW02701SF02DBean.setStat_value` | KKW02701SF02DBean | - | Sets status value on the bean model |
| U | `KKW02701SF02DBean.setStat_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for the status field |
| U | `KKW02701SF02DBean.setStat_state` | KKW02701SF02DBean | - | Sets UI state for the status field |
| U | `KKW02701SF02DBean.setCourse_aply_ymd_value` | KKW02701SF02DBean | - | Sets course application date value on the bean model |
| U | `KKW02701SF02DBean.setCourse_aply_ymd_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for course application date field |
| U | `KKW02701SF02DBean.setCourse_aply_ymd_state` | KKW02701SF02DBean | - | Sets UI state for course application date field |
| U | `KKW02701SF02DBean.setCourse_nm_value` | KKW02701SF02DBean | - | Sets course name value on the bean model |
| U | `KKW02701SF02DBean.setCourse_nm_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for course name field |
| U | `KKW02701SF02DBean.setCourse_nm_state` | KKW02701SF02DBean | - | Sets UI state for course name field |
| U | `KKW02701SF02DBean.setMansion_id_value` | KKW02701SF02DBean | - | Sets apartment building ID value on the bean model |
| U | `KKW02701SF02DBean.setMansion_id_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for apartment building ID field |
| U | `KKW02701SF02DBean.setMansion_id_state` | KKW02701SF02DBean | - | Sets UI state for apartment building ID field |
| U | `KKW02701SF02DBean.setMansion_nm_value` | KKW02701SF02DBean | - | Sets apartment building name value on the bean model |
| U | `KKW02701SF02DBean.setMansion_nm_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for apartment building name field |
| U | `KKW02701SF02DBean.setMansion_nm_state` | KKW02701SF02DBean | - | Sets UI state for apartment building name field |
| U | `KKW02701SF02DBean.setNew_pcrs_cd_value` | KKW02701SF02DBean | - | Sets new rate plan code value on the bean model |
| U | `KKW02701SF02DBean.setNew_pcrs_cd_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for new rate plan code field |
| U | `KKW02701SF02DBean.setNew_pcrs_cd_state` | KKW02701SF02DBean | - | Sets UI state for new rate plan code field |
| U | `KKW02701SF02DBean.setOld_pcrs_cd_value` | KKW02701SF02DBean | - | Sets old rate plan code value on the bean model |
| U | `KKW02701SF02DBean.setOld_pcrs_cd_enabled` | KKW02701SF02DBean | - | Sets UI enabled flag for old rate plan code field |
| U | `KKW02701SF02DBean.setOld_pcrs_cd_state` | KKW02701SF02DBean | - | Sets UI state for old rate plan code field |

**CRUD Summary:** 29 total operations, all of type **U** (Update) — bean property setter calls with no external DB or SC/CBS dependencies.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods (both within `KKW02701SF02DBean` itself, likely from its overloaded `storeModelData(String, String, Object)` variant and internal self-calls).

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Internal: `KKW02701SF02DBean.storeModelData(String, String, Object)` | `KKW02701SF02DBean.storeModelData(key, subkey, in_value)` -> `storeModelData(key, subkey, in_value, false)` | All setter calls: `setOld_pcrs_cd_state`, `setOld_pcrs_cd_enabled`, `setOld_pcrs_cd_value`, `setNew_pcrs_cd_state`, `setNew_pcrs_cd_enabled`, `setNew_pcrs_cd_value`, `setMansion_nm_state`, `setMansion_nm_enabled`, `setMansion_nm_value`, `setMansion_id_state`, `setMansion_id_enabled`, `setMansion_id_value`, `setCourse_nm_state`, `setCourse_nm_enabled`, `setCourse_nm_value`, `setCourse_aply_ymd_state`, `setCourse_aply_ymd_enabled`, `setCourse_aply_ymd_value`, `setStat_state`, `setStat_enabled`, `setStat_value`, `setMskm_dtl_no_state`, `setMskm_dtl_no_value`, `setIdo_rsv_no_state`, `setIdo_rsv_no_value`, `setGene_add_dtm_state`, `setGene_add_dtm_value`, `setSvc_kei_ucwk_no_state`, `setSvc_kei_ucwk_no_value` |

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null guard) (L618–L621)

Early termination check: if either parameter is null, exit immediately without setting any data.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` |
| 2 | RETURN | `return;` |

### Block 2 — EXEC (unused computation) (L623)

Compute the index of the first forward slash in the key string. The result is stored but never used.

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

### Block 3 — IF-ELSE-IF chain (key dispatch) (L627–L754)

An 11-way conditional dispatch routing the `in_value` to the appropriate bean setter based on the `key` field name.

---

**Block 3.1** — IF (key = "サービス契約内訳番号") (L629–L636)

Handle service contract breakdown number field. Supports `value` and `state` subkeys only (no `enable`).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key.equals("サービス契約内訳番号"))` |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L631] |
| 2.1 | CALL | `setSvc_kei_ucwk_no_value((String)in_value);` // Cast to String and set value |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L633] // スタブ状態を返す — Return stub status |
| 3.1 | CALL | `setSvc_kei_ucwk_no_state((String)in_value);` // Cast to String and set state |

---

**Block 3.2** — ELSE-IF (key = "世代登録年月日時分秒") (L639–L646)

Handle generation registration timestamp field (date-time when the record was created/registered). Supports `value` and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("世代登録年月日時分秒"))` [L640] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L641] |
| 2.1 | CALL | `setGene_add_dtm_value((String)in_value);` // Cast to String and set timestamp value |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L643] // スタブ状態を返す |
| 3.1 | CALL | `setGene_add_dtm_state((String)in_value);` // Cast to String and set state |

---

**Block 3.3** — ELSE-IF (key = "異動予約番号") (L649–L656)

Handle movement reservation number (number assigned to a service change/reservation order). Supports `value` and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("異動予約番号"))` [L650] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L651] |
| 2.1 | CALL | `setIdo_rsv_no_value((String)in_value);` // Cast to String and set reservation number |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L653] // スタブ状態を返す |
| 3.1 | CALL | `setIdo_rsv_no_state((String)in_value);` // Cast to String and set state |

---

**Block 3.4** — ELSE-IF (key = "申込明細番号") (L659–L666)

Handle application detail number (unique identifier for a service application detail line). Supports `value` and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("申込明細番号"))` [L660] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L661] |
| 2.1 | CALL | `setMskm_dtl_no_value((String)in_value);` // Cast to String and set detail number |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L663] // スタブ状態を返す |
| 3.1 | CALL | `setMskm_dtl_no_state((String)in_value);` // Cast to String and set state |

---

**Block 3.5** — ELSE-IF (key = "状態") (L669–L680)

Handle status field. This is the first field supporting all **three** subkeys: `value`, `enable`, and `state`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("状態"))` [L670] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L671] |
| 2.1 | CALL | `setStat_value((String)in_value);` // Cast to String and set status value |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L673] // stat_enabled setter を実行 — Execute stat_enabled setter |
| 3.1 | CALL | `setStat_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L675] // スタブ状態を返す |
| 4.1 | CALL | `setStat_state((String)in_value);` // Cast to String and set state |

---

**Block 3.6** — ELSE-IF (key = "コース適用年月日") (L683–L694)

Handle course application date (the date a service course/plan takes effect). Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("コース適用年月日"))` [L684] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L685] |
| 2.1 | CALL | `setCourse_aply_ymd_value((String)in_value);` // Cast to String and set application date |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L687] // course_aply_ymd_enabled setter を実行 |
| 3.1 | CALL | `setCourse_aply_ymd_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L689] // スタブ状態を返す |
| 4.1 | CALL | `setCourse_aply_ymd_state((String)in_value);` // Cast to String and set state |

---

**Block 3.7** — ELSE-IF (key = "コース名") (L697–L708)

Handle course name (the name/title of the service course/plan). Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("コース名"))` [L698] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L699] |
| 2.1 | CALL | `setCourse_nm_value((String)in_value);` // Cast to String and set course name |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L701] // course_nm_enabled setter を実行 |
| 3.1 | CALL | `setCourse_nm_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L703] // スタブ状態を返す |
| 4.1 | CALL | `setCourse_nm_state((String)in_value);` // Cast to String and set state |

---

**Block 3.8** — ELSE-IF (key = "マンションID") (L711–L722)

Handle apartment building ID (identifier for the apartment building where service is delivered). Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("マンションID"))` [L712] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L713] |
| 2.1 | CALL | `setMansion_id_value((String)in_value);` // Cast to String and set apartment ID |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L715] // mansion_id_enabled setter を実行 |
| 3.1 | CALL | `setMansion_id_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L717] // スタブ状態を返す |
| 4.1 | CALL | `setMansion_id_state((String)in_value);` // Cast to String and set state |

---

**Block 3.9** — ELSE-IF (key = "マンション名") (L725–L736)

Handle apartment building name (the name/title of the apartment building). Supports `value`, `enable`, and `state` subkeys.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("マンション名"))` [L726] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L727] |
| 2.1 | CALL | `setMansion_nm_value((String)in_value);` // Cast to String and set apartment name |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L729] // mansion_nm_enabled setter を実行 |
| 3.1 | CALL | `setMansion_nm_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L731] // スタブ状態を返す |
| 4.1 | CALL | `setMansion_nm_state((String)in_value);` // Cast to String and set state |

---

**Block 3.10** — ELSE-IF (key = "新料金コースコード") (L738–L750) [ANK-4592-00-00 ADD START]

Handle new rate plan code (the code identifying the new pricing plan after a change). Supports `value`, `enable`, and `state` subkeys. This block was added as part of change request ANK-4592-00-00.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("新料金コースコード"))` [L740] // ANK-4592-00-00 ADD START |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L741] |
| 2.1 | CALL | `setNew_pcrs_cd_value((String)in_value);` // Cast to String and set new plan code |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L743] // new_pcrs_cd_enabled setter を実行 |
| 3.1 | CALL | `setNew_pcrs_cd_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L745] // スタブ状態を返す |
| 4.1 | CALL | `setNew_pcrs_cd_state((String)in_value);` // Cast to String and set state |

---

**Block 3.11** — ELSE-IF (key = "旧料金コースコード") (L751–L763) [ANK-4592-00-00 ADD END]

Handle old rate plan code (the code identifying the previous pricing plan before a change). Supports `value`, `enable`, and `state` subkeys. Paired with the new rate plan code block above as part of ANK-4592-00-00.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("旧料金コースコード"))` [L753] // ANK-4592-00-00 ADD END |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` [L754] |
| 2.1 | CALL | `setOld_pcrs_cd_value((String)in_value);` // Cast to String and set old plan code |
| 3 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` [L756] // old_pcrs_cd_enabled setter を実行 |
| 3.1 | CALL | `setOld_pcrs_cd_enabled((Boolean)in_value);` // Cast to Boolean and set enable flag |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` [L758] // スタブ状態を返す |
| 4.1 | CALL | `setOld_pcrs_cd_state((String)in_value);` // Cast to String and set state |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for service contract line items |
| `gene_add_dtm` | Field | Generation registration date-time — timestamp recording when a record version was created |
| `ido_rsv_no` | Field | Movement reservation number — ID for service change/migration reservation orders |
| `mskm_dtl_no` | Field | Application detail number — unique identifier for an individual service application line |
| `stat` | Field | Status — current operational or processing status of a service record |
| `course_aply_ymd` | Field | Course application date — the effective date when a service course/plan takes effect |
| `course_nm` | Field | Course name — the display name of the service course/plan |
| `mansion_id` | Field | Apartment building ID — identifier for the apartment building/dormitory where service is delivered |
| `mansion_nm` | Field | Apartment building name — the display name of the apartment building |
| `new_pcrs_cd` | Field | New price/course code — the rate plan code after a billing plan change (added in ANK-4592-00-00) |
| `old_pcrs_cd` | Field | Old price/course code — the previous rate plan code before a billing plan change |
| `key` | Field | Item name (項目名) — Japanese-labeled field identifier used to route data to the correct property |
| `subkey` | Field | Sub key (サブキー) — operation type within a field: value (data), enable (UI flag), state (display state) |
| `in_value` | Field | Input data (データ) — the value to be stored in the target property |
| `isSetAsString` | Field | Long-type item Value property String setting flag — documented but unused in this method |
| スタブ状態 | Japanese | Stub status — placeholder UI state indicator (edit mode, read-only, etc.) |
| 項目名 | Japanese | Item name — the business field identifier in Japanese |
| サブキー | Japanese | Sub key — the secondary identifier specifying the operation type on a field |
| データ | Japanese | Data — the payload value being set |
| コース | Japanese | Course — a service plan/offer in telecom (e.g., internet package, phone plan) |
| マンション | Japanese | Mansion/Apartment — residential building in Japanese real estate context |
| ANK-4592-00-00 | Change ID | A change request / task identifier for adding rate plan code fields (new and old) to support billing plan change operations |
