---
id: 78f89c5a-b1e5-4f72-9d1a-5a0c92f1e1b8
domain: webview
topic: Detailed Design
layer: webview
created_at: "2026-01-01T00:00:00Z"
updated_at: "2026-01-01T00:00:00Z"
---

# Business Logic — KKA14201SFLogic.actionInit() [278 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA14201SF.KKA14201SFLogic` |
| Layer | Webview / Controller |
| Module | `KKA14201SF` (Package: `eo.web.webview.KKA14201SF`) |

## 1. Role

### KKA14201SFLogic.actionInit()

This method performs the **initial display processing** for the My Homepage information change/cancellation screen within K-Opticom's customer web portal. It is the entry point that prepares all data required for displaying the service contract overview, option service details, home page capacity, access analysis, code name management, fee courses, change reservations, and business parameters — all in a single initial load.

Specifically, the method executes three phases of business processing. First, it retrieves screen context and initializes the DataBean with transition-source information from the calling screen, determining what operation type (change, cancellation, recovery, reservation cancellation) the user is performing. Second, it calls the `KKSV0007OP` service, which queries the My Homepage information lookup system to fetch comprehensive service contract data including option service agreements, sub-option service details, ISP contract confirmations, home page capacity, access analysis records, code name management, fee courses, change reservations, and business parameters. Third, it processes the service contract state to determine billing end dates and non-fee judgment flags when the sub-option service status indicates "Service Provision" (Teikyo = 100). It also evaluates the transaction division (`trandiv`) — whether the operation is a Change (Henko), Cancellation (Kaijo), Recovery (Kaifuku), or Reservation Cancellation (Yoyaku Torikeshi) — and sets the update enable flag (`CHG_KAHI_FLG`) and appropriate error/display messages based on the option service contract status.

The method implements a **routing/dispatch design pattern**: it configures data mapping structures (via `KKSV0007_KKSV0007OPDBMapper`) for 14 distinct service component queries, invokes a centralized service, then distributes the results back to the DataBean. Its role in the larger system is as a shared initial display handler — called by both `actionClear()` (clear/reset) and `apiControl()` (API entry point), making it the central data preparation method for the entire My Homepage information change workflow.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["actionInit()"])
    START --> GET_SCREEN["JCCWebCommon.getScreenInfo"]
    GET_SCREEN --> GET_BEAN["getServiceFormBean -> bean"]
    GET_BEAN --> SET_DATA["setDataInit()"]
    SET_DATA --> CREATE_MAP["new KKSV0007 Mapper + HashMap"]
    CREATE_MAP --> SET_SC[("Set 14 KKSV0007 SC codes")]
    SET_SC --> INVOKE["invokeService KKSV0007 KKSV0007OP"]
    INVOKE --> GET_SC[("Get 8 KKSV0007 SC codes from outputMap")]
    GET_SC --> GET_SVC_STAT["get sbopSvcKeiStat from DataBean"]
    GET_SVC_STAT --> CHECK_TEIKYO{svc_kei_stat = 100?}
    CHECK_TEIKYO -->|Yes| BUILD_MAP["Build jdgHiChrgMap<br/>dslSbtFlg=3, dates"]
    CHECK_TEIKYO -->|No| SET_EMPTY["svc_chrg_endymd=empty, chrg_flg=0"]
    BUILD_MAP --> CALL_JDG["JKKWebCommon.jdgHiChrg(jdgHiChrgMap)"]
    CALL_JDG --> EXTRACT_HI["Extract svcChrgEndYmd, chrgFlg"]
    EXTRACT_HI --> SET_HI_VAL["Set SVC_CHRG_ENDYMD, DSLJI_CHRG_FLG"]
    SET_HI_VAL --> INIT_PULLDOWN["Init capacity pulldown values"]
    SET_EMPTY --> INIT_PULLDOWN
    INIT_PULLDOWN --> SET_PULL[("setPulldownListNoIndex HP_CAPA")]
    SET_PULL --> SET_PULL2[("setPulldownListNoIndex ACCSS_BNSK")]
    SET_PULL2 --> STORE_DATA["storeGetDataInit()"]
    STORE_DATA --> GET_TRANDIV["get trandiv from DataBean"]
    GET_TRANDIV --> GET_OP_STAT["get op_svc_kei_stat from DataBean"]
    GET_OP_STAT --> SET_CHG_FLG1["set CHG_KAHI_FLG = true"]
    SET_CHG_FLG1 --> BRANCH1{op_tran_div = 03?}
    BRANCH1 -->|Yes| BRANCH1_OK1{svc_kei_stat in 010|020|030|100?}
    BRANCH1_OK1 -->|Yes| BR1_ALLOW["CHG_KAHI_FLG=true"]
    BRANCH1_OK1 -->|No| BR1_DENY["setMessageInfo EKB1510_KW<br/>CHG_KAHI_FLG=false"]
    BRANCH1 -->|No| BRANCH2{op_tran_div = 04?}
    BRANCH2 -->|Yes| BRANCH2_URL{url_domain AND url_acct<br/>both set?}
    BRANCH2_URL -->|No| BR2_DENY1["setMessageInfo EKB1040_JW<br/>CHG_KAHI_FLG=false"]
    BRANCH2_URL -->|Yes| BRANCH2_STAT{svc_kei_stat in 030|100|210?}
    BRANCH2_STAT -->|Yes| BR2_ALLOW["CHG_KAHI_FLG=true"]
    BRANCH2_STAT -->|No| BR2_DENY2["setMessageInfo EKB1510_KW<br/>CHG_KAHI_FLG=false"]
    BRANCH2 -->|No| BRANCH3{op_tran_div = 05?}
    BRANCH3 -->|Yes| BRANCH3_STAT{svc_kei_stat = 910?}
    BRANCH3_STAT -->|Yes| BR3_ALLOW["CHG_KAHI_FLG=true<br/>setMessageInfo EKB0370"]
    BRANCH3_STAT -->|No| BR3_DENY["setMessageInfo EKB1510_KW<br/>CHG_KAHI_FLG=false"]
    BRANCH3 -->|No| BRANCH4{op_tran_div = 06?}
    BRANCH4 -->|Yes| BRANCH4_STAT{svc_kei_stat in 010|020|030|100?}
    BRANCH4_STAT -->|Yes| BR4_ALLOW["CHG_KAHI_FLG=true<br/>setMessageInfo EKB0370"]
    BRANCH4_STAT -->|No| BR4_DENY["setMessageInfo EKB1510_KW<br/>CHG_KAHI_FLG=false"]
    BRANCH4 -->|No| NOBRANCH["No matching branch"]
    NOBRANCH --> LOG_BEAN["dumpDatabean() log"]
    BR1_ALLOW --> LOG_BEAN
    BR1_DENY --> LOG_BEAN
    BR2_ALLOW --> LOG_BEAN
    BR2_DENY1 --> LOG_BEAN
    BR2_DENY2 --> LOG_BEAN
    BR3_ALLOW --> LOG_BEAN
    BR3_DENY --> LOG_BEAN
    BR4_ALLOW --> LOG_BEAN
    BR4_DENY --> LOG_BEAN
    LOG_BEAN --> END_RETURN["return result (true)"]
    BR1_ALLOW --> END_RETURN
    BR2_ALLOW --> END_RETURN
    BR3_ALLOW --> END_RETURN
    BR4_ALLOW --> END_RETURN
```

**Branch constant resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|-----------------|
| `OP_TRAN_DIV_CHGE` | `"03"` | Change (Henko) — option service contract modification |
| `OP_TRAN_DIV_DSL` | `"04"` | Cancellation (Kaijo) — option service contract termination |
| `OP_TRAN_DIV_KAIHK` | `"05"` | Recovery (Kaifuku) — option service contract restoration |
| `OP_TRAN_DIV_RSV_CL` | `"06"` | Reservation Cancellation (Yoyaku Torikeshi) |
| `SVC_KEI_STAT_TEIKYO` / `SVC_KEI_STAT_100` | `"100"` | Service Provision (Teikyo Chu) — currently active |
| `SVC_KEI_STAT_010` | `"010"` | Acceptance Completed (Shojuku) |
| `SVC_KEI_STAT_020` | `"020"` | Under Review (Shoufuku) |
| `SVC_KEI_STAT_030` | `"030"` | Contracting Completed (Ketsuzum) |
| `SVC_KEI_STAT_210` | `"210"` | Suspended/Stopped (Shuushi-Chudan) |
| `SVC_KEI_STAT_910` | `"910"` | Cancellation Completed (Kaisho) |
| `FUNC_CD_1` | `"1"` | Check & Register |
| `FUNC_CD_2` | `"2"` | Check Only |
| `FUNC_CD_3` | `"3"` | List Display |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no explicit parameters. All input data is obtained from the DataBean via `sendMessageString` and from instance fields (`inputMap`, `outputMap`) set by the framework. |

**Instance fields / external state read:**

| Field/Source | Type | Business Description |
|-------------|------|---------------------|
| `inputMap` | `HashMap<String, Object>` | Instance field used as input mapping structure for SC code configuration before service invocation. Initialized to a new `HashMap` within this method. |
| `outputMap` | `Map (instance field)` | Instance field used as output mapping structure — populated by `invokeService`, then read via `mapper.getKKSV0007xxSC` calls to extract query results into the DataBean. |
| `super.getServiceFormBean()` | `X31SDataBeanAccess` | Returns the screen's DataBean containing all form data, including transition source info, service contract status, transaction division, home page domain/account, and capacity values. |
| `JCCWebCommon.getScreenInfo(this)` | - | Retrieves and sets screen context information (screen ID, operation type) onto this logic instance. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getScreenInfo` | JCCWebCommon | - | Retrieves screen context information (screen ID, operation type) and sets it on this logic instance |
| R | `mapper.setKKSV000701SC` | KKSV0007 | - | Sets up Option Service Contract Confirmation mapping (card prompt, read-only) |
| R | `mapper.setKKSV000702SC` | KKSV0007 | - | Sets up Option Service Contract <ISP> Confirmation mapping (PK, check & register) |
| R | `mapper.setKKSV000706SC` | KKSV0007 | - | Sets up Sub Option Service Contract List mapping (list display, check & register) |
| R | `mapper.setKKSV000703SC` | KKSV0007 | - | Sets up Sub Option Service Contract Confirmation mapping (PK, Home Page Capacity, check & register) |
| R | `mapper.setKKSV000704SC` | KKSV0007 | - | Sets up Sub Option Service Contract <ISP> Confirmation mapping (PK, Home Page Capacity, check & register) |
| R | `mapper.setKKSV000705SC` | KKSV0007 | - | Sets up Sub Option Service Contract Confirmation mapping (PK, Access Analysis, check & register) |
| R | `mapper.setKKSV000709SC` | KKSV0007 | - | Sets up Code Name Management Confirmation mapping (Home Page Capacity, list display) |
| R | `mapper.setKKSV000710SC` | KKSV0007 | - | Sets up Code Name Management Confirmation mapping (Access Analysis, list display) |
| R | `mapper.setKKSV000711SC` | KKSV0007 | - | Sets up Service Contract Confirmation mapping (card prompt, read-only) |
| R | `mapper.setKKSV000712SC` | KKSV0007 | - | Sets up Fee Course_Sub Option Service List mapping (list display, check & register) |
| R | `mapper.setKKSV000713SC` | KKSV0007 | - | Sets up Change Reservation List mapping (list display, check & register) |
| R | `mapper.setKKSV000714SC` | KKSV0007 | - | Sets up Business Parameter Management Confirmation mapping (check & register) |
| R | `mapper.setKKSV0007WORK01` | KKSV0007 | - | Sets up execution condition judgment mapping (empty function code) |
| R | `invokeService("KKSV0007", "KKSV0007OP")` | KKSV0007OP | KKSV0007 service component | Invokes the My Homepage Information Lookup Service — queries database for all 14 configured SC codes, returns consolidated results |
| R | `mapper.getKKSV000701SC` | KKSV0007 | - | Extracts Option Service Contract Confirmation data from outputMap back to DataBean |
| R | `mapper.getKKSV000702SC` | KKSV0007 | - | Extracts Option Service Contract <ISP> Confirmation data from outputMap back to DataBean |
| R | `mapper.getKKSV000703SC` | KKSV0007 | - | Extracts Sub Option Service Contract Confirmation data from outputMap back to DataBean |
| R | `mapper.getKKSV000704SC` | KKSV0007 | - | Extracts Sub Option Service Contract <ISP> data from outputMap back to DataBean |
| R | `mapper.getKKSV000705SC` | KKSV0007 | - | Extracts Sub Option Service Contract Confirmation Access Analysis data from outputMap back to DataBean |
| R | `mapper.getKKSV000711SC` | KKSV0007 | - | Extracts Service Contract Confirmation data from outputMap back to DataBean |
| R | `mapper.getKKSV000712SC` | KKSV0007 | - | Extracts Fee Course_Sub Option Service List data from outputMap back to DataBean |
| R | `mapper.getKKSV000714SC` | KKSV0007 | - | Extracts Business Parameter Management data from outputMap back to DataBean |
| R | `JCCWebCommon.getOpeDate` | JCCWebCommon | - | Retrieves the current operation date used as sub-option service end date for non-fee judgment |
| - | `JKKWebCommon.jdgHiChrg` | JKKWebCommon | - | Calls the non-fee judgment service — determines whether charges apply based on sub-option service status, service charge start/end dates |
| - | `JKKWebCommon.setPulldownListNoIndex` | JKKWebCommon | - | Configures pulldown list display parameters (capacity min/max/incr values) for Home Page Capacity and Access Analysis fields |
| - | `JCCWebCommon.setMessageInfo` | JCCWebCommon | - | Sets error/display messages on the DataBean for various business condition branches |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKA14201SFLogic.actionClear()` | `actionClear()` -> `actionInit()` | `setDataInit`, `invokeService KKSV0007OP`, `setMessageInfo` |
| 2 | `KKA14201SFLogic.apiControl()` | `apiControl()` -> `actionInit()` | `setDataInit`, `invokeService KKSV0007OP`, `jdgHiChrg`, `setMessageInfo` |

**Terminal operations reached from this method:**

| Terminal | Type | Description |
|----------|------|-------------|
| `setDataInit()` | SET | Internal DataBean initialization |
| `invokeService("KKSV0007", "KKSV0007OP")` | R | My Homepage Information Lookup — reads all 14 SC codes from DB |
| `setKKSV0007xxSC()` / `getKKSV0007xxSC()` | R | Mapping setup/extract for all configured SC codes |
| `jdgHiChrg(jdgHiChrgMap)` | R | Non-fee judgment — determines billing end date and charge flag |
| `setPulldownListNoIndex(bean, outputMap, ...)` | - | Pulldown configuration for HP Capacity and Access Analysis |
| `setMessageInfo(...)` | - | Error message output for various business rule violations |
| `storeGetDataInit()` | SET | Internal DataBean data storage |

## 6. Per-Branch Detail Blocks

### Block 1 — INITIALIZATION (L5762-L5770)

> Initialization phase: obtains screen info, retrieves the DataBean, and performs initial data setup.

| # | Type | Code |
|---|------|------|
| 1 | SET | `boolean result = true;` |
| 1 | SET | `KKSV0007_KKSV0007OPDBMapper mapper = null;` // DataBean-BP mapping cross-object |
| 2 | EXEC | `JCCWebCommon.getScreenInfo(this);` // Acquire screen info and set on service form bean |
| 2 | EXEC | `X31SDataBeanAccess bean = super.getServiceFormBean();` // Obtain DataBean access from form bean |
| 3 | SET | `X31SDataBeanAccess[] paramBean = {bean};` |
| 2 | CALL | `setDataInit();` // DataBean initialization processing |

### Block 2 — SC CODE CONFIGURATION (L5772-L5799)

> Configures the mapper with 14 service component (SC) codes before invoking the KKSV0007 service. Each `setKKSV0007xxSC` call binds a specific query/view to the DataBean mapping structure using a function code.

| # | Type | Code |
|---|------|------|
| 2 | SET | `mapper = new KKSV0007_KKSV0007OPDBMapper();` // Create mapping cross-object |
| 2 | SET | `inputMap = new HashMap<String, Object>();` |
| 2 | CALL | `mapper.setKKSV000701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // [FUNC_CD_2="2" Check Only] Option Svc Contract Confirmation (card prompt) |
| 2 | CALL | `mapper.setKKSV000702SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // [FUNC_CD_1="1" Check & Register] Option Svc Contract <ISP> Confirmation (PK) |
| 2 | CALL | `mapper.setKKSV000706SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Sub Option Svc Contract List |
| 2 | CALL | `mapper.setKKSV000703SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Sub Option Svc Contract Confirmation (PK) Home Page Cap |
| 2 | CALL | `mapper.setKKSV000704SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Sub Option Svc Contract <ISP> Confirmation (PK) Home Page Cap |
| 2 | CALL | `mapper.setKKSV000705SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Sub Option Svc Contract Confirmation (PK) Access Analysis |
| 2 | CALL | `mapper.setKKSV000709SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3)` // [FUNC_CD_3="3" List Display] Code Name Mgmt Confirmation - Home Page Cap |
| 2 | CALL | `mapper.setKKSV000710SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3)` // Code Name Mgmt Confirmation - Access Analysis |
| 2 | CALL | `mapper.setKKSV000711SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Svc Contract Confirmation (card prompt) |
| 2 | CALL | `mapper.setKKSV000712SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Fee Course_Sub Option Svc List |
| 2 | CALL | `mapper.setKKSV000713SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Change Reservation List |
| 2 | CALL | `mapper.setKKSV000714SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Business Parameter Mgmt Confirmation |
| 2 | CALL | `mapper.setKKSV0007WORK01(paramBean, inputMap, "")` // Execution condition judgment |

### Block 3 — SERVICE INVOCATION (L5801-L5802)

> Invokes the centralized My Homepage Information Lookup service. This is the primary data retrieval operation that queries the database for all configured SC codes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `invokeService("KKSV0007", "KKSV0007OP");` // Service invocation — My Homepage Info Lookup |

### Block 4 — OUTPUT MAPPING (L5804-L5817)

> Extracts results from the service outputMap back into the DataBean for the 8 relevant SC codes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.getKKSV000701SC(bean, outputMap);` // Extract from array (self-retrieval needed) |
| 1 | CALL | `mapper.getKKSV000702SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000703SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000704SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000705SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000711SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000712SC(bean, outputMap);` |
| 1 | CALL | `mapper.getKKSV000714SC(paramBean, outputMap);` // Business Parameter Mgmt |

### Block 5 — NON-FEE JUDGMENT (L5819-L5855)

> If the sub-option service contract status is "Service Provision" (100), invokes the non-fee judgment to calculate the billing end date and charge flag. Otherwise, sets default empty values.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String sbop_svc_kei_stat = bean.sendMessageString(SBOP_SVC_KEI_STAT_0440, DATABEAN_GET_VALUE);` // Sub-option Svc Contract Status (Access Analysis) |
| 1 | SET | `String svc_chrg_endymd = null;` |
| 1 | SET | `String chrg_flg = null;` |
| - | IF | **Block 5.1** `SVC_KEI_STAT_TEIKYO.equals(sbop_svc_kei_stat)` [SVC_KEI_STAT_100="100" Service Provision] (L5826) |

#### Block 5.1 — Service Provision: Non-fee judgment (L5827-L5845)

> The sub-option service is actively providing service. Invoke non-fee judgment to determine if charges apply.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> jdgHiChrgMap = new HashMap<String, Object>();` |
| 1 | SET | `jdgHiChrgMap.put("dslSbtFlg", "3")` // Cancellation type flag: 3 = Sub-option |
| 1 | SET | `jdgHiChrgMap.put("svcKeiChrgStaYmd", bean.sendMessageString(SVC_CHRG_STAYMD, DATABEAN_GET_VALUE))` // Service charge start date |
| 1 | SET | `jdgHiChrgMap.put("subOpSvcUseStaYmd", bean.sendMessageString(SVC_STAYMD_0440, DATABEAN_GET_VALUE))` // Sub-option Svc usage start date |
| 1 | SET | `jdgHiChrgMap.put("subOpSvcUseEndYmd", JCCWebCommon.getOpeDate(this, null))` // Sub-option Svc usage end date (today) |
| 1 | CALL | `JKKWebCommon.jdgHiChrg(jdgHiChrgMap);` // Non-fee judgment call |
| 1 | SET | `svc_chrg_endymd = (String)jdgHiChrgMap.get("svcChrgEndYmd");` |
| 1 | SET | `chrg_flg = (String)jdgHiChrgMap.get("chrgFlg");` |

#### Block 5.2 — Not Service Provision: Default values (L5846-L5848)

> When the sub-option service is NOT currently providing service, set empty defaults.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_chrg_endymd = "";` |
| 1 | SET | `chrg_flg = "0";` |

### Block 6 — STORE NON-FEE RESULTS (L5850-L5851)

> Stores the calculated billing end date and charge flag back to the DataBean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString(SVC_CHRG_ENDYMD, DATABEAN_SET_VALUE, svc_chrg_endymd);` |
| 1 | SET | `bean.sendMessageString(DSLJI_CHRG_FLG, DATABEAN_SET_VALUE, chrg_flg);` |

### Block 7 — CAPACITY PULLDOWN INITIALIZATION (L5853-L5888)

> Reads the capacity pulldown initial/max/increment values from the DataBean, parses them as integers (defaulting to -1 if null/empty), and configures pulldown lists for Home Page Capacity and Access Analysis.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String hp_capa_shk = bean.sendMessageString(SVCTK_BUT_SHK_VALUE, DATABEAN_GET_VALUE);` // Svc provision item initial value |
| 1 | SET | `int hp_capa_shk_val = -1;` |
| 1 | IF | `hp_capa_shk != null && !"".equals(hp_capa_shk)` (L5859) |

#### Block 7.1 — Parse initial value (L5860-L5861)

| # | Type | Code |
|---|------|------|
| 1 | SET | `hp_capa_shk_val = Integer.parseInt(hp_capa_shk);` |

#### Block 7.2 — Parse max value (L5866-L5871)

| # | Type | Code |
|---|------|------|
| 1 | SET | `String hp_capa_max = bean.sendMessageString(SVCTK_BUT_MAX_VALUE, DATABEAN_GET_VALUE);` // Svc provision item max value |
| 1 | SET | `int hp_capa_max_val = -1;` |
| 1 | IF | `hp_capa_max != null && !"".equals(hp_capa_max)` (L5867) |
| 2 | SET | `hp_capa_max_val = Integer.parseInt(hp_capa_max);` |

#### Block 7.3 — Parse increment value (L5873-L5878)

| # | Type | Code |
|---|------|------|
| 1 | SET | `String hp_capa_zougen = bean.sendMessageString(SVCTK_BUT_ZOUGEN_VALUE, DATABEAN_GET_VALUE);` // Svc provision item increment value |
| 1 | SET | `int hp_capa_zougen_val = -1;` |
| 1 | IF | `hp_capa_zougen != null && !"".equals(hp_capa_zougen)` (L5874) |
| 2 | SET | `hp_capa_zougen_val = Integer.parseInt(hp_capa_zougen);` |

#### Block 7.4 — Configure pulldowns (L5880-L5887)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKWebCommon.setPulldownListNoIndex(bean, outputMap, HP_CAPA_INFO, "KKSV000709SC", false, hp_capa_shk_val, hp_capa_max_val, hp_capa_zougen_val);` // Home Page Cap pulldown |
| 1 | CALL | `JKKWebCommon.setPulldownListNoIndex(bean, outputMap, ACCSS_BNSK_INFO, "KKSV000710SC", false);` // Access Analysis pulldown |

### Block 8 — STORE DATA AND GET TRANSACTION DIVISION (L5890-L5898)

> Stores the DataBean data, retrieves the transaction division (change/cancellation/recovery/reservation cancellation) and option service contract status.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `storeGetDataInit();` // DataBean setting processing |
| 1 | SET | `String trandiv = bean.sendMessageString(TRANDIV, DATABEAN_GET_VALUE);` // Transaction division |
| 1 | SET | `String op_svc_kei_stat = bean.sendMessageString(OP_SVC_KEI_STAT, DATABEAN_GET_VALUE);` // Option Svc Contract Status |
| 1 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true);` // Enable update flag |
| 1 | SET | `String[] msgInfo = new String[1];` // Message display buffer |

### Block 9 — TRANSACTION DIVISION BRANCHING (L5899-L6038)

> The core decision logic: determines whether the user is performing a Change, Cancellation, Recovery, or Reservation Cancellation, and validates the option service contract status to decide whether updates are allowed.

#### Block 9.1 — Change branch: `trandiv = "03"` (L5902-L5925) [OP_TRAN_DIV_CHGE]

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trandiv)` [OP_TRAN_DIV_CHGE="03" Change] (L5902) |

##### Block 9.1.1 — Change with valid service status (L5911-L5915)

> The option service status is one of the valid states for change: Acceptance Completed (010), Under Review (020), Contracting Completed (030), or Service Provision (100).

| # | Type | Code |
|---|------|------|
| 2 | IF | `SVC_KEI_STAT_010 \|\| SVC_KEI_STAT_020 \|\| SVC_KEI_STAT_030 \|\| SVC_KEI_STAT_100.equals(op_svc_kei_stat)` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true);` // Enable update |

##### Block 9.1.2 — Change with invalid service status (L5917-L5924)

> The option service status is NOT one of the valid states. Display error message "Change Option Service" and disable update.

| # | Type | Code |
|---|------|------|
| 2 | SET | `String[] str = {"Change", "Option Service"};` |
| 2 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);` |
| 2 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false);` // Disable update |

#### Block 9.2 — Cancellation branch: `trandiv = "04"` (L5927-L5963) [OP_TRAN_DIV_DSL]

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv)` [OP_TRAN_DIV_DSL="04" Cancellation] (L5927) |

##### Block 9.2.1 — URL not set validation (L5932-L5943)

> The home page domain or account is not set. Display URL-related error message "URL Not Set Cancellation" and disable update.

| # | Type | Code |
|---|------|------|
| 2 | SET | `String url_domain = bean.sendMessageString(HPAD_DOMAIN, DATABEAN_GET_VALUE);` // Home Page access domain |
| 2 | SET | `String url_accont = bean.sendMessageString(HPAD_ACCOUNT, DATABEAN_GET_VALUE);` // Home Page access account |
| 2 | IF | `url_domain is null/empty OR url_accont is null/empty` (L5935) |
| 3 | SET | `String[] str = {"URL", "Not Set", "Cancellation"};` |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false);` // Disable update |

##### Block 9.2.2 — Cancellation with valid service status (L5950-L5954)

> URL is set AND service status is one of: Contracting Completed (030), Service Provision (100), or Suspended/Stopped (210).

| # | Type | Code |
|---|------|------|
| 2 | ELSE IF | `SVC_KEI_STAT_030 \|\| SVC_KEI_STAT_100 \|\| SVC_KEI_STAT_210.equals(op_svc_kei_stat)` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true);` // Enable update |

##### Block 9.2.3 — Cancellation with invalid service status (L5955-L5962)

> URL is set BUT service status is NOT any valid state (not Contracting, not Provision, not Suspended). Display error "Cancellation Option Service" and disable update.

| # | Type | Code |
|---|------|------|
| 2 | ELSE | |
| 3 | SET | `String[] str = {"Cancellation", "Option Service"};` |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false);` // Disable update |

#### Block 9.3 — Recovery branch: `trandiv = "05"` (L5965-L6003) [OP_TRAN_DIV_KAIHK]

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv)` [OP_TRAN_DIV_KAIHK="05" Recovery] (L5965) |

> Note: Prior logic (commented out) allowed recovery for all statuses. Current logic (IT1-2013-0000574, v5.00) restricts recovery updates to only when service status is "Cancelled" (910), and displays a fixed message "Recovery Option Service" for others.

##### Block 9.3.1 — Recovery with cancelled status (L5989-L5996)

> The option service contract status is "Cancelled" (910). Allow recovery update and display the recovery confirmation message.

| # | Type | Code |
|---|------|------|
| 2 | IF | `JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat)` [SVC_KEI_STAT_910="910" Cancelled] |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true);` // Enable update |
| 3 | SET | `msgInfo[0] = MSGSTRING[2];` // "My Homepage Information Recovery" |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);` |

##### Block 9.3.2 — Recovery with non-cancelled status (L5997-L6002)

> The option service contract status is NOT "Cancelled". Display error "Recovery Option Service" and disable update.

| # | Type | Code |
|---|------|------|
| 2 | ELSE | |
| 3 | SET | `String[] str = {"Recovery", "Option Service"};` |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false);` // Disable update |

#### Block 9.4 — Reservation Cancellation branch: `trandiv = "06"` (L6006-L6026) [OP_TRAN_DIV_RSV_CL]

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv)` [OP_TRAN_DIV_RSV_CL="06" Reservation Cancellation] (L6006) |

##### Block 9.4.1 — Reservation cancellation with valid service status (L6008-L6015)

> The option service status is one of: Acceptance Completed (010), Under Review (020), Contracting Completed (030), or Service Provision (100).

| # | Type | Code |
|---|------|------|
| 2 | IF | `SVC_KEI_STAT_010 \|\| SVC_KEI_STAT_020 \|\| SVC_KEI_STAT_030 \|\| SVC_KEI_STAT_100.equals(op_svc_kei_stat)` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true);` // Enable update |
| 3 | SET | `msgInfo[0] = MSGSTRING[3];` // "My Homepage Information Reservation Cancellation" |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);` |

##### Block 9.4.2 — Reservation cancellation with invalid service status (L6016-L6025)

> The option service status is NOT Acceptance, Review, Contracting, or Provision (e.g., Suspended, Cancelled). Display error "Reservation Cancellation Option Service" and disable update.

| # | Type | Code |
|---|------|------|
| 2 | ELSE | |
| 3 | SET | `String[] str = {"Reservation Cancellation", "Option Service"};` |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);` |
| 3 | SET | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false);` // Disable update |

### Block 10 — LOG AND RETURN (L6028-L6032)

> Dumps the DataBean state to the log and returns the result flag.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);` // DataBean log output |
| 1 | RETURN | `return result;` // Always returns true |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `op_svc_kei_stat` | Field | Option service contract status — the current state of the option service agreement (e.g., 010=Acceptance, 100=Provision, 910=Cancelled) |
| `trandiv` | Field | Transaction division — identifies the type of operation being performed (03=Change, 04=Cancellation, 05=Recovery, 06=Reservation Cancellation) |
| `sbop_svc_kei_stat` | Field | Sub-option service contract status (for Access Analysis) — tracks whether the sub-option service is actively providing service |
| `chrg_flg` | Field | Charge flag — indicates whether charges apply (set by non-fee judgment) |
| `svc_chrg_endymd` | Field | Service charge end date — the calculated date when billing ends, determined by the non-fee judgment service |
| `CHG_KAHI_FLG` | Field | Change/Update enable flag — boolean indicating whether the current screen allows modification |
| `dslSbtFlg` | Field | DSL sub-option flag — set to "3" to indicate sub-option type in the non-fee judgment |
| `jkdHiChrg` | Method | Non-fee judgment service — determines whether charges apply based on service status, charge start date, and usage dates |
| `hp_capa_shk` | Field | Home page capacity initial value — the minimum/default capacity for the pulldown |
| `hp_capa_max` | Field | Home page capacity maximum value — the upper limit for the pulldown |
| `hp_capa_zougen` | Field | Home page capacity increment value — the step size for the pulldown |
| `SVC_KEI_STAT_TEIKYO` | Constant | Service Provision status — alias for SVC_KEI_STAT_100 ("100"), meaning the service is actively being provided |
| `OP_TRAN_DIV_CHGE` | Constant | Transaction division = "03" — Change (Henko) operation for option service contract |
| `OP_TRAN_DIV_DSL` | Constant | Transaction division = "04" — Cancellation (Kaijo) operation for option service contract |
| `OP_TRAN_DIV_KAIHK` | Constant | Transaction division = "05" — Recovery (Kaifuku) operation for option service contract |
| `OP_TRAN_DIV_RSV_CL` | Constant | Transaction division = "06" — Reservation Cancellation (Yoyaku Torikeshi) operation |
| `SVC_KEI_STAT_010` | Constant | Service status "010" — Acceptance Completed (Shojuku Jyo) |
| `SVC_KEI_STAT_020` | Constant | Service status "020" — Under Review (Shoufuku Jyo) |
| `SVC_KEI_STAT_030` | Constant | Service status "030" — Contracting Completed (Ketsuzumi) |
| `SVC_KEI_STAT_100` | Constant | Service status "100" — Service Provision Active (Teikyo Chu) |
| `SVC_KEI_STAT_210` | Constant | Service status "210" — Suspended/Stopped (Shuushi-Chudan Chu) |
| `SVC_KEI_STAT_910` | Constant | Service status "910" — Cancellation Completed (Kaisho) |
| KKSV0007 | Screen/Module | My Homepage Information Lookup Screen — displays all service contract and option service details |
| KKSV0007OP | Operation | My Homepage Information Lookup Operation — backend processing for the lookup screen |
| My Homepage (My HP) | Business term | My Homepage — the customer's personalized web portal page on K-Opticom's online service platform |
| Option Service | Business term | Additional services bundled with the base eo Hikari internet service (e.g., URL, web ID, access analysis) |
| Sub-option Service | Business term | Secondary services attached to an option service, such as Home Page Capacity and Access Analysis |
| ISP | Business term | Internet Service Provider — the entity providing internet connectivity |
| Home Page Capacity | Business term | The storage/capacity allocation for the customer's My Homepage web page |
| Access Analysis | Business term | Web traffic analysis data for the customer's My Homepage |
| Card prompt | Business term | A UI pattern where data is displayed in a card/summary format rather than a form |
| PK | Business term | Primary Key — data retrieved and displayed by primary key for verification |
| FUNC_CD_1 | Constant | Function code "1" — Check & Register (allows viewing and editing) |
| FUNC_CD_2 | Constant | Function code "2" — Check Only (read-only verification) |
| FUNC_CD_3 | Constant | Function code "3" — List Display (shows lists/tables) |
| `jdgHiChrgMap` | Local variable | Non-fee judgment input/output map — carries service dates and flags to the judgment service |
| `msgInfo` | Local variable | Message info buffer array — used to pass dynamic message strings to setMessageInfo calls |
| `MSGSTRING` | Constant | Array of display messages: [0]="My Homepage Information Change", [1]="Cancellation", [2]="Recovery", [3]="Reservation Cancellation" |
| EKB1510_KW | Message ID | Error message key — "Operation not available" type message |
| EKB1040_JW | Message ID | Error message key — URL not set type message |
| EKB0370__I | Message ID | Info message key — update confirmation screen message |
