# Business Logic — FUW05401SFLogic.setMskmMailInfo() [158 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW05401SF.FUW05401SFLogic` |
| Layer | Service (Inferred: the `eo.web.webview.*` package in the K-Opticom front-end architecture holds Logic classes that implement screen-specific business processing orchestration) |
| Module | `FUW05401SF` (Package: `eo.web.webview.FUW05401SF`) |

## 1. Role

### FUW05401SFLogic.setMskmMailInfo()

This method is responsible for determining and dispatching the correct **application completion email** (申込完了メール — *Oshikomi Kanryou Mail*) to be sent after a customer order or contract transaction has been finalized. It acts as a **routing/dispatch handler** that classifies the email by two dimensions: the **transaction division** (`TRAN_DIV`) — which categorizes the operation as Application (`申込`), Cancellation (`解約`), or Change (`変更`) — and the **parent screen ID** (`ronriScreenId`), which identifies the originating web screen and the specific service context. Based on these two dimensions, the method selects one of over 20 distinct mail templates, each identified by a unique `MSKM_COMP_MAIL_ID_*` constant. When the originating screen is FUW054, an additional branching decision on the multi-phone call flag (`MULTI_PHONE_CALL_FLG`) further differentiates between standard and multi-phone-call scenarios, selecting a different mail template for each. The method implements a **router pattern** with strict delegation: it never sends mail itself, but instead extracts a flag value from the data bean when needed, then delegates to `JFUWebCommon.sendMskmFinMail()` with the appropriate template ID. Its role in the larger system is as a shared email-dispatch coordinator invoked after order processing, ensuring the right notification is sent for the right business context.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setMskmMailInfo(bean, ronriScreenId)"])

    START --> G1["GET tran_div = bean TRAN_DIV"]

    G1 --> D1{"tran_div = TRAN_DIV_MSKM"}

    D1 -- "申込" --> Y1{"ronriScreenId = FUW054?"}

    Y1 -- "RONRI_SCREEN_ID_FUW054" --> G2["GET multiPhoneCallFlg = bean MULTI_PHONE_CALL_FLG"]
    Y1 -- "RONRI_SCREEN_ID_FUW055" --> CALL55_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW055_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW056" --> CALL56_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW056_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW057" --> CALL57_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW057_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW058" --> CALL58_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW058_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW059" --> CALL59_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW059_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW060" --> CALL60_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW060_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW061" --> CALL61_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW061_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW062" --> CALL62_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW062_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW102" --> CALL102_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW102_1)"]
    Y1 -- "RONRI_SCREEN_ID_FUW103" --> CALL103_1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW103_1)"]

    G2 --> D2{"multiPhoneCallFlg = CD00002_1"}

    D2 -- "Yes: Multi-Phone" --> CALL_MULT1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_3)"]
    D2 -- "No: Standard Phone" --> CALL_STD1["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_1)"]

    D1 -- "解約" --> Y2{"ronriScreenId = FUW054?"}

    Y2 -- "RONRI_SCREEN_ID_FUW054" --> G3["GET multiPhoneCallFlg = bean MULTI_PHONE_CALL_FLG"]
    Y2 -- "RONRI_SCREEN_ID_FUW055" --> CALL55_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW055_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW056" --> CALL56_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW056_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW057" --> CALL57_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW057_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW058" --> CALL58_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW058_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW059" --> CALL59_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW059_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW060" --> CALL60_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW060_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW061" --> CALL61_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW061_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW062" --> CALL62_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW062_2)"]
    Y2 -- "RONRI_SCREEN_ID_FUW103" --> CALL103_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW103_2)"]

    G3 --> D3{"multiPhoneCallFlg = CD00002_1"}

    D3 -- "Yes: Multi-Phone" --> CALL_MULT2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_4)"]
    D3 -- "No: Standard Phone" --> CALL_STD2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_2)"]

    D1 -- "変更" --> Y3{"ronriScreenId = FUW102?"}

    Y3 -- "RONRI_SCREEN_ID_FUW102" --> CALL102_2["EXEC JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW102_2)"]
    Y3 -- "No Match" --> NOOP_END["NOOP - Do nothing"]

    Y2 -- "No Match" --> NOOP_END

    Y3 -- "No Match" --> NOOP_END

    CALL_MULT1 --> END_NODE(["Return / Next"])
    CALL_STD1 --> END_NODE
    CALL55_1 --> END_NODE
    CALL56_1 --> END_NODE
    CALL57_1 --> END_NODE
    CALL58_1 --> END_NODE
    CALL59_1 --> END_NODE
    CALL60_1 --> END_NODE
    CALL61_1 --> END_NODE
    CALL62_1 --> END_NODE
    CALL102_1 --> END_NODE
    CALL103_1 --> END_NODE

    CALL_MULT2 --> END_NODE
    CALL_STD2 --> END_NODE
    CALL55_2 --> END_NODE
    CALL56_2 --> END_NODE
    CALL57_2 --> END_NODE
    CALL58_2 --> END_NODE
    CALL59_2 --> END_NODE
    CALL60_2 --> END_NODE
    CALL61_2 --> END_NODE
    CALL62_2 --> END_NODE
    CALL103_2 --> END_NODE

    CALL102_2 --> END_NODE
    NOOP_END --> END_NODE
```

**Constant Resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|------------------|
| `TRAN_DIV_MSKM` | `"申込"` (Application) | Transaction type: new service application/order |
| `TRAN_DIV_DSL` | `"解約"` (Cancellation) | Transaction type: contract cancellation |
| `TRAN_DIV_CHG` | `"変更"` (Change) | Transaction type: contract modification |
| `JFUStrConst.CD00002_1` | `"1"` | Multi-phone call flag: enabled (multiple simultaneous phone lines) |
| `FUW05401SFConst.TRAN_DIV` | `"処理区分"` | Data bean path key for the transaction division field |
| `FUW05401SFConst.MULTI_PHONE_CALL_FLG` | `"複数通話フラグ"` | Data bean path key for the multi-phone call flag |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `bean` | `X31SDataBeanAccess` | The screen data bean that carries all contextual data for the current screen session. Contains the transaction division (`TRAN_DIV`) and, when the originating screen is FUW054, the multi-phone call flag (`MULTI_PHONE_CALL_FLG`). This is the central data carrier passed through the entire processing chain of the screen. |
| 2 | `ronriScreenId` | `String` | The parent screen ID (親画面ID) that identifies which web screen initiated this processing. The value is one of `FUW054` through `FUW062`, `FUW102`, or `FUW103`, each representing a distinct service registration screen. This ID determines which mail template is selected. |

**External state read:**

| Field | Source | Business Description |
|-------|--------|---------------------|
| `tran_div` | `JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.TRAN_DIV)` | The transaction division extracted from the data bean, determining the top-level processing branch |
| `multiPhoneCallFlg` | `JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.MULTI_PHONE_CALL_FLG)` | Extracted only when `ronriScreenId == FUW054`; determines whether the mail template includes multi-phone or standard phone variants |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JFUWebCommon.getDataBeanItemByPath` | JFUWebCommon | - | Reads a field value from the data bean by path. Called to extract `TRAN_DIV` (line 2818) and `MULTI_PHONE_CALL_FLG` (lines 2824, 2892). |
| - | `JFUWebCommon.sendMskmFinMail` | JFUWebCommon | - | Sends the application completion email (申込完了メール) using the resolved mail template ID. Called for every matching screen/transaction combination. |
| - | `JFUMkmInfoSendMailCC.sendMskmFinMail` | JFUMkmInfoSendMailCC | - | Lower-level email component called transitively by `JFUWebCommon.sendMskmFinMail`. |
| - | `JFUMskmFinMailCC.sendMskmFinMail` | JFUMskmFinMailCC | - | Email sending CC (common component) called transitively by `JFUWebCommon.sendMskmFinMail`. |
| - | `JFUMskmFinMail.sendMskmFinMail` | JFUMskmFinMail | - | Final email delivery component called transitively through the call chain. |
| - | `FUW12101SFLogic.sendMskmFinMail` | FUW12101SFLogic | - | Alternative sendMskmFinMail implementation referenced from shared common layer. |
| - | `FUW12301SFLogic.sendMskmFinMail` | FUW12301SFLogic | - | Alternative sendMskmFinMail implementation referenced from shared common layer. |

**Classification rationale:** This method performs **no direct CRUD operations** on entities or databases. It is purely a routing and dispatch method: it reads a field from the data bean and delegates to the email-sending infrastructure. All data retrieval is a simple `getDataBeanItemByPath` (R — Read from in-memory bean), and all downstream operations are email delivery via the `sendMskmFinMail` component chain.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `sendMskmFinMail` [-] (x20 distinct mail IDs)

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `FUW05401SFLogic.mskmDsl()` | `mskmDsl()` -> `setMskmMailInfo(bean, ronriScreenId)` | `sendMskmFinMail` [Email Dispatch] |

**Explanation:** The method is called exclusively from `mskmDsl()` within the same class `FUW05401SFLogic`. The `mskmDsl()` method is the DSL (Do-So-Later / Deferred Processing) handler that executes after the main order registration process completes. It triggers this mail dispatch to ensure the application completion email is sent as part of the deferred processing flow.

**Terminal operations:** The method ultimately dispatches to `JFUWebCommon.sendMskmFinMail()` with 20 distinct mail template IDs depending on the combination of `TRAN_DIV` and `ronriScreenId`:

| Mail Template ID | Transaction Type | Screen ID | Scenario |
|-----------------|-----------------|-----------|----------|
| `MSKM_COMP_MAIL_ID_FUW054_1` | 申込 (Application) | FUW054 | Standard Phone |
| `MSKM_COMP_MAIL_ID_FUW054_2` | 解約 (Cancellation) | FUW054 | Standard Phone |
| `MSKM_COMP_MAIL_ID_FUW054_3` | 申込 (Application) | FUW054 | Multi-Phone Call |
| `MSKM_COMP_MAIL_ID_FUW054_4` | 解約 (Cancellation) | FUW054 | Multi-Phone Call |
| `MSKM_COMP_MAIL_ID_FUW055_1` / `_2` | 申込 / 解約 | FUW055 | Standard |
| `MSKM_COMP_MAIL_ID_FUW056_1` / `_2` | 申込 / 解約 | FUW056 | Standard |
| `MSKM_COMP_MAIL_ID_FUW057_1` / `_2` | 申込 / 解約 | FUW057 | Standard |
| `MSKM_COMP_MAIL_ID_FUW058_1` / `_2` | 申込 / 解約 | FUW058 | Standard |
| `MSKM_COMP_MAIL_ID_FUW059_1` / `_2` | 申込 / 解約 | FUW059 | Standard |
| `MSKM_COMP_MAIL_ID_FUW060_1` / `_2` | 申込 / 解約 | FUW060 | Standard |
| `MSKM_COMP_MAIL_ID_FUW061_1` / `_2` | 申込 / 解約 | FUW061 | Standard |
| `MSKM_COMP_MAIL_ID_FUW062_1` / `_2` | 申込 / 解約 | FUW062 | Standard |
| `MSKM_COMP_MAIL_ID_FUW102_1` | 申込 (Application) | FUW102 | Standard |
| `MSKM_COMP_MAIL_ID_FUW102_2` | 変更 (Change) | FUW102 | Standard |
| `MSKM_COMP_MAIL_ID_FUW103_1` | 申込 (Application) | FUW103 | Standard |
| `MSKM_COMP_MAIL_ID_FUW103_2` | 解約 (Cancellation) | FUW103 | Standard |

## 6. Per-Branch Detail Blocks

### Block 1 — IF (transaction division = Application) (L2820)

> When `TRAN_DIV_MSKM` (申込 / Application) is the transaction type, the method routes to the appropriate completion mail template based on the screen ID. For screen FUW054, it further differentiates between standard and multi-phone-call scenarios.

| # | Type | Code |
|---|------|------|
| 1 | GET | `tran_div = JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.TRAN_DIV)` // Extract transaction division [-> `"処理区分"`] |
| 2 | IF | `TRAN_DIV_MSKM.equals(tran_div)` // [-> `TRAN_DIV_MSKM = "申込"` (Application)] |

#### Block 1.1 — IF (screen ID = FUW054) (L2821)

> When the originating screen is FUW054, extract the multi-phone call flag and branch on it to select the correct mail template.

| # | Type | Code |
|---|------|------|
| 1 | GET | `multiPhoneCallFlg = JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.MULTI_PHONE_CALL_FLG)` // [-> `"複数通話フラグ"`] |
| 2 | IF | `JFUStrConst.CD00002_1.equals(multiPhoneCallFlg)` // [-> `CD00002_1 = "1"`] |
| 2a | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_3)` // Multi-Phone Completion Email |
| 2b | ELSE-EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_1)` // Standard Phone Completion Email |

#### Block 1.2 — ELSE-IF (screen ID = FUW055) (L2833)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW055.equals(ronriScreenId)` // Screen FUW055 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW055_1)` // Application completion email for FUW055 |

#### Block 1.3 — ELSE-IF (screen ID = FUW056) (L2838)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW056.equals(ronriScreenId)` // Screen FUW056 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW056_1)` // Application completion email for FUW056 |

#### Block 1.4 — ELSE-IF (screen ID = FUW057) (L2843)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW057.equals(ronriScreenId)` // Screen FUW057 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW057_1)` // Application completion email for FUW057 |

#### Block 1.5 — ELSE-IF (screen ID = FUW058) (L2848)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW058.equals(ronriScreenId)` // Screen FUW058 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW058_1)` // Application completion email for FUW058 |

#### Block 1.6 — ELSE-IF (screen ID = FUW059) (L2853)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW059.equals(ronriScreenId)` // Screen FUW059 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW059_1)` // Application completion email for FUW059 |

#### Block 1.7 — ELSE-IF (screen ID = FUW060) (L2858)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW060.equals(ronriScreenId)` // Screen FUW060 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW060_1)` // Application completion email for FUW060 |

#### Block 1.8 — ELSE-IF (screen ID = FUW061) (L2863)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW061.equals(ronriScreenId)` // Screen FUW061 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW061_1)` // Application completion email for FUW061 |

#### Block 1.9 — ELSE-IF (screen ID = FUW062) (L2868)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW062.equals(ronriScreenId)` // Screen FUW062 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW062_1)` // Application completion email for FUW062 |

#### Block 1.10 — ELSE-IF (screen ID = FUW102) (L2873)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW102.equals(ronriScreenId)` // Screen FUW102 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW102_1)` // Application completion email for FUW102 |

#### Block 1.11 — ELSE-IF (screen ID = FUW103) (L2878)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW103.equals(ronriScreenId)` // Screen FUW103 condition |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW103_1)` // Application completion email for FUW103 |

#### Block 1.12 — ELSE (no match) (L2883)

> When none of the known screen IDs match under the Application transaction type, do nothing (silent return).

| # | Type | Code |
|---|------|------|
| 1 | ELSE | // Do nothing — no matching screen ID |

### Block 2 — ELSE-IF (transaction division = Cancellation) (L2887)

> When `TRAN_DIV_DSL` (解約 / Cancellation) is the transaction type, the method follows the same screen ID routing pattern as Block 1, but selects the `_2` suffixed mail templates (as opposed to `_1` for applications). Screen FUW054 again has a multi-phone differentiation, and FUW102 is NOT a valid screen here (only FUW103 is).

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `TRAN_DIV_DSL.equals(tran_div)` // [-> `TRAN_DIV_DSL = "解約"` (Cancellation)] |

#### Block 2.1 — IF (screen ID = FUW054) (L2889)

> Cancellation context for FUW054: multi-phone flag determines the template.

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW054.equals(ronriScreenId)` |
| 2 | GET | `multiPhoneCallFlg = JFUWebCommon.getDataBeanItemByPath(bean, FUW05401SFConst.MULTI_PHONE_CALL_FLG)` |
| 3 | IF | `JFUStrConst.CD00002_1.equals(multiPhoneCallFlg)` // [-> `CD00002_1 = "1"`] |
| 3a | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_4)` // Multi-Phone Cancellation email |
| 3b | ELSE-EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW054_2)` // Standard Phone Cancellation email |

#### Block 2.2 — ELSE-IF (screen ID = FUW055) (L2901)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW055.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW055_2)` // Cancellation completion email for FUW055 |

#### Block 2.3 — ELSE-IF (screen ID = FUW056) (L2906)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW056.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW056_2)` // Cancellation completion email for FUW056 |

#### Block 2.4 — ELSE-IF (screen ID = FUW057) (L2911)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW057.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW057_2)` // Cancellation completion email for FUW057 |

#### Block 2.5 — ELSE-IF (screen ID = FUW058) (L2916)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW058.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW058_2)` // Cancellation completion email for FUW058 |

#### Block 2.6 — ELSE-IF (screen ID = FUW059) (L2921)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW059.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW059_2)` // Cancellation completion email for FUW059 |

#### Block 2.7 — ELSE-IF (screen ID = FUW060) (L2926)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW060.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW060_2)` // Cancellation completion email for FUW060 |

#### Block 2.8 — ELSE-IF (screen ID = FUW061) (L2931)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW061.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW061_2)` // Cancellation completion email for FUW061 |

#### Block 2.9 — ELSE-IF (screen ID = FUW062) (L2936)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW062.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW062_2)` // Cancellation completion email for FUW062 |

#### Block 2.10 — ELSE-IF (screen ID = FUW103) (L2941)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW103.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW103_2)` // Cancellation completion email for FUW103 |

### Block 3 — ELSE-IF (transaction division = Change) (L2950)

> When `TRAN_DIV_CHG` (変更 / Change) is the transaction type, the method only handles screen FUW102. All other screen IDs result in a no-op (do nothing). This reflects that change operations are only applicable to the FUW102 screen context.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `TRAN_DIV_CHG.equals(tran_div)` // [-> `TRAN_DIV_CHG = "変更"` (Change)] |

#### Block 3.1 — IF (screen ID = FUW102) (L2951)

| # | Type | Code |
|---|------|------|
| 1 | IF | `RONRI_SCREEN_ID_FUW102.equals(ronriScreenId)` |
| 2 | EXEC | `JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID_FUW102_2)` // Change completion email for FUW102 |

#### Block 3.2 — ELSE (no match) (L2957)

> When the transaction type is Change but the screen ID is not FUW102, do nothing.

| # | Type | Code |
|---|------|------|
| 1 | ELSE | // Do nothing — no matching screen ID |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `MSKM` | Acronym | Mail Send Completion Management — internal system for managing the dispatch of application completion emails to customers after their orders or contract changes have been processed |
| 申込完了メール | Business term | Application Completion Email — the notification email sent to customers confirming that their order, cancellation, or contract change has been successfully processed |
| `TRAN_DIV` | Field | Transaction Division — a field in the data bean that classifies the type of business operation: Application (申込), Cancellation (解約), or Change (変更) |
| 申込 (Oshikomi) | Business term | Application — the transaction type representing a new service order or contract registration |
| 解約 (Kaiyaku) | Business term | Cancellation — the transaction type representing a contract termination or service cancellation |
| 変更 (Henkou) | Business term | Change — the transaction type representing a modification to an existing contract (e.g., plan change, number portability) |
| `ronriScreenId` | Field | Parent Screen ID — identifies which web screen initiated the processing, used to route to the correct mail template. Values include `FUW054` through `FUW062`, `FUW102`, and `FUW103` |
| 親画面ID (Oyagamen ID) | Business term | The originating parent screen that triggered the current processing flow |
| `MULTI_PHONE_CALL_FLG` | Field | Multi-Phone Call Flag — a boolean flag (stored as string `"0"` or `"1"`) indicating whether the customer has multiple simultaneous phone lines. When `"1"`, a different completion email template is used |
| 複数通話フラグ (Fukusuu Tsuwaa Flag) | Business term | Multi-Phone Call Flag — indicates the customer subscribes to multiple concurrent phone lines |
| 割込電話 (Warikomudenwa) | Business term | Standard Phone — the base phone service configuration (as opposed to multi-line) |
| 複数通話 (Fukusuu Tsuwaa) | Business term | Multi-Phone Call — the customer has multiple simultaneous phone lines; requires a different notification email |
| `MSKM_COMP_MAIL_ID_FUW054_1` | Constant | Mail template ID for FUW054 Application / Standard Phone completion email |
| `MSKM_COMP_MAIL_ID_FUW054_2` | Constant | Mail template ID for FUW054 Cancellation / Standard Phone completion email |
| `MSKM_COMP_MAIL_ID_FUW054_3` | Constant | Mail template ID for FUW054 Application / Multi-Phone Call completion email |
| `MSKM_COMP_MAIL_ID_FUW054_4` | Constant | Mail template ID for FUW054 Cancellation / Multi-Phone Call completion email |
| `sendMskmFinMail` | Method | Send Mskm Fin(Mail) — the email sending method that dispatches application completion emails. Called via `JFUWebCommon` |
| `JFUWebCommon` | Class | Web Common Component — a shared utility class providing common web-layer operations including data bean access and email dispatch |
| `X31SDataBeanAccess` | Class | Screen Data Bean — the standard data carrier class for passing screen session data through the processing pipeline |
| `mskmDsl` | Method | DSL (Deferred/Async Processing Handler) — the method that calls `setMskmMailInfo` after the main order registration completes |
| FUW054-FUW062 | Screen IDs | Service registration screens for various product bundles (e.g., FTTH, cable, phone services) |
| FUW102 | Screen ID | Contract change screen — the only screen that triggers the Change (変更) transaction type in this method |
| FUW103 | Screen ID | Contract cancellation screen — appears in both Application (申込) and Cancellation (解約) branches |
| CD00002_1 | Constant | Discriminator value `"1"` used to check if the multi-phone call flag is enabled |
| `_1` suffix | Naming convention | Mail template variant for Application (申込) transaction type |
| `_2` suffix | Naming convention | Mail template variant for Cancellation (解約) transaction type |
| `_3` suffix | Naming convention | Mail template variant for Application (申込) transaction type with multi-phone call |
| `_4` suffix | Naming convention | Mail template variant for Cancellation (解約) transaction type with multi-phone call |
