
# Business Logic — KKW02504SFLogic.actionInit() [277 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02504SF.KKW02504SFLogic` |
| Layer | Controller (Web Logic / Screen Logic — UI entry point within the webview package) |
| Module | `KKW02504SF` (Package: `eo.web.webview.KKW02504SF`) |

## 1. Role

### KKW02504SFLogic.actionInit()

This method is the **initial display processing** (初期表示処理) for the My Homepage (Myホームペーじ) information screen within the K-Opticom online service management system. It serves as the primary entry point when a customer service operator opens the My Homepage details screen, preparing all the data required for display.

The method performs **three core business operations**: (1) It maps transition source information (遷移元情報) into the DataBean so the downstream service layer has context about where the user came from. (2) It invokes the `KKSV0007` service (KKSV0007OP) which handles the My Homepage information query, and performs both input-side and output-side mapping of over 15 distinct data areas — including option service contracts, ISP agreements, subscription service agreements, homepage capacity, access analysis, code name management, service costs, discrepancy agreements, and business parameter management. (3) It populates the DataBean with service contract status information for screen display, including conditional charge determination logic when the service is currently in "service provision in progress" (サービス提供中) status.

The method also implements a **processing area dispatch pattern** (処理区分判定) based on the operation type (`trandiv`), which determines whether the user is performing a change (変更), cancellation (解約), recovery (回復), or reservation cancellation (予約取消). Each processing area triggers different UI behavior: whether the update confirm screen is enabled (更新可能フラグ), what error messages to display, and whether URL-related fields are validated. This is a shared screen-init method called by `actionClear` (when the screen needs to refresh its state), making it a critical entry point for all My Homepage screen interactions.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["actionInit Entry"])
    END_NODE(["Return true"])

    START --> A["Get Screen Info via JCCWebCommon.getScreenInfo"]
    A --> B["Get Service Form Bean X31SDataBeanAccess"]
    B --> C["setDataInit DataBean Initialization"]
    C --> D["Create KKSV0007 Mapper"]
    D --> E["Initialize inputMap HashMap"]

    E --> E1["setKKSV000701SC Option Contract Agreement Cache FUNC_CD_2"]
    E1 --> E2["setKKSV000702SC Option ISP Agreement PK FUNC_CD_1"]
    E2 --> E3["setKKSV000706SC Option Contract Agreement FUNC_CD_1"]
    E3 --> E4["setKKSV000703SC SubOp Agreement List PK HomePageCapa FUNC_CD_1"]
    E4 --> E5["setKKSV000704SC SubOp ISP Agreement PK HomePageCapa FUNC_CD_1"]
    E5 --> E6["setKKSV000705SC SubOp Agreement List AccessAnalysis FUNC_CD_1"]
    E6 --> E7["setKKSV000709SC CodeName mgmt Agreement List HomePageCapa FUNC_CD_3"]
    E7 --> E8["setKKSV000710SC CodeName mgmt Agreement List AccessAnalysis FUNC_CD_3"]
    E8 --> E9["setKKSV000711SC Service Contract Agreement Cache FUNC_CD_2"]
    E9 --> E10["setKKSV000712SC Service Cost SubOp Service List FUNC_CD_1"]
    E10 --> E11["setKKSV000713SC Discrepancy Agreement List FUNC_CD_1"]
    E11 --> E12["setKKSV000714SC Business Parameter mgmt Agreement FUNC_CD_1"]
    E12 --> E13["setKKSV0007WORK01 Work Table"]
    E13 --> F["invokeService KKSV0007 KKSV0007OP"]

    F --> G["Down Mapping getKKSV000701SC"]
    G --> H["Down Mapping getKKSV000702SC"]
    H --> I["Down Mapping getKKSV000703SC"]
    I --> J["Down Mapping getKKSV000704SC"]
    J --> K["Down Mapping getKKSV000705SC"]
    K --> L["Down Mapping getKKSV000711SC"]
    L --> M["Down Mapping getKKSV000712SC"]
    M --> N["Down Mapping getKKSV000714SC Business Parameter"]

    N --> P["Get sbop_svc_kei_stat from DataBean"]
    P --> Q{"sbop_svc_kei_stat equals SVC_KEI_STAT_TEIKYO 100?"}

    Q -- "true (SVC_KEI_STAT_100 - Service Provision in Progress)" --> R["Create jdgHiChrgMap"]
    R --> R1["Put dslSbtFlg SubOp = 3"]
    R1 --> R2["Put svcKeiChrgStaYmd from DataBean"]
    R2 --> R3["Put subOpSvcUseStaYmd from DataBean"]
    R3 --> R4["Put subOpSvcUseEndYmd getOpeDate current date"]
    R4 --> R5["JKKWebCommon.jdgHiChrg charge determination"]
    R5 --> R6["Extract svc_chrg_endymd and chrg_flg from result"]

    Q -- "false" --> S["svc_chrg_endymd empty chrg_flg 0"]
    S --> T["Store svc_chrg_endymd chrg_flg to DataBean"]

    R6 --> U["Get Capacity Pulldown Values"]
    T --> U

    U --> U1["Get hp_capa_shk initial value"]
    U1 --> U2["Get hp_capa_max max value"]
    U2 --> U3["Get hp_capa_zougen增减 value"]
    U3 --> U4["JKKWebCommon.setPulldownListNoIndex HP Capacity"]
    U4 --> U5["JKKWebCommon.setPulldownListNoIndex Access Analysis"]

    U5 --> V["storeGetDataInit DataBean Storage"]
    V --> W["Get trandiv from DataBean"]
    W --> X["Get op_svc_kei_stat from DataBean"]
    X --> Y["Set CHG_KAHI_FLG true"]

    Y --> Z{"trandiv Check"}

    Z -- "OP_TRAN_DIV_CHGE 03 Change" --> Z1{"op_svc_kei_stat 010/020/030/100?"}
    Z1 -- "true Accepted/Review/Contracted/In-Progress" --> Z2["Set CHG_KAHI_FLG true"]
    Z1 -- "false" --> Z3["Set setMessageInfo update unavailable Set CHG_KAHI_FLG false"]

    Z -- "OP_TRAN_DIV_DSL 04 Cancellation" --> Z4{"URL domain and account set?"}
    Z4 -- "null or empty" --> Z5["Set setMessageInfo URL not set Set CHG_KAHI_FLG false"]
    Z4 -- "not empty" --> Z6{"op_svc_kei_stat 030/100/210?"}
    Z6 -- "true Contracted/In-Progress/Suspended" --> Z7["Set CHG_KAHI_FLG true"]
    Z6 -- "false" --> Z8["Set setMessageInfo cancel unavailable Set CHG_KAHI_FLG false"]

    Z -- "OP_TRAN_DIV_KAIHK 05 Recovery" --> Z9{"op_svc_kei_stat 910?"}
    Z9 -- "true Canceled" --> Z10["Set CHG_KAHI_FLG true Set confirmation message"]
    Z9 -- "false" --> Z11["Set setMessageInfo recovery unavailable Set CHG_KAHI_FLG false"]

    Z -- "OP_TRAN_DIV_RSV_CL 06 Reservation Cancel" --> Z12{"op_svc_kei_stat 010/020/030/100?"}
    Z12 -- "true Accepted/Review/Contracted/In-Progress" --> Z13["Set CHG_KAHI_FLG true Set confirmation message"]
    Z12 -- "false" --> Z14["Set setMessageInfo reservation cancel unavailable Set CHG_KAHI_FLG false"]

    Z3 --> END_NODE
    Z2 --> END_NODE
    Z5 --> END_NODE
    Z7 --> END_NODE
    Z8 --> END_NODE
    Z10 --> END_NODE
    Z11 --> END_NODE
    Z13 --> END_NODE
    Z14 --> END_NODE

    END_NODE --> END_NODE(["Return true"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none — instance method) | - | This method is called without explicit parameters. It derives all context from the inherited `X31SDataBeanAccess` (service form bean), which carries screen data from the transition source and the session. |
| - | `this` (implicit) | `KKW02504SFLogic` instance | The method reads screen context and configuration via `JCCWebCommon.getScreenInfo(this)` and passes itself as the context object to utility calls. |
| - | `super.getServiceFormBean()` | `X31SDataBeanAccess` | The service form bean from the parent class, carrying all DataBean field values including service contract status, transition info, and pulldown parameters. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getScreenInfo` | JCCWebCommon | - | Retrieves screen transition information (遷移元情報) into the logic instance for downstream service mapping |
| CALL | `setDataInit` | KKW02504SFLogic | - | Initializes DataBean with transition source information (DataBean設定処理) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000701SC` | KKSV0007OPDBMapper | - | Input mapping for Option Service Contract Agreement confirmation screen (Cache mode, FUNC_CD_2) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000702SC` | KKSV0007OPDBMapper | - | Input mapping for Option ISP Agreement confirmation screen (Primary Key mode, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000703SC` | KKSV0007OPDBMapper | - | Input mapping for Subscription Service Contract Agreement List (PK + HomePage Capacity, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000704SC` | KKSV0007OPDBMapper | - | Input mapping for Subscription Service ISP Agreement (PK + HomePage Capacity, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000705SC` | KKSV0007OPDBMapper | - | Input mapping for Subscription Service Agreement List (Access Analysis, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000706SC` | KKSV0007OPDBMapper | - | Input mapping for Option Service Contract Agreement (List mode, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000709SC` | KKSV0007OPDBMapper | - | Input mapping for Code Name Management Agreement List (HomePage Capacity, FUNC_CD_3) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000710SC` | KKSV0007OPDBMapper | - | Input mapping for Code Name Management Agreement List (Access Analysis, FUNC_CD_3) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000711SC` | KKSV0007OPDBMapper | - | Input mapping for Service Contract Agreement confirmation screen (Cache mode, FUNC_CD_2) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000712SC` | KKSV0007OPDBMapper | - | Input mapping for Service Cost Subscription Service List (List mode, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000713SC` | KKSV0007OPDBMapper | - | Input mapping for Discrepancy Agreement List (List mode, FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV000714SC` | KKSV0007OPDBMapper | - | Input mapping for Business Parameter Management Agreement (FUNC_CD_1) |
| R | `KKSV0007_KKSV0007OPDBMapper.setKKSV0007WORK01` | KKSV0007OPDBMapper | - | Input mapping for Work table used in processing conditions (処理条件判定用) |
| CALL | `invokeService` | KKW02504SFLogic | - | Invokes the KKSV0007/KKSV0007OP service to perform the actual My Homepage data query |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000701SC` | KKSV0007OPDBMapper | - | Output mapping: Option Service Contract Agreement data from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000702SC` | KKSV0007OPDBMapper | - | Output mapping: Option ISP Agreement data from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000703SC` | KKSV0007OPDBMapper | - | Output mapping: Subscription Service Agreement List from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000704SC` | KKSV0007OPDBMapper | - | Output mapping: Subscription Service ISP Agreement from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000705SC` | KKSV0007OPDBMapper | - | Output mapping: Subscription Service Agreement List Access Analysis from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000711SC` | KKSV0007OPDBMapper | - | Output mapping: Service Contract Agreement from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000712SC` | KKSV0007OPDBMapper | - | Output mapping: Service Cost Subscription Service List from result map to DataBean |
| R | `KKSV0007_KKSV0007OPDBMapper.getKKSV000714SC` | KKSV0007OPDBMapper | - | Output mapping: Business Parameter Management from result map to DataBean |
| R | `JCCWebCommon.getOpeDate` | JCCWebCommon | - | Retrieves the current operation date for use in charge determination end date |
| CALL | `JKKWebCommon.jdgHiChrg` | JKKWebCommon | - | Charges determination service — determines whether a cancellation fee applies based on subscription service contract status and dates |
| - | `JKKWebCommon.setPulldownListNoIndex` | JKKWebCommon | - | Sets pulldown list display options for homepage capacity and access analysis |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Reads/writes DataBean string values for service status, dates, capacity, URL fields, and process division |
| - | `OneStopDataBeanAccess.sendMessageBoolean` | OneStopDataBeanAccess | - | Sets DataBean boolean value for the update available flag (更新可能フラグ) |
| - | `JCCWebCommon.setMessageInfo` | JCCWebCommon | - | Sets error/information messages for screen display based on processing area and contract status |
| CALL | `storeGetDataInit` | KKW02504SFLogic | - | Final DataBean storage processing to ensure all derived data is persisted to the DataBean |
| - | `JSYwebLog.println` | JSYwebLog | - | DataBean dump logging for debugging (DataBean出力) |

### How to classify:
- **R** (Read): Mapping methods (set/get KKSV0007xxSC), service query invocations, date retrieval, DataBean value reads
- **CALL** (invoke): `invokeService`, `setDataInit`, `storeGetDataInit`, `jdgHiChrg` — business service invocations that delegate to deeper layers

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | KKW02504SFLogic | `actionClear` -> `actionInit` | `getScreenInfo [R]`, `jdgHiChrg [CALL]`, `setMessageInfo [-]`, `setPulldownListNoIndex [-]`, `getOpeDate [R]` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize local variables (L209)

| # | Type | Code |
|---|------|------|
| 1 | SET | `result = true` // Default result flag |
| 2 | SET | `mapper = null` // DataBean-BP mapping object (DataBean-BPマッピングクラスオブジェクト) |

**Block 2** — [CALL] Get screen info and obtain service form bean (L212–L218)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JCCWebCommon.getScreenInfo(this)` // Get screen information and set to service form bean (画面情報を取得し、サービスフォームBeanに設定) |
| 2 | CALL | `bean = super.getServiceFormBean()` // Get DataBean access from service form bean (サービスフォームBeanのDataBeanアクセスを取得) |
| 3 | SET | `paramBean = {bean}` // Wrap single bean in array for mapper calls |

**Block 3** — [CALL] DataBean initialization (L221)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setDataInit()` // DataBean set processing (DataBean設定処理) |

**Block 4** — [CALL] Upper mapping (top-level) — Service item to DataBean item mapping (L224–L260)

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper = new KKSV0007_KKSV0007OPDBMapper()` // Create mapper instance |
| 2 | SET | `inputMap = new HashMap<String, Object>()` // Initialize input mapping map |
| 3 | CALL | `mapper.setKKSV000701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Option Service Contract Agreement confirmation screen: confirmation screen (Cache) (オプションサービス契約同意照会：同意照会（カレント）FUNC_CD_2="2" |
| 4 | CALL | `mapper.setKKSV000702SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Option Service Contract <ISP> Agreement: confirmation screen (PK) (オプションサービス契約＜ISP＞同意照会：同意照会（PK）FUNC_CD_1="1" |
| 5 | CALL | `mapper.setKKSV000706SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Option Service Contract Agreement FUNC_CD_1="1" |
| 6 | CALL | `mapper.setKKSV000703SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // SubOp Service Contract Agreement List: confirmation screen (PK) HomePage capacity (サブオプションサービス契約一覧照会：同意照会（PK）ホームペーじ容量FUNC_CD_1="1" |
| 7 | CALL | `mapper.setKKSV000704SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // SubOp Service Contract <ISP> Agreement: confirmation screen (PK) HomePage capacity (サブオプションサービス契約＜ISP＞同意照会：同意照会（PK）ホームペーじ容量FUNC_CD_1="1" |
| 8 | CALL | `mapper.setKKSV000705SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // SubOp Service Contract Agreement List: confirmation screen (PK) Access analysis (サブオプションサービス契約一覧照会：同意照会（PK）アクセス分析FUNC_CD_1="1" |
| 9 | CALL | `mapper.setKKSV000709SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3)` // Code Name Management Agreement List: Code Name Management List HomePage capacity (コード名称管理同意照会：コード名称管理一覧照会 ホームペーじ容量FUNC_CD_3="3" |
| 10 | CALL | `mapper.setKKSV000710SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3)` // Code Name Management Agreement List: Code Name Management List Access analysis (コード名称管理同意照会：コード名称管理一覧照会 アクセス分析FUNC_CD_3="3" |
| 11 | CALL | `mapper.setKKSV000711SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Service Contract Agreement: confirmation screen (Cache) (サービス契約同意照会：同意照会（カレント）FUNC_CD_2="2" |
| 12 | CALL | `mapper.setKKSV000712SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Service Cost SubOp Service List: confirmation screen (料金コース_サブオプションサービス一覧照会：一覧照会FUNC_CD_1="1" |
| 13 | CALL | `mapper.setKKSV000713SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Discrepancy Agreement List: confirmation screen (異動予約一覧照会：一覧照会FUNC_CD_1="1" |
| 14 | CALL | `mapper.setKKSV000714SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Business Parameter Management Agreement: confirmation screen (業務パラメータ管理同意照会：同意照会FUNC_CD_1="1" |
| 15 | CALL | `mapper.setKKSV0007WORK01(paramBean, inputMap, "")` // Processing condition determination (処理条件判定用) |

**Block 5** — [CALL] Service invocation (L263)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `invokeService("KKSV0007", "KKSV0007OP")` // Service call processing (サービス呼び出し処理) |

**Block 6** — [CALL] Lower mapping (output) — Service item to DataBean item mapping (L266–L274)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.getKKSV000701SC(bean, outputMap)` // Down mapping: values stored in Array need manual extraction (下りマッピング処理：取得値がArrayに格納されているため、自力で取り出す必要がある) |
| 2 | CALL | `mapper.getKKSV000702SC(bean, outputMap)` |
| 3 | CALL | `mapper.getKKSV000703SC(bean, outputMap)` |
| 4 | CALL | `mapper.getKKSV000704SC(bean, outputMap)` |
| 5 | CALL | `mapper.getKKSV000705SC(bean, outputMap)` |
| 6 | CALL | `mapper.getKKSV000711SC(bean, outputMap)` |
| 7 | CALL | `mapper.getKKSV000712SC(bean, outputMap)` |
| 8 | CALL | `mapper.getKKSV000714SC(paramBean, outputMap)` // Business Parameter Management Agreement (業務パラメータ管理同意照会) |

**Block 7** — [CALL] Charge determination processing (L277–L312)

> SubOp Service Contract status is "Service Provision in Progress" — call non-charge determination item processing (サブオプションサービス契約ステータスがサービス提供中の場合、非課金判定部品を呼び出すす)

| # | Type | Code |
|---|------|------|
| 1 | SET | `sbop_svc_kei_stat = bean.sendMessageString(SBOP_SVC_KEI_STAT_0440, DATABEAN_GET_VALUE)` // Get SubOp service contract status (サブオプションサービス契約ステータス（サブオプションサービス契約：アクセス分析用）) |
| 2 | SET | `svc_chrg_endymd = null` // Service charge end date (サービス課金終了日) |
| 3 | SET | `chrg_flg = null` // Charge flag (課金フラグ) |

**Block 7.1** — [IF] `SVC_KEI_STAT_TEIKYO.equals(sbop_svc_kei_stat)` [SVC_KEI_STAT_TEIKYO = SVC_KEI_STAT_100 = "100" (Service Provision in Progress)] (L281)

> Service status is "in progress" — invoke charge determination (サービス提供中の場合、非課金判定部品を呼び出す)

| # | Type | Code |
|---|------|------|
| 1 | SET | `jdgHiChrgMap = new HashMap<String, Object>()` // Create charge determination map |
| 2 | SET | `jdgHiChrgMap.put("dslSbtFlg", "3")` // Cancellation type flag 3: SubOp (解約種別フラグ 3:サブオプション) |
| 3 | SET | `jdgHiChrgMap.put("svcKeiChrgStaYmd", bean.sendMessageString(SVC_CHRG_STAYMD, DATABEAN_GET_VALUE))` // Service charge start date (サービス課金開始日) |
| 4 | SET | `jdgHiChrgMap.put("subOpSvcUseStaYmd", bean.sendMessageString(SVC_STAYMD_0440, DATABEAN_GET_VALUE))` // SubOp service usage start date (サブオプションサービス利用開始日) |
| 5 | SET | `jdgHiChrgMap.put("subOpSvcUseEndYmd", JCCWebCommon.getOpeDate(this, null))` // SubOp service usage end date — current operation date (サブオプションサービス利用終了日) |
| 6 | CALL | `JKKWebCommon.jdgHiChrg(jdgHiChrgMap)` // Charge determination item invocation (非課金判定部品呼び出し) |
| 7 | SET | `svc_chrg_endymd = (String)jdgHiChrgMap.get("svcChrgEndYmd")` // Service charge end date from result (サービス課金終了日) |
| 8 | SET | `chrg_flg = (String)jdgHiChrgMap.get("chrgFlg")` // Charge flag from result (課金フラグ) |

**Block 7.2** — [ELSE] Service status is not "in progress" (L312)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_chrg_endymd = ""` // Empty service charge end date |
| 2 | SET | `chrg_flg = "0"` // No charge flag |

**Block 8** — [CALL] Store charge results and capacity pulldown initialization (L318–L351)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bean.sendMessageString(SVC_CHRG_ENDYMD, DATABEAN_SET_VALUE, svc_chrg_endymd)` // Store service charge end date to DataBean |
| 2 | EXEC | `bean.sendMessageString(DSLJI_CHRG_FLG, DATABEAN_SET_VALUE, chrg_flg)` // Store cancellation time charge flag to DataBean |
| 3 | SET | `hp_capa_shk = bean.sendMessageString(SVCTK_BUT_SHK_VALUE, DATABEAN_GET_VALUE)` // Get service item initial value (サービス提供物初期値) |
| 4 | SET | `hp_capa_shk_val = Integer.parseInt(hp_capa_shk)` // Parse to int, default -1 |
| 5 | SET | `hp_capa_max = bean.sendMessageString(SVCTK_BUT_MAX_VALUE, DATABEAN_GET_VALUE)` // Get service item max value (サービス提供物最大値) |
| 6 | SET | `hp_capa_max_val = Integer.parseInt(hp_capa_max)` // Parse to int, default -1 |
| 7 | SET | `hp_capa_zougen = bean.sendMessageString(SVCTK_BUT_ZOUGEN_VALUE, DATABEAN_GET_VALUE)` // Get service item增减 value (サービス提供物増減値) |
| 8 | SET | `hp_capa_zougen_val = Integer.parseInt(hp_capa_zougen)` // Parse to int, default -1 |
| 9 | CALL | `JKKWebCommon.setPulldownListNoIndex(bean, outputMap, HP_CAPA_INFO, "KKSV000709SC", false, hp_capa_shk_val, hp_capa_max_val, hp_capa_zougen_val)` // Set homepage capacity pulldown |
| 10 | CALL | `JKKWebCommon.setPulldownListNoIndex(bean, outputMap, ACCSS_BNSK_INFO, "KKSV000710SC", false)` // Set access analysis pulldown |

**Block 9** — [CALL] DataBean storage, get processing area and service status (L354–L364)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `storeGetDataInit()` // DataBean set processing (DataBean設定処理) |
| 2 | SET | `trandiv = bean.sendMessageString(TRANDIV, DATABEAN_GET_VALUE)` // Get process division (処理区分) |
| 3 | SET | `op_svc_kei_stat = bean.sendMessageString(OP_SVC_KEI_STAT, DATABEAN_GET_VALUE)` // Get option service contract status (オプションサービス契約ステータス) |
| 4 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true)` // Set update state enable flag to true (更新状態可否フラグを更新可能にする) |
| 5 | SET | `msgInfo = new String[1]` // Message display array (メッセージ表示用) |

**Block 10** — [IF/ELSE-IF CHAIN] Process area dispatch based on `trandiv` (L367–L477)

The main control flow branches on the **operation type** (処理区分). Each branch determines whether the update confirm screen is enabled and displays appropriate messages.

**Block 10.1** — [IF] `JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trandiv)` [OP_TRAN_DIV_CHGE = "03" (Change/変更)] (L371)

| # | Type | Code |
|---|------|------|
| 1 | SET | `str = {"変更", "オプションサービス"}` // Error message args (comment in Japanese) |

**Block 10.1.1** — [IF] `op_svc_kei_stat` equals 010/020/030/100 [SVC_KEI_STAT_010="010" / SVC_KEI_STAT_020="020" / SVC_KEI_STAT_030="030" / SVC_KEI_STAT_100="100"] (L377)

> Check accepted/review/contracted/in-progress status (SVC_KEI_STAT_100 was originally the only check, expanded per IT2-2012-0001756)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true)` // Enable update |

**Block 10.1.2** — [ELSE] Status does not match accepted/review/contracted/in-progress (L384)

> Option Service Contract status is not "Service Provision in Progress" — display message and disable update (オプションサービス契約ステータスが"サービス提供中"でない場合、以下のメッセージを表示し更新不可にする)

| # | Type | Code |
|---|------|------|
| 1 | SET | `str = {"変更", "オプションサービス"}` |
| 2 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str)` |
| 3 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false)` // Disable update |

**Block 10.2** — [ELSE-IF] `JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv)` [OP_TRAN_DIV_DSL = "04" (Cancellation/解約)] (L393)

**Block 10.2.1** — [IF] URL domain and account are not set [null or empty] (L398)

> URL is not set — display message and disable update (URLが設定されていない場合、以下のメッセージを表示し更新不可にする)

| # | Type | Code |
|---|------|------|
| 1 | SET | `url_domain = bean.sendMessageString(HPAD_DOMAIN, DATABEAN_GET_VALUE)` // Homepage access domain (ホームペーじアクセスドメイン) |
| 2 | SET | `url_accont = bean.sendMessageString(HPAD_ACCOUNT, DATABEAN_GET_VALUE)` // Homepage access account (ホームペーじアクセスアカウント) |
| 3 | SET | `str = {"URL", "未設定", "解約"}` |
| 4 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str)` |
| 5 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false)` // Disable update |

**Block 10.2.2** — [ELSE-IF] `op_svc_kei_stat` equals 030/100/210 [SVC_KEI_STAT_030="030" / SVC_KEI_STAT_100="100" / SVC_KEI_STAT_210="210"] (L407)

> Contracted/In-Progress/Suspended status — enable update

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true)` // Enable update |

**Block 10.2.3** — [ELSE] Status does not match contracted/in-progress/suspended (L413)

> Option Service Contract status is neither "Accepted", "Under Review", "Contracted", "Service Provision in Progress" nor "Suspended/Cut off" — display message and disable update (オプションサービス契約ステータスが"締結済","サービス提供中","休止・中断中"のいずれでもない場合、以下のメッセージを表示し更新不可にする)

| # | Type | Code |
|---|------|------|
| 1 | SET | `str = {"解約", "オプションサービス"}` |
| 2 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str)` |
| 3 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false)` // Disable update |

**Block 10.3** — [ELSE-IF] `JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv)` [OP_TRAN_DIV_KAIHK = "05" (Recovery/回復)] (L420)

> Note: Prior code (IT2-2012-0002157) that disabled recovery for My Homepage operations was deleted in v5.00 (IT1-2013-0000574). The current logic only checks for status 910 (Canceled).

| # | Type | Code |
|---|------|------|
| 1 | SET | `MSGSTRING[2] = "Myホームペーじ情報の回復"` // Recovery message (from l150 constant array) |

**Block 10.3.1** — [IF] `JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat)` [SVC_KEI_STAT_910 = "910" (Canceled/解約済)] (L443)

> My Homepage cannot be recovered via My Homepage operations — but if status is 910, enable update and show confirmation message (Myホームペーじオプションは回復できない — but this comment was deleted; current code enables update for status 910)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true)` // Enable update |
| 2 | SET | `msgInfo[0] = MSGSTRING[2]` // "Myホームペーじ情報の回復" |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo)` // Show update confirmation message (更新確認画面のメッセージ出力) |

**Block 10.3.2** — [ELSE] Status is not "Canceled" (L449)

> Option Service Contract status is not "Canceled" — display message and disable update (オプションサービス契約ステータスが"解約済"でない場合、以下のメッセージを表示し更新不可にする)

| # | Type | Code |
|---|------|------|
| 1 | SET | `str = {"回復", "オプションサービス"}` |
| 2 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str)` |
| 3 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false)` // Disable update |

**Block 10.4** — [ELSE-IF] `JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv)` [OP_TRAN_DIV_RSV_CL = "06" (Reservation Cancel/予約取消)] (L460)

**Block 10.4.1** — [IF] `op_svc_kei_stat` equals 010/020/030/100 [SVC_KEI_STAT_010="010" / SVC_KEI_STAT_020="020" / SVC_KEI_STAT_030="030" / SVC_KEI_STAT_100="100"] (L464)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, true)` // Enable update |
| 2 | SET | `msgInfo[0] = MSGSTRING[3]` // "Myホームペーじ情報の予約取消" |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo)` // Show update confirmation message |

**Block 10.4.2** — [ELSE] Status does not match accepted/review/contracted/in-progress (L471)

> Option Service Contract status is none of "Accepted", "Under Review", "Contracted", "Service Provision in Progress" — display message and disable update (オプションサービス契約ステータスが"受付済","照会済","締結済","サービス提供中"のいずれでもない場合、以下のメッセージを表示し更新不可にする)

| # | Type | Code |
|---|------|------|
| 1 | SET | `str = {"予約取消", "オプションサービス"}` |
| 2 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str)` |
| 3 | EXEC | `paramBean[0].sendMessageBoolean(CHG_KAHI_FLG, DATABEAN_SET_VALUE, false)` // Disable update |

**Block 11** — [CALL] DataBean dump logging and return (L479–L482)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null)` // DataBean output (DataBeanをログ出力) |
| 2 | RETURN | `return result` // Returns true (正常) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `actionInit` | Method | Initial display processing — prepares all data for the My Homepage information screen on first load |
| `actionClear` | Method | Screen clear processing that resets state and re-invokes `actionInit` |
| `SBOP_SVC_KEI_STAT_0440` | Field | SubOp service contract status (SubOp contract for access analysis) — DataBean key for retrieving subscription service status |
| `SVC_KEI_STAT_010` | Constant | Service detail status "010" — Accepted (受付済) — order received, awaiting review |
| `SVC_KEI_STAT_020` | Constant | Service detail status "020" — Under Review (照会済) — review completed |
| `SVC_KEI_STAT_030` | Constant | Service detail status "030" — Contracted (締結済) — contract signed |
| `SVC_KEI_STAT_100` | Constant | Service detail status "100" — Service Provision In Progress (サービス提供中) — active service |
| `SVC_KEI_STAT_210` | Constant | Service detail status "210" — Suspended/Cut off (休止・中断中) — temporarily inactive |
| `SVC_KEI_STAT_910` | Constant | Service detail status "910" — Canceled (解約済) — contract terminated |
| `SVC_KEI_STAT_TEIKYO` | Constant | Alias for SVC_KEI_STAT_100 = "100" (Service Provision In Progress) |
| `OP_TRAN_DIV_CHGE` | Constant | Processing division "03" — Change (変更) — user is modifying data |
| `OP_TRAN_DIV_DSL` | Constant | Processing division "04" — Cancellation (解約) — user is canceling |
| `OP_TRAN_DIV_KAIHK` | Constant | Processing division "05" — Recovery (回復) — user is recovering a canceled contract |
| `OP_TRAN_DIV_RSV_CL` | Constant | Processing division "06" — Reservation Cancel (予約取消) — user is canceling a reservation |
| `FUNC_CD_1` | Constant | Function code "1" — Standard mode (typically list/PK lookup) |
| `FUNC_CD_2` | Constant | Function code "2" — Cache mode (typically confirmation screen with current data) |
| `FUNC_CD_3` | Constant | Function code "3" — Code name management mode (typically display-only or admin functions) |
| `CHG_KAHI_FLG` | Field | Update enable/disable flag (更新可否フラグ) — determines whether the update confirm screen is active |
| `dslSbtFlg` | Field | SubOp service flag (サブオプションフラグ) — identifies the cancellation type as SubOp (value "3") |
| `svcKeiChrgStaYmd` | Field | Service charge start date (サービス課金開始日) — YYYYMMDD format |
| `subOpSvcUseStaYmd` | Field | SubOp service usage start date (サブオプションサービス利用開始日) — YYYYMMDD format |
| `subOpSvcUseEndYmd` | Field | SubOp service usage end date — current operation date at time of charge determination |
| `svc_chrg_endymd` | Local | Service charge end date — computed by charge determination logic |
| `chrg_flg` | Local | Charge flag — indicates whether a cancellation fee applies |
| `jdgHiChrg` | Method | Charge determination (課金判定) — determines if cancellation fee applies based on service dates and status |
| `HPAD_DOMAIN` | Field | Homepage access domain (ホームペーじアクセスドメイン) — URL domain for My Homepage |
| `HPAD_ACCOUNT` | Field | Homepage access account (ホームペーじアクセスアカウント) — URL account for My Homepage |
| `HP_CAPA_INFO` | Field | Homepage capacity information (ホームペーじ容量情報) — pulldown list key for capacity display |
| `ACCSS_BNSK_INFO` | Field | Access analysis information (アクセス分析情報) — pulldown list key for access analysis display |
| `SVCTK_BUT_SHK_VALUE` | Field | Service item initial value (サービス提供物初期値) — pulldown initial value for capacity |
| `SVCTK_BUT_MAX_VALUE` | Field | Service item max value (サービス提供物最大値) — pulldown max value for capacity |
| `SVCTK_BUT_ZOUGEN_VALUE` | Field | Service item增减 value (サービス提供物増減値) — pulldown增减 value for capacity |
| `TRANDIV` | Field | Process division (処理区分) — identifies the operation type (change/cancellation/recovery/reservation cancel) |
| `OP_SVC_KEI_STAT` | Field | Option service contract status (オプションサービス契約ステータス) — current status of the option service contract |
| `SBOP_SVC_KEI_STAT_0440` | Field | SubOp service contract status for access analysis — used to determine if charge determination is needed |
| `EKB1510_KW` | Message ID | "Update unavailable" error message — displayed when the operation cannot proceed |
| `EKB1040_JW` | Message ID | "URL not set" error message — displayed when URL fields are missing during cancellation |
| `EKB0370__I` | Message ID | Update confirmation message — displayed on the update confirm screen |
| `KKSV0007` | Screen | My Homepage information screen (ホームペーじ情報画面) — screen module ID |
| `KKSV0007OP` | Operation | My Homepage information operation — operation code for the KKSV0007 screen service |
| `KKSV0007OPDBMapper` | Class | DataBean-BP mapping class (DataBean-BPマッピングクラス) — handles input/output mapping between DataBean and service layer |
| `X31SDataBeanAccess` | Class | DataBean access object (DataBeanアクセス) — interface for reading/writing DataBean fields via sendMessage* methods |
| `sendMessageString` | Method | DataBean accessor — reads/writes string values by key |
| `sendMessageBoolean` | Method | DataBean accessor — reads/writes boolean values by key |
| `setDataInit` | Method | DataBean initialization processing (DataBean設定処理) — sets up initial DataBean state |
| `storeGetDataInit` | Method | DataBean storage processing (DataBean設定処理) — finalizes DataBean state before screen display |
| Myホームペーじ | Business term | My Homepage — customer self-service portal for managing internet/telecom services |
| SubOp (サブオプション) | Business term | Subscription Service — additional bundled services (e.g., homepage capacity, access analysis) |
| ISP | Business term | Internet Service Provider — internet connectivity service component |
| Home Page Capacity (ホームペーじ容量) | Business term | Data capacity allocation for the customer's My Homepage — includes initial, max, and增减 values |
| Access Analysis (アクセス分析) | Business term | Web traffic access analysis data for the customer's homepage |
| Option Service (オプションサービス) | Business term | Value-added add-on services that customers can subscribe to alongside their base contract |
| Service Contract (サービス契約) | Business term | The main service agreement between the customer and the provider |
| Cancellation Fee (解約時課金) | Business term | Fees charged upon contract cancellation — determined by charge determination logic based on service dates |
