---
title: "Business Logic — FUW05401SFLogic.init() [149 LOC]"
tags: [dd, method, FUW05401SFLogic, init, eo, customer, service, contract, cancellation]
---

# Business Logic — FUW05401SFLogic.init() [149 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW05401SF.FUW05401SFLogic` |
| Layer | Controller / Web View Business Logic (webview package) |
| Module | `FUW05401SF` (Package: `eo.web.webview.FUW05401SF`) |

## 1. Role

### FUW05401SFLogic.init()

This method is the **initial display processing entry point** for the K-Opticom eo optic telephone **option service subscription and cancellation** business logic module (FUW05401). It orchestrates the complete preparation of a customer-facing web screen where existing eo optic telephone contract holders can request additional option services (e.g., caller ID display, voicemail refusal, call detail delivery) or cancel existing ones. The method performs **screen data preparation** by retrieving and refreshing the current customer's contract information, fetching service interface data from backend SC components (FUSV0031 through FUSV0207), extracting transaction target records, performing initial-display error checks, running per-contract-record business validation (contract status, reservation processing, processing classification, promotion status), calculating applicable discount service codes, and configuring the next-screen navigation (either a pack-discount confirmation sub-screen FUW11001 or the appropriate subscription/confirmation/completion screen). It follows a **dispatch/delegation pattern**, calling multiple specialized helper methods for each distinct preparation phase — screen info retrieval, bean population, service invocation, data extraction, error checking, and navigation setup. The method always returns `true` (fixed), serving as a standard framework-mandated initializer in the BPM/web screen execution pipeline.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["init() Start"])

    START --> S1["Get Screen Info from Previous Page"]
    S1 --> S2["Get CommonInfoBean and ServiceFormBean"]
    S2 --> S3["Get Ronri Screen ID"]
    S3 --> S4["Common Relation Check<br>checkCommonRelation"]
    S4 --> S5{"From Screen ID<br>NotEmpty?"}
    S5 -->|true| S6["Refresh Current Customer<br>Contract Info"]
    S5 -->|false| S7["Set Service Interface<br>Parameters paramsForFUSV0031"]
    S6 --> S7

    S7 --> S8["Set Service Contract Info<br>setSvcKeiInfo"]
    S8 --> S9["Call Service FUSV0031<br>via callSvcFUSV0031"]
    S9 --> S10["Get Processing Target<br>Records getTranTrgtRecOp"]
    S10 --> S11["Initial Display Error Check<br>checkInitError"]
    S11 --> S12["Set Parent Contract Info<br>setOyaKeiInfo"]
    S12 --> S13["Run Variable Transaction<br>for Target Contract Records<br>runVariTranForTrgtKeiRec"]
    S13 --> S14["Get Discount Service Code<br>getPackScreenWribSvcCd"]
    S14 --> S15["Run Various Judgment<br>runVariJudge"]
    S15 --> S16["Set Processing Target<br>Key Info setTranTrgtKeyInfo"]
    S16 --> S17["Set Call Charge Limit Amount<br>setTwryoStiam"]
    S17 --> S18["Set Price Info Area<br>setPrcInfoAreaEoTelOp"]
    S18 --> S19["Set Price Display<br>Now Day setPrcDspNowDay"]
    S19 --> S20{"Pack Screen<br>Discount Code<br>NotNull?"}
    S20 -->|true| S21{"Ronri Screen ID<br>in SBOP Mapping?"}
    S20 -->|false| S22["Set Next Screen Name<br>getMskmScreenName"]
    S21 -->|true| S23["Get SBOP Service Code<br>getSbopSvcCd"]
    S21 -->|false| S24{"Ronri Screen ID<br>in OP Mapping?"}
    S24 -->|true| S25["Get OP Service Code<br>getOpSvcCd"]
    S24 -->|false| S26["opSvcCd = empty"]
    S23 --> S27["Create Data Map for Pack<br>createDataMapForPack"]
    S25 --> S27
    S26 --> S27
    S27 --> S28["Set Screen Info<br>SCREEN_ID_FUW11001"]
    S28 --> S29["Set Transfer Page ID<br>setTransferPageId"]
    S29 --> S30["Set Next Screen ID + Name<br>sendMessageString"]
    S30 --> END(["Return true"])
    S22 --> END
```

**Sequence Diagram — Interaction Overview:**

```mermaid
sequenceDiagram
    participant User as User/Browser
    participant SVC as KKSV0004Flow
    participant OPS as KKSV0004OPOperation
    participant LOGIC as FUW05401SFLogic

    User->>SVC: HTTP Request to KKSV0004
    SVC->>OPS: run Operation Broker
    OPS->>LOGIC: init
    Note over LOGIC: Initial display processing
    LOGIC->>LOGIC: Get screen info from previous page
    LOGIC->>LOGIC: Get CommonInfoBean and ServiceFormBean
    LOGIC->>LOGIC: Get Ronri Screen ID
    LOGIC->>LOGIC: Common relation check
    alt From Screen ID is set
        LOGIC->>LOGIC: Refresh customer contract info
    end
    LOGIC->>LOGIC: Set service interface parameters
    LOGIC->>LOGIC: Set service contract info
    LOGIC->>LOGIC: Call FUSV0031SC service
    LOGIC->>LOGIC: Get transaction target records
    LOGIC->>LOGIC: Initial display error check
    LOGIC->>LOGIC: Set parent contract info
    LOGIC->>LOGIC: Run variable transaction
    LOGIC->>LOGIC: Get discount service code
    LOGIC->>LOGIC: Run various judgment
    LOGIC->>LOGIC: Set target key info
    LOGIC->>LOGIC: Set call charge limit
    LOGIC->>LOGIC: Set price info area
    LOGIC->>LOGIC: Set price display now day
    alt Pack screen discount code exists
        LOGIC->>LOGIC: Set transfer screen info FUW11001
    else
        LOGIC->>LOGIC: Set next screen name
    end
    LOGIC-->>OPS: Return true
    OPS-->>SVC: Return
    SVC-->>User: Response
```

**Processing breakdown by phase:**

1. **Screen Info Inheritance (L535–L539)** — Retrieves the previous screen ID and processing classification from the session (inherited navigation context), and fetches the common info bean and service form bean for unified data access.

2. **Ronri Screen ID Acquisition (L543–L544)** — Extracts the abstract logical screen ID (e.g., `FUW054`, `FUW055`, `FUW056`, etc.) from the common info bean, which determines which specific option service screen variant is being displayed.

3. **Common Relation Check (L549–L551)** — Performs a cross-screen relation validation via `JFUWebCommon.checkCommonRelation(this, SVC_ID_INIT)`. The SSO log-in path (from `FUW05301_eo` electric phone customer contract information change / menu screen) sets NO_CHECK, so validation is intentionally skipped and processing proceeds here.

4. **Customer Contract Refresh (L552–L557)** — If the previous screen ID is not empty (i.e., navigation came from another internal screen rather than SSO entry), the current customer contract information is refreshed via `JFUWebCommon.refreshGenCustKei(this)`. If the from-screen-id is empty (SSO path), this step is skipped.

5. **Service Interface Parameters Setup (L562)** — Prepares the interface parameters for the core service component FUSV0031 by populating Ronri screen ID, service contract details, and system IDs from the beans.

6. **Service Contract Info Retrieval (L567)** — Extracts and sets the primary service contract information (service contract number, line details, phone number) from the common info bean into the service form bean.

7. **FUSV0031 Service Invocation (L572)** — Calls the core service layer via `callSvcFUSV0031`, passing the beans and retrieving an output map containing service results (price plans, service codes, contract records).

8. **Transaction Target Records Extraction (L577)** — Extracts the array of contract records that are eligible for transaction processing from the form bean.

9. **Initial Display Error Check (L582)** — Validates the current state of the contract data for initial display errors — checks for invalid contract states, conflicting records, or missing data that would prevent the screen from rendering correctly.

10. **Parent Contract Info Editing (L587)** — Processes and sets the parent contract information (parent service contract number, parent service contract internal details number) for hierarchical contract display.

11. **Variable Transaction Processing (L596–L598)** — For each target contract record, runs per-record transaction logic including: contract status determination, reservation processing check, processing classification determination (subscription/cancellation/change), and promotion status check. Returns a `kensuMap` with calculation results.

12. **Discount Service Code Acquisition (L602–L603)** — Retrieves the discount service code applicable after judgment processing. Used to determine if pack discount services apply.

13. **Various Judgment Processing (L608–L609)** — Executes various judgment logic including pricing validation, service eligibility checks, and promotional condition evaluation for each target record.

14. **Target Record Key Info Setup (L614–L615)** — Assembles and sets the key information for each processing target record for screen display.

15. **Call Charge Limit Amount Setup (L620–L621)** — Configures the call charge limit amount notification settings.

16. **Price Info Area Setup (L625–L628)** — Sets price information area data. Since paid/free services have different setup content, the free flag is set first and then the price information is configured afterward.

17. **Price Display Now Day Setup (L631)** — Sets the current date for price table display.

18. **Navigation Setup — Pack Screen Path (L635–L665)** — If a pack screen discount service code exists (non-null), the method configures inter-screen transfer information: resolves the option service code and sub-option service code via mapping maps (SBOP_SVC_CD_MAPPING_MAP / OP_SVC_CD_MAPPING_MAP based on ronriScreenId), creates a data map for pack processing, and sets the next screen to the pack confirmation sub-screen (`FUW11001`). Sets transfer page ID and next screen name/messages.

19. **Navigation Setup — Non-Pack Path (L667–L670)** — If no pack screen discount code exists, the next screen name is set directly via `getMskmScreenName` based on the ronri screen ID (subscription/confirmation/completion screen variant).

20. **Return (L673)** — Always returns `true` as a fixed value, indicating successful initialization.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a no-argument method. All data is obtained from the instance-level session beans (CommonInfoBean and ServiceFormBean) and framework context. |

**Instance fields / external state read by this method:**

| No | Source | Type | Business Description |
|----|--------|------|---------------------|
| 1 | `CommonInfoBean` | `X31SDataBeanAccess` | Shared form bean containing session-wide customer and screen context data, including SSO info, next screen ID, and next screen name |
| 2 | `ServiceFormBean` | `X31SDataBeanAccess` | Service-specific form bean carrying the eo optic telephone option service subscription/cancellation screen data (contract numbers, phone numbers, discount codes) |
| 3 | `FUW05401SFConst.TRAN_DIV` | `String` constant | Processing classification key — "Processing Classification" field identifier in the data bean |
| 4 | `FUW05401SFConst.FROM_SCREEN_ID` | `String` constant | Previous screen ID key — identifies which screen navigated to this one |
| 5 | `FUW05401SFConst.SYSID` | `String` constant | System ID field key used in service interface parameters |
| 6 | `FUW05401SFConst.SVC_KEI_NO` | `String` constant | Service contract number field key |
| 7 | `FUW05401SFConst.SVC_KEI_UCWK_NO` | `String` constant | Service contract internal details number field key |
| 8 | `FUW05401SFConst.SVC_KEI_KAISEN_UCWK_NO` | `String` constant | Service contract internal details number (routing) field key |
| 9 | `OP_SVC_CD_MAPPING_MAP` | `Map<String, String>` | Mapping of Ronri screen IDs to option service codes (e.g., `FUW054` → `CD00136_B023` "Split Phone") |
| 10 | `SBOP_SVC_CD_MAPPING_MAP` | `Map<String, String>` | Mapping of Ronri screen IDs to sub-option service codes (e.g., `FUW056` → `CD00137_D07` "Mandatory Transfer Selection (sub of transfer)") |
| 11 | `TRAN_DIV_MSKM = "1"` | `String` constant | Subscription processing classification value |
| 12 | `TRAN_DIV_DSL = "2"` | `String` constant | Cancellation processing classification value |
| 13 | `TRAN_DIV_CHG = "3"` | `String` constant | Change processing classification value |
| 14 | `SVC_ID_INIT = "FUSV0031"` | `String` constant | Initial display service ID |
| 15 | `RONRI_SCREEN_ID_*` | `String` constants | Logical screen IDs: `FUW054` through `FUW062`, `FUW102`, `FUW103` |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getScreenInfo` | - | - | Gets screen info from session (previous screen ID, processing area) |
| R | `JFUWebCommon.getLength` | JFUWebCommon | - | Checks length of a string value |
| R | `JFUWebCommon.trim` | JFUWebCommon | - | Trims whitespace from a string value |
| R | `JFUWebCommon.getDataBeanItemByPath` | JFUDataBeanAccess | JFUDataBeanAccess | Reads an item from the data bean by path key |
| R | `JFUWebCommon.isNull` | JFUWebCommon | - | Null-check on a string value |
| R | `JCCWebCommon.setScreenInfo` | JCCWebCommon | - | Sets screen info in session context |
| C | `JFUWebCommon.refreshGenCustKei` | JFUGenCustKeiRefresh | - | Refreshes current customer contract information (read + re-store) |
| R | `JFUWebCommon.checkCommonRelation` | JFUCommonRelationCheck | - | Checks cross-screen relation validity |
| C | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Sends message string in common info bean |
| C | `super.setTransferPageId` | - | - | Sets the transfer page ID for screen navigation |
| C | `paramsForFUSV0031` | FUSV0031SC | FUSV0031 | Sets service interface parameters for the FUSV0031 service call |
| C | `setSvcKeiInfo` | - | - | Sets service contract info from common bean to form bean |
| C | `callSvcFUSV0031` | FUSV0031SC | - | Calls the FUSV0031 service component to retrieve service interface data |
| C | `getTranTrgtRecOp` | - | - | Extracts transaction target record array from form bean |
| C | `checkInitError` | - | - | Performs initial display error validation checks |
| C | `setOyaKeiInfo` | - | - | Sets parent contract information for hierarchical display |
| C | `runVariTranForTrgtKeiRec` | - | - | Runs variable transaction logic for each target contract record |
| C | `getPackScreenWribSvcCd` | - | - | Gets the discount service code for pack screen judgment |
| C | `runVariJudge` | - | - | Runs various judgment processing (pricing, eligibility, promotion) |
| C | `setTranTrgtKeyInfo` | - | - | Sets key information for processing target records |
| C | `setTwryoStiam` | - | - | Sets call charge limit amount notification settings |
| C | `setPrcInfoAreaEoTelOp` | - | - | Sets price information area for eo telephone option |
| C | `JFUWebCommon.setPrcDspNowDay` | - | - | Sets current date for price table display |
| C | `getMskmScreenName` | - | - | Gets subscription screen name by Ronri screen ID |
| C | `getSbopSvcCd` | - | - | Gets sub-option service code by Ronri screen ID |
| C | `getOpSvcCd` | - | - | Gets option service code by Ronri screen ID |
| C | `createDataMapForPack` | - | - | Creates a data map for pack screen transfer |
| - | `JACBatCommon.isNull` | JACBatCommon | - | Calls isNull in JACBatCommon |
| - | `JACbatRknBusinessUtil.isNull` | JACbatRknBusiness | - | Calls isNull in JACbatRknBusinessUtil |
| - | `JBSbatInterface.trim` | JBSbatInterface | - | Calls trim in JBSbatInterface |
| - | `JCHbatSeikyKaknoBusinessUtil.isNull` | JCHbatSeikyKaknoBusiness | - | Calls isNull in JCHbatSeikyKaknoBusinessUtil |
| - | `JZMBatCommon.trim` | JZMBatCommon | - | Calls trim in JZMBatCommon |
| - | `JBSbatACInsentetivePrcInfoSaksei.isNull` | JBSbatACInsentetivePrcInfoSaksei | - | Calls isNull in JBSbatACInsentetivePrcInfoSaksei |
| - | `JBSbatAKCHSeikyYsoInfMake.isNull` | JBSbatAKCHSeikyYsoInfMake | - | Calls isNull in JBSbatAKCHSeikyYsoInfMake |
| - | `JBSbatKKBmpKaihkPrdChokNoDel.trim` | JBSbatKKBmpKaihkPrdChokNoDel | - | Calls trim in JBSbatKKBmpKaihkPrdChokNoDel |
| - | `JBSbatKKSodSendReqBase.trim` | JBSbatKKSodSendReqBase | - | Calls trim in JBSbatKKSodSendReqBase |
| - | `JBSbatKKTchishoDelete.trim` | JBSbatKKTchishoDelete | - | Calls trim in JBSbatKKTchishoDelete |
| R | `JPCEditString.getLength` | JPCEditString | - | Calls getLength in JPCEditString |
| R | `JPCUtilCommon.getLength` | JPCUtilCommon | - | Calls getLength in JPCUtilCommon |
| R | `JECC0021D010TPMA.getLength` | JECC0021D010TPMA | - | Calls getLength in JECC0021D010TPMA |
| R | `KKW00127SFLogic.getScreenInfo` | KKW00127SFLogic | - | Calls getScreenInfo in KKW00127SFLogic |
| - | `KKW01101SFLogic.setScreenInfo` | KKW01101SFLogic | - | Calls setScreenInfo in KKW01101SFLogic |
| - | `ZMW03701SFLogic.setTransferPageId` | ZMW03701SFLogic | - | Calls setTransferPageId in ZMW03701SFLogic |
| - | `JFUCommonRelationCheck.checkCommonRelation` | JFUCommonRelationCheck | - | Calls checkCommonRelation in JFUCommonRelationCheck |
| R | `JFUDataBeanAccessHelper.getDataBeanItemByPath` | JFUDataBeanAccess | JFUDataBeanAccess | Calls getDataBeanItemByPath in JFUDataBeanAccessHelper |
| - | `JFUGenCustKeiRefresh.refreshGenCustKei` | JFUGenCustKeiRefresh | - | Calls refreshGenCustKei in JFUGenCustKeiRefresh |

**Primary SC Code:** `FUSV0031` — Core service component called via `callSvcFUSV0031` to retrieve service interface data (price plans, service codes, contract records) for the option service subscription/cancellation screen.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0004 | `KKSV0004Flow.run()` -> `KKSV0004OPOperation.run()` -> `FUW05401SFLogic.init()` | `callSvcFUSV0031 [R] FUSV0031SC` |

**Notes on callers:**
- The method is invoked through the BPM framework's operation broker mechanism. `KKSV0004Flow` (a session EJB with mapped name "KKSV0004") dispatches to `KKSV0004OPOperation` via an `OperationBroker`. The operation class then delegates to `FUW05401SFLogic.init()` through the framework's standard web logic invocation pattern.
- Direct Java-level callers are absent because the method is called through the framework's reflection-based service invocation layer (`JCCWebBusinessLogic` base class mechanisms).
- The `KKSV0004OPOperation` is the dedicated operation class for the "eo optic telephone option service subscription/cancellation" screen (FUW05401) within the BPM flow.
- The logical screen ID (`FUW054` through `FUW103`) determines which specific option service variant (split phone, transfer phone, caller ID, voicemail, etc.) is processed.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Get Screen Info (L535)

> Retrieves screen navigation context from the session.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.getScreenInfo(this)` |

**Block 2** — [SET] Get Beans (L540–L544)

> Fetches the common info bean (shared session data) and service form bean (screen-specific data).

| # | Type | Code |
|---|------|------|
| 1 | SET | `commonInfoBean = super.getCommonInfoBean()` |
| 2 | SET | `bean = getServiceFormBean()` |
| 3 | SET | `ronriScreenId = getRonriScreenId(commonInfoBean)` |

**Block 3** — [EXEC] Common Relation Check (L549–L551)

> APLConst setting is NO_CHECK (previous screen: "FUW05301_eo electric phone customer contract information change/menu", SSO login reason). Processing is performed here to handle this special case.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.checkCommonRelation(this, SVC_ID_INIT)` where `SVC_ID_INIT = "FUSV0031"` |

**Block 4** — [IF] From Screen ID Not Empty (L552–L557)

> If the previous screen ID is not empty, refresh the current customer contract information. This branch is taken when navigating from another internal screen (not SSO entry).

| # | Type | Code |
|---|------|------|
| 1 | SET | `val = JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.FROM_SCREEN_ID)` |
| 2 | SET | `trimmed = JFUWebCommon.trim(val)` |
| 3 | SET | `len = JFUWebCommon.getLength(trimmed)` |
| 4 | SET | `fromScreenId = "Previous Screen ID"` |
| 5 | COND | `0 < len` |
| 6 | EXEC | `JFUWebCommon.refreshGenCustKei(this)` |

**Block 5** — [CALL] Set Service Interface Parameters (L562)

> Prepares the interface parameters for the core service component FUSV0031.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `paramsForFUSV0031(bean, commonInfoBean, ronriScreenId)` |

**Block 6** — [CALL] Set Service Contract Info (L567)

> Extracts and sets the primary service contract information (service contract number, line details) from the common bean into the service form bean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setSvcKeiInfo(commonInfoBean, bean)` |

**Block 7** — [CALL] Service Invocation (L572)

> Calls the core service layer to retrieve service interface data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `outputMap = callSvcFUSV0031(bean, commonInfoBean)` |

**Block 8** — [CALL] Get Transaction Target Records (L577)

> Extracts the array of contract records that are eligible for transaction processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tranTrgtRecOpArray = getTranTrgtRecOp(bean)` |

**Block 9** — [CALL] Initial Display Error Check (L582)

> Validates current state of contract data for initial display errors.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `checkInitError(bean, commonInfoBean, tranTrgtRecOpArray)` |

**Block 10** — [CALL] Set Parent Contract Info (L587)

> Processes and sets the parent contract information for hierarchical contract display.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setOyaKeiInfo(bean)` |

**Block 11** — [CALL] Run Variable Transaction for Target Records (L596–L598)

> For each target contract record, runs transaction logic: contract status determination, reservation processing check, processing classification determination, and promotion status check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kensuMap = runVariTranForTrgtKeiRec(commonInfoBean, bean, tranTrgtRecOpArray)` |

**Block 12** — [CALL] Get Discount Service Code (L602–L603)

> Retrieves the discount service code applicable after judgment processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `packScreenWribSvcCd = getPackScreenWribSvcCd(bean)` |

**Block 13** — [CALL] Run Various Judgment (L608–L609)

> Executes various judgment processing including pricing validation, service eligibility, and promotional condition evaluation.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `runVariJudge(bean, tranTrgtRecOpArray, kensuMap)` |

**Block 14** — [CALL] Set Target Key Info (L614–L615)

> Assembles and sets key information for each processing target record.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setTranTrgtKeyInfo(bean, tranTrgtRecOpArray)` |

**Block 15** — [CALL] Set Call Charge Limit Amount (L620–L621)

> Configures call charge limit amount notification settings.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setTwryoStiam(bean, tranTrgtRecOpArray)` |

**Block 16** — [CALL] Set Price Info Area (L625–L628)

> Sets price information area. Since paid/free services have different setup content, the free flag is set first, then price information is configured afterward.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setPrcInfoAreaEoTelOp(bean, outputMap, ronriScreenId)` |

**Block 17** — [CALL] Set Price Display Now Day (L631)

> Sets the current date for price table display.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.setPrcDspNowDay(this)` |

**Block 18** — [IF-ELSE] Pack Screen Discount Code Path (L635–L670)

> Determines next-screen navigation based on whether a pack screen discount service code exists.

| # | Type | Code |
|---|------|------|
| 1 | COND | `!JFUWebCommon.isNull(packScreenWribSvcCd)` — if pack screen discount code is NOT null, enter transfer screen path |

**Block 18.1** — [IF-ELSE-IF-ELSE] Service Code Resolution (L640–L650) — Inside Block 18 true branch

> Resolves the option service code and sub-option service code based on the ronri screen ID using mapping maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSvcCd = ""` |
| 2 | COND | `SBOP_SVC_CD_MAPPING_MAP.containsKey(ronriScreenId)` |

**Block 18.1.1** — [IF] Ronri Screen ID in SBOP Mapping (L642–L644) — Nested inside Block 18.1

> For sub-option services: mandatory transfer selection (`FUW056`) and non-notification refusal (`FUW058`).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `opSvcCd = getSbopSvcCd(ronriScreenId)` |

**Block 18.1.2** — [ELSE-IF] Ronri Screen ID in OP Mapping (L645–L648) — Sibling of Block 18.1.1

> For option services: split phone, transfer phone, caller ID display, voicemail refusal, designated number pickup, call detail delivery, 050 number plate, call charge limit notification, international telephone usage stop.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `opSvcCd = getOpSvcCd(ronriScreenId)` |

**Block 18.1.3** — [ELSE] Default (L649–L650) — Sibling of Block 18.1.1

> No mapping found; `opSvcCd` remains empty string.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSvcCd = ""` (remains empty) |

**Block 18.2** — [SET] Create Data Map for Pack (L653–L661)

> Creates the data map for pack screen transfer and sets up inter-screen navigation info.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tran_div = JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.TRAN_DIV)` where `TRAN_DIV = "Processing Classification"` |
| 2 | SET | `map = createDataMapForPack(tran_div, packScreenWribSvcCd, opSvcCd)` |
| 3 | CALL | `JFUWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW11001, map)` — sets next screen to pack confirmation sub-screen `FUW11001` |
| 4 | CALL | `super.setTransferPageId(JFUScreenConst.SCREEN_ID_FUW11001 + GAMEN_ID_SUFIX_STR)` |
| 5 | CALL | `commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW11001)` |
| 6 | CALL | `commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW11001)` |

**Block 18.3** — [ELSE] Non-Pack Path (L667–L670)

> If no pack screen discount code exists, set the next screen name directly.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, getMskmScreenName(ronriScreenId))` |

**Block 19** — [RETURN] Final Return (L673)

> Always returns `true` (fixed). The method never returns `false`.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `FUW05401SFLogic` | Class | eo optic telephone option service subscription/cancellation business logic class — core processing for option service requests |
| `FUW054` | Logical screen ID | Split phone (割込電話) service — standard option service subscription/cancellation |
| `FUW055` | Logical screen ID | Transfer phone (転送電話) service — call forwarding option |
| `FUW056` | Logical screen ID | Mandatory transfer selection (転送電話選択) — sub-option of transfer phone |
| `FUW057` | Logical screen ID | Caller ID display (発信者番号表示) service |
| `FUW058` | Logical screen ID | Non-notification refusal (非通知着信拒否) — sub-option of caller ID display |
| `FUW059` | Logical screen ID | Confusion phone refusal (迷惑電話拒否) service |
| `FUW060` | Logical screen ID | Designated number pickup selection (指定番号着信選択) service |
| `FUW061` | Logical screen ID | Call detail delivery (明細送付) service |
| `FUW062` | Logical screen ID | 050 number plate service (050ナンバープレス) |
| `FUW102` | Logical screen ID | Call charge limit notification (電話料指定額到達お知ら機能) |
| `FUW103` | Logical screen ID | International telephone usage stop (国際電話利用停止) |
| `FUW11001` | Screen ID | Pack confirmation sub-screen — inter-screen transfer target for pack discount services |
| `FUW05301_eo` | Screen ID | eo electric phone customer contract information change / menu screen — SSO entry point |
| `ronriScreenId` | Field | Ronri (logical) screen ID — determines which option service variant is being processed (e.g., "FUW054" for split phone) |
| `TRAN_DIV` | Field | Processing Classification — classifies the operation type: "1" = Subscription (申込), "2" = Cancellation (解約), "3" = Change (変更) |
| `TRAN_DIV_MSKM = "1"` | Constant | Subscription processing classification value |
| `TRAN_DIV_DSL = "2"` | Constant | Cancellation processing classification value |
| `TRAN_DIV_CHG = "3"` | Constant | Change processing classification value |
| `FROM_SCREEN_ID` | Field | Previous Screen ID — identifies which screen navigated to the current one |
| `packScreenWribSvcCd` | Local variable | Pack screen discount service code — obtained after judgment processing; if non-null, triggers pack screen navigation |
| `opSvcCd` | Local variable | Option service code — resolved from mapping maps based on ronri screen ID |
| `SBOP_SVC_CD_MAPPING_MAP` | Map | Sub-option service code mapping — maps ronri screen IDs to sub-option service codes (e.g., FUW056 → CD00137_D07) |
| `OP_SVC_CD_MAPPING_MAP` | Map | Option service code mapping — maps ronri screen IDs to option service codes (e.g., FUW054 → CD00136_B023) |
| `SVC_ID_INIT = "FUSV0031"` | Constant | Initial display service ID — the FUSV0031 SC handles initial screen data retrieval |
| `SVC_ID_MSKM = "FUSV0032"` | Constant | Subscription service ID |
| `SVC_ID_DSL = "FUSV0033"` | Constant | Cancellation service ID |
| `SVC_ID_CHG = "FUSV0207"` | Constant | Change service ID |
| `FUSV0031SC` | SC Code | Service Component for initial display — retrieves service interface data, price plans, and contract records |
| `CommonInfoBean` | Bean | Shared form bean containing session-wide customer and screen context data |
| `ServiceFormBean` | Bean | Service-specific form bean carrying the eo optic telephone option service screen data |
| `X31SDataBeanAccess` | Class | Fujitsu X31 framework data access class for reading/writing screen form data |
| `JKKSV0004OPOperation` | Class | Operation broker class for KKSV0004 screen — delegates to FUW05401SFLogic.init() |
| `KKSV0004Flow` | EJB | BPM flow session bean (mapped name "KKSV0004") — entry point for the eo optic telephone option service subscription/cancellation screen |
| `JFUWebCommon` | Utility | Web common utility class providing screen info, null checks, length checks, trim, and navigation methods |
| `JCCWebBusinessLogic` | Base Class | Common web business logic base class — FUW05401SFLogic extends this |
| `SSO` | Acronym | Single Sign-On — authentication mechanism allowing navigation from the contract menu screen without re-login |
| `BC` (NO_CHECK) | Acronym | Business Check (NO_CHECK) — SSO path skips cross-screen relation validation |
| `CD00136_B023` | Constant | Option service code for split phone (割込電話) |
| `CD00136_B024` | Constant | Option service code for transfer phone (転送電話) |
| `CD00136_B025` | Constant | Option service code for caller ID display (発信者番号表示) |
| `CD00137_D07` | Constant | Sub-option service code for mandatory transfer selection (転送電話選択) |
| `CD00137_D08` | Constant | Sub-option service code for non-notification refusal (非通知着信拒否) |
| `SOD` | Acronym | Service Order Data — order data entity managed by the system |
| `FC2` | Acronym | (From called methods) — FC2 related processing entity |
| `FC3` | Acronym | (From called methods) — FC3 related processing entity |
| `JOKEN` | Acronym | Authorization (許可) — used in service order authorization method constants |
| `ODR_NAIYO_CD` | Acronym | Order content code — classifies the type of order (registration, change, cancellation) |
| `SVC_KEI_NO` | Field | Service contract number — primary identifier for a service contract |
| `SVC_KEI_UCWK_NO` | Field | Service contract internal details number — secondary identifier for service contract line items |
| `TEL_OP_MSKM_CHECK_KEY` | Constant | Telephone option subscription judgment map key — used for determining if telephone option subscription is permitted |
| `MSKM_COMP_MAIL_ID_FUW054_1` | Constant | Subscription completion email ID for FUW054 (subscription/split phone) |
| `IDO_DIV` | Field | Displacement classification — indicates data state changes between records |
| `KKSV0004` | Screen | eo optic telephone option service subscription/cancellation screen — main screen for option service requests |
| `GAMEN_ID_SUFIX_STR` | Constant | Screen ID suffix string — appended to screen ID for transfer page identification |
| `PCRS_CD_KK0601_MAPPING_MAP` | Map | Price code (service contract) mapping for price plan fixed unit price — maps ronri screen IDs to price codes |
| `PPLAN_CD_KK0601_MAPPING_MAP` | Map | Price plan code mapping for price plan fixed unit price — maps ronri screen IDs to price plan codes |
| `WRIB_OPCD_LIST` | Array | Discount service code list — contains pack discount service entries with price codes and plan codes |
| `KK0081_PCRS_CD` | Constant | Price code (service contract) field key |
| `KK0081_PPLAN_CD` | Constant | Price plan code (service contract) field key |
