# Business Logic — KKA16701SFLogic.searchCourseRk() [93 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16701SF.KKA16701SFLogic` |
| Layer | Controller (Webview Logic) |
| Module | `KKA16701SF` (Package: `eo.web.webview.KKA16701SF`) |

## 1. Role

### KKA16701SFLogic.searchCourseRk()

This method performs the **course history list search** for a customer in the K-Opticom telecom OSS/BSS system. "Course" (コース) refers to a customer's current service plan/package — a core concept in the Japanese ISP domain where customers subscribe to layered services (Internet, TV, hosting, etc.) and can change their plan at any time. The method orchestrates the complete lifecycle of a course history query: it sets up the operational date context, invokes the backend service (`KKSV0394`) that retrieves the customer's service contract history, handles any errors, and then maps the returned data back to the front-end data bean.

The method implements a **delegation pattern** — it prepares input parameters, delegates the actual data retrieval to the `KKSV0394` screen service via `invokeService`, and then processes the results. It also implements a **conditional display pattern** where special UI control flags are set based on the customer's service attributes. Specifically, if the customer has an active FTTH (Fiber-to-the-Home) Internet service with course change history (異動区分 = "00009"), is not in a mansion (apartment) plan, has a service status >= 100, and is eligible for course change fee discounts, the method configures special button flags to display a discount eligibility screen (ボタン制御フラグ = "3", 戻るボタン制御フラグ = "3").

Its role in the larger system is that of a **screen-level orchestrator** called from `forwardBack()` and `init()` within the same logic class. It serves as the search-and-display handler for the course history list screen, enabling customers and operators to view the complete history of plan changes for a given customer account.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["searchCourseRk"])
    INIT["Initialize inputMap outputMap paramMap mapper"]
    SET_SVC_BEAN["Get service form bean from super"]
    SET_UNYO["Set operation date to svcFormBean.UNYO_YMD via JCCWebCommon.getOpeDate"]
    SET_PARAM_BEAN["Create paramBean array from svcFormBean"]
    SET_INPUT["mapper.setKKSV039401CC paramBean inputMap emptyStr"]
    SET_USECASE["paramMap.put TELEGRAM_INFO_USECASE_ID KKSV0394"]
    INVOKE["invokeService paramMap inputMap outputMap"]

    CHECK_ERR["msgResult is null?"]

    HANDLE_ERR["JCCWebCommon.setMessageInfo this msgResult"]
    RETURN_FALSE["return false"]

    MAP_OUTPUT["mapper.getKKSV039401CC paramBean outputMap"]

    CHECK_POPUP["setPopupValue returns true?"]

    HANDLE_POPUP["svcFormBean.set CTRL_BUTTON_FLG to 0"]

    GET_CUST_BEAN["Get customer bean from paramBean HKTGI_CUST_KEI_HKTGI_LIST"]
    GET_IDO_DIV["Extract idoDiv from custbean 異動区分"]
    GET_SVC_CD["Extract svcCd from svcFormBean サービスコード"]
    GET_MAN_FLG["Extract man_flg from svcFormBean マンションフラグ"]
    GET_SVC_STATUS["Extract svc_kei_status from svcFormBean サービス契約ステータス"]

    CHECK_DISCOUNT_FLG["discount excluded flag is null or empty?"]

    SET_DISCOUNT_FALSE_A["bool_wrib_auto_aply_tg_gai_flg = false"]

    CHECK_DISCOUNT_VALUE["discount flag equals 0?"]

    SET_DISCOUNT_FALSE_B["bool_wrib_auto_aply_tg_gai_flg = false"]
    SET_DISCOUNT_TRUE["bool_wrib_auto_aply_tg_gai_flg = true"]

    GET_CP_FLG["Extract cp_disp_flg from svcFormBean コース変更手数料減額表示"]

    CHECK_SPECIAL["NET AND mansion=0 AND idoDiv=00009 AND status>=100 AND cp_disp=1"]

    SET_SPECIAL_DISCOUNT["svcFormBean.set WRIB_AUTO_APLY_TG_GAI_FLG to bool"]
    SET_SPECIAL_BTN["set BTN_CTRL_FLG to 3 and CTRL_BUTTON_FLG to 3"]

    SET_NORMAL_BTN["set BTN_CTRL_FLG to 2 and CTRL_BUTTON_FLG to 1"]

    SET_FORWARD["setForwardInfo KKW02701 screen name"]
    RETURN_TRUE["return true"]
    END(["End"])

    START --> INIT
    INIT --> SET_SVC_BEAN
    SET_SVC_BEAN --> SET_UNYO
    SET_UNYO --> SET_PARAM_BEAN
    SET_PARAM_BEAN --> SET_INPUT
    SET_INPUT --> SET_USECASE
    SET_USECASE --> INVOKE
    INVOKE --> CHECK_ERR
    CHECK_ERR -- false --> HANDLE_ERR
    HANDLE_ERR --> RETURN_FALSE
    RETURN_FALSE --> END
    CHECK_ERR -- true --> MAP_OUTPUT
    MAP_OUTPUT --> CHECK_POPUP
    CHECK_POPUP -- true --> HANDLE_POPUP
    HANDLE_POPUP --> END
    CHECK_POPUP -- false --> GET_CUST_BEAN
    GET_CUST_BEAN --> GET_IDO_DIV
    GET_IDO_DIV --> GET_SVC_CD
    GET_SVC_CD --> GET_MAN_FLG
    GET_MAN_FLG --> GET_SVC_STATUS
    GET_SVC_STATUS --> CHECK_DISCOUNT_FLG
    CHECK_DISCOUNT_FLG -- true null or empty --> SET_DISCOUNT_FALSE_A
    CHECK_DISCOUNT_FLG -- false --> CHECK_DISCOUNT_VALUE
    SET_DISCOUNT_FALSE_A --> GET_CP_FLG
    CHECK_DISCOUNT_VALUE -- true equals 0 --> SET_DISCOUNT_FALSE_B
    CHECK_DISCOUNT_VALUE -- false --> SET_DISCOUNT_TRUE
    SET_DISCOUNT_FALSE_B --> GET_CP_FLG
    SET_DISCOUNT_TRUE --> GET_CP_FLG
    GET_CP_FLG --> CHECK_SPECIAL
    CHECK_SPECIAL -- true --> SET_SPECIAL_DISCOUNT
    SET_SPECIAL_DISCOUNT --> SET_SPECIAL_BTN
    SET_SPECIAL_BTN --> SET_FORWARD
    CHECK_SPECIAL -- false --> SET_NORMAL_BTN
    SET_NORMAL_BTN --> SET_FORWARD
    SET_FORWARD --> RETURN_TRUE
    RETURN_TRUE --> END
```

**Processing flow summary:**

1. **Setup phase**: Initialize HashMaps for input, output, and parameter data passing. Create the `KKSV0394_KKSV0394OPDBMapper` instance and retrieve the service form bean. Set the current operation date into the data bean using `JCCWebCommon.getOpeDate()`.

2. **Service invocation**: Prepare the input map by setting the use case ID to `"KKSV0394"`, then invoke the backend service via `invokeService()`.

3. **Error handling**: If the service returns an error (`msgResult` is not null), set the message info via `JCCWebCommon.setMessageInfo()` and return `false`.

4. **Result mapping**: On successful service execution, map the output data back into the parameter bean via `mapper.getKKSV039401CC()`.

5. **Popup branch**: If `setPopupValue()` returns `true` (popup mode), set the back button control flag to `"0"` (hide back button) and return `true`.

6. **Customer data extraction**: In non-popup mode, extract customer details including movement type (異動区分), service code, mansion flag, service contract status, and discount auto-apply flag.

7. **Discount flag determination**: Determine whether the discount auto-apply exclusion flag is active by checking if the customer's discount excluded flag is null/empty (defaults to false) or explicitly equals "0" (false), otherwise true.

8. **Special display logic (v5.00.00 feature)**: If all of the following are true: service code is NET (`"01"`), mansion flag is `"0"`, movement type is `"00009"` (course change), service status >= 100, and course change fee discount display flag is `"1"` — then configure special UI controls to show the discount eligibility screen. Otherwise, set normal UI controls.

9. **Forward**: Set the forward destination to screen `KKW02701` (course history) and return `true`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none - instance method on page logic) | - | - |

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

| Source | Field/Accessor | Business Description |
|--------|---------------|---------------------|
| `super.getServiceFormBean()` | `X31SDataBeanAccess svcFormBean` | The service form data bean carrying all screen-level data including service codes, flags, and customer contract information. |
| `this` | `KKA16701SFLogic` context | The logic instance providing access to `invokeService()`, `setForwardInfo()`, `setPopupValue()`, and `this` reference for `JCCWebCommon` helpers. |
| `paramBean[0]` | `X31SDataBeanAccess` customer data | After service invocation, holds customer contract history data including customer entity list, service details, and movement records. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getOpeDate` | JCCBPCommon | KK_T_OPERATIONS (operation date reference) | Retrieves the current operation date for the session context |
| C | `KKSV0394_KKSV0394OPDBMapper.setKKSV039401CC` | KKSV039401 | - | Sets the input parameters for the KKSV0394 course history search service — populates inputMap with request data |
| C | `OneStopDataBeanAccess.sendMessageString` (TELEGRAM_INFO_USECASE_ID) | - | - | Sets the use case ID "KKSV0394" into paramMap to route the service call |
| - | `KKSV0394_KKSV0394OPDBMapper` invoke via `invokeService` | KKSV0394 | - | Invokes the KKSV0394 screen service that performs the course history list search |
| R | `KKSV0394_KKSV0394OPDBMapper.getKKSV039401CC` | KKSV039401 | - | Maps the service output data back into the parameter bean after successful retrieval |
| - | `JCCWebCommon.setMessageInfo` | JKKAddSupportCC | - | Sets error message information from the service result into the UI context |
| R | `X31SDataBeanAccess.getDataBeanArray` | - | - | Retrieves the customer contract entity list (HKTGI_CUST_KEI_HKTGI_LIST) from the data bean |
| R | `X31SDataBeanAccess.sendMessageString` | - | - | Reads various string fields from data beans: movement type (異動区分), service code (サービスコード), mansion flag (マンションフラグ), service contract status (サービス契約ステータス), discount excluded flag (割引自動適用対象外フラグ), course change fee discount display (コース変更手数料減額表示) |
| R | `X31SDataBeanAccess.sendMessageBoolean` | - | - | Reads boolean fields from the data bean for discount auto-apply flag |
| - | `X31SDataBeanAccess.sendMessageString` (SET) | - | - | Writes control flags: button control flag (ボタン制御フラグ), back button control flag (戻るボタン制御フラグ) |
| - | `X31SDataBeanAccess.sendMessageBoolean` (SET) | - | - | Writes discount auto-apply exclusion flag (割引自動適用対象外フラグ) |
| - | `KKA16701SFLogic.setForwardInfo` | KKA16701SF | - | Sets the forward destination screen to KKW02701 (course history list) |
| - | `KKA16701SFLogic.setPopupValue` | KKA16701SF | - | Checks whether the current execution context is in popup mode |

**Note:** The primary business data access is performed through the `KKSV0394` screen service. This method acts as a webview orchestrator — it does not directly access database tables. The actual CRUD operations on entity tables (customer contracts, service plans, movement history) are contained within the KKSV0394 service component.

## 5. Dependency Trace

### Callers of searchCourseRk():

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Logic: `KKA16701SFLogic.forwardBack()` | `forwardBack()` -> `searchCourseRk()` | `KKSV0394` course history list search |
| 2 | Logic: `KKA16701SFLogic.init()` | `init()` -> `searchCourseRk()` | `KKSV0394` course history list search |

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `setForwardInfo` [-], `sendMessageString` (multiple), `sendMessageBoolean` (multiple), `getKKSV039401CC` [-], `setKKSV039401CC` [-].

**Call chain details:**

1. **`KKA16701SFLogic.forwardBack()`** — This is a navigation handler within the same screen logic. It determines the forward/backward navigation flow for the course history screen. It calls `searchCourseRk()` to refresh the course history list data during navigation transitions.

2. **`KKA16701SFLogic.init()`** — This is the initialization entry point for the `KKA16701SF` screen logic. It calls `searchCourseRk()` during screen initialization to populate the course history list for display.

Both callers are internal to the same `KKA16701SFLogic` class and operate in the webview/controller layer.

## 6. Per-Branch Detail Blocks

### Block 1 — SETUP (L1322)

Initialize all data structures and prepare the operational date context.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inputMap = new HashMap<String, Object>()` // Input map for service call |
| 2 | SET | `outputMap = new HashMap<String, Object>()` // Output map from service call |
| 3 | SET | `paramMap = new HashMap<String, String>()` // Parameter map for routing |
| 4 | SET | `mapper = new KKSV0394_KKSV0394OPDBMapper()` // Mapper for KKSV0394 data binding |
| 5 | SET | `svcFormBean = super.getServiceFormBean()` // Retrieve service form data bean |
| 6 | EXEC | `svcFormBean.sendMessageString(KKW02701SFConst.UNYO_YMD = "運用年月日", DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null))` // Set operation year-month-day (運用年月日の設定) |

### Block 2 — SERVICE PREPARATION (L1333-L1337)

Prepare input parameters and invoke the backend service.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramBean = {svcFormBean}` // Wrap bean in array for mapper calls |
| 2 | CALL | `mapper.setKKSV039401CC(paramBean, inputMap, "")` // Set service up-line items (サービスの上り項目設定) |
| 3 | SET | `paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0394")` // Set use case ID for routing |
| 4 | CALL | `msgResult = invokeService(paramMap, inputMap, outputMap)` // Invoke service (サービス呼び出しし) |

### Block 3 — ERROR HANDLING [IF] (L1339-L1344)

Handle service error response by displaying error message and returning false.

**Condition:** `null != msgResult` (error detected)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JCCWebCommon.setMessageInfo(this, msgResult)` // Set error message info (エラー処理) |
| 2 | RETURN | `return false` // Return failure |

### Block 4 — RESULT MAPPING (L1346-L1347)

Map service output back into the data bean on successful invocation.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.getKKSV039401CC(paramBean, outputMap)` // Map service results to bean (サービス結果の転記) |

### Block 5 — POPUP MODE BRANCH [IF/ELSE] (L1349-L1370)

Determine whether to apply popup-mode button controls or full customer-data-driven logic.

**Condition:** `setPopupValue()` returns `true` (popup mode active)

#### Block 5 — Popup Mode Branch (L1350-L1353)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG = "戻るボタン制御フラグ", DATABEAN_SET_VALUE, "0")` // Hide back button in popup mode (ボタン制御フラグ設定: ポップアップモードで「戻る」/「閉じる」) |
| 2 | RETURN | `// Falls through to setForwardInfo and return true` |

#### Block 5.1 — Non-Popup Mode Branch [ELSE] (L1355-L1404)

Full customer data analysis with discount eligibility logic (v5.00.00 feature addition — 追加開始).

| # | Type | Code |
|---|------|------|
| 1 | SET | `custbean = paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST).getDataBean(0)` // Get first customer entity from customer contract history list (顧客契約引継リスト) |
| 2 | SET | `idoDiv = String.valueOf(custbean.sendMessageString("異動区分", DATABEAN_GET_VALUE))` // Extract movement type code (異動区分) |
| 3 | SET | `svcCd = svcFormBean.sendMessageString("サービスコード", DATABEAN_GET_VALUE)` // Extract service code (サービスコード) |
| 4 | SET | `man_flg = svcFormBean.sendMessageString("マンションフラグ", DATABEAN_GET_VALUE)` // Extract mansion flag (マンションフラグ) |
| 5 | SET | `svc_kei_status = svcFormBean.sendMessageString("サービス契約ステータス", DATABEAN_GET_VALUE)` // Extract service contract status (サービス契約ステータス) |
| 6 | SET | `bool_wrib_auto_aply_tg_gai_flg = false` // Initialize discount auto-apply exclusion flag |
| 7 | SET | `cp_disp_flg = svcFormBean.sendMessageString("コース変更手数料減額表示", DATABEAN_GET_VALUE)` // Extract course change fee discount display flag |

### Block 5.1.1 — DISCOUNT FLAG CHECK [IF/ELSE] (L1361-L1375)

Determine the discount auto-apply exclusion flag based on customer data.

**Condition:** `custbean.sendMessageString("割引自動適用対象外フラグ", DATABEAN_GET_VALUE) == null || "".equals(...)` (discount excluded flag is null or empty)

#### Block 5.1.1 — Null/Empty Case (L1363-L1364)

| # | Type | Code |
|---|------|------|
| 1 | SET | `bool_wrib_auto_aply_tg_gai_flg = false` // Default to not excluded |

#### Block 5.1.2 — Non-Null Case [ELSE] (L1365-L1376)

**Condition:** `String.valueOf(custbean.sendMessageString("割引自動適用対象外フラグ", DATABEAN_GET_VALUE))` is not null/empty

##### Block 5.1.2.1 — Equals "0" [IF] (L1367-L1368)

**Condition:** `"0".equals(...)` (discount excluded flag explicitly set to "0")

| # | Type | Code |
|---|------|------|
| 1 | SET | `bool_wrib_auto_aply_tg_gai_flg = false` // Not excluded — discount applies |

##### Block 5.1.2.2 — Else [ELSE] (L1370-L1371)

| # | Type | Code |
|---|------|------|
| 1 | SET | `bool_wrib_auto_aply_tg_gai_flg = true` // Excluded — discount does not apply |

### Block 5.2 — SPECIAL DISPLAY LOGIC [IF/ELSE] (L1387-L1401)

v5.00.00: Conditional branch for FTTH course change fee discount eligibility (e光ネット && マンション以外 && サービス提供中 && 異動区分「コース変更」&& コース変更手数料減額SP対象).

**Condition:** `JKKCommonConst.SVC_CD_NET = "01"` (Internet service) AND `MANSION_FLAG_0 = "0"` (not mansion) AND `JKKCommonConst.IDO_DIV_VALUE_00009 = "00009"` (course change) AND `Integer.parseInt(svc_kei_status) >= 100` (active service) AND `CP_DISP_FLG_1 = "1"` (fee discount display target)

#### Block 5.2 — Special Case (L1388-L1398) — All conditions match

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svcFormBean.sendMessageBoolean(KKW02701SFConst.WRIB_AUTO_APLY_TG_GAI_FLG = "割引自動適用対象外フラグ", DATABEAN_SET_VALUE, bool_wrib_auto_aply_tg_gai_flg)` // Set discount auto-apply exclusion flag (コース変更手数料減額SP適用外設定) |
| 2 | CALL | `svcFormBean.sendMessageString(KKW02701SFConst.BTN_CTRL_FLG = "ボタン制御フラグ", DATABEAN_SET_VALUE, "3")` // Set button control flag to "3" for discount eligibility screen (ボタン制御フラグを設定する) |
| 3 | CALL | `svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG = "戻るボタン制御フラグ", DATABEAN_SET_VALUE, "3")` // Set back button control flag to "3" |

#### Block 5.2.1 — Normal Case [ELSE] (L1399-L1404)

Default button control flags for non-discount-eligible scenarios.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svcFormBean.sendMessageString(KKW02701SFConst.BTN_CTRL_FLG = "ボタン制御フラグ", DATABEAN_SET_VALUE, "2")` // Override button control flag to "2" to hide button (ボタン制御フラグを非表示に上書きする) |
| 2 | CALL | `svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG = "戻るボタン制御フラグ", DATABEAN_SET_VALUE, "1")` // Set back button control flag to "1" |

### Block 6 — FORWARD (L1407-L1408)

Set the forward destination screen information and return success.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02701 = "KKW02701", JKKScreenConst.SCREEN_NAME_KKW02701 = "コース履歴")` // Set forward destination screen info (遷移先画面情報を設定します) |
| 2 | RETURN | `return true` // Return success |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| コース履歴一覧 (Course History List) | Concept | A list of all past service plan/course changes for a customer — core screen for viewing service plan modification history |
| コース (Course) | Field | Service plan/package — a bundled offering (Internet, TV, phone, etc.) that a customer subscribes to |
| 異動区分 (Ido Bun) | Field | Movement type code — classifies the type of contract change (e.g., "00009" = course change/plan change) |
| サービスコード (Service Code) | Field | Service type identifier — "01" = FTTH (Internet), "02" = Phone, "03" = TV, "04" = Hosting |
| SVC_CD_NET = "01" | Constant | Internet service (Fiber-to-the-Home / e光) service code in JKKCommonConst |
| IDO_DIV_VALUE_00009 = "00009" | Constant | Course change (plan change) movement type code in JKKCommonConst |
| マンションフラグ (Mansion Flag) | Field | Apartment/high-density housing flag — distinguishes standalone from multi-unit building contracts |
| MANSION_FLAG_0 = "0" | Constant | Not a mansion/apartment — standalone or non-high-density building (local constant) |
| サービス契約ステータス (Service Contract Status) | Field | Numeric status of the service contract — values >= 100 indicate active/in-progress service |
| 割引自動適用対象外フラグ (Discount Auto-Apply Exclusion Flag) | Field | Boolean flag indicating whether automatic discount application is excluded for this customer |
| bool_wrib_auto_aply_tg_gai_flg | Variable | Local boolean: `true` = discount excluded, `false` = discount applies (wrib = 割引/Discount) |
| コース変更手数料減額表示 (Course Change Fee Discount Display) | Field | Flag indicating whether the customer is eligible for course change fee reductions |
| CP_DISP_FLG_1 = "1" | Constant | Course change fee discount display target active (local constant) |
| ボタン制御フラグ (Button Control Flag) | Field | UI button display flag — "2" = hidden, "3" = discount eligibility screen mode |
| BTN_CTRL_FLG | Constant | Key for ボタン制御フラグ in KKW02701SFConst |
| 戻るボタン制御フラグ (Back Button Control Flag) | Field | Controls the back/close button visibility in popup mode — "0" = hide, "1" = show, "3" = special mode |
| CTRL_BUTTON_FLG | Constant | Key for 戻るボタン制御フラグ in KKW02701SFConst |
| 運用年月日 (Unyo Nensgetsuhibi) | Constant | Operation date — the date used for all operations in the current session |
| UNYO_YMD | Constant | Key for 運用年月日 in KKW02701SFConst |
| KKW02701 | Constant | Screen ID and screen name (コース履歴) — the course history list display screen |
| KKSV0394 | Constant | Use case ID for the course history search service routed via TELEGRAM_INFO_USECASE_ID |
| X31SDataBeanAccess | Class | Service data bean access class — used to set/get values in the webview data bean |
| OneStopDataBeanAccess | Class | Parent class providing getDataBeanArray() for nested data bean access |
| KKSV0394_KKSV0394OPDBMapper | Class | Data mapper for the KKSV0394 screen service — handles input/output data bean binding |
| setPopupValue() | Method | Checks whether the current screen execution is in popup mode |
| invokeService() | Method | Invokes a backend service component with paramMap, inputMap, and outputMap |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service offered by K-Opticom |
| e光 (e-Hikari) | Business term | K-Opticom's FTTH (fiber-to-the-home) internet service brand (service code "01") |
