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

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01037SF.KKW01037SF01DBean` |
| Layer | View / Data Bean (Inferred from `eo.web.webview` package path) |
| Module | `KKW01037SF` (Package: `eo.web.webview.KKW01037SF`) |

## 1. Role

### KKW01037SF01DBean.storeModelData()

This method serves as the **central data-population router** for the KKW01037SF screen's display bean. It receives a generic key (a Japanese-labeled field name), a subkey specifying the data property type (value, enable, or state), and an object value — then dispatches the value to the correct typed setter method on the bean based on which referral/introduction data domain the key belongs to. It implements the **routing/dispatch design pattern**, where the `key` parameter acts as a domain discriminator and the `subkey` acts as a property-type discriminator, together forming a 2D lookup across 10 field groups × 3 properties. The method operates as a **shared utility** called by the screen controller during model initialization or AJAX-driven row data population, enabling dynamic binding of arbitrary rows (e.g., referral rows in a table) without requiring the caller to know the bean's internal field layout. It has no database or service-tier interaction — all operations are pure in-memory field assignments on the bean instance. An unused `separaterPoint` computation (line 618) is a remnant and performs no branching logic.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> CHECK_NULL["Check: key == null || subkey == null"]
    CHECK_NULL -->|true| EARLY_RET["Return (early exit)"]
    CHECK_NULL -->|false| SEP_COMPUTE["Compute: separaterPoint = key.indexOf('/')"]
    SEP_COMPUTE --> FIELD_1["key == '紹介者お客さまID'"]

    FIELD_1 -->|true| HI_SVC_KEY["hi_svc_kei_no branch"]
    HI_SVC_KEY --> HI_SVC_SUBVALUE{"subkey == 'value'"}
    HI_SVC_SUBVALUE -->|true| HI_SVC_SET_VAL["setHi_svc_kei_no_value(in_value)"]
    HI_SVC_SUBVALUE -->|false| HI_SVC_SUBENABLE{"subkey == 'enable'"}
    HI_SVC_SUBENABLE -->|true| HI_SVC_SET_ENB["setHi_svc_kei_no_enabled(in_value)"]
    HI_SVC_SUBENABLE -->|false| HI_SVC_SUBSTATE["setHi_svc_kei_no_state(in_value)"]
    HI_SVC_SET_VAL --> SKIP_TO_FIELD2
    HI_SVC_SET_ENB --> SKIP_TO_FIELD2
    HI_SVC_SET_STATE --> SKIP_TO_FIELD2
    HI_SVC_SUBSTATE --> SKIP_TO_FIELD2

    FIELD_1 -->|false| SKIP_TO_FIELD2["key == '紹介者料金グループ名'"]
    SKIP_TO_FIELD2 --> HI_PRCS_KEY["hi_prc_grp_nm branch"]
    HI_PRCS_KEY --> HI_PRCS_SUBVALUE{"subkey == 'value'"}
    HI_PRCS_SUBVALUE -->|true| HI_PRCS_SET_VAL["setHi_prc_grp_nm_value(in_value)"]
    HI_PRCS_SUBVALUE -->|false| HI_PRCS_SUBENABLE{"subkey == 'enable'"}
    HI_PRCS_SUBENABLE -->|true| HI_PRCS_SET_ENB["setHi_prc_grp_nm_enabled(in_value)"]
    HI_PRCS_SUBENABLE -->|false| HI_PRCS_SUBSTATE["setHi_prc_grp_nm_state(in_value)"]
    HI_PRCS_SET_VAL --> SKIP_TO_FIELD3
    HI_PRCS_SET_ENB --> SKIP_TO_FIELD3
    HI_PRCS_SUBSTATE --> SKIP_TO_FIELD3
    HI_PRCS_SUBVALUE --> SKIP_TO_FIELD3
    HI_PRCS_SUBENABLE --> SKIP_TO_FIELD3

    FIELD_1 -->|false| SKIP_TO_FIELD3["key == '紹介者ステータス'"]
    SKIP_TO_FIELD3 --> HI_STAT_KEY["hi_svc_kei_stat branch"]
    HI_STAT_KEY --> HI_STAT_SUBVALUE{"subkey == 'value'"}
    HI_STAT_SUBVALUE -->|true| HI_STAT_SET_VAL["setHi_svc_kei_stat_value(in_value)"]
    HI_STAT_SUBVALUE -->|false| HI_STAT_SUBENABLE{"subkey == 'enable'"}
    HI_STAT_SUBENABLE -->|true| HI_STAT_SET_ENB["setHi_svc_kei_stat_enabled(in_value)"]
    HI_STAT_SUBENABLE -->|false| HI_STAT_SUBSTATE["setHi_svc_kei_stat_state(in_value)"]
    HI_STAT_SET_VAL --> SKIP_TO_FIELD4
    HI_STAT_SET_ENB --> SKIP_TO_FIELD4
    HI_STAT_SUBSTATE --> SKIP_TO_FIELD4
    HI_STAT_SUBVALUE --> SKIP_TO_FIELD4
    HI_STAT_SUBENABLE --> SKIP_TO_FIELD4

    FIELD_1 -->|false| SKIP_TO_FIELD4["key == '紹介者サービス開始年月日'"]
    SKIP_TO_FIELD4 --> HI_DATE_KEY["hi_svc_sta_ymd branch"]
    HI_DATE_KEY --> HI_DATE_SUBVALUE{"subkey == 'value'"}
    HI_DATE_SUBVALUE -->|true| HI_DATE_SET_VAL["setHi_svc_sta_ymd_value(in_value)"]
    HI_DATE_SUBVALUE -->|false| HI_DATE_SUBENABLE{"subkey == 'enable'"}
    HI_DATE_SUBENABLE -->|true| HI_DATE_SET_ENB["setHi_svc_sta_ymd_enabled(in_value)"]
    HI_DATE_SUBENABLE -->|false| HI_DATE_SUBSTATE["setHi_svc_sta_ymd_state(in_value)"]
    HI_DATE_SET_VAL --> SKIP_TO_FIELD5
    HI_DATE_SET_ENB --> SKIP_TO_FIELD5
    HI_DATE_SUBSTATE --> SKIP_TO_FIELD5
    HI_DATE_SUBVALUE --> SKIP_TO_FIELD5
    HI_DATE_SUBENABLE --> SKIP_TO_FIELD5

    FIELD_1 -->|false| SKIP_TO_FIELD5["key == '紹介コード'"]
    SKIP_TO_FIELD5 --> INTRO_KEY["intr_cd branch"]
    INTRO_KEY --> INTRO_SUBVALUE{"subkey == 'value'"}
    INTRO_SUBVALUE -->|true| INTRO_SET_VAL["setIntr_cd_value(in_value)"]
    INTRO_SUBVALUE -->|false| INTRO_SUBENABLE{"subkey == 'enable'"}
    INTRO_SUBENABLE -->|true| INTRO_SET_ENB["setIntr_cd_enabled(in_value)"]
    INTRO_SUBENABLE -->|false| INTRO_SUBSTATE["setIntr_cd_state(in_value)"]
    INTRO_SET_VAL --> SKIP_TO_FIELD6
    INTRO_SET_ENB --> SKIP_TO_FIELD6
    INTRO_SUBSTATE --> SKIP_TO_FIELD6
    INTRO_SUBVALUE --> SKIP_TO_FIELD6
    INTRO_SUBENABLE --> SKIP_TO_FIELD6

    FIELD_1 -->|false| SKIP_TO_FIELD6["key == 'クーポンコード'"]
    SKIP_TO_FIELD6 --> COUPON_KEY["coupon_cd branch"]
    COUPON_KEY --> COUPON_SUBVALUE{"subkey == 'value'"}
    COUPON_SUBVALUE -->|true| COUPON_SET_VAL["setCoupon_cd_value(in_value)"]
    COUPON_SUBVALUE -->|false| COUPON_SUBENABLE{"subkey == 'enable'"}
    COUPON_SUBENABLE -->|true| COUPON_SET_ENB["setCoupon_cd_enabled(in_value)"]
    COUPON_SUBENABLE -->|false| COUPON_SUBSTATE["setCoupon_cd_state(in_value)"]
    COUPON_SET_VAL --> SKIP_TO_FIELD7
    COUPON_SET_ENB --> SKIP_TO_FIELD7
    COUPON_SUBSTATE --> SKIP_TO_FIELD7
    COUPON_SUBVALUE --> SKIP_TO_FIELD7
    COUPON_SUBENABLE --> SKIP_TO_FIELD7

    FIELD_1 -->|false| SKIP_TO_FIELD7["key == '紹介者お客さまID'"]
    SKIP_TO_FIELD7 --> SHO_SVC_KEY["sho_svc_kei_no branch"]
    SHO_SVC_KEY --> SHO_SVC_SUBVALUE{"subkey == 'value'"}
    SHO_SVC_SUBVALUE -->|true| SHO_SVC_SET_VAL["setSho_svc_kei_no_value(in_value)"]
    SHO_SVC_SUBVALUE -->|false| SHO_SVC_SUBENABLE{"subkey == 'enable'"}
    SHO_SVC_SUBENABLE -->|true| SHO_SVC_SET_ENB["setSho_svc_kei_no_enabled(in_value)"]
    SHO_SVC_SUBENABLE -->|false| SHO_SVC_SUBSTATE["setSho_svc_kei_no_state(in_value)"]
    SHO_SVC_SET_VAL --> SKIP_TO_FIELD8
    SHO_SVC_SET_ENB --> SKIP_TO_FIELD8
    SHO_SVC_SUBSTATE --> SKIP_TO_FIELD8
    SHO_SVC_SUBVALUE --> SKIP_TO_FIELD8
    SHO_SVC_SUBENABLE --> SKIP_TO_FIELD8

    FIELD_1 -->|false| SKIP_TO_FIELD8["key == '紹介者料金グループ名'"]
    SKIP_TO_FIELD8 --> SHO_PRCS_KEY["sho_prc_grp_nm branch"]
    SHO_PRCS_KEY --> SHO_PRCS_SUBVALUE{"subkey == 'value'"}
    SHO_PRCS_SUBVALUE -->|true| SHO_PRCS_SET_VAL["setSho_prc_grp_nm_value(in_value)"]
    SHO_PRCS_SUBVALUE -->|false| SHO_PRCS_SUBENABLE{"subkey == 'enable'"}
    SHO_PRCS_SUBENABLE -->|true| SHO_PRCS_SET_ENB["setSho_prc_grp_nm_enabled(in_value)"]
    SHO_PRCS_SUBENABLE -->|false| SHO_PRCS_SUBSTATE["setSho_prc_grp_nm_state(in_value)"]
    SHO_PRCS_SET_VAL --> SKIP_TO_FIELD9
    SHO_PRCS_SET_ENB --> SKIP_TO_FIELD9
    SHO_PRCS_SUBSTATE --> SKIP_TO_FIELD9
    SHO_PRCS_SUBVALUE --> SKIP_TO_FIELD9
    SHO_PRCS_SUBENABLE --> SKIP_TO_FIELD9

    FIELD_1 -->|false| SKIP_TO_FIELD9["key == '紹介者システムID'"]
    SKIP_TO_FIELD9 --> SHO_SYS_KEY["sho_sysid branch"]
    SHO_SYS_KEY --> SHO_SYS_SUBVALUE{"subkey == 'value'"}
    SHO_SYS_SUBVALUE -->|true| SHO_SYS_SET_VAL["setSho_sysid_value(in_value)"]
    SHO_SYS_SUBVALUE -->|false| SHO_SYS_SUBENABLE{"subkey == 'enable'"}
    SHO_SYS_SUBENABLE -->|true| SHO_SYS_SET_ENB["setSho_sysid_enabled(in_value)"]
    SHO_SYS_SUBENABLE -->|false| SHO_SYS_SUBSTATE["setSho_sysid_state(in_value)"]
    SHO_SYS_SET_VAL --> SKIP_TO_FIELD10
    SHO_SYS_SET_ENB --> SKIP_TO_FIELD10
    SHO_SYS_SUBSTATE --> SKIP_TO_FIELD10
    SHO_SYS_SUBVALUE --> SKIP_TO_FIELD10
    SHO_SYS_SUBENABLE --> SKIP_TO_FIELD10

    FIELD_1 -->|false| SKIP_TO_FIELD10["key == '紹介者契約者名'"]
    SKIP_TO_FIELD10 --> SHO_CUST_KEY["sho_cust_nm branch"]
    SHO_CUST_KEY --> SHO_CUST_SUBVALUE{"subkey == 'value'"}
    SHO_CUST_SUBVALUE -->|true| SHO_CUST_SET_VAL["setSho_cust_nm_value(in_value)"]
    SHO_CUST_SUBVALUE -->|false| SHO_CUST_SUBENABLE{"subkey == 'enable'"}
    SHO_CUST_SUBENABLE -->|true| SHO_CUST_SET_ENB["setSho_cust_nm_enabled(in_value)"]
    SHO_CUST_SUBENABLE -->|false| SHO_CUST_SUBSTATE["setSho_cust_nm_state(in_value)"]
    SHO_CUST_SET_VAL --> END_RET["End (implicit void return)"]
    SHO_CUST_SET_ENB --> END_RET
    SHO_CUST_SUBSTATE --> END_RET
    SHO_CUST_SUBVALUE --> END_RET
    SHO_CUST_SUBENABLE --> END_RET

    SKIP_TO_FIELD2 --> SKIP_TO_FIELD2
    SKIP_TO_FIELD3 --> SKIP_TO_FIELD3
    SKIP_TO_FIELD4 --> SKIP_TO_FIELD4
    SKIP_TO_FIELD5 --> SKIP_TO_FIELD5
    SKIP_TO_FIELD6 --> SKIP_TO_FIELD6
    SKIP_TO_FIELD7 --> SKIP_TO_FIELD7
    SKIP_TO_FIELD8 --> SKIP_TO_FIELD8
    SKIP_TO_FIELD9 --> SKIP_TO_FIELD9
    SKIP_TO_FIELD10 --> SKIP_TO_FIELD10

    EARLY_RET --> END_RET
```

**Key observations:**

- Each of the 10 field branches follows an identical 3-way dispatch: `value` → `*_value()`, `enable` → `*_enabled()`, `state` → `*_state()`.
- The `isSetAsString` parameter is accepted but **not used** within this method body (it may be relevant to the caller or bean framework).
- The `separaterPoint` variable (line 618) is computed but never referenced — a dead code remnant.
- When `key` does not match any of the 10 known field groups, the method silently returns without setting any field.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **Japanese-labeled field name** (項目名) that identifies which referral/introduction data domain the value belongs to. It acts as the primary routing key. Valid values are one of 10 Japanese strings: `"紹介者お客さまID"`, `"紹介者料金グループ名"`, `"紹介者ステータス"`, `"紹介者サービス開始年月日"`, `"紹介コード"`, `"クーポンコード"`, `"紹介者お客さまID"` (sho_ variant), `"紹介者料金グループ名"` (sho_ variant), `"紹介者システムID"`, `"紹介者契約者名"`. |
| 2 | `subkey` | `String` | The **property type** (サブキー) within the identified field group. Determines which setter to invoke. Values: `"value"` (sets the data value), `"enable"` (sets the enabled/disabled flag), `"state"` (sets the display state). The comparison is case-insensitive (`equalsIgnoreCase`). |
| 3 | `in_value` | `Object` | The **data value** (データ) to store. The type depends on the subkey: cast to `String` when `subkey == "value"` or `subkey == "state"`, cast to `Boolean` when `subkey == "enable"`. |
| 4 | `isSetAsString` | `boolean` | A flag documented as "true when setting a String-type value into a Long-type item's Value property" (Long型項目ValueプロパティへString型値の設定を行う場合true). **Not used in this method body** — likely a leftover from an earlier version or intended for future use with the view framework's type coercion. |

**Instance fields written by this method:**

| Field | Property Type |
|-------|---------------|
| `hi_svc_kei_no` | highlight service contract line number — the referral's service item identifier |
| `hi_svc_kei_no_value` / `_enabled` / `_state` | value, enabled flag, state for hi_svc_kei_no |
| `hi_prc_grp_nm` | highlight price group name — the referral's pricing group identifier |
| `hi_prc_grp_nm_value` / `_enabled` / `_state` | value, enabled flag, state for hi_prc_grp_nm |
| `hi_svc_kei_stat` | highlight service contract status |
| `hi_svc_kei_stat_value` / `_enabled` / `_state` | value, enabled flag, state for hi_svc_kei_stat |
| `hi_svc_sta_ymd` | highlight service start year-month-date |
| `hi_svc_sta_ymd_value` / `_enabled` / `_state` | value, enabled flag, state for hi_svc_sta_ymd |
| `intr_cd` | introduction/referral code |
| `intr_cd_value` / `_enabled` / `_state` | value, enabled flag, state for intr_cd |
| `coupon_cd` | coupon code |
| `coupon_cd_value` / `_enabled` / `_state` | value, enabled flag, state for coupon_cd |
| `sho_svc_kei_no` | shown/referral target service contract line number |
| `sho_svc_kei_no_value` / `_enabled` / `_state` | value, enabled flag, state for sho_svc_kei_no |
| `sho_prc_grp_nm` | shown/referral target price group name |
| `sho_prc_grp_nm_value` / `_enabled` / `_state` | value, enabled flag, state for sho_prc_grp_nm |
| `sho_sysid` | shown/referral target system ID |
| `sho_sysid_value` / `_enabled` / `_state` | value, enabled flag, state for sho_sysid |
| `sho_cust_nm` | shown/referral target customer (contractor) name |
| `sho_cust_nm_value` / `_enabled` / `_state` | value, enabled flag, state for sho_cust_nm |

## 4. CRUD Operations / Called Services

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

All operations are **in-memory bean field assignments** (U — Update). No database, CBS, or service component interactions occur within this method.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `KKW01037SF01DBean.setHi_svc_kei_no_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "referral service line number" (紹介者お客さまID) |
| U | `KKW01037SF01DBean.setHi_svc_kei_no_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the referral service line number |
| U | `KKW01037SF01DBean.setHi_svc_kei_no_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the referral service line number |
| U | `KKW01037SF01DBean.setHi_prc_grp_nm_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "referral price group name" (紹介者料金グループ名) |
| U | `KKW01037SF01DBean.setHi_prc_grp_nm_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the referral price group name |
| U | `KKW01037SF01DBean.setHi_prc_grp_nm_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the referral price group name |
| U | `KKW01037SF01DBean.setHi_svc_kei_stat_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "referral service status" (紹介者ステータス) |
| U | `KKW01037SF01DBean.setHi_svc_kei_stat_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the referral service status |
| U | `KKW01037SF01DBean.setHi_svc_kei_stat_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the referral service status |
| U | `KKW01037SF01DBean.setHi_svc_sta_ymd_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "referral service start date" (紹介者サービス開始年月日) |
| U | `KKW01037SF01DBean.setHi_svc_sta_ymd_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the referral service start date |
| U | `KKW01037SF01DBean.setHi_svc_sta_ymd_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the referral service start date |
| U | `KKW01037SF01DBean.setIntr_cd_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "introduction code" (紹介コード) |
| U | `KKW01037SF01DBean.setIntr_cd_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the introduction code |
| U | `KKW01037SF01DBean.setIntr_cd_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the introduction code |
| U | `KKW01037SF01DBean.setCoupon_cd_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "coupon code" (クーポンコード) [ANK-4416-00-00] |
| U | `KKW01037SF01DBean.setCoupon_cd_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the coupon code |
| U | `KKW01037SF01DBean.setCoupon_cd_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the coupon code |
| U | `KKW01037SF01DBean.setSho_svc_kei_no_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "introduced party service line number" (紹介者お客さまID) |
| U | `KKW01037SF01DBean.setSho_svc_kei_no_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the introduced party service line number |
| U | `KKW01037SF01DBean.setSho_svc_kei_no_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the introduced party service line number |
| U | `KKW01037SF01DBean.setSho_prc_grp_nm_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "introduced party price group name" (紹介者料金グループ名) |
| U | `KKW01037SF01DBean.setSho_prc_grp_nm_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the introduced party price group name |
| U | `KKW01037SF01DBean.setSho_prc_grp_nm_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the introduced party price group name |
| U | `KKW01037SF01DBean.setSho_sysid_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "introduced party system ID" (紹介者システムID) |
| U | `KKW01037SF01DBean.setSho_sysid_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the introduced party system ID |
| U | `KKW01037SF01DBean.setSho_sysid_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the introduced party system ID |
| U | `KKW01037SF01DBean.setSho_cust_nm_value` | KKW01037SF01DBean | (in-memory bean field) | Sets the value property for the "introduced party contract name" (紹介者契約者名) |
| U | `KKW01037SF01DBean.setSho_cust_nm_enabled` | KKW01037SF01DBean | (in-memory bean field) | Sets the enabled flag for the introduced party contract name |
| U | `KKW01037SF01DBean.setSho_cust_nm_state` | KKW01037SF01DBean | (in-memory bean field) | Sets the state for the introduced party contract name |

## 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: `setSho_cust_nm_state` [-], `setSho_cust_nm_enabled` [-], `setSho_cust_nm_value` [-], `setSho_sysid_state` [-], `setSho_sysid_enabled` [-], `setSho_sysid_value` [-], `setSho_prc_grp_nm_state` [-], `setSho_prc_grp_nm_enabled` [-], `setSho_prc_grp_nm_value` [-], `setSho_svc_kei_no_state` [-], `setSho_svc_kei_no_enabled` [-], `setSho_svc_kei_no_value` [-], `setCoupon_cd_state` [-], `setCoupon_cd_enabled` [-], `setCoupon_cd_value` [-], `setIntr_cd_state` [-], `setIntr_cd_enabled` [-], `setIntr_cd_value` [-], `setHi_svc_sta_ymd_state` [-], `setHi_svc_sta_ymd_enabled` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW01037SF01DBean.storeModelData()` (self-reference overload) | `KKW01037SF01DBean.storeModelData()` -> `KKW01037SF01DBean.storeModelData(key, subkey, in_value, isSetAsString)` | 30x setter calls [U] (in-memory bean fields) |
| 2 | `KKW01037SF01DBean.storeModelData()` (self-reference overload) | `KKW01037SF01DBean.storeModelData()` -> `KKW01037SF01DBean.storeModelData(key, subkey, in_value, isSetAsString)` | 30x setter calls [U] (in-memory bean fields) |

The two listed callers are self-referential overloads within the same bean class — this suggests the method is part of an overloaded API where a convenience overload delegates to the full parameter version. The method is called by the screen's control flow (likely the `KKW01037SF01S` or `KKW01037SF01C` class) during row data binding for the referral/introduction information section.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null guard) (L614)

Early-exit guard: if either `key` or `subkey` is null, the method returns immediately without processing any field.

> Japanese comment: key,subkeyがnullの場合、処理を中止 (If key and subkey are null, abort processing)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `return;` // key == null \|\| subkey == null [-> early exit] |

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

Computes the index of the first "/" character in the key string. This value is never used in any subsequent branch or assignment — dead code remnant.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/")` // Note: result unused (dead code) |

### Block 3 — ELSE-IF chain (field dispatch) (L622–L755)

The core routing logic. Each top-level branch identifies a **referral/introduction data domain** (項目ごとの処理を入れる — "enter processing per item") and dispatches to one of three typed setters based on the subkey.

The 10 field groups with their English labels and internal field prefixes:

| # | Key (Japanese) | Field Prefix | English Label |
|---|----------------|-------------|---------------|
| 1 | 紹介者お客さまID | `hi_svc_kei_no` | Referral Service Line Number |
| 2 | 紹介者料金グループ名 | `hi_prc_grp_nm` | Referral Price Group Name |
| 3 | 紹介者ステータス | `hi_svc_kei_stat` | Referral Service Status |
| 4 | 紹介者サービス開始年月日 | `hi_svc_sta_ymd` | Referral Service Start Date (YYYY-MM-DD) |
| 5 | 紹介コード | `intr_cd` | Introduction / Referral Code |
| 6 | クーポンコード | `coupon_cd` | Coupon Code [ANK-4416-00-00 ADD] |
| 7 | 紹介者お客さまID | `sho_svc_kei_no` | Introduced Party Service Line Number |
| 8 | 紹介者料金グループ名 | `sho_prc_grp_nm` | Introduced Party Price Group Name |
| 9 | 紹介者システムID | `sho_sysid` | Introduced Party System ID |
| 10 | 紹介者契約者名 | `sho_cust_nm` | Introduced Party Contract Name |

Each field group contains an identical nested subkey dispatch:

---

**Block 3.1** — ELSE-IF `key.equals("紹介者お客さまID")` (Field: `hi_svc_kei_no`) (L622)

> Japanese comment: データタイプがStringの項目"紹介者お客さまID"(項目ID:hi_svc_kei_no) (Data type is String field "Referral Service Line Number" (field ID: hi_svc_kei_no))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者お客さまID")` |

**Block 3.1.1** — nested IF `subkey.equalsIgnoreCase("value")` (L623)

> Japanese comment: データタイプがStringの項目"紹介者お客さまID"(項目ID:hi_svc_kei_no) (Data type is String field)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_no_value((String)in_value);` // Cast in_value to String |

**Block 3.1.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L625)

> Japanese comment: subkeyが"enable"の場合、hi_svc_kei_no_enabledのsetterを実行する (When subkey is "enable", execute the hi_svc_kei_no_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_no_enabled((Boolean)in_value);` // Cast in_value to Boolean |

**Block 3.1.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L627)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_no_state((String)in_value);` // Cast in_value to String |

---

**Block 3.2** — ELSE-IF `key.equals("紹介者料金グループ名")` (Field: `hi_prc_grp_nm`) (L634)

> Japanese comment: データタイプがStringの項目"紹介者料金グループ名"(項目ID:hi_prc_grp_nm) (Data type is String field "Referral Price Group Name" (field ID: hi_prc_grp_nm))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者料金グループ名")` |

**Block 3.2.1** — nested IF `subkey.equalsIgnoreCase("value")` (L635)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_prc_grp_nm_value((String)in_value);` |

**Block 3.2.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L637)

> Japanese comment: subkeyが"enable"の場合、hi_prc_grp_nm_enabledのsetterを実行する (When subkey is "enable", execute the hi_prc_grp_nm_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_prc_grp_nm_enabled((Boolean)in_value);` |

**Block 3.2.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L639)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_prc_grp_nm_state((String)in_value);` |

---

**Block 3.3** — ELSE-IF `key.equals("紹介者ステータス")` (Field: `hi_svc_kei_stat`) (L646)

> Japanese comment: データタイプがStringの項目"紹介者ステータス"(項目ID:hi_svc_kei_stat) (Data type is String field "Referral Service Status" (field ID: hi_svc_kei_stat))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者ステータス")` |

**Block 3.3.1** — nested IF `subkey.equalsIgnoreCase("value")` (L647)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_stat_value((String)in_value);` |

**Block 3.3.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L649)

> Japanese comment: subkeyが"enable"の場合、hi_svc_kei_stat_enabledのsetterを実行する (When subkey is "enable", execute the hi_svc_kei_stat_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_stat_enabled((Boolean)in_value);` |

**Block 3.3.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L651)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_kei_stat_state((String)in_value);` |

---

**Block 3.4** — ELSE-IF `key.equals("紹介者サービス開始年月日")` (Field: `hi_svc_sta_ymd`) (L658)

> Japanese comment: データタイプがStringの項目"紹介者サービス開始年月日"(項目ID:hi_svc_sta_ymd) (Data type is String field "Referral Service Start Date and Time" (field ID: hi_svc_sta_ymd))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者サービス開始年月日")` |

**Block 3.4.1** — nested IF `subkey.equalsIgnoreCase("value")` (L659)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_sta_ymd_value((String)in_value);` |

**Block 3.4.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L661)

> Japanese comment: subkeyが"enable"の場合、hi_svc_sta_ymd_enabledのsetterを実行する (When subkey is "enable", execute the hi_svc_sta_ymd_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_sta_ymd_enabled((Boolean)in_value);` |

**Block 3.4.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L663)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setHi_svc_sta_ymd_state((String)in_value);` |

---

**Block 3.5** — ELSE-IF `key.equals("紹介コード")` (Field: `intr_cd`) (L670)

> Japanese comment: データタイプがStringの項目"紹介コード"(項目ID:intr_cd) (Data type is String field "Introduction Code" (field ID: intr_cd))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介コード")` |

**Block 3.5.1** — nested IF `subkey.equalsIgnoreCase("value")` (L671)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setIntr_cd_value((String)in_value);` |

**Block 3.5.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L673)

> Japanese comment: subkeyが"enable"の場合、intr_cd_enabledのsetterを実行する (When subkey is "enable", execute the intr_cd_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setIntr_cd_enabled((Boolean)in_value);` |

**Block 3.5.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L675)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setIntr_cd_state((String)in_value);` |

---

**Block 3.6** — ELSE-IF `key.equals("クーポンコード")` (Field: `coupon_cd`) (L679)

> Japanese comment: データタイプがStringの項目"クーポンコード"(項目ID:coupon_cd) (Data type is String field "Coupon Code" (field ID: coupon_cd))
> Change ticket: ANK-4416-00-00 ADD — Added support for simultaneous entry of introduction code and partner-company targeted entry code.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("クーポンコード")` |

**Block 3.6.1** — nested IF `subkey.equalsIgnoreCase("value")` (L680)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setCoupon_cd_value((String)in_value);` |

**Block 3.6.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L682)

> Japanese comment: subkeyが"enable"の場合、coupon_cd_enabledのsetterを実行する (When subkey is "enable", execute the coupon_cd_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setCoupon_cd_enabled((Boolean)in_value);` |

**Block 3.6.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L684)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setCoupon_cd_state((String)in_value);` |

---

**Block 3.7** — ELSE-IF `key.equals("紹介者お客さまID")` (Field: `sho_svc_kei_no`) (L689)

> Japanese comment: データタイプがStringの項目"紹介者お客さまID"(項目ID:sho_svc_kei_no) (Data type is String field "Introduced Party Service Line Number" (field ID: sho_svc_kei_no))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者お客さまID")` |

**Block 3.7.1** — nested IF `subkey.equalsIgnoreCase("value")` (L690)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_svc_kei_no_value((String)in_value);` |

**Block 3.7.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L692)

> Japanese comment: subkeyが"enable"の場合、sho_svc_kei_no_enabledのsetterを実行する (When subkey is "enable", execute the sho_svc_kei_no_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_svc_kei_no_enabled((Boolean)in_value);` |

**Block 3.7.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L694)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_svc_kei_no_state((String)in_value);` |

---

**Block 3.8** — ELSE-IF `key.equals("紹介者料金グループ名")` (Field: `sho_prc_grp_nm`) (L701)

> Japanese comment: データタイプがStringの項目"紹介者料金グループ名"(項目ID:sho_prc_grp_nm) (Data type is String field "Introduced Party Price Group Name" (field ID: sho_prc_grp_nm))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者料金グループ名")` |

**Block 3.8.1** — nested IF `subkey.equalsIgnoreCase("value")` (L702)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_prc_grp_nm_value((String)in_value);` |

**Block 3.8.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L704)

> Japanese comment: subkeyが"enable"の場合、sho_prc_grp_nm_enabledのsetterを実行する (When subkey is "enable", execute the sho_prc_grp_nm_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_prc_grp_nm_enabled((Boolean)in_value);` |

**Block 3.8.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L706)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_prc_grp_nm_state((String)in_value);` |

---

**Block 3.9** — ELSE-IF `key.equals("紹介者システムID")` (Field: `sho_sysid`) (L713)

> Japanese comment: データタイプがStringの項目"紹介者システムID"(項目ID:sho_sysid) (Data type is String field "Introduced Party System ID" (field ID: sho_sysid))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者システムID")` |

**Block 3.9.1** — nested IF `subkey.equalsIgnoreCase("value")` (L714)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_sysid_value((String)in_value);` |

**Block 3.9.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L716)

> Japanese comment: subkeyが"enable"の場合、sho_sysid_enabledのsetterを実行する (When subkey is "enable", execute the sho_sysid_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_sysid_enabled((Boolean)in_value);` |

**Block 3.9.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L718)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_sysid_state((String)in_value);` |

---

**Block 3.10** — ELSE-IF `key.equals("紹介者契約者名")` (Field: `sho_cust_nm`) (L725)

> Japanese comment: データタイプがStringの項目"紹介者契約者名"(項目ID:sho_cust_nm) (Data type is String field "Introduced Party Contract Name" (field ID: sho_cust_nm))

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `key.equals("紹介者契約者名")` |

**Block 3.10.1** — nested IF `subkey.equalsIgnoreCase("value")` (L726)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_cust_nm_value((String)in_value);` |

**Block 3.10.2** — nested ELSE-IF `subkey.equalsIgnoreCase("enable")` (L728)

> Japanese comment: subkeyが"enable"の場合、sho_cust_nm_enabledのsetterを実行する (When subkey is "enable", execute the sho_cust_nm_enabled setter)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_cust_nm_enabled((Boolean)in_value);` |

**Block 3.10.3** — nested ELSE-IF `subkey.equalsIgnoreCase("state")` (L730)

> Japanese comment: subkeyが"state"の場合、ステータスを返す (When subkey is "state", set the status)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSho_cust_nm_state((String)in_value);` |

### Block 4 — END (implicit return) (L755)

Method concludes with an implicit `void` return. If the `key` did not match any of the 10 known field groups, execution falls through to this point without setting any fields.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | (implicit) `return;` // method ends |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hi_svc_kei_no` | Field | Referral (highlight) service contract line number — the service item identifier for the party who made the referral |
| `hi_svc_kei_stat` | Field | Referral service contract status — the current status of the referral's service line |
| `hi_svc_sta_ymd` | Field | Referral service start date — the year/month/day the referral's service commenced |
| `hi_prc_grp_nm` | Field | Referral price group name — the pricing group associated with the referral |
| `sho_svc_kei_no` | Field | Introduced party (show) service contract line number — the service item identifier for the party being referred |
| `sho_svc_kei_stat` | Field | Introduced party service contract status — the current status of the introduced party's service line |
| `sho_prc_grp_nm` | Field | Introduced party price group name — the pricing group of the party being referred |
| `sho_sysid` | Field | Introduced party system ID — the unique system identifier for the introduced party |
| `sho_cust_nm` | Field | Introduced party contract name — the name on the contract of the party being referred |
| `intr_cd` | Field | Introduction / referral code — an identifier for how the referral originated (e.g., partner, online, in-store) |
| `coupon_cd` | Field | Coupon code — a promotional coupon identifier for the referral transaction |
| `value` | Subkey | Property type indicating the actual data value to set (String type for this method) |
| `enable` | Subkey | Property type indicating the field's enabled/disabled state (Boolean type) |
| `state` | Subkey | Property type indicating the field's display/state status (String type) |
| 紹介者 (shousha) | Domain term | Referrer — the party making the referral or introduction |
| 紹介先 (shousaki) | Domain term | Introduced party — the party being referred or introduced |
| ANK-4416-00-00 | Change ticket | JIRA/change ticket number for the feature adding simultaneous entry of introduction code and partner-company targeted entry code (coupon code) |
| KKW01037SF | Module | Screen module code — the specific web screen handling referral/introduction registration or display |
| DBean | Pattern | Data Bean — a view-layer bean class that holds form data between the screen controller and the JSP view |
| Futurity X33 | Framework | Fujitsu's Web Client tool / framework (com.fujitsu.futurity.web.x33) that provides the base bean classes |
