# Business Logic — KKW02404SFLogic.actionFix() [102 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02404SF.KKW02404SFLogic` |
| Layer | Controller (webview layer) |
| Module | `KKW02404SF` (Package: `eo.web.webview.KKW02404SF`) |

## 1. Role

### KKW02404SFLogic.actionFix()

This method is the **confirm-button processing handler** for the Fixed Global IP Address Information Update screen (`KKW02404`). It is invoked when a user clicks the confirm/fix button on the web form and is responsible for dispatching the request to the appropriate back-end service based on the **processing area division** (`TRAN_DIV`) carried in the DataBean.

Three distinct service types are supported:

- **DSL Cancellation** (`TRAN_DIV = "04"`) — Executes the Fixed Global IP Address Access Cancellation Confirmation service, used when the customer requests to cancel an existing Fixed Global IP address access configuration.
- **IP Recovery** (`TRAN_DIV = "05"`) — Executes the Fixed Global IP Address Recovery service, used when the customer requests to restore a previously cancelled Fixed Global IP address access configuration.
- **Reservation Cancel** (`TRAN_DIV = "06"`) — Executes the Reservation Cancellation service, used when the customer requests to cancel a pending reservation for Fixed Global IP address operations.

The method implements a **routing/dispatch design pattern**: it reads the `TRAN_DIV` field from the service form DataBean, branches to the appropriate service execution path (DSL cancellation, IP recovery, or reservation cancellation), and then handles navigation and message display based on the return code from the backend service.

In the larger system, this method serves as the **central confirmation handler** for the `KKW02404` screen. It is the entry point where the user's confirmed changes are committed to the back-end via BPM services (mapped to use-case IDs `KKSV0265`, `KKSV0266`, and `KKSV0267`). Upon successful completion, it navigates the user to the confirmation screen `KKW02406` with an appropriate status message. If the backend returns an error code, it resolves the error message with contextual substitution text and displays it on-screen instead.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["actionFix"])
    START --> INIT["Initialize: result = true, paramBean, trandiv, rtn_msg_id, msgInfo"]

    INIT --> COND1((Processing area division))

    COND1 -->|"OP_TRAN_DIV_DSL = 04<br>Cancellation"| DSL_BRANCH["DSL Cancellation branch"]
    COND1 -->|"OP_TRAN_DIV_KAIHK = 05<br>Recovery"| KAIHK_BRANCH["IP Recovery branch"]
    COND1 -->|"OP_TRAN_DIV_RSV_CL = 06<br>Reservation Cancel"| RSVCL_BRANCH["Reservation Cancel branch"]

    DSL_BRANCH --> DSL_SVC["executeDslSvc(paramBean, FUNC_CD_1)"]
    DSL_SVC --> DSL_GET_MSG["Get rtn_msg_id from paramBean"]
    DSL_GET_MSG --> DSL_SET_MSG["msgInfo[0] = MSGSTRING[0]<br>Fixed Global IP Address Info Cancellation"]

    KAIHK_BRANCH --> KAIHK_SETDATA["setDataKaihk(paramBean)"]
    KAIHK_SETDATA --> KAIHK_SVC["executeKaihkSvc(paramBean, FUNC_CD_1)"]
    KAIHK_SVC --> KAIHK_GET_MSG["Get rtn_msg_id from paramBean"]
    KAIHK_GET_MSG --> KAIHK_SET_MSG["msgInfo[0] = MSGSTRING[1]<br>Fixed Global IP Address Info Recovery"]

    RSVCL_BRANCH --> RSVCL_SETDATA["setDataRsvcl(paramBean)"]
    RSVCL_SETDATA --> RSVCL_SVC["executeRsvclSvc(paramBean, FUNC_CD_1)"]
    RSVCL_SVC --> RSVCL_GET_MSG["Get rtn_msg_id from paramBean"]
    RSVCL_GET_MSG --> RSVCL_SET_MSG["msgInfo[0] = MSGSTRING[2]<br>Fixed Global IP Address Info Reservation Cancel"]

    DSL_SET_MSG --> NAV_CHECK((rtn_msg_id empty?))
    KAIHK_SET_MSG --> NAV_CHECK
    RSVCL_SET_MSG --> NAV_CHECK

    NAV_CHECK -->|"Yes"| SUCCESS_NAV["Navigate to KKW02406<br>Set next screen ID and name<br>Display MSGSTRING info message"]
    NAV_CHECK -->|"No"| ERROR_REP["Call getMsgRep(trandiv, rtn_msg_id)"]

    ERROR_REP --> STR_CHECK((str null?))
    STR_CHECK -->|"Yes"| MSG_ID_ONLY["Display message by ID only"]
    STR_CHECK -->|"No"| MSG_REPLACE["Display message with substituted text"]

    MSG_ID_ONLY --> DATA_DUMP["DataBean dump to log"]
    MSG_REPLACE --> DATA_DUMP
    SUCCESS_NAV --> DATA_DUMP

    DATA_DUMP --> RET["return true"]
    RET --> END(["End"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none — no direct parameters) | - | - |

The method retrieves all its data from the **service form DataBean** (`X31SDataBeanAccess`) accessed via `super.getServiceFormBean()`. The key field read from this bean is:

| Parameter | Type | Business Description |
|-----------|------|---------------------|
| `TRAN_DIV` (from bean) | `String` | Processing area division — determines which service path to execute. Values: `"04"` (DSL Cancellation), `"05"` (IP Recovery), `"06"` (Reservation Cancel). [-> TRAN_DIV="処理区分"] (KKW02404SFConst.java:66)] |

**Instance fields and external state read:**

| Field/State | Source | Business Description |
|-------------|--------|---------------------|
| `MSGSTRING` (static) | KKW02404SFLogic | Static message templates array. Index 0: "Fixed Global IP Address Info Cancellation", Index 1: "Fixed Global IP Address Info Recovery", Index 2: "Fixed Global IP Address Info Reservation Cancel" |
| `KTIIPADR_INFO` (static) | KKW02404SFLogic | Static string "Fixed Global IP Address Information" — used in progress-specific item text for recovery and reservation cancel branches [-> KTIIPADR_INFO="固定グローバルIPアドレス情報"] |
| `DSL` (static) | KKW02404SFLogic | Static string "Cancellation" [-> DSL="解約"] |
| `KAIHK` (static) | KKW02404SFLogic | Static string "Recovery" [-> KAIHK="回復"] |
| `RSV_CLK` (static) | KKW02404SFLogic | Static string "Reservation Cancel" [-> RSV_CLK="予約取消"] |
| `getCommonInfoBean()` | inherited from JCCWebBusinessLogic | Shared form DataBean for cross-screen navigation data |
| `getServiceFormBean()` | inherited from JCCWebBusinessLogic | Screen-specific form DataBean carrying request parameters |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAddSupportCC.setMessageInfo` | JKKAddSupportCC | - | Calls `setMessageInfo` in `JKKAddSupportCC` |
| - | `JKKCreateNhkDntIktCC.setMessageInfo` | JKKCreateNhkDntIktCC | - | Calls `setMessageInfo` in `JKKCreateNhkDntIktCC` |
| - | `JKKFumeiKktkSvcKeiUpdCC.setMessageInfo` | JKKFumeiKktkSvcKeiUpdCC | - | Calls `setMessageInfo` in `JKKFumeiKktkSvcKeiUpdCC` |
| - | `JKKGetKikiUpdCodeNameCC.setMessageInfo` | JKKGetKikiUpdCodeNameCC | - | Calls `setMessageInfo` in `JKKGetKikiUpdCodeNameCC` |
| - | `JKKGetKojiAkTaknkikiCC.setMessageInfo` | JKKGetKojiAkTaknkikiCC | - | Calls `setMessageInfo` in `JKKGetKojiAkTaknkikiCC` |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Calls `sendMessageString` in `OneStopDataBeanAccess` |
| - | `KKW02404SFLogic.executeDslSvc` | KKW02404SFLogic | - | Calls `executeDslSvc` in `KKW02404SFLogic` |
| - | `KKW02404SFLogic.executeKaihkSvc` | KKW02404SFLogic | - | Calls `executeKaihkSvc` in `KKW02404SFLogic` |
| - | `KKW02404SFLogic.executeRsvclSvc` | KKW02404SFLogic | - | Calls `executeRsvclSvc` in `KKW02404SFLogic` |
| R | `KKW02404SFLogic.getMsgRep` | KKW02404SFLogic | - | Calls `getMsgRep` in `KKW02404SFLogic` |
| - | `KKW02404SFLogic.setDataKaihk` | KKW02404SFLogic | - | Calls `setDataKaihk` in `KKW02404SFLogic` |
| - | `KKW02404SFLogic.setDataRsvcl` | KKW02404SFLogic | - | Calls `setDataRsvcl` in `KKW02404SFLogic` |

### Full method call analysis (actionFix line range L591–L692):

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `super.getCommonInfoBean()` | JCCWebBusinessLogic | - | Retrieves shared form DataBean for navigation data |
| - | `super.getServiceFormBean()` | JCCWebBusinessLogic | - | Retrieves service form DataBean carrying request parameters |
| - | `bean.sendMessageString(TRAN_DIV, DATABEAN_GET_VALUE)` | X31SDataBeanAccess | - | Reads the processing area division from the DataBean |
| - | `paramBean[0].sendMessageString(RTN_MSG_ID, DATABEAN_GET_VALUE)` | X31SDataBeanAccess | - | Reads the return message ID set by the backend service after execution |
| - | `paramBean[0].sendMessageString(RTN_MSG_ID, DATABEAN_SET_VALUE, "")` | X31SDataBeanAccess | - | Clears the return message ID before service execution (within executeDslSvc/executeKaihkSvc/executeRsvclSvc) |
| - | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo)` | JCCWebCommon | - | Displays a success info message with the MSGSTRING template text for the current operation type |
| - | `JCCWebCommon.setMessageInfo(this, rtn_msg_id)` | JCCWebCommon | - | Displays an error message by ID only (no text substitution) |
| - | `JCCWebCommon.setMessageInfo(this, rtn_msg_id, str)` | JCCWebCommon | - | Displays an error message with substituted text (e.g., date values, status descriptions) |
| - | `commoninfoBean.sendMessageString(NEXT_SCREEN_ID, DATABEAN_SET_VALUE, SCREEN_ID_KKW02406)` | CommonInfoCFConst | - | Sets the next screen ID for navigation |
| - | `commoninfoBean.sendMessageString(NEXT_SCREEN_NAME, DATABEAN_SET_VALUE, SCREEN_NAME_KKW02406)` | CommonInfoCFConst | - | Sets the next screen name for navigation |
| C | `KKSV0265_KKSV0265OPDBMapper.setOpSvcKeiDslCC(paramBean, inputMap, func_code)` | KKSV0265 | - | Maps operation service contract DSL cancellation data from DataBean to input map |
| C | `KKSV0265_KKSV0265OPDBMapper.setJKKHakkoSODCC(paramBean, inputMap, func_code)` | KKSV0265 | SOD entity | Maps Service Order Data (SOD) creation data for DSL cancellation |
| C | `KKSV0265_KKSV0265OPDBMapper.setKKSV0265WORK(paramBean, inputMap, func_code)` | KKSV0265 | WORK entity | Maps WORK data for DSL cancellation processing |
| C | `KKSV0265_KKSV0265OPDBMapper.getOpSvcKeiDslCC(paramBean, outputMap)` | KKSV0265 | - | Retrieves operation service contract DSL cancellation results into DataBean |
| C | `KKSV0266_KKSV0266OPDBMapper.setOpSvcKeiKaihkCC(paramBean, inputMap, func_code)` | KKSV0266 | - | Maps operation service contract recovery data from DataBean to input map |
| C | `KKSV0266_KKSV0266OPDBMapper.setJKKHakkoSODCC(paramBean, inputMap, func_code)` | KKSV0266 | SOD entity | Maps SOD creation data for IP recovery |
| C | `KKSV0266_KKSV0266OPDBMapper.setKKSV0266WORK(paramBean, inputMap, func_code)` | KKSV0266 | WORK entity | Maps WORK data for IP recovery processing |
| C | `KKSV0266_KKSV0266OPDBMapper.getOpSvcKeiKaihkCC(paramBean, outputMap)` | KKSV0266 | - | Retrieves operation service contract recovery results into DataBean |
| C | `KKSV0267_KKSV0267OPDBMapper.setOpSvcKeiCnslCC(paramBean, inputMap, func_code)` | KKSV0267 | - | Maps operation service contract cancellation data from DataBean to input map |
| C | `KKSV0267_KKSV0267OPDBMapper.setJKKHakkoSODCC(paramBean, inputMap, func_code)` | KKSV0267 | SOD entity | Maps SOD creation data for reservation cancellation |
| C | `KKSV0267_KKSV0267OPDBMapper.getOpsvckeiCnslCC(paramBean, outputMap)` | KKSV0267 | - | Retrieves operation service contract cancellation results into DataBean |
| C | `invokeService(paramMap, inputMap, outputMap)` | JCCWebBusinessLogic | BPM Service | Invokes the BPM-based back-end service with the prepared input and output maps. Use-case IDs: KKSV0265 (DSL), KKSV0266 (Recovery), KKSV0267 (Reservation Cancel) |
| C | `KKW02404SFLogic.setDataKaihk(paramBean)` | KKW02404SFLogic | - | Sets DataBean fields for IP recovery processing (recovery date, progress-specific item) |
| C | `KKW02404SFLogic.setDataRsvcl(paramBean)` | KKW02404SFLogic | - | Sets DataBean fields for reservation cancellation processing (progress-specific item) |
| R | `KKW02404SFLogic.getMsgRep(trandiv, rtn_msg_id)` | KKW02404SFLogic | - | Resolves error message with contextual substitution text based on the processing area division and return message ID |
| R | `JSYwebLog.println(DataBean_Dump, ...)` | JSYwebLog | - | Dumps the DataBean state to the log for debugging purposes |

**Called services (BPM use-cases):**

| Use-Case ID | Service Description | Mapper |
|-------------|---------------------|--------|
| `KKSV0265` | Fixed Global IP Address Access Cancellation Confirmation Service | `KKSV0265_KKSV0265OPDBMapper` |
| `KKSV0266` | Fixed Global IP Address Recovery Service | `KKSV0266_KKSV0266OPDBMapper` |
| `KKSV0267` | Reservation Cancellation Service (Remote Support) | `KKSV0267_KKSV0267OPDBMapper` |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02404 | `KKW02404SFLogic.actionFix` | `executeDslSvc [C] KKSV0265` |
| 1 | Screen:KKW02404 | `KKW02404SFLogic.actionFix` | `executeKaihkSvc [C] KKSV0266` |
| 1 | Screen:KKW02404 | `KKW02404SFLogic.actionFix` | `executeRsvclSvc [C] KKSV0267` |

**Navigation Target:** `KKW02406` (Confirmation screen displayed on successful completion)

**Screens that navigate to KKW02404 (parent screen chain):**
- `KKA14901SF` — Customer contract change main screen (via `SCREEN_ID_KKW02404` navigation)
- `KKA14701SF` — Customer contract information screen (via `SCREEN_ID_KKW02404` navigation)
- `KKA14201SF` — Customer contract information screen (via `SCREEN_ID_KKW02404` navigation)
- `KKA14401SF` — Customer contract information screen (via `SCREEN_ID_KKW02404` navigation)
- `KKW02301SF` — Customer service information screen (via `SCREEN_ID_KKW02404` navigation)

These upstream screens navigate to `KKW02404` where the user fills out the Fixed Global IP Address information form, then clicks the confirm button which invokes `actionFix()`.

**Note:** This method is the **terminal entry point** for the confirmation flow — it is not called by other methods within the same class but is invoked directly by the screen framework when the user clicks the confirm button on screen `KKW02404`.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Variable Initialization (L591)

> Initializes local variables and retrieves DataBean access objects.

| # | Type | Code |
|---|------|------|
| 1 | SET | `result = true` // Success flag, always returns true on completion |
| 2 | CALL | `commoninfoBean = super.getCommonInfoBean()` // Get shared form DataBean [-> super.getCommonInfoBean()] |
| 3 | CALL | `bean = super.getServiceFormBean()` // Get service form DataBean [-> super.getServiceFormBean()] |
| 4 | SET | `paramBean = {bean}` // Wrap single bean in array for service methods |

**Block 2** — [SET] Process Area Division and Message Preparation (L600–L606)

> Retrieves the processing area division and initializes message-related variables.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `trandiv = bean.sendMessageString(KKW02404SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE)` // Read processing area division [-> TRAN_DIV="処理区分"] (KKW02404SFConst.java:66)] |
| 2 | SET | `rtn_msg_id = ""` // Return message ID — cleared initially, populated by backend |
| 3 | SET | `msgInfo = new String[1]` // Message display buffer for successful navigation |

**Block 3** — [IF-ELSEIF-ELSE] Branch: Processing Area Division (L608–L662)

> Dispatches to the appropriate service branch based on the processing area division value.

**Block 3.1** — [IF] `OP_TRAN_DIV_DSL = "04"` (Cancellation branch) [OP_TRAN_DIV_DSL="04"] (L608)

> The processing area division is DSL Cancellation. Executes the cancellation confirmation service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeDslSvc(paramBean, JPCModelConstant.FUNC_CD_1)` // Execute DSL cancellation service. Uses BPM use-case KKSV0265. Maps: setOpSvcKeiDslCC, setJKKHakkoSODCC, setKKSV0265WORK, getOpSvcKeiDslCC [-> FUNC_CD_1 (function code for processing)] |
| 2 | CALL | `rtn_msg_id = paramBean[0].sendMessageString(KKW02404SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE)` // Get return message ID set by backend [-> RTN_MSG_ID="返却メッセージID"] (KKW02404SFConst.java:174)] |
| 3 | SET | `msgInfo[0] = MSGSTRING[0]` // Set message text: "Fixed Global IP Address Info Cancellation" [-> MSGSTRING[0]="固定グローバルIPアドレス情報の解約"] |

**Block 3.2** — [ELSE-IF] `OP_TRAN_DIV_KAIHK = "05"` (IP Recovery branch) [OP_TRAN_DIV_KAIHK="05"] (L622)

> The processing area division is IP Recovery. Sets recovery-specific DataBean fields, then executes the recovery service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setDataKaihk(paramBean)` // Set DataBean: recovery date from operational date, progress-specific item flag. Maps to BPM use-case KKSV0266 [-> setDataKaihk()] |
| 2 | CALL | `executeKaihkSvc(paramBean, JPCModelConstant.FUNC_CD_1)` // Execute IP recovery service. Maps: setOpSvcKeiKaihkCC, setJKKHakkoSODCC, setKKSV0266WORK, getOpSvcKeiKaihkCC |
| 3 | CALL | `rtn_msg_id = paramBean[0].sendMessageString(KKW02404SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE)` // Get return message ID |
| 4 | SET | `msgInfo[0] = MSGSTRING[1]` // Set message text: "Fixed Global IP Address Info Recovery" [-> MSGSTRING[1]="固定グローバルIPアドレス情報の回復"] |

**Block 3.3** — [ELSE-IF] `OP_TRAN_DIV_RSV_CL = "06"` (Reservation Cancel branch) [OP_TRAN_DIV_RSV_CL="06"] (L639)

> The processing area division is Reservation Cancel. Sets reservation cancellation-specific DataBean fields, then executes the service. This branch includes the ANK-1223-00-00 enhancement for progress-specific item editing.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setDataRsvcl(paramBean)` // Set DataBean: progress-specific item text. Maps to BPM use-case KKSV0267 [-> setDataRsvcl()] |
| 2 | CALL | `executeRsvclSvc(paramBean, JPCModelConstant.FUNC_CD_1)` // Execute reservation cancellation service. Maps: setOpSvcKeiCnslCC, setJKKHakkoSODCC, getOpsvckeiCnslCC. Includes cancel SOD issuance (IT1-2013-0000167) |
| 3 | CALL | `rtn_msg_id = paramBean[0].sendMessageString(KKW02404SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE)` // Get return message ID (IT2-2012-0001034) |
| 4 | SET | `msgInfo[0] = MSGSTRING[2]` // Set message text: "Fixed Global IP Address Info Reservation Cancel" [-> MSGSTRING[2]="固定グローバルIPアドレス情報の予約取消"] |

**Block 4** — [IF-ELSE] Navigation: Check Return Message ID (L666–L683)

> Determines whether to navigate to the confirmation screen or display an error message.

**Block 4.1** — [IF] `rtn_msg_id` is empty (success path) [L666]

> No error returned from the backend. Navigate to the confirmation screen `KKW02406` and display a success message.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02406)` // Set next screen ID for navigation [-> SCREEN_ID_KKW02406="KKW02406"] (JKKScreenConst.java:864)] |
| 2 | CALL | `commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02406)` // Set next screen name for navigation [-> SCREEN_NAME_KKW02406] |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo)` // Display success info message with MSGSTRING text |

**Block 4.2** — [ELSE] `rtn_msg_id` has a value (error path) [L666]

> Backend returned an error code. Resolve the error message and display it.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `str = getMsgRep(trandiv, rtn_msg_id)` // Attempt to resolve error message with substitution text |

**Block 4.2.1** — [IF] `str == null` (no substitution text available) [L676]

> The error message ID does not have a special substitution pattern. Display the message ID directly.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JCCWebCommon.setMessageInfo(this, rtn_msg_id)` // Display error message by ID only |

**Block 4.2.2** — [ELSE] `str != null` (substitution text available) [L676]

> The `getMsgRep` method found a substitution pattern for this error. Display the message with substituted values.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JCCWebCommon.setMessageInfo(this, rtn_msg_id, str)` // Display error message with substituted text |

**Block 5** — [EXEC] DataBean Logging (L686)

> Logs the final DataBean state for debugging purposes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null)` // Dump DataBean to log |

**Block 6** — [RETURN] Return Success (L688)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return result` // Always returns `true` — exceptions are thrown instead of returning false |

### getMsgRep Sub-logic (L820–L868)

The `getMsgRep` method resolves error message IDs to substitution text arrays. This is called only when the backend returns a non-empty `rtn_msg_id`.

**Block 6.1** — [IF] DSL Cancellation + Past Date Error [OP_TRAN_DIV_DSL="04"] [JPCOnlineMessageConstant.EKB0690_NW] (L830)

> When cancellation is requested for a past date, substitute "End date" and "Past" into the message.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JPCOnlineMessageConstant.EKB0690_NW.equals(rtn_msg_id)` // Past date error |
| 2 | SET | `str = {"利用終了日", "過去"}` // Substitution: "End date", "Past" |
| 3 | RETURN | `return str` |

**Block 6.2** — [ELSE-IF] IP Recovery + Out of Recovery Period [OP_TRAN_DIV_KAIHK="05"] [JPCOnlineMessageConstant.EKB5440_JW] (L841)

> When recovery is requested outside the allowable recovery period, substitute "Out of recovery period" and "Recovery" into the message.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)` // Out of recovery period error |
| 2 | SET | `str = {"回復可能期間外", "回復"}` // Substitution: "Out of recovery period", "Recovery" |
| 3 | RETURN | `return str` |

**Block 6.3** — [ELSE-IF] Reservation Cancel + Option Error [OP_TRAN_DIV_RSV_CL="06"] [JPCOnlineMessageConstant.EKB5420_JW] (L852)

> When reservation cancellation is unavailable for a specific option, substitute "Option" and "Reservation Cancel" into the message.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JPCOnlineMessageConstant.EKB5420_JW.equals(rtn_msg_id)` // Option reservation cancel unavailable error |
| 2 | SET | `str = {"オプション", "予約取消"}` // Substitution: "Option", "Reservation Cancel" |
| 3 | RETURN | `return str` |

**Block 6.4** — [DEFAULT] No matching substitution (L862)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null` // No special substitution — display raw message ID |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `TRAN_DIV` | Field | Processing area division — determines which service path (cancellation, recovery, or reservation cancel) to execute |
| `RTN_MSG_ID` | Field | Return message ID — set by the backend service to indicate success (empty) or error (non-empty) |
| `FIXIPAD` | Field | IP Address — refers to Fixed Global IP Address, a static public IP address assigned to a customer |
| `SVC_KEI_NO` | Field | Service contract number — internal identifier for a customer's service contract |
| `SVC_KEI_UCWK_NO` | Field | Service detail work number — internal tracking ID for service contract line items |
| `OP_SVC_KEI_NO` | Field | Option service contract number — identifier for option-level service contracts |
| `OP_SVC_KEI_STAT` | Field | Option service contract status — current status of the option service contract |
| `SVC_KEI_STAT` | Field | Service contract status — current status of the service contract |
| `OP_TRAN_DIV` | Field | Operation processing area division — prefix shared with TRAN_DIV, indicates the operation type |
| `FUNC_CD_1` | Constant | Function code "01" — standard processing mode for business services |
| DSL | Business term | Fixed Global IP Address Access Cancellation — cancellation of an existing Fixed Global IP address access configuration |
| KAIHK | Business term | Recovery — restoration of a previously cancelled Fixed Global IP address access configuration |
| RSV_CLK | Business term | Reservation Cancel — cancellation of a pending reservation for Fixed Global IP address operations |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity that records service order requests |
| BPM | Acronym | Business Process Management — the middleware framework executing back-end business services |
| DataBean | Pattern | Java object carrying screen form data between the web layer and business logic layer |
| `KKSV0265` | Use-case ID | BPM use-case for Fixed Global IP Address Access Cancellation Confirmation Service |
| `KKSV0266` | Use-case ID | BPM use-case for Fixed Global IP Address Recovery Service |
| `KKSV0267` | Use-case ID | BPM use-case for Reservation Cancellation Service (Remote Support) |
| KKSV0264 | Use-case ID | BPM use-case for the KKW02404 screen initialization (parent screen flow) |
| KKW02404 | Screen ID | Fixed Global IP Address Information Update screen |
| KKW02406 | Screen ID | Confirmation screen displayed after successful processing |
| EKB4390__I | Message ID | Info-level success message for Fixed Global IP Address operations |
| EKB0690_NW | Message ID | Error message for past date — cancellation/operation date is in the past |
| EKB5440_JW | Message ID | Error/warning message for out-of-recovery-period — recovery requested outside allowable window |
| EKB5420_JW | Message ID | Error/warning message for reservation cancel unavailable — certain options cannot be cancelled |
| `KTIIPADR_INFO` | Constant | "Fixed Global IP Address Information" — prefix used in progress-specific item text |
| `USE_YMD` | Field | Operational date — the date used for recovery operations |
| `KAIHK_YMD` | Field | Recovery date/year-month-day — the date when recovery takes effect |
| `PRG_TKJK_1` | Field | Progress-specific item 1 — a display flag/label shown during processing |
| `CHG_KAHI_FLG` | Field | Update state possibility flag — indicates whether update is allowed |
| JCCWebBusinessLogic | Parent Class | Base business logic class providing common web-layer service methods |
| JCCWebCommon | Utility Class | Common web utility for screen navigation and message display |
| JSYwebLog | Utility Class | Web logging utility for DataBean dump and debug output |
