# Business Logic — FUW00943SFLogic.selectMansionMngn() [364 LOC]

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

## 1. Role

### FUW00943SFLogic.selectMansionMngn()

This method assembles and returns a `StringBuilder` containing all message strings displayed during the **Mansion Management (マンション管理)** screen for the eo broadband residential service contract flow. Its primary business responsibility is to compose the full set of **mail text (メール文言)** — i.e., customer-facing informational messages — for mansion-managed properties, covering installation periods, optional security services, number portability notices, and construction content disclaimers.

The method supports multiple **service types** based on which services the customer has selected for the mansion property: **Net (Network/Internet)**, **TV**, and **Tel (Telephone)**. It also handles **service categories** such as eo Security Pack, Internet Security Gateway, Notification Premium, and indoor equipment supplementary services (PC plan / PC Wireless plan / TV plan).

It implements the **Builder design pattern** by initializing an empty `StringBuilder` and sequentially appending localized message fragments via `JFUWebCommon.getDispText()`, which resolves display keys against a message management table. Conditional branches route the message assembly based on **delivery method patterns** (Isa / Gigaisa, VDSL, direct fiber, light distribution), **installation status flags** (with construction / without construction), **contract start dates**, and **service selection states**.

The method is called by `finMskm()` within the same class, serving as a **shared presentation-layer utility** that generates the message payload for the mansion management confirmation screen. It does not perform any database CRUD operations itself — all data sourcing is delegated to bean accessors (`getKeiyakusvcinfo`, `getEonet`, `getEotel`, `getMansioninfo`) and common utility methods.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["selectMansionMngn(webNewInfoBean)"])
    START --> INIT["Initialize StringBuilder message"]
    INIT --> GET_KYK["getKeiyakusvcinfo - Get contract service info"]
    GET_KYK --> EXTRACT_SVC["Extract service selections: mskmKbn, svc_net, svc_tv, svc_tel"]
    EXTRACT_SVC --> GET_NET["getEonet - Get network info"]
    GET_NET --> EXTRACT_NET["Extract network details: securityPack, inetsgwl, ntfmlprm, pc_pln, pcw_pln, tv_pln"]
    EXTRACT_NET --> GET_OTEL["getEotel - Get telephone info array"]
    GET_OTEL --> EXTRACT_TEL["Extract telCourse, mansionInfo, tkHoshikiPtnCd, manmos_knri_koji_flg"]
    EXTRACT_TEL --> DIVIDER["Append kugiri divider"]
    DIVIDER --> CHECK_IS_HIKARI["isHikariConcent"]
    CHECK_IS_HIKARI --> CHECK_HHS["hhs1gonlyFlg == 1 AND svc_net empty AND svcTel empty AND svcTv == TV"]
    CHECK_HHS --> MANMOS_TV{"isManmosTvOnly"}
    MANMOS_TV -->|false| CHECK_CX["cxStartFrom valid AND cxStartFrom <= getOpeDate"]
    MANMOS_TV -->|true| CHECK_CX
    CHECK_CX -->|false| ROUTER_CHECK["router_return_flag == CD00002_1"]
    CHECK_CX -->|true| IS_NEW{"mskmKbn == MSKM_KBN_NEW"}
    IS_NEW -->|false| ROUTER_CHECK
    IS_NEW -->|true| SET_KEY_BASE["Set dispKey based on conditions"]
    SET_KEY_BASE --> COND_MANMOS{"isManmosTvOnly"}
    COND_MANMOS -->|true| DISP1["dispKey = ML_DISP_EOMYPAGE_KOJI_ARI"]
    COND_MANMOS -->|false| COND_EARTH{"tkHoshikiPtnCd == ENET or GG_ENET"}
    COND_EARTH -->|true| DISP2["dispKey = ML_DSP_MSG_EOMYPAGE"]
    COND_EARTH -->|false| COND_HIKARI{"isHikariConcent OR manmos_knri_koji_flg == NASI"}
    COND_HIKARI -->|true| DISP3["dispKey = ML_DISP_EOMYPAGE_KOJI_NASI"]
    COND_HIKARI -->|true| COND_2025{"20250630 >= getOpeDate"}
    COND_2025 -->|true| DISP3_TO2025["dispKey = ML_DISP_EOMYPAGE_KOJI_NASI_TO20250630"]
    COND_2025 -->|false| APPEND_EO["Append return_code + return_code + mlEoMypage"]
    DISP3_TO2025 --> APPEND_EO
    DISP3 --> APPEND_EO
    COND_HIKARI -->|false| DISP4["dispKey = ML_DISP_EOMYPAGE_KOJI_ARI"]
    DISP4 --> APPEND_EO
    COND_MANMOS -->|true| DISP1
    COND_EARTH -->|true| DISP2
    COND_EARTH -->|false| COND_HIKARI
    ROUTER_CHECK --> ROUTER_TRUE{"router_return_flag == CD00002_1"}
    ROUTER_TRUE -->|true| APPEND_ROUTER["Append eo router return details message"]
    ROUTER_TRUE -->|false| PRECAUTIONS["General precautions block"]
    APPEND_ROUTER --> PRECAUTIONS
    PRECAUTIONS --> PREC_EARTH{"tkHoshikiPtnCd == ENET or GG_ENET"}
    PREC_EARTH -->|true| APPEND_EARTH_IP["Append Earth/I-Giga-Isa work period message"]
    PREC_EARTH -->|true| PREC_TV{"svcTv == TV"}
    PREC_EARTH -->|false| PREC_MANMOS{"isManmosTvOnly"}
    PREC_MANMOS -->|true| APPEND_BEAM_IP_TVO["Append TV-only IP work period message"]
    PREC_MANMOS -->|true| APPEND_BEAM_TV_TVO["Append TV-only TV work period message"]
    PREC_MANMOS -->|false| PREC_HIKARI{"isHikariConcent OR manmos_knri_koji_flg == NASI"}
    PREC_HIKARI -->|true| APPEND_BEAM_IP_CON["Append concentrate IP work period message"]
    PREC_HIKARI -->|true| PREC_TV_CON{"svcTv == TV"}
    PREC_HIKARI -->|false| APPEND_BEAM_IP_DEF["Append VDSL/direct fiber IP work period message"]
    PREC_HIKARI -->|false| PREC_TV_DEF{"svcTv == TV"}
    PREC_TV -->|true| APPEND_EARTH_TV["Append Earth/I-Giga-Isa TV work period message"]
    PREC_TV -->|false| MANSION_CONTENT["Mansion construction content block"]
    PREC_TV_TVO -->|true| APPEND_BEAM_TV_TVO
    PREC_TV_TVO -->|false| MANSION_CONTENT
    APPEND_BEAM_TV_TVO --> MANSION_CONTENT
    PREC_TV_CON -->|true| APPEND_BEAM_TV_CON["Append concentrate TV work period message"]
    PREC_TV_CON -->|false| MANSION_CONTENT
    APPEND_BEAM_TV_CON --> MANSION_CONTENT
    PREC_TV_DEF -->|true| APPEND_BEAM_TV_DEF["Append VDSL/direct fiber TV work period message"]
    PREC_TV_DEF -->|false| MANSION_CONTENT
    APPEND_BEAM_TV_DEF --> MANSION_CONTENT
    APPEND_EARTH_IP --> PREC_TV
    APPEND_EARTH_TV --> MANSION_CONTENT
    APPEND_BEAM_IP_TVO --> APPEND_BEAM_TV_TVO
    APPEND_BEAM_IP_DEF --> PREC_TV_DEF
    MANSION_CONTENT --> M_CND_MANMOS{"isManmosTvOnly"}
    M_CND_MANMOS -->|true| M_ARRY["Append TV-only mansion content (null-check)"]
    M_CND_MANMOS -->|false| M_CND_HIKARI{"isHikariConcent OR manmos_knri_koji_flg == NASI"}
    M_CND_HIKARI -->|true| M_CONCENT["Append concentrate mansion content (null-check)"]
    M_CND_HIKARI -->|false| M_DEFAULT["Append VDSL/direct fiber mansion content"]
    M_ARRY --> CONTENT_NOTICES["Content service notices block"]
    M_CONCENT --> CONTENT_NOTICES
    M_DEFAULT --> CONTENT_NOTICES
    CONTENT_NOTICES --> CX_CHECK["cxStartFrom valid AND mskmKbn == MSKM_KBN_NEW"]
    CX_CHECK -->|true| CX_EARTH{"tkHoshikiPtnCd == ENET or GG_ENET"}
    CX_CHECK -->|false| SEC_PACK{"netSecurityPack == SECURITY_PAC_MSKM"}
    CX_EARTH -->|true| CONTENTS_EARTH["Append Earth/I-Giga-Isa contents management message"]
    CX_EARTH -->|false| CONTENTS_DEFAULT["Append default contents management message"]
    CONTENTS_EARTH --> SEC_PACK
    CONTENTS_DEFAULT --> SEC_PACK
    SEC_PACK -->|true| APPEND_SEC["Append eo Security Pack message"]
    SEC_PACK -->|false| ISGWL_CHK{"netInetsgwl == INETSGWL_MSKM"}
    APPEND_SEC --> ISGWL_CHK
    ISGWL_CHK -->|true| APPEND_ISGWL["Append Internet Security Gateway message"]
    ISGWL_CHK -->|false| NTF_CHK{"netNtfmlprm == NTFMLPRM_MSKM"}
    APPEND_ISGWL --> NTF_CHK
    NTF_CHK -->|true| APPEND_NTFML["Append Notification Premium message"]
    NTF_CHK -->|false| KKHS_CHK{"netPc_pln OR netPcw_pln OR netTv_pln selected"}
    APPEND_NTFML --> KKHS_CHK
    KKHS_CHK -->|true| APPEND_KKHS["Append indoor equipment supplementary services message"]
    KKHS_CHK -->|false| TEL_ADD{"svcTel == TV AND mskmKbn == ADD"}
    APPEND_KKHS --> TEL_ADD
    TEL_ADD -->|true| APPEND_TEL_ADD["Append light phone adder message"]
    TEL_ADD -->|false| TEL_CHOICE{"svcTel == TV"}
    APPEND_TEL_ADD --> TEL_CHOICE
    TEL_CHOICE -->|true| PORT_CHECK["Check number portability: bmpUm1 from eotel[0], bmpUm2 from eotel[1]"]
    TEL_CHOICE -->|false| RETURN_MSG
    PORT_CHECK --> BMP_CHECK{"bmpUm1 == USE OR bmpUm2 == USE"}
    BMP_CHECK -->|true| BNP_EARTH{"tkHoshikiPtnCd == ENET or GG_ENET"}
    BMP_CHECK -->|false| RETURN_MSG
    BNP_EARTH -->|true| BNP_KEY_EARTH["dispKey = ML_DSP_MSG_BNP_EATHER"]
    BNP_EARTH -->|false| BNP_HIKARI{"isHikariConcent OR manmos_knri_koji_flg == NASI"}
    BNP_HIKARI -->|true| BNP_KEY_HIKARI["dispKey = ML_DSP_MSG_BNP_KOJI_NASI"]
    BNP_HIKARI -->|false| BNP_KEY_DEF["dispKey = ML_DSP_MSG_BNP_BEAM"]
    BNP_KEY_EARTH --> APPEND_BNP["Append number portability message"]
    BNP_KEY_HIKARI --> APPEND_BNP
    BNP_KEY_DEF --> APPEND_BNP
    APPEND_BNP --> RETURN_MSG
    RETURN_MSG(["Return message StringBuilder"])
    RETURN_MSG --> END_NODE(["End"])
```

**Key Constant Values Resolved:**
- `JFUStrConst.MSKM_KBN_NEW` — New mansion submission service type indicator
- `JFUStrConst.MSKM_KBN_ADD` — Additional service submission type indicator
- `JFUStrConst.SELECT_SVC_NET_CHOICE` — Empty / unselected network service choice
- `JFUStrConst.SELECT_SVC_TV_CHOICE` — Empty / unselected TV service choice
- `JFUStrConst.SELECT_SVC_TEL_CHOICE` — Empty / unselected telephone service choice
- `JFUStrConst.TK_HOSHIKI_PTN_ENET` — Isa (Isa) delivery method pattern code
- `JFUStrConst.TK_HOSHIKI_PTN_GG_ENET` — Gigaisa delivery method pattern code
- `JFUStrConst.MANMOS_KNRI_KOJI_FLG_NASI` — Mansion management: without construction flag
- `JFUStrConst.HHS_1GONLY_FLG_1` — Single 1G-only flag value "1"
- `JFUStrConst.CD00002_1` — eo multi-function router return requirement flag
- `JFUStrConst.SECURITY_PAC_MSKM` — eo Security Pack selected value
- `JFUStrConst.INETSGWL_MSKM` — Internet Security Gateway selected value
- `JFUStrConst.NTFMLPRM_MSKM` — Notification Premium selected value
- `JFUStrConst.PC_PLN_MSKM` — PC plan selected value
- `JFUStrConst.PCW_PLN_MSKM` — PC Wireless plan selected value
- `JFUStrConst.TV_PLN_MSKM` — TV plan selected value
- `JFUStrConst.USE_BMP_USE` — Number portability "used" indicator
- `JFUStrConst.TEL_COURSE_2BANGOU_SVC` — 2-number service course

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `webNewInfoBean` | `X31SDataBeanAccess` | The web form data bean carrying the customer's current input during the mansion management screen. Contains submission category (MSKM_KBN), selected services (Net/TV/Tel), contract service info, network info, telephone info, and mansion property details (delivery method, installation flag, 1G-only flag). |

**Instance fields / external state read:**
- `this` (the `FUW00943SFLogic` instance) — passed as context to `JFUWebCommon.getOpeDate(this, null)`.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getKeiyakusvcinfo(webNewInfoBean)` | - | - | Reads contract service information from web bean data |
| R | `getEonet(webNewInfoBean)` | - | - | Reads network service information from web bean data |
| R | `getEotel(webNewInfoBean)` | - | - | Reads telephone service information array from web bean data |
| R | `getMansioninfo(webNewInfoBean)` | - | - | Reads mansion property information from web bean data |
| R | `JFUStrConst.getDispText` | - | - | Resolves localized message text from message management table using display key |
| R | `JFUStrConst.getDispItem` | - | - | Resolves display item text for static UI labels (e.g., CX start date) |
| R | `JFUWebCommon.getDispText` | - | - | Resolves localized message text for the FUW00943 screen |
| R | `JFUWebCommon.getDispItem` | - | - | Resolves display item for CX start date configuration |
| R | `JFUWebCommon.getOpeDate` | - | - | Retrieves current operation date from the system |
| R | `JFUWebCommon.isHikariConcent` | - | - | Determines if the mansion property has a dedicated Hikari (fiber) concentration setup |
| R | `X31SDataBeanAccess.sendMessageString` | - | - | Extracts string values from data bean by message key |
| R | `JFUStrConst.isNull` | - | - | Null-check utility for strings |
| - | `JFUStrConst.RETURN_CODE` | - | - | Literal string constant used as newline separator for message assembly |

**Note:** This method performs **no database operations** itself. All data is sourced from the `X31SDataBeanAccess` web bean (which was populated by prior screen steps or DAO calls). The `getDispText`/`getDispItem` calls resolve display labels from a message management table (internal dictionary), and `getOpeDate` fetches the current operational date.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `FUW00943SFLogic.finMskm()` | `finMskm()` → `selectMansionMngn(webNewInfoBean)` | `getDispText [R]`, `getOpeDate [R]`, `sendMessageString [R]` |

**No screen/batch entry points** were found within 8 hops of this method. The only direct caller is `finMskm()`, which is a method within the same class (`FUW00943SFLogic`). This method is a **presentation-layer message assembler** — it does not trigger any business logic, data reads, or database operations.

**Terminal operations from this method:**
- `getDispText` [R] — Message lookup (repeated across many display keys)
- `getDispItem` [R] — Static display item lookup
- `getOpeDate` [R] — Current date retrieval
- `isHikariConcent` [R] — Fiber concentration check
- `sendMessageString` [R] — Web bean value extraction

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize processing (L3348)

| # | Type | Code |
|---|------|------|
| 1 | SET | `message = new StringBuilder()` |

**Block 2** — [SET] Extract contract service information (L3350–L3363)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `bnKykSrv = getKeiyakusvcinfo(webNewInfoBean)` // Get contract service bean |
| 2 | SET | `mskmKbn = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, DATABEAN_GET_VALUE)` // Submission category |
| 3 | SET | `svc_net = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10, DATABEAN_GET_VALUE)` // Selected Net service |
| 4 | SET | `svc_tv = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10, DATABEAN_GET_VALUE)` // Selected TV service |
| 5 | SET | `svc_tel = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, DATABEAN_GET_VALUE)` // Selected Tel service |

**Block 3** — [SET] Extract network service details (L3364–L3387)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `bnNet = getEonet(webNewInfoBean)` // Get network info bean |
| 2 | SET | `netSecurityPack = bnNet.sendMessageString(CommonInfoCFConst.SECURITY_PACK_MSKM_11, ...)` // eo Security Pack |
| 3 | SET | `netInetsgwl = bnNet.sendMessageString(CommonInfoCFConst.INETSGWL_MSKM_11, ...)` // Internet Security Gateway |
| 4 | SET | `netNtfmlprm = bnNet.sendMessageString(CommonInfoCFConst.NTFMLPRM_MSKM_11, ...)` // Notification Premium |
| 5 | SET | `netPc_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_PC_MSKM_11, ...)` // PC plan |
| 6 | SET | `netPcw_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_PCW_MSKM_11, ...)` // PC Wireless plan |
| 7 | SET | `netTv_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_TV_MSKM_11, ...)` // TV plan |

**Block 4** — [SET] Extract telephone and mansion information (L3390–L3407)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `bnEotel = getEotel(webNewInfoBean)` // Get telephone info array |
| 2 | SET | `telCourse = webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06, ...)` // Telephone course |
| 3 | CALL | `mansionInfoBean = getMansioninfo(webNewInfoBean)` // Get mansion info |
| 4 | SET | `tkHoshikiPtnCd = mansionInfoBean.sendMessageString(CommonInfoCFConst.TEIKYO_HOSHIKI_PTN_CD_16, ...)` // Delivery method pattern |
| 5 | SET | `manmos_knri_koji_flg = mansionInfoBean.sendMessageString(CommonInfoCFConst.MANMOS_KNRI_KOJI_FLG_16, ...)` // Mansion construction flag |
| 6 | CALL | `kugiri = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_KUGIRI2)` // Divider text |
| 7 | EXEC | `message.append(kugiri)` // Append divider |

**Block 5** — [IF] Check if mansion is TV-only (L3416–L3423) `[hhs1gonlyFlg == JFUStrConst.HHS_1GONLY_FLG_1]`

| # | Type | Code |
|---|------|------|
| 1 | SET | `isHikariConcent = JFUWebCommon.isHikariConcent(mansionInfoBean)` // Fiber concentration check |
| 2 | SET | `hhs1gonlyFlg = mansionInfoBean.sendMessageString(CommonInfoCFConst.HHS_1GONLY_FLG_16, ...)` // 1G-only flag |
| 3 | SET | `isManmosTvOnly = false` |
| 4 | IF | `hhs1gonlyFlg == HHS_1GONLY_FLG_1 AND svc_net != SELECT_SVC_NET_CHOICE AND svcTel != SELECT_SVC_TEL_CHOICE AND svcTv == SELECT_SVC_TV_CHOICE` |
| 5 | SET | `isManmosTvOnly = true` // Mansion managed property with TV-only service |

**Block 6** — [IF] Check cxStartFrom date and eo Mypage message display (L3425–L3465) `[cxStartFrom valid AND cxStartFrom <= getOpeDate]`

| # | Type | Code |
|---|------|------|
| 1 | SET | `cxStartFrom = JFUWebCommon.getDispItem(CX_START_FROM)` // CX start date threshold |
| 2 | IF | `cxStartFrom is not null AND Integer.parseInt(cxStartFrom) <= Integer.parseInt(JFUWebCommon.getOpeDate(this, null))` |
| 3 | IF | `mskmKbn == MSKM_KBN_NEW` // New mansion submission |
| 4 | SET | `dispKey = JFUStrConst.EMPTY` |

**Block 6.4.1** — [IF] Branch for eo Mypage message key selection `[isManmosTvOnly]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `isManmosTvOnly` |
| 2 | SET | `dispKey = ML_DISP_EOMYPAGE_KOJI_ARI` // Mansion managed TV-only submission (with construction) |
| 3 | ELSE-IF | `tkHoshikiPtnCd == TK_HOSHIKI_PTN_ENET OR tkHoshikiPtnCd == TK_HOSHIKI_PTN_GG_ENET` |
| 4 | SET | `dispKey = ML_DSP_MSG_EOMYPAGE` // Mansion message for Isa / Gigaisa |
| 5 | ELSE-IF | `isHikariConcent OR manmos_knri_koji_flg == MANMOS_KNRI_KOJI_FLG_NASI` |
| 6 | SET | `dispKey = ML_DISP_EOMYPAGE_KOJI_NASI` // Mansion message for fiber concentrate / mansion managed (no construction) |
| 7 | IF | `Integer.parseInt("20250630") >= Integer.parseInt(JFUWebCommon.getOpeDate(this, null))` // Through 2025-06-30 display |
| 8 | SET | `dispKey = ML_DISP_EOMYPAGE_KOJI_NASI_TO20250630` // Transitional message through 2025-06-30 |
| 9 | ELSE | `dispKey = ML_DISP_EOMYPAGE_KOJI_ARI` // Default: VDSL / direct fiber / light distribution / mansion managed (with construction) |
| 10 | CALL | `mlEoMypage = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, dispKey)` |
| 11 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 12 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 13 | EXEC | `message.append(mlEoMypage)` |

**Block 7** — [IF] eo multi-function router return notice `[router_return_flag == CD00002_1]` (L3468–L3476)

| # | Type | Code |
|---|------|------|
| 1 | SET | `returnFlg = bnNet.sendMessageString(CommonInfoCFConst.ROUTER_RETURN_FLG_11, ...)` |
| 2 | IF | `returnFlg == CD00002_1` // eo multi-function router requires return |
| 3 | CALL | `mlRouterReturn = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_ROUTER_RETURN_DTL)` |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 6 | EXEC | `message.append(mlRouterReturn)` |

**Block 8** — [IF] General precautions for Earth/I-Giga-Isa service selection (L3480–L3495) `[tkHoshikiPtnCd == ENET or GG_ENET]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `tkHoshikiPtnCd == TK_HOSHIKI_PTN_ENET OR tkHoshikiPtnCd == TK_HOSHIKI_PTN_GG_ENET` |
| 2 | CALL | `mlEathIp = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_EATHER_IP)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlEathIp)` // Work period for Earth/I-Giga-Isa |
| 6 | IF | `svcTv == SELECT_SVC_TV_CHOICE` // TV also selected |
| 7 | CALL | `mlEathTv = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_EATHER_TV)` |
| 8 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 9 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 10 | EXEC | `message.append(mlEathTv)` // TV work period |

**Block 9** — [ELSE-IF] TV-only mansion precautions (L3498–L3517) `[isManmosTvOnly]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `isManmosTvOnly` // Mansion managed property with TV-only service |
| 2 | CALL | `mlBeamIp = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_TV_ONLY_IP)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlBeamIp)` // Work period |
| 6 | CALL | `mlBeamTv = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_TV_ONLY_TV)` |
| 7 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 8 | EXEC | `message.append(mlBeamTv)` // TV work period |

**Block 10** — [ELSE-IF] Fiber concentrate / no-construction precautions (L3520–L3542) `[isHikariConcent OR manmos_knri_koji_flg == NASI]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `isHikariConcent OR manmos_knri_koji_flg == MANMOS_KNRI_KOJI_FLG_NASI` |
| 2 | CALL | `mlBeamIp = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_CONCENT_IP)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlBeamIp)` // Work period for concentrate/no-construction |
| 6 | IF | `svcTv == SELECT_SVC_TV_CHOICE` |
| 7 | CALL | `mlBeamTv = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_CONCENT_TV)` |
| 8 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 9 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 10 | EXEC | `message.append(mlBeamTv)` // TV work period |

**Block 11** — [ELSE] Default precautions: VDSL/direct fiber/light distribution (L3545–L3566)

| # | Type | Code |
|---|------|------|
| 1 | IF | Default branch: VDSL / direct fiber / light distribution / mansion managed (with construction) |
| 2 | CALL | `mlBeamIp = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_BEAM_IP)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlBeamIp)` // Work period |
| 6 | IF | `svcTv == SELECT_SVC_TV_CHOICE` |
| 7 | CALL | `mlBeamTv = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_BEAM_TV)` |
| 8 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 9 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 10 | EXEC | `message.append(mlBeamTv)` // TV work period |

**Block 12** — [IF] Mansion construction content (L3568–L3595)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isManmosTvOnly` // TV-only mansion |
| 2 | CALL | `mlKjMansion = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_TV_ONLY_MANSION)` |
| 3 | IF | `mlKjMansion is not null` |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 6 | EXEC | `message.append(mlKjMansion)` // Construction content |
| 7 | ELSE-IF | `isHikariConcent OR manmos_knri_koji_flg == MANMOS_KNRI_KOJI_FLG_NASI` |
| 8 | CALL | `mlKjMansion = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_CONCENT_MANSION)` |
| 9 | IF | `mlKjMansion is not null` |
| 10 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 11 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 12 | EXEC | `message.append(mlKjMansion)` // Construction content |
| 13 | ELSE | `mlKjMansion = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KJ_MANSION)` |
| 14 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 15 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 16 | EXEC | `message.append(mlKjMansion)` // Construction content |

**Block 13** — [IF] Content service notices (L3599–L3621) `[cxStartFrom valid AND mskmKbn == MSKM_KBN_NEW]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `cxStartFrom valid AND Integer.parseInt(cxStartFrom) <= Integer.parseInt(getOpeDate(this, null))` |
| 2 | IF | `mskmKbn == MSKM_KBN_NEW` |
| 3 | SET | `dispKey = JFUStrConst.EMPTY` |
| 4 | IF | `tkHoshikiPtnCd == TK_HOSHIKI_PTN_ENET OR tkHoshikiPtnCd == TK_HOSHIKI_PTN_GG_ENET` |
| 5 | SET | `dispKey = ML_DSP_MSG_CONTENTSMGN` // Earth/I-Giga-Isa contents management |
| 6 | ELSE | `dispKey = ML_DISP_CONTENTSMGN_MT` // Default contents management |
| 7 | CALL | `mlContentsMgn = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, dispKey)` |
| 8 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 9 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 10 | EXEC | `message.append(mlContentsMgn)` |

**Block 14** — [IF] eo Security Pack selected (L3624–L3632) `[netSecurityPack == SECURITY_PAC_MSKM]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `netSecurityPack == SECURITY_PAC_MSKM` |
| 2 | CALL | `mlMsgSecurityPack = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_SECUPA)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlMsgSecurityPack)` |

**Block 15** — [IF] Internet Security Gateway selected (L3635–L3643) `[netInetsgwl == INETSGWL_MSKM]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `netInetsgwl == INETSGWL_MSKM` |
| 2 | CALL | `mlMsgInetsgwl = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_INETSGWL)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlMsgInetsgwl)` |

**Block 16** — [IF] Notification Premium selected (L3646–L3654) `[netNtfmlprm == NTFMLPRM_MSKM]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `netNtfmlprm == NTFMLPRM_MSKM` |
| 2 | CALL | `mlMsgNtfmlprm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_NTFMLPRM)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlMsgNtfmlprm)` |

**Block 17** — [IF] Indoor equipment supplementary services (L3657–L3667) `[PC plan OR PCW plan OR TV plan]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `netPc_pln == PC_PLN_MSKM OR netPcw_pln == PCW_PLN_MSKM OR netTv_pln == TV_PLN_MSKM` |
| 2 | CALL | `mlMsgKkhs = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_KKHS)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlMsgKkhs)` |

**Block 18** — [IF] Additional service with telephone selection (L3670–L3679) `[svcTel == TV AND mskmKbn == ADD]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcTel == SELECT_SVC_TEL_CHOICE AND mskmKbn == MSKM_KBN_ADD` |
| 2 | CALL | `mlMsgtelAdd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, ML_DSP_MSG_TEL_ADD)` |
| 3 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 4 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 5 | EXEC | `message.append(mlMsgtelAdd)` // Light phone adder notice |

**Block 19** — [IF] Telephone service number portability check (L3682–L3709) `[svcTel == TV]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcTel == SELECT_SVC_TEL_CHOICE` |
| 2 | SET | `bmpUm2 = JFUStrConst.EMPTY` |
| 3 | IF | `telCourse == TEL_COURSE_2BANGOU_SVC` // 2-number service |
| 4 | SET | `bmpUm2 = bnEotel[1].sendMessageString(CommonInfoCFConst.USE_BMP_12, ...)` // Number portability for 2nd number |
| 5 | SET | `bmpUm1 = bnEotel[0].sendMessageString(CommonInfoCFConst.USE_BMP_12, ...)` // Number portability for 1st number |
| 6 | IF | `bmpUm1 == USE_BMP_USE OR bmpUm2 == USE_BMP_USE` // Number portability requested |
| 7 | SET | `dispKey = JFUStrConst.EMPTY` |
| 8 | IF | `tkHoshikiPtnCd == TK_HOSHIKI_PTN_ENET OR tkHoshikiPtnCd == TK_HOSHIKI_PTN_GG_ENET` |
| 9 | SET | `dispKey = ML_DSP_MSG_BNP_EATHER` // Mansion number portability message for Earth/I-Giga-Isa |
| 10 | ELSE-IF | `isHikariConcent OR manmos_knri_koji_flg == MANMOS_KNRI_KOJI_FLG_NASI` |
| 11 | SET | `dispKey = ML_DSP_MSG_BNP_KOJI_NASI` // Mansion number portability for concentrate/no-construction |
| 12 | ELSE | `dispKey = ML_DSP_MSG_BNP_BEAM` // Default: VDSL/direct fiber/light distribution |
| 13 | CALL | `mlMsgBnp = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00943, dispKey)` |
| 14 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 15 | EXEC | `message.append(JFUStrConst.RETURN_CODE)` // Newline |
| 16 | EXEC | `message.append(mlMsgBnp)` // Number portability handling notice |

**Block 20** — [RETURN] Return assembled message (L3710)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `mskmKbn` | Field | Mansion submission category — indicates whether the submission is a new mansion application (`MSKM_KBN_NEW`) or an additional service submission (`MSKM_KBN_ADD`) |
| `svc_net` | Field | Selected network (Internet) service — indicates whether the customer selected the eo broadband network service |
| `svc_tv` | Field | Selected television (TV) service — indicates whether the customer selected the eo television service |
| `svc_tel` | Field | Selected telephone (Tel) service — indicates whether the customer selected the telephone service |
| `tkHoshikiPtnCd` | Field | Delivery method pattern code — identifies the mansion network delivery type (e.g., Isa, Gigaisa, VDSL, direct fiber, light distribution) |
| `manmos_knri_koji_flg` | Field | Mansion management construction flag — indicates whether construction work is required (`MANMOS_KNRI_KOJI_FLG_NASI` = no construction, otherwise with construction) |
| `isHikariConcent` | Field | Fiber concentration flag — determines if the mansion uses a dedicated eo Hikari (fiber) concentration setup |
| `hhs1gonlyFlg` | Field | Single 1G-only flag — indicates the property is limited to a single 1G bandwidth service |
| `isManmosTvOnly` | Field | Mansion TV-only flag — true when the property is mansion-managed AND only TV service is selected (no net, no tel) |
| `returnFlg` | Field | Router return flag — indicates whether the eo multi-function router must be returned (`CD00002_1` = return required) |
| `netSecurityPack` | Field | eo Security Pack selection status |
| `netInetsgwl` | Field | Internet Security Gateway selection status |
| `netNtfmlprm` | Field | Notification Premium selection status |
| `netPc_pln` | Field | PC plan (indoor equipment supplementary service) selection status |
| `netPcw_pln` | Field | PC Wireless plan (indoor equipment supplementary service) selection status |
| `netTv_pln` | Field | TV plan (indoor equipment supplementary service) selection status |
| `telCourse` | Field | Telephone course — identifies the telephone service course type |
| `bmpUm1` | Field | Number portability indicator for the first telephone number (USE = portability requested) |
| `bmpUm2` | Field | Number portability indicator for the second telephone number (USE = portability requested) |
| `dispKey` | Field | Display key — used to look up localized message text from the message management table |
| `cxStartFrom` | Field | CX (Customer Experience) start date — threshold date from which eo Mypage and content service notices should be displayed |
| `ML_DSP_KUGIRI2` | Constant | Message display key for the division line separator between service categories |
| `ML_DISP_EOMYPAGE_KOJI_ARI` | Constant | eo Mypage message key for properties with construction (Kozi Ari) |
| `ML_DSP_MSG_EOMYPAGE` | Constant | eo Mypage message key for Isa / Gigaisa delivery method |
| `ML_DISP_EOMYPAGE_KOJI_NASI` | Constant | eo Mypage message key for fiber concentrate / no-construction properties |
| `ML_DISP_EOMYPAGE_KOJI_NASI_TO20250630` | Constant | Transitional eo Mypage message valid through June 30, 2025 |
| `ML_DSP_ROUTER_RETURN_DTL` | Constant | Message key for eo multi-function router return notice details |
| `ML_DSP_MSG_KJ_EATHER_IP` | Constant | Message key for Earth/I-Giga-Isa work period (IP/network) |
| `ML_DSP_MSG_KJ_EATHER_TV` | Constant | Message key for Earth/I-Giga-Isa work period (TV) |
| `ML_DSP_MSG_KJ_TV_ONLY_IP` | Constant | Message key for TV-only mansion IP work period |
| `ML_DSP_MSG_KJ_TV_ONLY_TV` | Constant | Message key for TV-only mansion TV work period |
| `ML_DSP_MSG_KJ_CONCENT_IP` | Constant | Message key for fiber concentrate IP work period |
| `ML_DSP_MSG_KJ_CONCENT_TV` | Constant | Message key for fiber concentrate TV work period |
| `ML_DSP_MSG_KJ_BEAM_IP` | Constant | Message key for VDSL/direct fiber/light distribution IP work period |
| `ML_DSP_MSG_KJ_BEAM_TV` | Constant | Message key for VDSL/direct fiber/light distribution TV work period |
| `ML_DSP_MSG_KJ_TV_ONLY_MANSION` | Constant | Message key for TV-only mansion construction content |
| `ML_DSP_MSG_KJ_CONCENT_MANSION` | Constant | Message key for fiber concentrate mansion construction content |
| `ML_DSP_MSG_KJ_MANSION` | Constant | Message key for default mansion construction content |
| `ML_DSP_MSG_CONTENTSMGN` | Constant | Contents management message key for Earth/I-Giga-Isa |
| `ML_DISP_CONTENTSMGN_MT` | Constant | Contents management message key for default (non-Earth/I-Giga-Isa) |
| `ML_DSP_MSG_SECUPA` | Constant | Message key for eo Security Pack notice |
| `ML_DSP_MSG_INETSGWL` | Constant | Message key for Internet Security Gateway notice |
| `ML_DSP_MSG_NTFMLPRM` | Constant | Message key for Notification Premium notice |
| `ML_DSP_MSG_KKHS` | Constant | Message key for indoor equipment supplementary services notice |
| `ML_DSP_MSG_TEL_ADD` | Constant | Message key for light phone adder notice (additional telephone service) |
| `ML_DSP_MSG_BNP_EATHER` | Constant | Message key for mansion number portability (Earth/I-Giga-Isa) |
| `ML_DSP_MSG_BNP_KOJI_NASI` | Constant | Message key for mansion number portability (no construction) |
| `ML_DSP_MSG_BNP_BEAM` | Constant | Message key for mansion number portability (default/VDSL) |
| JACBatCommon | Class | Common null-check utility class |
| JFUWebCommon | Class | Web-level common utility class providing display text resolution, null checks, date retrieval, and fiber concentration checks |
| X31SDataBeanAccess | Class | Data bean access object for web form data — used to extract string values by message key |
| eo | Business term | eo (Eye On) — K-Opticom's brand for bundled telecom services (internet, TV, telephone) |
| MANMOS | Business term | Mansion Management (マンション管理) — a property management type where the internet infrastructure is shared across a multi-unit building |
| Isa | Business term | eo Internet Service Access — a branded broadband service tier (Isa pattern delivery method) |
| Gigaisa | Business term | Gigabit Isa — a higher-speed variant of the Isa broadband service |
| VDSL | Business term | Vectoring-enabled Digital Subscriber Line — a copper-based broadband delivery technology used in some mansion buildings |
| Beam Fiber | Business term | Beam (Beam = B road access via Eo access line MAnagement) — a shared fiber distribution method in mansion buildings |
| Mypage | Business term | eo Mypage — a self-service customer portal for eo broadband subscribers |
| PC plan / PCW plan / TV plan | Business term | Indoor equipment supplementary services — optional hardware rental plans for PC, PC Wireless, or TV equipment |
| Number Portability (番号ポータビリティ) | Business term | A service allowing customers to retain their existing telephone number when switching providers |
