# Business Logic — KKW02504SFLogic.setDataUpd() [208 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02504SF.KKW02504SFLogic` |
| Layer | Service Logic / Screen Logic (Web presentation layer) |
| Module | `KKW02504SF` (Package: `eo.web.webview.KKW02504SF`) |

## 1. Role

### KKW02504SFLogic.setDataUpd()

This method is the **update-data-setting method** for the My Homepage Information Change feature (`MyHPInfoHenkou`) in K-Opticom's telecom contract management system. It is responsible for reading the user's current selections on the change confirmation screen — specifically the selected **Homepage Capacity** (e.g., a storage/storage capacity tier for the My Homepage service) and the selected **Access Analysis** option (e.g., web traffic analytics or access logging) — and preparing the DataBean with all values required for the subsequent service confirmation call.

The method implements a **comparison-and-route pattern**: it first extracts before/after values for both Homepage Capacity and Access Analysis, determines whether any actual change has occurred compared to the previously stored values. If no changes are detected, it short-circuits by returning `false`, avoiding an unnecessary backend service call. If changes are detected, it branches by update type (Homepage Capacity change type, Access Analysis change type, URL change type), computes derived values (additional capacity, aging codes, date stamps), and sets all necessary fields on the service DataBean for downstream consumption.

It serves as a **shared data preparation utility** called by `actionUpdMyHPInfo()` (the change confirmation screen handler) when the processing category (`TRANDIV`) is "update" (`OP_TRAN_DIV_CHGE`). It does not directly invoke any CRUD service — that responsibility belongs to the caller, which invokes `KKSV0008 / KKSV0008OP` (My Homepage Information Change Confirmation Service) after `setDataUpd()` returns `true`.

If conditional branches:
- **No-change path**: Returns `false` immediately, skipping all downstream DataBean population.
- **Change detected path**: Performs full DataBean population with updated values, including change-type classification, timestamp capture, capacity delta calculation, aging/target-value computation, and progress status setting, then returns `true`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setDataUpd"])
    START --> GET_BEAN["Get ServiceFormBean"]
    GET_BEAN --> GET_DATES["Get sysDateDtms, opeDate, opeDateDtms"]
    GET_DATES --> GET_HP["Get Homepage Capacity pulldown"]
    GET_HP --> HP_INDEX["Get selected index from INDEX_01"]
    HP_INDEX --> HP_CODE["Get selected capacity code"]
    HP_CODE --> SET_HP_CD["Set HP_CAPA_CD on bean"]
    SET_HP_CD --> CONV_HP_VAL["Convert capacity code to int value"]
    CONV_HP_VAL --> HP_NAME["Get selected capacity name"]
    HP_NAME --> SET_HP_NM["Set HP_CAPA_NM on bean"]
    HP_NAME --> GET_ACCS["Get Access Analysis pulldown"]
    GET_ACCS --> ACCS_INDEX["Get selected index, default 1"]
    ACCS_INDEX --> ACCS_CODE["Get selected analysis code"]
    ACCS_CODE --> SET_ACCS_CD["Set ACCSS_BNSK_CD on bean"]
    SET_ACCS_CD --> ACCS_NM["Get selected analysis name"]
    ACCS_NM --> GET_ACCS_NM_BF["Get previous analysis name from NM_LIST_01"]
    GET_ACCS_NM_BF --> SET_ACCS_NM["Set ACCSS_BNSK_NM on bean"]
    SET_ACCS_NM --> GET_UPD_URL["Call getUpd_kind_url"]
    GET_UPD_URL --> SET_UPD_URL["Set UPD_KIND_URL on bean"]
    GET_UPD_URL --> GET_HP_BF["Get previous capacity from HP_CAPA"]
    GET_HP_BF --> CONV_HP_BF["Convert previous capacity to int"]
    CONV_HP_BF --> GET_ACCS_BF["Get previous analysis name from ACCSS_BNSK"]
    GET_ACCS_BF --> CHECK_CHG["same_flg = false"]
    CHECK_CHG --> IF_HP_CHG{Capacity changed?}
    IF_HP_CHG --> TRUE["same_flg = true"]
    IF_HP_CHG --> FALSE1["same_flg = false"]
    TRUE --> IF_ACCS_CHG{Analysis name changed?}
    FALSE1 --> IF_ACCS_CHG
    IF_ACCS_CHG --> TRUE2["same_flg = true"]
    IF_ACCS_CHG --> FALSE2["same_flg = false"]
    TRUE2 --> IF_URL_U{upd_kind_url == UPD_URL_U?}
    FALSE2 --> IF_URL_U
    IF_URL_U --> TRUE3["same_flg = true"]
    IF_URL_U --> FALSE3["same_flg = false"]
    TRUE3 --> IF_NO_CHG{same_flg == false?}
    FALSE3 --> IF_NO_CHG
    IF_NO_CHG --> RETURN_FALSE["Return false"]
    IF_NO_CHG --> CHG_DET["Changes detected, proceed"]
    RETURN_FALSE --> END(["End"])
    CHG_DET --> SET_UPD_HP["Set upd_kind_hp via getUpd_kind_hp"]
    SET_UPD_HP --> SET_UPD_ACCS["Set upd_kind_accs via getUpd_kind_accs"]
    SET_UPD_ACCS --> SET_PRELIM["Set MSKM_SBT_CD, opeDateDtms, opeDate, MSKM_STAT_SKBT_CD, KZKWRK_REQYMD"]
    SET_PRELIM --> SET_CAPA["Set CAPA value"]
    SET_CAPA --> CALC_ADD_CAPA["Calculate add_capa_val = sel - free_val"]
    CALC_ADD_CAPA --> IF_NEG_ADD{add_capa_val < 0?}
    IF_NEG_ADD --> TRUE4["add_capa_val = 0"]
    IF_NEG_ADD --> FALSE4["keep value"]
    TRUE4 --> SET_ADD_CAPA["Set ADD_CAPA"]
    FALSE4 --> SET_ADD_CAPA
    SET_ADD_CAPA --> SET_DATES2["Set SVC_STAYMD, SVC_ENDYMD"]
    SET_DATES2 --> SET_DLRE["Set SVC_DLRE_CD to TUJYO"]
    SET_DLRE --> SET_VALS["Set validation constants"]
    SET_VALS --> SET_AGING["Set AGING_SBT_CD_URL"]
    SET_AGING --> GET_URL["Get domain and account for changelog"]
    GET_URL --> SET_AGING_VAL["Set AGING_TG_VALUE_URL"]
    SET_AGING_VAL --> GET_DSL_URL["Get old domain and account"]
    GET_DSL_URL --> SET_AGING_DSL["Set AGING_TG_VALUE_URL_DSL"]
    GET_DSL_URL --> SET_IDO_DTM["Set IDO_DTM to sysDateDtms"]
    SET_AGING_DSL --> SET_PRG_STAT["Set PRG_STAT to OP_SET_FIN"]
    SET_PRG_STAT --> SET_PRG_TKJK["Set PRG_TKJK_1 to MYHP_INFO + CHGE"]
    SET_PRG_TKJK --> RETURN_TRUE["Return true"]
    RETURN_TRUE --> END
    CHG_DET --> RETURN_TRUE
    IF_HP_CHG --> FALSE1
    IF_ACCS_CHG --> FALSE2
    IF_URL_U --> FALSE3
```

**Constant Values Resolved:**

| Constant | Actual Value | Business Meaning |
|----------|-------------|-----------------|
| `UPD_URL_U` | `"1"` | URL: Changed |
| `UPD_HP_M` | `"5"` | Homepage Capacity: No change (default type) |
| `MSKM_SBT_CD_OPMK` | `"00026"` | Submission type code: Option submission |
| `MSKM_STAT_SKBT_CD_SHONIN` | (from JKKCommonConst) | Submission status: Approved |
| `SVC_DLRE_CD_TUJYO` | `"01"` | Service cancellation reason: Normal cancellation |
| `AGING_SBT_CD_URL` | (from JKKCommonConst) | Aging type code: URL |
| `PRG_STAT_OP_SET_FIN` | (from JKKCommonConst, value `"5102"`) | Progress status: Option setting complete |
| `MYHP_INFO` | `"My Homepage Information"` | Progress detail item 1 label |
| `CHGE` | `"Change"` | Progress detail item suffix |
| `UPD_HP_YRYO` | `"1"` | Change type: Homepage Capacity — to paid |
| `UPD_HP_MRYO` | `"2"` | Change type: Homepage Capacity — to free |
| `UPD_HP_YKEIZK` | `"3"` | Change type: Homepage Capacity — paid continuation |
| `UPD_HP_MKEIZK` | `"4"` | Change type: Homepage Capacity — free continuation |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no explicit parameters. It reads all data from the service DataBean (retrieved via `super.getServiceFormBean()`) and instance fields. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `hp_capa_mryo_val` | `int` | Free-tier Homepage Capacity value — the default free capacity that was loaded during screen initialization via `storeGetDataInit()`. Used to compute the additional capacity that requires billing. |
| `sbop_hp_flg` | `boolean` | Flag indicating whether a sub-option Homepage Capacity sub-contract exists. Read but not directly used in this method (set during initialization). |
| `sbop_accs_flg` | `boolean` | Flag indicating whether a sub-option Access Analysis sub-contract exists. Read but not directly used in this method (set during initialization). |

**Called helper methods (same class):**

| Method | Return Type | Business Description |
|--------|------------|---------------------|
| `getUpd_kind_url()` | `String` | Determines whether the URL component has been changed. Returns `UPD_URL_U` (`"1"`) if changed, `UPD_URL_M` (`"5"`) otherwise. |
| `getUpd_kind_hp(int before, int after)` | `String` | Classifies the Homepage Capacity change type. Returns `"1"` (to-paid), `"2"` (to-free), `"3"` (paid continuation), `"4"` (free continuation), or `"5"` (no change). |
| `getUpd_kind_accs(String accssCode)` | `String` | Classifies the Access Analysis change type. Returns `"1"` (to-paid), `"2"` (to-free), or `"5"` (no change). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getSysDateTimeStamp` | - | - | Retrieves the system date and time stamp for audit/aging timestamp (`sysDateDtms`) |
| R | `JCCWebCommon.getOpeDate` | - | - | Retrieves the current operational date for submission fields |
| R | `JCCWebCommon.getOpeDateTimeStamp` | - | - | Retrieves the current operational date-time stamp for submission fields |
| R | `X31SDataBeanAccess.getDataBeanArray` | - | - | Reads Homepage Capacity and Access Analysis pulldown DataBean arrays from the service form bean |
| R | `X31SDataBeanAccessArray.getDataBean` | - | - | Retrieves the first (and only) DataBean from the pulldown arrays |
| R | `X31SDataBeanAccess.sendMessageString` | - | - | Reads/writes individual DataBean fields: selected indices, codes, names, previous values |
| R | `KKW02504SFLogic.getUpd_kind_url` | - | - | Internal helper: determines whether URL was changed (reads instance state) |
| R | `KKW02504SFLogic.getUpd_kind_hp` | - | - | Internal helper: classifies Homepage Capacity change type (compares before/after values) |
| R | `KKW02504SFLogic.getUpd_kind_accs` | - | - | Internal helper: classifies Access Analysis change type (compares codes) |

### Analysis:

This method is **purely a DataBean preparation method** — it performs no direct database or SC (Service Component) calls. All operations are Reads from the DataBean (retrieving user input selections and previously-stored values) and Sets to the DataBean (populating fields needed by the downstream service call). The actual CRUD operations are executed by the **caller** (`actionUpdMyHPInfo`) which invokes `KKSV0008 / KKSV0008OP` (My Homepage Information Change Confirmation Service) after `setDataUpd()` returns `true`.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW02504SFLogic.actionUpdMyHPInfo()` | `actionUpdMyHPInfo()` (screen handler, TRANDIV=change) -> `setDataUpd()` | `KKSV0008 / KKSV0008OP` [R/U] (My Homepage Change Confirmation Service) |

**Caller details:**

- `actionUpdMyHPInfo()` is the change confirmation handler within the same `KKW02504SFLogic` class.
- It is invoked when the processing category (`TRANDIV`) equals `"change"` (`OP_TRAN_DIV_CHGE`).
- If `setDataUpd()` returns `true`, the caller proceeds to invoke `KKSV0008 / KKSV0008OP` (My Homepage Information Change Confirmation Service).
- If `setDataUpd()` returns `false`, the caller sets an error message ("No changes detected" / EKB5370_NW) and aborts.
- Terminal operations from this method: All are `sendMessageString` calls on the DataBean — no terminal SC/CRUD operations originate directly from this method. The terminal operations are reached through the caller's `invokeService` call to `KKSV0008 / KKSV0008OP`.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Acquire DataBean and timestamps (L1597-L1605)

> Retrieves the service form DataBean, system date, operational date, and operational date-time stamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean = super.getServiceFormBean()` // Get service form DataBean access |
| 2 | SET | `sysDateDtms = JCCWebCommon.getSysDateTimeStamp()` // System date-time stamp for aging/discrepancy tracking |
| 3 | SET | `opeDate = JCCWebCommon.getOpeDate(this, null)` // Current operational date |
| 4 | SET | `opeDateDtms = JCCWebCommon.getOpeDateTimeStamp(this, null)` // Current operational date-time stamp |

**Block 2** — [SET] Get Homepage Capacity pulldown data (L1607-L1634)

> Extracts the selected Homepage Capacity from the pulldown list, gets the selected index, resolves the code and display name, and converts the code to an integer value.

| # | Type | Code |
|---|------|------|
| 1 | SET | `hplist = bean.getDataBeanArray(KKW02504SFConst.HP_CAPA_INFO)` // Get Homepage Capacity info pulldown array |
| 2 | SET | `hpBean = hplist.getDataBean(0)` // Get first DataBean from pulldown |
| 3 | SET | `hpCapaSelIndex = Integer.parseInt(hpBean.sendMessageString(INDEX_01, DATABEAN_GET_VALUE))` // Selected index from pulldown |
| 4 | SET | `hp_capa_sel = hpBean.sendMessageString(CD_DIV_LIST_01, DATABEAN_GET_VALUE, hpCapaSelIndex)` // Selected capacity code |
| 5 | SET | `bean.sendMessageString(HP_CAPA_CD, DATABEAN_SET_VALUE, hp_capa_sel)` // Set capacity code to bean |
| 6 | SET | `hp_capa_sel_val = 0` // Default integer value |
| 7 | IF | `hp_capa_sel != null && !"".equals(hp_capa_sel)` (L1623) — Not empty? |
| 7.1 | SET | `hp_capa_sel_val = Integer.parseInt(hp_capa_sel)` [L1624] // Convert code to int |
| 8 | SET | `hp_capa_nm_sel = hpBean.sendMessageString(CD_DIV_NM_LIST_01, DATABEAN_GET_VALUE, hpCapaSelIndex)` // Selected capacity name |
| 9 | SET | `bean.sendMessageString(HP_CAPA_NM, DATABEAN_SET_VALUE, hp_capa_nm_sel)` // Set capacity name to bean |

**Block 3** — [SET] Get Access Analysis pulldown data (L1642-L1679)

> Extracts the selected Access Analysis option from the pulldown list. Includes v5.01 null-safety fix (IT1-2013-0000907) that defaults the index to 1 if the value is null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `accslist = bean.getDataBeanArray(KKW02504SFConst.ACCSS_BNSK_INFO)` // Get Access Analysis pulldown |
| 2 | SET | `accsBean = accslist.getDataBean(0)` // Get first DataBean |
| 3 | SET | `accsSelIndex = 1` // Default index (v5.01 null-safety fix) |
| 4 | IF | `null != accsBean.sendMessageString(INDEX_01, DATABEAN_GET_VALUE)` (L1651) — Index is not null? |
| 4.1 | SET | `accsSelIndex = Integer.parseInt(...)` [L1653] // Parse selected index |
| 5 | SET | `accss_bnsk_sel = accsBean.sendMessageString(CD_DIV_LIST_01, DATABEAN_GET_VALUE, accsSelIndex)` // Selected analysis code |
| 6 | SET | `bean.sendMessageString(ACCSS_BNSK_CD, DATABEAN_SET_VALUE, accss_bnsk_sel)` // Set code to bean |
| 7 | SET | `accss_bnsk_nm_sel = accsBean.sendMessageString(CD_DIV_NM_LIST_01, DATABEAN_GET_VALUE, accsSelIndex)` // Selected analysis name |
| 8 | SET | `accss_bnsk_nm = accsBean.sendMessageString(NM_LIST_01, DATABEAN_GET_VALUE, accsSelIndex)` // Previous analysis name (IT1-2013-0001438) |
| 9 | SET | `bean.sendMessageString(ACCSS_BNSK_NM, DATABEAN_SET_VALUE, accss_bnsk_nm_sel)` // Set name to bean |

**Block 4** — [SET] Determine URL change type and fetch previous values (L1683-L1698)

> Calls the URL change-type classifier and retrieves the previous (before-change) Homepage Capacity and Access Analysis values for comparison.

| # | Type | Code |
|---|------|------|
| 1 | SET | `upd_kind_url = getUpd_kind_url()` // Internal: has URL changed? |
| 2 | SET | `bean.sendMessageString(UPD_KIND_URL, DATABEAN_SET_VALUE, upd_kind_url)` // Set URL change type |
| 3 | SET | `hp_capa_bf = bean.sendMessageString(HP_CAPA, DATABEAN_GET_VALUE)` // Previous capacity value |
| 4 | SET | `hp_capa_bf_val = 0` // Previous capacity as int |
| 5 | IF | `hp_capa_bf != null && !"".equals(hp_capa_bf)` — Previous value not empty? |
| 5.1 | SET | `hp_capa_bf_val = Integer.parseInt(hp_capa_bf)` // Convert to int |
| 6 | SET | `accss_bnsk_nm_bf = bean.sendMessageString(ACCSS_BNSK, DATABEAN_GET_VALUE)` // Previous access analysis name |

**Block 5** — [IF] Change detection logic (L1701-L1722)

> Determines whether any field has changed compared to the before-values. Uses `same_flg` flag that starts as `false` and becomes `true` if any field changed. Three conditions are checked sequentially: Homepage Capacity change, Access Analysis name change, and URL change type being "changed".

| # | Type | Code |
|---|------|------|
| 1 | SET | `same_flg = false` // Default: assume no change |
| 2 | IF | `hp_capa_bf_val != hp_capa_sel_val` (L1703) — Capacity changed? |
| 2.1 | SET | `same_flg = true` [L1704] |
| 3 | IF | `same_flg == false && accss_bnsk_nm_bf != null && !accss_bnsk_nm_bf.equals(accss_bnsk_nm)` (L1709) — Access Analysis name changed? **Note:** This line uses `accss_bnsk_nm` (the NM_LIST_01 value, set in Block 3.8) rather than `accss_bnsk_nm_sel` — a v5.02 fix (IT1-2013-0001438) that switched from CD_DIV_NM_LIST_01 to NM_LIST_01 for the comparison value. |
| 3.1 | SET | `same_flg = true` [L1710] |
| 4 | IF | `same_flg == false && UPD_URL_U.equals(upd_kind_url)` (L1712) — URL marked as changed? **Constant:** `UPD_URL_U = "1"` (URL: Changed) |
| 4.1 | SET | `same_flg = true` [L1713] |

**Block 6** — [IF] No-change early return (L1716-L1718)

> If no changes were detected across any field, short-circuit and return `false` to skip the service call.

| # | Type | Code |
|---|------|------|
| 1 | IF | `same_flg == false` (L1716) — No changes detected? |
| 1.1 | RETURN | `return false` [L1717] // No changes — caller will show EKB5370_NW ("No changes detected") |

**Block 7** — [SET] Set change-type classifications (L1723-L1731)

> Classifies the Homepage Capacity change type and the Access Analysis change type, then stores them on the DataBean. The Homepage Capacity change type defaults to `"5"` (No change) and only gets overridden if the capacity values differ.

| # | Type | Code |
|---|------|------|
| 1 | SET | `upd_kind_hp = UPD_HP_M` (i.e., `"5"`) // Default: no change |
| 2 | IF | `hp_capa_bf_val != hp_capa_sel_val` (L1726) — Capacity actually changed? |
| 2.1 | SET | `upd_kind_hp = getUpd_kind_hp(hp_capa_bf_val, hp_capa_sel_val)` // Classify: paid/free conversion |
| 3 | SET | `bean.sendMessageString(UPD_KIND_HP, DATABEAN_SET_VALUE, upd_kind_hp)` // Set capacity change type |
| 4 | SET | `upd_kind_accs = getUpd_kind_accs(accss_bnsk_sel)` // Classify access analysis change type |
| 5 | SET | `bean.sendMessageString(UPD_KIND_ACCS, DATABEAN_SET_VALUE, upd_kind_accs)` // Set analysis change type |

**Block 8** — [SET] Populate submission and service fields (L1733-L1756)

> Sets all the standard submission metadata fields on the DataBean: submission type code, timestamps, status, service start/end dates, capacity values, and cancellation reason.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString(MSKM_SBT_CD, DATABEAN_SET_VALUE, MSKM_SBT_CD_OPMK)` // Submission type: Option submission (`"00026"`) |
| 2 | SET | `bean.sendMessageString(MSKM_UK_DTM, DATABEAN_SET_VALUE, opeDateDtms)` // Submission date-time |
| 3 | SET | `bean.sendMessageString(MSKM_YMD, DATABEAN_SET_VALUE, opeDate)` // Submission date |
| 4 | SET | `bean.sendMessageString(CONSMBSN_MSKM_STAT_SKBT_CD, DATABEAN_SET_VALUE, MSKM_STAT_SKBT_CD_SHONIN)` // Submission status: Approved |
| 5 | SET | `bean.sendMessageString(KZKWRK_REQYMD, DATABEAN_SET_VALUE, opeDate)` // Follow-up work request date |
| 6 | SET | `bean.sendMessageString(CAPA, DATABEAN_SET_VALUE, hp_capa_sel_val + "")` // Selected capacity (as string) |
| 7 | SET | `add_capa_val = hp_capa_sel_val - hp_capa_mryo_val` // Additional capacity = selected - free tier |
| 8 | IF | `add_capa_val < 0` (L1752) — Additional capacity negative? |
| 8.1 | SET | `add_capa_val = 0` [L1753] // Zero out if free-tier selection |
| 9 | SET | `add_capa = add_capa_val + ""` // Convert to string |
| 10 | SET | `bean.sendMessageString(ADD_CAPA, DATABEAN_SET_VALUE, add_capa)` // Additional capacity |
| 11 | SET | `bean.sendMessageString(SVC_STAYMD, DATABEAN_SET_VALUE, opeDate)` // Service start date |
| 12 | SET | `bean.sendMessageString(SVC_ENDYMD, DATABEAN_SET_VALUE, opeDate)` // Service end date |

**Block 9** — [SET] Set validation constants and aging data (L1760-L1788)

> Sets validation reference constants, aging codes, URL-based aging target values (both current and for cancellation), discrepancy timestamp, and progress status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString(VAL_YRYO, DATABEAN_SET_VALUE, UPD_HP_YRYO)` // Validation ref: to-paid (`"1"`) |
| 2 | SET | `bean.sendMessageString(VAL_MRYO, DATABEAN_SET_VALUE, UPD_HP_MRYO)` // Validation ref: to-free (`"2"`) |
| 3 | SET | `bean.sendMessageString(VAL_YKEIZK, DATABEAN_SET_VALUE, UPD_HP_YKEIZK)` // Validation ref: paid continuation (`"3"`) |
| 4 | SET | `bean.sendMessageString(VAL_MKEIZK, DATABEAN_SET_VALUE, UPD_HP_MKEIZK)` // Validation ref: free continuation (`"4"`) |
| 5 | SET | `bean.sendMessageString(VAL_U, DATABEAN_SET_VALUE, UPD_URL_U)` // Validation ref: URL changed (`"1"`) |
| 6 | SET | `bean.sendMessageString(VAL_M, DATABEAN_SET_VALUE, UPD_URL_M)` // Validation ref: URL unchanged (`"5"`) |
| 7 | SET | `bean.sendMessageString(AGING_SBT_CD_URL, DATABEAN_SET_VALUE, AGING_SBT_CD_URL)` // Aging type: URL |
| 8 | SET | `domain = bean.sendMessageString(CHG_HPAD_DOMAIN, DATABEAN_GET_VALUE)` // Get changelog domain |
| 9 | SET | `accont = bean.sendMessageString(CHG_HPAD_ACCOUNT, DATABEAN_GET_VALUE)` // Get changelog account |
| 10 | SET | `bean.sendMessageString(AGING_TG_VALUE_URL, DATABEAN_SET_VALUE, domain + accont)` // Aging target = domain + account |
| 11 | SET | `domain_dsl = bean.sendMessageString(HPAD_DOMAIN, DATABEAN_GET_VALUE)` // Get old domain |
| 12 | SET | `accont_dsl = bean.sendMessageString(HPAD_ACCOUNT, DATABEAN_GET_VALUE)` // Get old account |
| 13 | SET | `bean.sendMessageString(AGING_TG_VALUE_URL_DSL, DATABEAN_SET_VALUE, domain_dsl + accont_dsl)` // Aging target for cancellation |
| 14 | SET | `bean.sendMessageString(IDO_DTM, DATABEAN_SET_VALUE, sysDateDtms)` // Discrepancy date-time = system date-time |
| 15 | SET | `bean.sendMessageString(PRG_STAT, DATABEAN_SET_VALUE, PRG_STAT_OP_SET_FIN)` // Progress status: Option setting complete |
| 16 | SET | `bean.sendMessageString(PRG_TKJK_1, DATABEAN_SET_VALUE, MYHP_INFO + CHGE)` // Progress detail 1: "My Homepage Information" + "Change" |
| 17 | RETURN | `return true` [L1799] // Changes detected — caller proceeds to service invocation |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `TRANDIV` | Field | Processing category / operation type — distinguishes between "change" (`OP_TRAN_DIV_CHGE`), "cancellation" (`OP_TRAN_DIV_DSL`), "recovery" (`OP_TRAN_DIV_KAIHK`), and "reservation cancellation" (`OP_TRAN_DIV_RSV_CL`) |
| `HP_CAPA` | Field | Homepage Capacity — the storage/storage capacity tier for the My Homepage web service |
| `HP_CAPA_CD` | Field | Homepage Capacity Code — the selected capacity tier code from the pulldown |
| `HP_CAPA_NM` | Field | Homepage Capacity Name — the human-readable label for the selected capacity tier |
| `HP_CAPA_INFO` | Field | Homepage Capacity Information — the DataBean array key for the capacity pulldown list |
| `ACCSS_BNSK` | Field | Access Analysis — a web traffic analytics / access logging add-on service |
| `ACCSS_BNSK_CD` | Field | Access Analysis Code — the selected access analysis option code |
| `ACCSS_BNSK_NM` | Field | Access Analysis Name — the human-readable label for the selected analysis option |
| `ACCSS_BNSK_INFO` | Field | Access Analysis Information — the DataBean array key for the access analysis pulldown list |
| `same_flg` | Field | Same-flag — change detection flag; `true` means at least one field has changed from its previous value |
| `upd_kind_hp` | Field | Update Kind (Homepage Capacity) — classifies the capacity change as: `1`=to-paid, `2`=to-free, `3`=paid continuation, `4`=free continuation, `5`=no change |
| `upd_kind_accs` | Field | Update Kind (Access Analysis) — classifies the analysis change as: `1`=to-paid, `2`=to-free, `5`=no change |
| `upd_kind_url` | Field | Update Kind (URL) — `"1"` if URL was changed, `"5"` if unchanged |
| `hp_capa_mryo_val` | Field | Free-tier Homepage Capacity Value — the default free capacity loaded during screen initialization; used to compute billing delta |
| `add_capa` | Field | Additional Capacity — the difference between selected capacity and free-tier capacity; `0` if selection is at or below free-tier |
| `MSKM_SBT_CD_OPMK` | Field | Submission Sub-Type Code (Option Submission) — value `"00026"`, identifies this as an option submission (as opposed to new contract or cancellation) |
| `MSKM_STAT_SKBT_CD_SHONIN` | Field | Submission Status Discrimination Code (Approved) — indicates the submission has been approved by the user on the confirmation screen |
| `SVC_DLRE_CD_TUJYO` | Field | Service Cancellation Reason Code (Normal Cancellation) — value `"01"`, standard cancellation |
| `AGING_SBT_CD_URL` | Field | Aging Sub-Type Code (URL) — identifies URL-based aging records for audit trail |
| `AGING_TG_VALUE_URL` | Field | Aging Target Value (URL) — concatenated domain+account for the current (post-change) URL, used for aging records |
| `AGING_TG_VALUE_URL_DSL` | Field | Aging Target Value (URL: Cancellation) — concatenated domain+account for the original URL, used when recording cancellation aging |
| `IDO_DTM` | Field | Discrepancy Date-Time — set to system date-time; used for progress-skema discrepancy tracking (LT-2013-0000012) |
| `PRG_STAT_OP_SET_FIN` | Field | Progress Status (Option Setting Complete) — value `"5102"`, indicates the option configuration step is complete |
| `PRG_TKJK_1` | Field | Progress Detail Item 1 — set to "My Homepage Information Change", used for progress tracking |
| `OP_TRAN_DIV_CHGE` | Constant | Operation Processing Category: Change (update) — from JKKCommonConst |
| `OP_TRAN_DIV_DSL` | Constant | Operation Processing Category: Cancellation — from JKKCommonConst |
| `OP_TRAN_DIV_KAIHK` | Constant | Operation Processing Category: Recovery — from JKKCommonConst |
| `OP_TRAN_DIV_RSV_CL` | Constant | Operation Processing Category: Reservation Cancellation — from JKKCommonConst |
| My Homepage (`MyHP`) | Business term | K-Opticom's free website hosting service included with certain internet plans; customers can change the storage capacity tier and enable access analysis add-ons |
| Access Analysis | Business term | Web analytics / access logging add-on service for My Homepage; tracks visitor counts, page views, etc. |
| Homepage Capacity | Business term | The storage tier for a My Homepage website; selectable from a pulldown with different capacities at different price points |
| Sub-Option Service | Business term | Add-on services attached to a main internet contract — Homepage Capacity and Access Analysis are sub-options of the primary eo光 (eo Hikari) internet contract |
| K-Opticom | Business term | Japanese ISP (Internet Service Provider) owned by Fujitsu; the contract management system documented here is for K-Opticom's customer service operations |
| eo Hikari | Business term | K-Opticom's fiber-optic broadband internet service; My Homepage is an add-on service bundled with eo Hikari contracts |
| SOD | Acronym | Service Order Data — the order issuance document/entity used in telecom order fulfillment workflows |
| DataBean | Technical term | X31 framework object for passing structured data between UI and logic layers |
| DataBeanArray | Technical term | Array wrapper around DataBean objects, used for multi-value selections (pulldown lists) |
| `sendMessageString` | Technical term | X31 framework method for getting/setting string values on a DataBean; acts as the DataBean's getter/setter |
| `DATABEAN_GET_VALUE` | Constant | X31 framework constant for get operations on DataBean |
| `DATABEAN_SET_VALUE` | Constant | X31 framework constant for set operations on DataBean |
