# Business Logic — FUW01403SFLogic.editFrontKhrkInfoArea() [232 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW01403SF.FUW01403SFLogic` |
| Layer | Controller (Web presentation layer — view logic class for screen processing) |
| Module | `FUW01403SF` (Package: `eo.web.webview.FUW01403SF`) |

## 1. Role

### FUW01403SFLogic.editFrontKhrkInfoArea()

This method is the **front-end data preparation processor** for the second-service application (2番サービスお申込み) billing display screen in the K-Opticom customer core system. Its primary business responsibility is to **assemble and format the billing table (料金表) data** that will be rendered on the "Second-Service Application View" (2番サービスお申込みビューロジック) screen for the customer to review before submitting a service change order.

The method handles **two pricing categories**: (1) **Monthly Fees (月額料金)** which include the base recurring charge (基本料金) and the eo photovoltaic adapter usage fee (eo光電話アダプター利用料), both sourced from the price plan fixed unit price list (料金プラン固定単価 — EKK0601B001); and (2) **Initial Costs (初期費用)** which may include one-time fees such as the change work handling charge (変更事務手数料), the number assignment handling charge (番号割当て手数料), and the ONU handover construction cost (ONU交換工事費), all sourced from the one-time payment price list (一時支払料金 — KK0721).

The method implements a **data transformer and builder pattern**: it reads raw pricing data beans from the service form bean, formats the monetary amounts with proper number formatting and yen unit labels, conditionally includes or excludes zero/null initial cost items, maps all labels and values through a display property XML lookup (DISPCTL), and then constructs a structured table value map that is passed to the shared table rendering utility (`JFUWebCommon.setTableTitleList`). This map drives the client-side JavaScript rendering of a two-section billing table on the screen.

The method is called as a sub-step from `FUW01403SFLogic.init()` during the screen initialization flow for the second-service application view (FUSV0041), ensuring the customer sees an accurate, formatted billing breakdown before confirming their service change request.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editFrontKhrkInfoArea"])
    STEP1["Log Start"]
    STEP2["Get dispDefMap from display property XML"]
    STEP3["Get prcInfoAreaListArray from serviceFormBean"]
    STEP4["Add new dataBean to prcInfoAreaListArray"]
    STEP5["Get kihonPrcList bean"]
    STEP6["Get eohAdaptorFeesList bean"]
    STEP7["Get chgJimuCommisionList bean"]
    STEP8["Get noWariateCommisionList bean"]
    STEP9["Get onuKojihiCommisionList bean"]
    STEP10["Format kihonPrc = amount + unit"]
    STEP11["Format eohAdaptorFees = amount + unit"]
    STEP12["Format chgJimuCommision amount"]
    STEP13["Format noWariateCommision amount"]
    STEP14["Set empty comment list"]
    STEP15["Build setTableTitleList"]
    STEP16["Build style class lists"]
    STEP17["Build left value list0 labels"]
    STEP18["Build right value list0 amounts"]
    COND1["kihonPrc == 0"]
    COND2["eohAdaptorFees == 0"]
    STEP19["Add FREE_LABEL to rightValueList0"]
    STEP20["Add kihonPrc to rightValueList0"]
    STEP21["Add eohAdaptorFees to rightValueList0"]
    STEP22["Create setTableValueSkbtList0"]
    STEP23["Build initial cost left value list1"]
    COND3["chgJimu not zero"]
    COND4["noWariate not zero"]
    COND5["onuKojihi not null"]
    STEP24["Add chgJimu label to list1"]
    STEP25["Add noWariate label to list1"]
    STEP26["Add onuKojihi label to list1"]
    STEP27["Build initial cost right value list1"]
    STEP28["Add chgJimu amount to rightValueList1"]
    STEP29["Add noWariate amount to rightValueList1"]
    STEP30["Format onuKojihi and add"]
    STEP31["Build value skbt list1"]
    STEP32["Create tableValueMap"]
    STEP33["Put monthly fee map entries"]
    STEP34["Put initial cost map entries"]
    STEP35["Build biko list with MONGON"]
    STEP36["Call setBikoList"]
    STEP37["Call setTableTitleList"]
    STEP38["Log End"]
    STEP39["Return"]

    START --> STEP1 --> STEP2 --> STEP3 --> STEP4
    STEP4 --> STEP5 --> STEP6 --> STEP7 --> STEP8 --> STEP9
    STEP9 --> STEP10 --> STEP11 --> STEP12 --> STEP13
    STEP13 --> STEP14 --> STEP15 --> STEP16 --> STEP17 --> STEP18
    STEP18 --> COND1
    COND1 -->|Zero| STEP19
    COND1 -->|NonZero| STEP20
    STEP19 --> COND2
    STEP20 --> COND2
    COND2 -->|Zero| STEP21
    COND2 -->|NonZero| STEP21
    STEP21 --> STEP22 --> STEP23
    STEP23 --> COND3
    COND3 -->|Set| STEP24
    COND3 -->|Skip| STEP28
    STEP24 --> COND4
    STEP28 --> COND4
    COND4 -->|Set| STEP25
    COND4 -->|Skip| STEP29
    STEP25 --> COND5
    STEP29 --> COND5
    COND5 -->|Set| STEP26
    COND5 -->|Skip| STEP31
    STEP26 --> STEP27
    STEP27 --> STEP31
    STEP31 --> STEP32 --> STEP33 --> STEP34
    STEP34 --> STEP35 --> STEP36 --> STEP37 --> STEP38 --> STEP39
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `serviceFormBean` | `final X31SDataBeanAccess` | The service form data access bean carrying all pricing data bean lists pre-populated by prior SC (Service Component) calls. It contains references to the base price list, EO photovoltaic adapter fees list, change work commission list, number assignment commission list, and ONU handover construction cost list. Used as the source for all pricing data retrieved via `getDataBeanTypeByPath` and `sendMessageString`. |
| 2 | `outputMap` | `final HashMap<String, HashMap<String, Object>>` | The output map for screen display results. Although declared as a parameter, this method does not directly write to `outputMap` — instead, it populates the `serviceFormBean`'s `PRC_INFO_PRC_INFO_AREA_LIST` data bean array with the formatted billing table structure via `setTableTitleList` and `setBikoList`. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `DEBUG_LOG` | `X31SWebLog` | Logger instance for debug trace output at method start/end |
| `QUERY_DISPCTL_PATH` | `String` | XML query path (`"DISPSETTING/SETTING[@screenId='FUW01403']/DISPCTL[@groupid='PRC_INFO_TABLE']"`) used to fetch display control property configuration |
| `QUERY_ATTR_NAME` | `String` | `"id"` — the XML attribute name used when retrieving display items as a map |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JFUWebCommon.getDispItemsAsMap` | - | - | Reads display control property XML configuration for the PRC_INFO_TABLE group — retrieves label, style, and value mapping keys |
| R | `X31SDataBeanAccessArray.addDataBean` | - | - | Creates a new DataBean entry in the PRC_INFO_AREA_LIST array — prepares a container for the assembled billing table data |
| R | `JFUWebCommon.getDataBeanTypeByPath` | - | - | Retrieves specific pricing data bean lists from the service form bean by path key (KIHON_PRC_LIST, EOH_ADAPTOR_FEES_LIST, etc.) |
| R | `X31SDataBeanAccess.sendMessageString` | - | - | Reads string values from data bean fields (PPLAN_KOTEI_AMNT_05 for fixed amount, TMP_PAY_PRC_AMNT_06 for one-time payment amount, etc.) |
| - | `JPCUtilCommon.formatNumber` | - | - | Formats raw numeric strings into display-friendly number format (e.g., adds thousand separators) |
| - | `JFUWebCommon.setCommentList` | - | - | Sets comment area data for the billing table — called with empty lists (unused placeholder) |
| - | `JFUWebCommon.setBikoList` | - | - | Sets the "remarks/biko" area of the table with a monospace font identifier for formatting control |
| - | `JFUWebCommon.setTableTitleList` | - | - | Final assembly step — writes the complete table structure (titles, style classes, left values, right values, value IDs) into the target data bean for screen rendering |

**Note:** This method is a **pure presentation-layer transformer**. It does not perform any direct database access (no SC/CBS calls). All pricing data was loaded into the `serviceFormBean` by upstream SCs (e.g., EKK0601B001 for price plan data). The method reads from beans in memory and assembles display-ready data structures.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen: FUSV0041 (2番サービスお申込みビューロジック) | `FUW01403SFLogic.init()` → `FUW01403SFLogic.editFrontKhrkInfoArea(serviceFormBean, outputMap)` | `setTableTitleList [-], setBikoList [-], formatNumber [-], sendMessageString [-]` |

**Note:** This method is a private-facing utility method called during screen initialization (init()). No direct screen/batch entry point exists — it is always invoked through the `init()` method of `FUW01403SFLogic`, which itself is triggered by the FUSV0041 screen (Second-Service Application View Logic).

## 6. Per-Branch Detail Blocks

### Block 1 — SET (L1225)

> Log method entry and load display property configuration from XML.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `DEBUG_LOG.info("----- FUW01403 Start editFrontKhrkInfoArea -----")` // Log start |
| 2 | SET | `dispDefMap = JFUWebCommon.getDispItemsAsMap(QUERY_DISPCTL_PATH, QUERY_ATTR_NAME)` // [-> QUERY_DISPCTL_PATH="DISPSETTING/SETTING[@screenId='FUW01403']/DISPCTL[@groupid='PRC_INFO_TABLE']", QUERY_ATTR_NAME="id"] — Loads display control properties from XML config for the billing table |

### Block 2 — SET (L1249)

> Create the pricing info area list container for the billing table data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `prcInfoAreaListArray = serviceFormBean.getDataBeanArray(JFUStrConst.PRC_INFO_PRC_INFO_AREA_LIST)` // [-> JFUStrConst.PRC_INFO_PRC_INFO_AREA_LIST="料金情報エリア"] — Gets the pricing info area list array from the service form bean |
| 2 | SET | `titleListArrayAccess = prcInfoAreaListArray.addDataBean()` // Creates a new DataBean entry to populate with table data |

### Block 3 — SET (L1256-L1267)

> Retrieve all five pricing data bean lists from the service form bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kihonPrcList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.KIHON_PRC_LIST)` // Base price list (基本料金) |
| 2 | SET | `eohAdaptorFeesList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.EOH_ADAPTOR_FEES_LIST)` // EO photovoltaic adapter fees (eo光電話アダプター利用料) |
| 3 | SET | `chgJimuCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.CHG_JIMU_COMMISION_LIST)` // Change work handling charge (変更事務手数料) |
| 4 | SET | `noWariateCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.NO_WARIATE_COMMISION_LIST)` // Number assignment handling charge (番号割当て手数料) |
| 5 | SET | `onuKojihiCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.ONU_KOJIHI_COMMISION_LIST)` // ONU handover construction cost (ONU交換工事費) |

### Block 4 — SET (L1270-L1283)

> Format monetary values by concatenating the amount with the unit label.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kihonPrc = JPCUtilCommon.formatNumber(kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)) + JFUStrConst.HALF_SPACE + kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_TANI_CD_NM_05, GET)` // [-> PPLAN_KOTEI_AMNT_05="料金プラン固定金額", PPLAN_KOTEI_TANI_CD_NM_05="料金プラン固定単位コード名"] — Formats base price as "formattedAmount unitLabel" |
| 2 | SET | `eohAdaptorFees = JPCUtilCommon.formatNumber(eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)) + JFUStrConst.HALF_SPACE + eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_TANI_CD_NM_05, GET)` // Same pattern for EO adapter fees |
| 3 | SET | `chgJimuCommision = JPCUtilCommon.formatNumber(chgJimuCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET))` // [-> TMP_PAY_PRC_AMNT_06="一時支払料金額"] — Formats one-time change work commission amount |
| 4 | SET | `noWariateCommision = JPCUtilCommon.formatNumber(noWariateCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET))` // Formats number assignment commission amount |

### Block 5 — EXEC (L1287)

> Set an empty comment area for the billing table (unused placeholder).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `JFUWebCommon.setCommentList(titleListArrayAccess, new ArrayList<String>(0), new ArrayList<String>(0))` // Comment area set with empty lists |

### Block 6 — SET (L1291-L1308)

> Build the title labels, style classes, and left value labels for both table sections (monthly fee and initial costs).

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableTitleSkbtList = new ArrayList<String>(0)` // Empty table title identifier list |
| 2 | SET | `setTableTitleList = new ArrayList<String>(2)` // [2] — Table title area display list |
| 3 | SET | `setTableTitleList.add(dispDefMap.get(TITLE_LABEL_0))` // [-> TITLE_LABEL_0="TITLE_LABEL_0"] — Monthly fee title (月額料金) |
| 4 | SET | `setTableTitleList.add(dispDefMap.get(TITLE_LABEL_1))` // [-> TITLE_LABEL_1="TITLE_LABEL_1"] — Initial cost title (初期費用) |
| 5 | SET | `setTableStyleClass1List = new ArrayList<String>(2)` // Table style class 1 (header styling) |
| 6 | SET | `setTableStyleClass1List.add(dispDefMap.get(TITLE_STYLE_0))` // [-> TITLE_STYLE_0="TITLE_STYLE_0"] — Monthly fee header style |
| 7 | SET | `setTableStyleClass1List.add(dispDefMap.get(TITLE_STYLE_1))` // [-> TITLE_STYLE_1="TITLE_STYLE_1"] — Initial cost header style |
| 8 | SET | `setTableStyleClass2List = new ArrayList<String>(2)` // Table style class 2 (row left/right styling) |
| 9 | SET | `setTableStyleClass2List.add(dispDefMap.get(COL_STYLE_0))` // [-> COL_STYLE_0="COL_STYLE_0"] — Monthly fee row style |
| 10 | SET | `setTableStyleClass2List.add(dispDefMap.get(COL_STYLE_1))` // [-> COL_STYLE_1="COL_STYLE_1"] — Initial cost row style |
| 11 | SET | `setTableLeftValueList0 = new ArrayList<String>(2)` // Left values for monthly fee table (labels) |
| 12 | SET | `setTableLeftValueList0.add(dispDefMap.get(COL_LABEL_0_0))` // [-> COL_LABEL_0_0="COL_LABEL_0_0"] — "Basic charge" label (基本料金) |
| 13 | SET | `setTableLeftValueList0.add(dispDefMap.get(COL_LABEL_0_1))` // [-> COL_LABEL_0_1="COL_LABEL_0_1"] — "EO photovoltaic adapter usage fee" label (eo光電話アダプター利用料) |
| 14 | SET | `setTableRightValueList0 = new ArrayList<String>(2)` // Right values for monthly fee table (amounts) |

### Block 7 — IF (kihonPrc == "0") (L1312)

> Determine whether the base charge is zero yen — if so, display "FREE" instead of the amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ZERO.equals(kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET))` // Checks if base price amount field is "0" |

**Block 7.1 — ELSE-IF branch: ki honPrc == "0"** (L1313-L1314)

> Base price is zero — display the "Free" label.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList0.add(JFUStrConst.FREE_LABEL)` // [-> JFUStrConst.FREE_LABEL="無料"] — Adds "Free" label |

**Block 7.2 — ELSE branch: kihonPrc != "0"** (L1316-L1317)

> Base price is non-zero — display the formatted amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList0.add(kihonPrc)` // Adds the formatted base price (amount + unit) |

### Block 8 — IF (eohAdaptorFees == "0") (L1320)

> Determine whether the EO photovoltaic adapter fee is zero — if so, display "FREE".

| # | Type | Code |
|---|------|------|
| 1 | SET | `ZERO.equals(eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET))` // Checks if adapter fee amount is "0" |

**Block 8.1 — ELSE-IF branch: eohAdaptorFees == "0"** (L1321-L1322)

> Adapter fee is zero — display "Free" label.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList0.add(JFUStrConst.FREE_LABEL)` // Adds "Free" label |

**Block 8.2 — ELSE branch: eohAdaptorFees != "0"** (L1324-L1325)

> Adapter fee is non-zero — display the formatted amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList0.add(eohAdaptorFees)` // Adds the formatted adapter fee |

### Block 9 — SET (L1327)

> Create the value identifier area list for the monthly fee table (unused — reserved for JavaScript control).

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableValueSkbtList0 = new ArrayList<String>(0)` // Empty value identifier list |

### Block 10 — SET (L1330-L1345)

> Build the initial cost section's left value labels — only include items that are non-null, non-empty, and non-zero.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableLeftValueList1 = new ArrayList<String>(3)` // [3] — Initial cost left values |
| 2 | SET | `bool1 = chgJimuCommisionList.sendMessageString(TMP_PAY_PRC_AMNT_06, GET) != null && chgJimuCommisionList.sendMessageString(TMP_PAY_PRC_AMNT_06, GET).length() != 0 && ZERO.equals(...)` // [-> TMP_PAY_PRC_AMNT_06="一時支払料金額"] — True if change work commission is NOT (null/empty/zero) |
| 3 | SET | `bool2 = noWariateCommisionList.sendMessageString(TMP_PAY_PRC_AMNT_06, GET) != null && noWariateCommisionList.sendMessageString(TMP_PAY_PRC_AMNT_06, GET).length() != 0 && ZERO.equals(...)` — True if number assignment commission is NOT (null/empty/zero) |
| 4 | SET | `bool3 = (onuKojihiCommisionList == null)` // True if ONU handover commission list is null |

**Block 10.1 — IF (!bool1) — chgJimu is not zero/null/empty** (L1348)

> Change work handling charge has a valid amount — include it in the table.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_0))` // [-> COL_LABEL_1_0="COL_LABEL_1_0"] — Adds "Change work handling charge" label (変更事務手数料) |

**Block 10.2 — IF (!bool2) — noWariate is not zero/null** (L1352)

> Number assignment handling charge has a valid amount — include it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_1))` // [-> COL_LABEL_1_1="COL_LABEL_1_1"] — Adds "Number assignment handling charge" label (番号割当て手数料) |

**Block 10.3 — IF (!bool3) — onuKojihi is not null** (L1356)

> ONU handover construction cost exists — include it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_2))` // [-> COL_LABEL_1_2="COL_LABEL_1_2"] — Adds "ONU handover construction cost" label (ONU交換工事費) |

### Block 11 — SET (L1360)

> Build the initial cost section's right value list for display amounts.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList1 = new ArrayList<String>(3)` // [3] — Initial cost right values (amounts with unit) |

**Block 11.1 — IF (!bool1) — chgJimu is not zero** (L1362)

> Change work handling charge has a valid amount — add formatted amount with yen unit.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList1.add(chgJimuCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN))` // [-> AMOUNT_YEN="AMOUNT_YEN"] — Formats as "amount 円" |

**Block 11.2 — IF (!bool2) — noWariate is not zero** (L1365)

> Number assignment handling charge has a valid amount — add formatted amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableRightValueList1.add(noWariateCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN))` // Formats as "amount 円" |

**Block 11.3 — IF (!bool3) — onuKojihi is not null** (L1368)

> ONU handover construction cost exists — format and add.

| # | Type | Code |
|---|------|------|
| 1 | SET | `onuKojihiCommision = JPCUtilCommon.formatNumber(onuKojihiCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET))` // Formats the ONU handover construction cost amount |
| 2 | SET | `setTableRightValueList1.add(onuKojihiCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN))` // Adds formatted ONU cost |

### Block 12 — SET (L1374)

> Create the initial cost section's value identifier list for JavaScript control.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableValueSkbtList1 = new ArrayList<String>(3)` // [3] — Value identifier area list |

**Block 12.1 — IF (!(bool1 && bool2))** (L1377)

> At least one of change work commission or number assignment commission has a valid amount — include both IDs.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableValueSkbtList1.add(CHG_JIMU_COMMISION_ID)` // [-> CHG_JIMU_COMMISION_ID="chgjimucommision"] — JavaScript control ID for change work handling charge |
| 2 | SET | `setTableValueSkbtList1.add(NO_WARIATE_COMMISION_ID)` // [-> NO_WARIATE_COMMISION_ID="nowariatecommision"] — JavaScript control ID for number assignment handling charge |

**Block 12.2 — IF (!bool3)** (L1381)

> ONU handover construction cost has a valid amount — include its ID.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setTableValueSkbtList1.add(ONU_KOJIHI_COMMISION_ID)` // [-> ONU_KOJIHI_COMMISION_ID="onukojihicommision"] — JavaScript control ID for ONU handover construction cost |

### Block 13 — SET (L1386)

> Create the table value map that organizes all table data by key.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tableValueMap = new LinkedHashMap<String, List<String>>(6)` // Key = titleLabel + index + category key; Value = corresponding list |

### Block 14 — SET (L1390)

> Write monthly fee section entries into the table value map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList0)` // Key pattern: "titleLabel0" + "0" + "TABLE_LEFT_VALUE_LIST" |
| 2 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList0)` // Key pattern: "titleLabel0" + "0" + "TABLE_RIGHT_VALUE_LIST" |
| 3 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList0)` // Key pattern: "titleLabel0" + "0" + "TABLE_VALUE_SKBT_LIST" |

### Block 15 — IF (!(bool1 && bool2)) (L1394)

> Write initial cost section entries — only if at least one initial cost item has a valid amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList1)` // Initial cost left values |
| 2 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList1)` // Initial cost right values |
| 3 | SET | `tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList1)` // Initial cost value IDs |

### Block 16 — SET (L1400)

> Build the remarks/biko area list with a monospace text entry.

| # | Type | Code |
|---|------|------|
| 1 | SET | `setBikoSkbtList = new ArrayList<String>()` // Empty biko identifier list |
| 2 | SET | `setBikoList = new ArrayList<String>()` // Biko (remarks) area list |
| 3 | SET | `setBikoList.add(JFUStrConst.EMPTY)` // Empty string |
| 4 | SET | `setBikoList.add(dispDefMap.get(MONGON_1))` // [-> MONGON_1="MONGON_1"] — Monospace identifier for text formatting |

### Block 17 — CALL (L1403)

> Set the biko (remarks) area on the title data bean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.setBikoList(titleListArrayAccess, setBikoSkbtList, setBikoList)` // Passes biko area data to the target bean |

### Block 18 — CALL (L1407)

> Final assembly: write the complete billing table structure into the title data bean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.setTableTitleList(titleListArrayAccess, setTableTitleSkbtList, setTableTitleList, setTableStyleClass1List, setTableStyleClass2List, tableValueMap)` // Writes all table sections for screen rendering |

### Block 19 — RETURN (L1412)

> Log exit and return void.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `DEBUG_LOG.info("----- FUW01403 End editFrontKhrkInfoArea -----")` // Log end |
| 2 | RETURN | `return;` // Void return |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kihon_prc` | Field | Base price — the recurring monthly charge for the service contract, sourced from the price plan fixed unit price list |
| `eoh_adaptor_fees` | Field | EO photovoltaic adapter usage fee — a recurring charge for the eo photovoltaic adapter device, sourced from the price plan fixed unit price list |
| `chg_jimu_commision` | Field | Change work handling charge — a one-time fee for processing service contract changes (変更事務手数料) |
| `no_wariate_commision` | Field | Number assignment handling charge — a one-time fee for assigning a new phone number during service changes (番号割当て手数料) |
| `onu_kojihi` | Field | ONU handover construction cost — a one-time fee for optical network unit equipment transfer during service changes (ONU交換工事費) |
| `PPLAN_KOTEI_AMNT_05` | Constant | Price plan fixed amount — the XML/bean field key for retrieving the fixed unit price amount from the price plan list |
| `PPLAN_KOTEI_TANI_CD_NM_05` | Constant | Price plan fixed unit code name — the XML/bean field key for retrieving the unit label (e.g., "yen/month") |
| `TMP_PAY_PRC_AMNT_06` | Constant | One-time payment amount — the XML/bean field key for retrieving one-time fee amounts from the temporary payment list |
| `KIHON_PRC_LIST` | Constant | Base price list path — the path key to retrieve the base price data bean from the service form bean |
| `EOH_ADAPTOR_FEES_LIST` | Constant | EO adapter fees list path — the path key to retrieve the EO photovoltaic adapter fees data bean |
| `CHG_JIMU_COMMISION_LIST` | Constant | Change work commission list path — the path key to retrieve the change work handling charge data bean |
| `NO_WARIATE_COMMISION_LIST` | Constant | Number assignment commission list path — the path key to retrieve the number assignment handling charge data bean |
| `ONU_KOJIHI_COMMISION_LIST` | Constant | ONU construction cost list path — the path key to retrieve the ONU handover construction cost data bean |
| `PRC_INFO_AREA_LIST` | Constant | Pricing info area list — the DataBean array key where the assembled billing table data is stored |
| `DISPCTL` | Concept | Display Control — XML-based display configuration that maps field keys to human-readable labels, CSS styles, and value formats |
| `setQueryDispctlPath` | Concept | The XML path pattern `DISPSETTING/SETTING[@screenId='FUW01403']/DISPCTL[@groupid='PRC_INFO_TABLE']` used to load screen-specific display settings |
| `2番サービス` | Japanese term | "Second service" — a secondary telecom service bundled with a primary NTT contract, often at a discounted rate |
| `基本料金` | Japanese term | Base monthly charge — the fundamental recurring fee for the service, corresponding to KK0601 price plan data |
| `月額料金` | Japanese term | Monthly fee — the pricing table section heading for recurring charges |
| `初期費用` | Japanese term | Initial cost — the pricing table section heading for one-time charges (setup, handling, construction fees) |
| `変更事務手数料` | Japanese term | Change work handling charge — fee for processing service changes, sourced from KK0721 |
| `番号割当て手数料` | Japanese term | Number assignment handling charge — fee for assigning a new phone number |
| `ONU交換工事費` | Japanese term | ONU (Optical Network Unit) handover construction cost — fee for transferring optical networking equipment |
| `eo光電話アダプター利用料` | Japanese term | EO photovoltaic adapter usage fee — recurring charge for the EO-branded telephone adapter device |
| `無料` | Japanese term | "Free" / "No charge" — displayed when a fee amount is zero |
| `円` | Japanese term | "Yen" — the Japanese currency unit displayed alongside monetary amounts |
| `備考` | Japanese term | Remarks/biko — the optional notes area below the billing table |
| `FUSV0041` | Concept | Service use case ID for second-service application initial display (2番サービスお申込み(初期表示)) |
| `FUSV0042` | Concept | Service use case ID for second-service application submission (2番サービスお申込み(申込み)) |
| `JFUWebCommon` | Component | Shared web utility class providing common table rendering methods (setTableTitleList, setBikoList, setCommentList, getDispItemsAsMap) |
| `X31SDataBeanAccess` | Component | Fujuku Futurity X31 framework DataBean access class — the standard interface for reading/writing screen data beans |
| `X31SDataBeanAccessArray` | Component | Array wrapper for DataBean collections — used to manage lists of billing line items |
