# Business Logic — JKKSeikySakiHeigoCC.editInMsg_EKU0041C010() [1451 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKSeikySakiHeigoCC` |
| Layer | CC/Common Component (package `com.fujitsu.futurity.bp.custom.common`) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKSeikySakiHeigoCC.editInMsg_EKU0041C010()

This method creates the inbound message template for the "Work Order e-Hikari TV Line Various Changes" screen (KKSV0546), which handles contractor-side modifications to e-Hikari TV subscription services. Its primary business operation is to populate a `CAANMsg` template with all the field values needed for the screen's input parameters — essentially mapping the current UI state (from `childMap`) into a structured message format that the downstream CBS (Business Component Service) can consume.

The method handles a single service type: e-Hikari TV line modification orders (工事案件eo光テレビ回線諸変更). It implements the **builder pattern** combined with **delegation** — it delegates common message setup to `editInMsg(param)` and builds the domain-specific template by sequentially transferring values from the `childMap` payload into the `CAANMsg` template using a field-by-field `set`/`setNull` routine.

Within the larger system, this method acts as the **inbound message factory** for screen KKSV0546. It is called by `execEKU0041C010()` which serves as the entry point for the screen's edit processing. The method maps approximately 150+ fields from the child map (covering construction order info, customer info, address info, pre/post move addresses, GPS coordinates, installation scheduling, and up to 20 home appliance units) into the message template. No database queries or external service calls are made — this is purely a data-mapping/transformation method.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKU0041C010"])
    STEP1["Common Area: editInMsg param"]
    STEP2["Create CAANMsg template EKU0041C010CBSMsg"]
    STEP3["Set template metadata TEMPLATE_ID_EKU0041C010 = EKU0041C010"]
    STEP4["Set FUNC_CODE = 1"]
    STEP5["Set operator, date, time from controlMap"]
    STEP6["Get workMap KKSV054601SCWORK"]
    COND1{workMap null?}
    STEP7["Get KKSV054601SCWORKLIST"]
    COND2{workList null or empty?}
    STEP8["Extract meisai detail number from workList[0]"]
    COND3{meisai null or empty?}
    STEP9["Set meisai to template"]
    STEP10["Set meisai to null"]
    STEP11["Set meisai to null"]
    STEP12["Set FUNC_CODE from dataMap"]
    STEP13["Map childMap fields 1-17 to template"]
    STEP14["setNull 11 setplace fields"]
    STEP15["Map childMap fields 18-41 to template"]
    STEP16["Map timing fields to template"]
    STEP17["Map schedule fields to template"]
    STEP18["Map home appliance section nulls"]
    STEP19["Map home appliance 1-20 sections null"]
    STEP20["Map additional fields null"]
    END["Pack templates array, return paramMap"]

    START --> STEP1
    STEP1 --> STEP2
    STEP2 --> STEP3
    STEP3 --> STEP4
    STEP4 --> STEP5
    STEP5 --> STEP6
    STEP6 --> COND1
    COND1 -->|Yes| STEP11
    COND1 -->|No| STEP7
    STEP7 --> COND2
    COND2 -->|Yes| STEP11
    COND2 -->|No| STEP8
    STEP8 --> COND3
    COND3 -->|Yes| STEP10
    COND3 -->|No| STEP9
    STEP10 --> STEP12
    STEP11 --> STEP12
    STEP9 --> STEP12
    STEP12 --> STEP13
    STEP13 --> STEP14
    STEP14 --> STEP15
    STEP15 --> STEP16
    STEP16 --> STEP17
    STEP17 --> STEP18
    STEP18 --> STEP19
    STEP19 --> STEP20
    STEP20 --> END
```

**Processing flow:**

1. **Common area setup (L7348):** Delegates to `editInMsg(param)` to initialize the base parameter map with common configuration.

2. **Template creation (L7350-7362):** Creates a `CAANMsg` using `EKU0041C010CBSMsg.class.getName()` as the schema. Sets the template ID (`TEMPLATE_ID_EKU0041C010` = `"EKU0041C010"`), function code (`"1"`), operator ID, operation date, and operation date-time from the control map of `param`.

3. **Work area detail number extraction (L7367-7386):** Reads the work area mapping (`KKSV054601SCWORK`) from `param.getMappingWorkArea()`. If the work map exists and contains a non-empty `KKSV054601SCWORKLIST`, extracts the `mskm_dtl_no` (work detail number) from the first entry and sets it into the template. Otherwise sets null.

4. **Function code override (L7391-7393):** Overrides the function code with the value from `dataMap` (`JCMConstants.FUNC_CODE_KEY`).

5. **ChildMap field mapping — core construction order data (L7396-7422):** Maps the following fields from `childMap` to template using the set/setNull pattern: `svc_kei_no`, `svc_kei_kaisen_ucwk_no`, `kojiak_no`, `koji_uk_cd`, `koji_uk_dtail_cd`, `koji_uk_optnty_ido_dtm`, `svc_cd`, `prc_grp_cd`, `pcrs_cd`, `plan_chg_fix_ymd`, `ad_chg_fix_dtm`, `menkaihat_anken_no`, `mnkht_koji_cd`. Each field checks if the value is an empty string; if so, sets null, otherwise casts to String and sets.

6. **ChildMap field mapping — owner and contact info (L7425-7480):** Maps `ownr_kei_no`, `pid`, `sysid`, customer name fields (`cust_nm`, `cust_kana`), customer phone fields (`cust_home_tel_no`, `cust_ktai_tel_no`, `cust_rrks_tel_no`), contact business name (`rrks_offc_nm`).

7. **ChildMap field mapping — contractor address (L7483-7531):** Maps the full contractor address: `keisha_ad_cd`, `keisha_pcd`, `keisha_state_nm`, `keisha_city_nm`, `keisha_oaztsu_nm`, `keisha_azcho_nm`, `keisha_ad_bnchigo`, `keisha_adrttm`, `keisha_adrrm`.

8. **ChildMap field mapping — billing and site info (L7534-7556):** Maps `seiky_kei_no` (billing contract number).

9. **Setplace fields reset (L7558-7567):** Sets null for 11 site/place fields that are not actively used in this screen: `SETPLACE_AZCHO_NM`, `SETPLACE_STATE_NM`, `SETPLACE_ADRTTM`, `SETPLACE_ADRRM`, `SETPLACE_AD_CD`, `SETPLACE_CITY_NM`, `SETPLACE_AD_BNCHIGO`, `PLACE_NO`, `SETPLACE_PCD`, `SETPLACE_OAZTSU_NM`.

10. **ChildMap field mapping — post-construction and location data (L7570-7663):** Maps fields for post-construction address determination flag (`koji_saki_ad_mi_fix_flg`), wiring location phone (`kaisen_place_telno`), KePCo business office (`kepco_busioffice_no`), longitude/latitude (`lgtd`, `lttd`), coordinate correction (`zahyo_hosei_um`), dwelling form code (`ad_form_cd`), floor count codes (`nyukyo_flr_cnt_cd`, `kcku_flr_cnt_cd`), direction codes (`direction_cd_1`, `direction_cd_2`).

11. **ChildMap field mapping — move addresses (L7666-7786):** Maps pre-move address fields (`tentaku_bf_ad_cd`, `tentaku_bf_pcd`, `tentaku_bf_state_nm`, `tentaku_bf_city_nm`, `tentaku_bf_oaztsu_nm`, `tentaku_bf_azcho_nm`, `tentaku_bf_ad_bnchigo`, `tentaku_bf_adrttm`, `tentaku_bf_adrrm`) and post-move address fields (`tentaku_saki_ad_cd`, `tentaku_saki_pcd`, `tentaku_saki_state_nm`, `tentaku_saki_city_nm`, `tentaku_saki_oaztsu_nm`, `tentaku_saki_azcho_nm`, `tentaku_saki_ad_bnchigo`, `tentaku_saki_adrttm`, `tentaku_saki_adrrm`).

12. **Additional construction data (L7789-7877):** Maps `newconst_bukken_cd` (new construction building code), `hukkat_anken_flg` (reactivation case flag), `same_equip_re_mskm_cd` (same equipment re-order code), `koji_scope_cd` (work scope code), `isetsu_cd` (relocation code).

13. **Timing and schedule fields (L7880-7940):** Maps date fields: `koji_kibo_ymd` (desired construction date), `dsl_kibo_ymd` (desired cancellation date), `shunko_rsv_ymd` (estimated installation date), `nyukyo_rsv_ymd` (estimated occupancy date), `hikiwatashi_rsv_ymd` (estimated handover date), `epower_soden_rsv_ymd` (estimated power transmission date), `tel_rrk_kibo_ymd` (desired telephone contact date), `tel_rrk_kibo_time_cd` (desired contact time slot code), `takcho_kibo_apo_kigen_ymd` (home investigation desired application deadline date).

14. **Home work and contact fields (L7942-7996):** Maps `tnkj_kibo_apo_kigen_ymd` (home work desired application deadline), `koji_apo_rrks_shitei_cd` (construction application contact designation code), `rrk_way_cd` (contact method code), `rrk_way_hoki` (contact method supplement), and `kojiak_biko`, `kojiak_biko_1`, `kojiak_biko_2` (work order remarks 1-3).

15. **Home appliance sections null reset (L7999-8790):** Sets null for all home appliance fields across 20 device slots (DEVICE_ID 1-20). Each slot has 17 fields: `TAKNKIKI_SBT_CD_N`, `TAKNKIKI_IDO_CD_N`, `KKTK_SVC_KEI_NO_N`, `TAKNKIKI_MODEL_CD_N`, `KKSEIZO_NO_N`, `STB_ID_N`, `HDD_CAPA_CD_N`, `VONU_BSPT_KH_N`, `STB_KEI_TV_COURSE_CD_N`, `CHGB_TAKNIKK_MODEL_CD_N`, `CHGB_KKSEIZO_NO_N`, `CHGB_STB_ID_N`, `CHGB_HDD_CAPA_CD_N`, `CHGB_VONU_BSPT_KH_N`, `CHGB_STB_KEI_TV_COURSE_CD_N`, `CHGB_OLD_STB_ID_N`. Also sets null for additional fields: `DMPS_ANKEN_NO`, `DMPSANK_SBT_CD`, `KEPCO_CTINFO_JUJU_DOI_UM`, `MSKMSHA_NM`, `KOJI_APO_RRKS_TELNO`, `CUST_SOS_USE_UM`, equipment service change memo fields 1-20, equipment change number fields 1-20, and original tone case number fields 1-20.

16. **Template assembly and return (L8785-8790):** Packs the single template into a `CAANMsg[]` array, stores it under `JCMConstants.TEMPLATE_LIST_KEY` in `paramMap`, and returns `paramMap`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The business data I/F object that carries screen input data, control parameters (operator ID, operation date/time), and the mapping work area. It is the primary conduit for screen-to-CBS communication and is returned (via editInMsg delegation) with the assembled template list. |
| 2 | `dataMap` | `Map<String, Object>` | Carries screen-level configuration data including the `FUNC_CODE_KEY` value that overrides the function code. Also contains other shared context used by downstream CBS processing. |
| 3 | `childMap` | `HashMap<String, Object>` | Contains all the field values entered on the KKSV0546 screen. Maps child control IDs (e.g., `svc_kei_no`, `cust_nm`, `keisha_ad_cd`) to their string values. Each empty-string value becomes a template null; non-empty values are passed through. Represents the complete construction order modification context including customer info, address info, scheduling, and up to 20 home appliance units. |

**External state read:**

| Field | Description |
|-------|-------------|
| `TEMPLATE_ID_EKU0041C010` | Private static constant = `"EKU0041C010"`, used as the template identifier for the CAANMsg schema |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `editInMsg(param)` | (inferred: JKKSeikySakiHeigoCC) | - | Calls `editInMsg` in `JKKSeikySakiHeigoCC` to initialize common message area |

**Detailed analysis:**

This method does not perform any direct database operations (no SC calls, no CBS calls, no DAO calls). The only method it calls is `editInMsg(param)`, which initializes the common message area and returns a `HashMap<String, Object>` (the `paramMap`). The method is purely a **transformation/mapping** layer:

- **U (Update):** `editInMsg(param)` — Called at L7348 to create the base parameter map with common configuration. This is the only cross-method call within this class.

The method performs **zero CRUD operations** on database tables. All data flow is within the application layer: `childMap` values are mapped into a `CAANMsg` template, which is then packaged into a `HashMap` and returned.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | N/A | `JKKSeikySakiHeigoCC.execEKU0041C010()` -> `JKKSeikySakiHeigoCC.editInMsg_EKU0041C010(param, dataMap, childMap)` | `editInMsg [U] JKKSeikySakiHeigoCC` (no DB) |

**Note:** The pre-computed caller graph identifies exactly one direct caller: `JKKSeikySakiHeigoCC.execEKU0041C010()`. No screen classes (KKSV*) or batch entry points were found within 8 hops. The method does not call any CBS/SC services — its terminal operations are internal `CAANMsg.set`/`CAANMsg.setNull` calls with no database impact.

## 6. Per-Branch Detail Blocks

### Block 1 — [COMMON INITIALIZATION] (L7348-7362)

> Initializes the common message area and creates the CAANMsg template.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap = editInMsg(param)` // Call to initialize common message area |
| 2 | SET | `template = new CAANMsg(EKU0041C010CBSMsg.class.getName())` // Create template using CBSMsg class |
| 3 | SET | `template.set(EKU0041C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0041C010)` // [-> TEMPLATE_ID_EKU0041C010 = "EKU0041C010"] |
| 4 | SET | `template.set(EKU0041C010CBSMsg.FUNC_CODE, "1")` // Set function code |
| 5 | SET | `operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` |
| 6 | SET | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` |
| 7 | SET | `operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE)` |
| 8 | SET | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` |
| 9 | SET | `operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME)` |
| 10 | SET | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` |

### Block 2 — [IF/ELSE] Work Area Detail Number Extraction (L7367-7386)

> Extracts the work detail number from the work mapping area. If unavailable, sets null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workMap = param.getMappingWorkArea()` |
| 2 | IF | `map == null` [KKSV054601SCWORK not present] (L7371) |

**Block 2.1** — [IF-BRANCH: workMap null] (L7372)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.MSKM_DTL_NO)` |

**Block 2.2** — [ELSE] workMap exists (L7373)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workList = (ArrayList<HashMap<String,String>>) map.get("KKSV054601SCWORKLIST")` |
| 2 | IF | `workList != null && workList.size() != 0` (L7376) |

**Block 2.2.1** — [IF-BRANCH: workList has entries] (L7378-7382)

| # | Type | Code |
|---|------|------|
| 1 | SET | `reMap = (HashMap) workList.get(0)` |
| 2 | SET | `meisai = (String) reMap.get("mskm_dtl_no")` |
| 3 | IF | `meisai == null || "".equals(meisai)` (L7384) |

**Block 2.2.1.1** — [IF-BRANCH: meisai empty] (L7385)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.MSKM_DTL_NO)` |

**Block 2.2.1.2** — [ELSE: meisai has value] (L7387-7388)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKU0041C010CBSMsg.MSKM_DTL_NO, meisai)` |

**Block 2.2.2** — [ELSE: workList null or empty] (L7389-7391)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.MSKM_DTL_NO)` |

### Block 3 — [FUNC_CODE OVERRIDE] (L7393-7395)

> Overrides function code from dataMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap = (HashMap) param.getData("KKSV0546CCList")` // Retrieve work data (unused) |
| 2 | SET | `template.set(EKU0041C010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY))` // Override with dataMap value |

### Block 4 — [IF/ELSE CHAIN] childMap Field Mapping — Core Construction Order (L7398-7422)

> Maps the core construction order identification fields from childMap. Each field uses the same set/setNull pattern.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("svc_kei_no"))` -> [Set SVC_KEI_NO] (L7400) |
| 2 | IF | `"".equals(childMap.get("svc_kei_kaisen_ucwk_no"))` -> [Set SVC_KEI_KAISEN_UCWK_NO] (L7409) |
| 3 | IF | `"".equals(childMap.get("kojiak_no"))` -> [Set KOJIAK_NO] (L7418) |

### Block 5 — [IF/ELSE CHAIN] childMap Field Mapping — Work Order Info (L7425-7438)

> Maps work order codes and service pricing fields.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("koji_uk_cd"))` -> [Set KOJI_UK_CD] (L7427) |
| 2 | IF | `"".equals(childMap.get("koji_uk_dtail_cd"))` -> [Set KOJI_UK_DTAIL_CD] (L7434) |
| 3 | IF | `"".equals(childMap.get("koji_uk_optnty_ido_dtm"))` -> [Set KOJI_UK_OPTNTY_IDO_DTM] (L7441) |
| 4 | IF | `"".equals(childMap.get("svc_cd"))` -> [Set SVC_CD] (L7448) |
| 5 | IF | `"".equals(childMap.get("prc_grp_cd"))` -> [Set PRC_GRP_CD] (L7455) |
| 6 | IF | `"".equals(childMap.get("pcrs_cd"))` -> [Set PCRS_CD] (L7462) |
| 7 | IF | `"".equals(childMap.get("plan_chg_fix_ymd"))` -> [Set PLAN_CHG_FIX_YMD] (L7469) |
| 8 | IF | `"".equals(childMap.get("ad_chg_fix_dtm"))` -> [Set AD_CHG_FIX_DTM] (L7476) |

### Block 6 — [IF/ELSE CHAIN] childMap Field Mapping — Surface Development & Owner (L7479-7502)

> Maps surface development work codes and owner information.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("menkaihat_anken_no"))` -> [Set MENKAIHAT_ANKEN_NO] (L7481) |
| 2 | IF | `"".equals(childMap.get("mnkht_koji_cd"))` -> [Set MNKHT_KOJI_CD] (L7488) |
| 3 | IF | `"".equals(childMap.get("ownr_kei_no"))` -> [Set OWNR_KEI_NO] (L7495) |
| 4 | IF | `"".equals(childMap.get("pid"))` -> [Set PID] (L7502) |

### Block 7 — [IF/ELSE CHAIN] childMap Field Mapping — Customer Info (L7509-7536)

> Maps customer name, katakana name, and all phone number fields.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("sysid"))` -> [Set SYSID] (L7509) |
| 2 | IF | `"".equals(childMap.get("cust_nm"))` -> [Set CUST_NM] (L7516) |
| 3 | IF | `"".equals(childMap.get("cust_kana"))` -> [Set CUST_KANA] (L7523) |
| 4 | IF | `"".equals(childMap.get("cust_home_tel_no"))` -> [Set CUST_HOME_TEL_NO] (L7530) |
| 5 | IF | `"".equals(childMap.get("cust_ktai_tel_no"))` -> [Set CUST_KTAI_TEL_NO] (L7537) |

### Block 8 — [IF/ELSE CHAIN] childMap Field Mapping — Contact & Address (L7544-7568)

> Maps contact phone, contact business name, and full contractor address.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("cust_rrks_tel_no"))` -> [Set CUST_RRKS_TEL_NO] (L7546) |
| 2 | IF | `"".equals(childMap.get("rrks_offc_nm"))` -> [Set RRKS_OFFC_NM] (L7553) |
| 3 | IF | `"".equals(childMap.get("keisha_ad_cd"))` -> [Set KEISHA_AD_CD] (L7560) |
| 4 | IF | `"".equals(childMap.get("keisha_pcd"))` -> [Set KEISHA_PCD] (L7567) |
| 5 | IF | `"".equals(childMap.get("keisha_state_nm"))` -> [Set KEISHA_STATE_NM] (L7574) |
| 6 | IF | `"".equals(childMap.get("keisha_city_nm"))` -> [Set KEISHA_CITY_NM] (L7581) |
| 7 | IF | `"".equals(childMap.get("keisha_oaztsu_nm"))` -> [Set KEISHA_OAZTSU_NM] (L7588) |
| 8 | IF | `"".equals(childMap.get("keisha_azcho_nm"))` -> [Set KEISHA_AZCHO_NM] (L7595) |
| 9 | IF | `"".equals(childMap.get("keisha_ad_bnchigo"))` -> [Set KEISHA_AD_BNCHIGO] (L7602) |
| 10 | IF | `"".equals(childMap.get("keisha_adrttm"))` -> [Set KEISHA_ADRTTM] (L7609) |
| 11 | IF | `"".equals(childMap.get("keisha_adrrm"))` -> [Set KEISHA_ADRRM] (L7616) |

### Block 9 — [IF/ELSE] Billing Contract Number (L7619-7624)

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("seiky_kei_no"))` -> [Set SEIKY_KEI_NO] (L7621) |

### Block 10 — [SET NULL SEQUENCE] Setplace Fields Reset (L7627-7637)

> Resets all site/place-related fields to null as they are not used in this screen.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_AZCHO_NM)` |
| 2 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_STATE_NM)` |
| 3 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_ADRTTM)` |
| 4 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_ADRRM)` |
| 5 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_AD_CD)` |
| 6 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_CITY_NM)` |
| 7 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_AD_BNCHIGO)` |
| 8 | SET | `template.setNull(EKU0041C010CBSMsg.PLACE_NO)` |
| 9 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_PCD)` |
| 10 | SET | `template.setNull(EKU0041C010CBSMsg.SETPLACE_OAZTSU_NM)` |

### Block 11 — [IF/ELSE CHAIN] Post-Construction & Location Data (L7640-7663)

> Maps the post-construction address flag, wiring location, utility office, GPS coordinates, and dwelling details.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("koji_saki_ad_mi_fix_flg"))` -> [Set KOJI_SAKI_AD_MI_FIX_FLG] (L7642) |
| 2 | IF | `"".equals(childMap.get("kaisen_place_telno"))` -> [Set KAISEN_PLACE_TELNO] (L7649) |
| 3 | IF | `"".equals(childMap.get("kepco_busioffice_no"))` -> [Set KEPCO_BUSIOFFICE_NO] (L7656) |
| 4 | IF | `"".equals(childMap.get("lgtd"))` -> [Set LGTD] (L7663) |
| 5 | IF | `"".equals(childMap.get("lttd"))` -> [Set LTTD] (L7670) |
| 6 | IF | `"".equals(childMap.get("zahyo_hosei_um"))` -> [Set ZAHYO_HOSEI_UM] (L7677) |
| 7 | IF | `"".equals(childMap.get("ad_form_cd"))` -> [Set AD_FORM_CD] (L7684) |
| 8 | IF | `"".equals(childMap.get("nyukyo_flr_cnt_cd"))` -> [Set NYUKYO_FLR_CNT_CD] (L7691) |
| 9 | IF | `"".equals(childMap.get("kcku_flr_cnt_cd"))` -> [Set KCKU_FLR_CNT_CD] (L7698) |
| 10 | IF | `"".equals(childMap.get("direction_cd_1"))` -> [Set DIRECTION_CD_1] (L7705) |
| 11 | IF | `"".equals(childMap.get("direction_cd_2"))` -> [Set DIRECTION_CD_2] (L7712) |

### Block 12 — [IF/ELSE CHAIN] Pre-Move Address Mapping (L7719-7775)

> Maps the complete address of the pre-move (current) location.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("tentaku_bf_ad_cd"))` -> [Set TENTAKU_BF_AD_CD] (L7721) |
| 2 | IF | `"".equals(childMap.get("tentaku_bf_pcd"))` -> [Set TENTAKU_BF_PCD] (L7728) |
| 3 | IF | `"".equals(childMap.get("tentaku_bf_state_nm"))` -> [Set TENTAKU_BF_STATE_NM] (L7735) |
| 4 | IF | `"".equals(childMap.get("tentaku_bf_city_nm"))` -> [Set TENTAKU_BF_CITY_NM] (L7742) |
| 5 | IF | `"".equals(childMap.get("tentaku_bf_oaztsu_nm"))` -> [Set TENTAKU_BF_OAZTSU_NM] (L7749) |
| 6 | IF | `"".equals(childMap.get("tentaku_bf_azcho_nm"))` -> [Set TENTAKU_BF_AZCHO_NM] (L7756) |
| 7 | IF | `"".equals(childMap.get("tentaku_bf_ad_bnchigo"))` -> [Set TENTAKU_BF_AD_BNCHIGO] (L7763) |
| 8 | IF | `"".equals(childMap.get("tentaku_bf_adrttm"))` -> [Set TENTAKU_BF_ADRTTM] (L7770) |
| 9 | IF | `"".equals(childMap.get("tentaku_bf_adrrm"))` -> [Set TENTAKU_BF_ADRRM] (L7775) |

### Block 13 — [IF/ELSE CHAIN] Post-Move Address Mapping (L7778-7830)

> Maps the complete address of the post-move (new) location.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("tentaku_saki_ad_cd"))` -> [Set TENTAKU_SAKI_AD_CD] (L7780) |
| 2 | IF | `"".equals(childMap.get("tentaku_saki_pcd"))` -> [Set TENTAKU_SAKI_PCD] (L7787) |
| 3 | IF | `"".equals(childMap.get("tentaku_saki_state_nm"))` -> [Set TENTAKU_SAKI_STATE_NM] (L7794) |
| 4 | IF | `"".equals(childMap.get("tentaku_saki_city_nm"))` -> [Set TENTAKU_SAKI_CITY_NM] (L7801) |
| 5 | IF | `"".equals(childMap.get("tentaku_saki_oaztsu_nm"))` -> [Set TENTAKU_SAKI_OAZTSU_NM] (L7808) |
| 6 | IF | `"".equals(childMap.get("tentaku_saki_azcho_nm"))` -> [Set TENTAKU_SAKI_AZCHO_NM] (L7815) |
| 7 | IF | `"".equals(childMap.get("tentaku_saki_ad_bnchigo"))` -> [Set TENTAKU_SAKI_AD_BNCHIGO] (L7822) |
| 8 | IF | `"".equals(childMap.get("tentaku_saki_adrttm"))` -> [Set TENTAKU_SAKI_ADRTTM] (L7829) |
| 9 | IF | `"".equals(childMap.get("tentaku_saki_adrrm"))` -> [Set TENTAKU_SAKI_ADRRM] (L7834) |

### Block 14 — [IF/ELSE CHAIN] Additional Construction Data (L7837-7877)

> Maps new construction code, reactivation flag, same equipment code, work scope, and relocation code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("newconst_bukken_cd"))` -> [Set NEWCONST_BUKKEN_CD] (L7839) |
| 2 | IF | `"".equals(childMap.get("hukkat_anken_flg"))` -> [Set HUKKAT_ANKEN_FLG] (L7846) |
| 3 | IF | `"".equals(childMap.get("same_equip_re_mskm_cd"))` -> [Set SAME_EQUIP_RE_MSKM_CD] (L7853) |
| 4 | IF | `"".equals(childMap.get("koji_scope_cd"))` -> [Set KOJI_SCOPE_CD] (L7860) |
| 5 | IF | `"".equals(childMap.get("isetsu_cd"))` -> [Set ISETSU_CD] (L7867) |

### Block 15 — [IF/ELSE CHAIN] Timing & Schedule Fields (L7870-7940)

> Maps all date-based scheduling fields including desired dates, reservation dates, and contact preferences.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("koji_kibo_ymd"))` -> [Set KOJI_KIBO_YMD] (L7872) |
| 2 | IF | `"".equals(childMap.get("dsl_kibo_ymd"))` -> [Set DSL_KIBO_YMD] (L7879) |
| 3 | IF | `"".equals(childMap.get("shunko_rsv_ymd"))` -> [Set SHUNKO_RSV_YMD] (L7886) |
| 4 | IF | `"".equals(childMap.get("nyukyo_rsv_ymd"))` -> [Set NYUKYO_RSV_YMD] (L7893) |
| 5 | IF | `"".equals(childMap.get("hikiwatashi_rsv_ymd"))` -> [Set HIKIWATASHI_RSV_YMD] (L7900) |
| 6 | IF | `"".equals(childMap.get("epower_soden_rsv_ymd"))` -> [Set EPOWER_SODEN_RSV_YMD] (L7907) |
| 7 | IF | `"".equals(childMap.get("tel_rrk_kibo_ymd"))` -> [Set TEL_RRK_KIBO_YMD] (L7914) |
| 8 | IF | `"".equals(childMap.get("tel_rrk_kibo_time_cd"))` -> [Set TEL_RRK_KIBO_TIME_CD] (L7921) |
| 9 | IF | `"".equals(childMap.get("takcho_kibo_apo_kigen_ymd"))` -> [Set TAKCHO_KIBO_APO_KIGEN_YMD] (L7928) |

### Block 16 — [IF/ELSE CHAIN] Home Work & Contact Preferences (L7942-7996)

> Maps home work application deadlines, contact designation, and work order remarks.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("tnkj_kibo_apo_kigen_ymd"))` -> [Set TNKJ_KIBO_APO_KIGEN_YMD] (L7944) |
| 2 | IF | `"".equals(childMap.get("koji_apo_rrks_shitei_cd"))` -> [Set KOJI_APO_RRKS_SHITEI_CD] (L7951) |
| 3 | IF | `"".equals(childMap.get("rrk_way_cd"))` -> [Set RRK_WAY_CD] (L7958) |
| 4 | IF | `"".equals(childMap.get("rrk_way_hoki"))` -> [Set RRK_WAY_HOKI] (L7965) |
| 5 | IF | `"".equals(childMap.get("kojiak_biko"))` -> [Set KOJIAK_BIKO] (L7972) |
| 6 | IF | `"".equals(childMap.get("kojiak_biko_1"))` -> [Set KOJIAK_BIKO_1] (L7979) |
| 7 | IF | `"".equals(childMap.get("kojiak_biko_2"))` -> [Set KOJIAK_BIKO_2] (L7986) |

### Block 17 — [SET NULL SEQUENCE] Domain Error & Telecom Fields (L7991-8003)

> Resets domain error case fields, KePCO customer data consent flag, and additional info.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.DMPS_ANKEN_NO)` // Domain error case number |
| 2 | SET | `template.setNull(EKU0041C010CBSMsg.DMPSANK_SBT_CD)` // Domain error case type code |
| 3 | SET | `template.setNull(EKU0041C010CBSMsg.KEPCO_CTINFO_JUJU_DOI_UM)` // KePCO customer info consent flag |

### Block 18 — [SET NULL SEQUENCE] Home Appliance Section 0 (L8006-8037)

> Resets the "home appliance type code 1" through "before-change old STB-ID 1" fields.

| # | Type | Code |
|---|------|------|
| 1-17 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_1)` through `template.setNull(EKU0041C010CBSMsg.CHGB_OLD_STB_ID_1)` // Home appliance 1 (17 fields) |

### Block 19 — [SET NULL SEQUENCE] Home Appliance Sections 2-20 (L8040-8756)

> Resets home appliance device data for slots 2 through 20, each with the same 17 fields (TAKNKIKI_SBT_CD_N, TAKNKIKI_IDO_CD_N, KKTK_SVC_KEI_NO_N, TAKNKIKI_MODEL_CD_N, KKSEIZO_NO_N, STB_ID_N, HDD_CAPA_CD_N, VONU_BSPT_KH_N, STB_KEI_TV_COURSE_CD_N, CHGB_TAKNIKK_MODEL_CD_N, CHGB_KKSEIZO_NO_N, CHGB_STB_ID_N, CHGB_HDD_CAPA_CD_N, CHGB_VONU_BSPT_KH_N, CHGB_STB_KEI_TV_COURSE_CD_N, CHGB_OLD_STB_ID_N).

| # | Type | Code |
|---|------|------|
| 19.1 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_2)` through `CHGB_OLD_STB_ID_2` // 17 fields for slot 2 |
| 19.2 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_3)` through `CHGB_OLD_STB_ID_3` // 17 fields for slot 3 |
| ... | ... | (Continues for slots 4-17) |
| 19.17 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_17)` through `CHGB_OLD_STB_ID_17` // 17 fields for slot 17 |
| 19.18 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_18)` through `CHGB_OLD_STB_ID_18` // 17 fields for slot 18 |
| 19.19 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_19)` through `CHGB_OLD_STB_ID_19` // 17 fields for slot 19 |
| 19.20 | SET | `template.setNull(EKU0041C010CBSMsg.TAKNKIKI_SBT_CD_20)` through `CHGB_OLD_STB_ID_20` // 17 fields for slot 20 |

### Block 20 — [SET NULL SEQUENCE] Additional Fields (L8759-8782)

> Resets submitter name, construction application contact phone, customer SOS flag, equipment service change memos, equipment change numbers, and original tone case numbers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0041C010CBSMsg.MSKMSHA_NM)` // Submitter name |
| 2 | SET | `template.setNull(EKU0041C010CBSMsg.KOJI_APO_RRKS_TELNO)` // Construction application contact phone |
| 3 | SET | `template.setNull(EKU0041C010CBSMsg.CUST_SOS_USE_UM)` // Customer SOS usage flag |
| 4-23 | SET | `template.setNull(EKU0041C010CBSMsg.KKTK_SVC_KEI_CHGE_MEMO_N)` for N=1..20 // Equipment service change memos 1-20 |
| 24-43 | SET | `template.setNull(EKU0041C010CBSMsg.KIKI_CHG_NO_N)` for N=1..20 // Equipment change numbers 1-20 |
| 44-63 | SET | `template.setNull(EKU0041C010CBSMsg.MOTO_TCASE_NO_N)` for N=1..20 // Original tone case numbers 1-20 |

### Block 21 — [RETURN] Template Assembly (L8785-8790)

> Packs the template into an array and stores it in the parameter map for return.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1]` |
| 2 | SET | `templates[0] = template` |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` |
| 4 | RETURN | `return paramMap` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the primary identifier for a service contract line item |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract modification work number — internal tracking ID for service contract modification work orders |
| `kojiak_no` | Field | Work order number — the unique identifier for a construction work order |
| `koji_uk_cd` | Field | Work order acceptance code — classifies the type of work acceptance |
| `koji_uk_dtail_cd` | Field | Work order acceptance detail code — sub-classification of work acceptance type |
| `koji_uk_optnty_ido_dtm` | Field | Work order acceptance optional migration date/time — timestamp for optional migration acceptance |
| `svc_cd` | Field | Service code — identifies the service type (e.g., e-Hikari TV) |
| `prc_grp_cd` | Field | Price group code — billing price group classification |
| `pcrs_cd` | Field | Price course code — billing course plan code |
| `plan_chg_fix_ymd` | Field | Plan change fixation date — date when plan changes become effective |
| `ad_chg_fix_dtm` | Field | Address change fixation date/time — date when address changes become effective |
| `menkaihat_anken_no` | Field | Surface development work order number — identifier for surface development cases |
| `mnkht_koji_cd` | Field | Surface development work code — classification of surface development work type |
| `ownr_kei_no` | Field | Owner contract number — identifier for the owner-side contract |
| `pid` | Field | P-ID — platform/portal identifier for the service |
| `sysid` | Field | SYSID — system identifier |
| `cust_nm` | Field | Customer name — the customer's full name |
| `cust_kana` | Field | Customer kana name — phonetic representation of the customer's name in Japanese katakana |
| `cust_home_tel_no` | Field | Customer home phone number |
| `cust_ktai_tel_no` | Field | Customer mobile phone number |
| `cust_rrks_tel_no` | Field | Customer contact phone number — alternate contact number |
| `rrks_offc_nm` | Field | Contact business name — the name of the business entity to contact |
| `keisha_ad_cd` | Field | Contractor address code — classification code for contractor address |
| `keisha_pcd` | Field | Contractor postal code |
| `keisha_state_nm` | Field | Contractor prefecture name |
| `keisha_city_nm` | Field | Contractor city/town/village name |
| `keisha_oaztsu_nm` | Field | Contractor district/ward name |
| `keisha_azcho_nm` | Field | Contractor block/street name |
| `keisha_ad_bnchigo` | Field | Contractor address reference number |
| `keisha_adrttm` | Field | Contractor address supplement — building name |
| `keisha_adrrm` | Field | Contractor address supplement — room number |
| `seiky_kei_no` | Field | Billing contract number — the invoice/billing contract identifier |
| `koji_saki_ad_mi_fix_flg` | Field | Post-construction address non-determination flag — indicates whether the post-construction address has been finalized |
| `kaisen_place_telno` | Field | Wiring location phone number |
| `kepco_busioffice_no` | Field | KePCo (Kansai Electric Power Company) business office number |
| `lgtd` | Field | Longitude — GPS coordinate |
| `lttd` | Field | Latitude — GPS coordinate |
| `zahyo_hosei_um` | Field | Coordinate correction present/absent flag — whether GPS coordinates need correction |
| `ad_form_cd` | Field | Dwelling form code — type of dwelling (e.g., apartment, detached house) |
| `nyukyo_flr_cnt_cd` | Field | Occupancy floor count code — floor number where the service is installed |
| `kcku_flr_cnt_cd` | Field | Building floor count code — total number of floors in the building |
| `direction_cd_1` | Field | Direction code 1 — compass direction for wiring |
| `direction_cd_2` | Field | Direction code 2 — secondary compass direction for wiring |
| `tentaku_bf_ad_cd` | Field | Pre-move address code — current address classification before relocation |
| `tentaku_bf_pcd` | Field | Pre-move postal code |
| `tentaku_bf_state_nm` | Field | Pre-move prefecture name |
| `tentaku_bf_city_nm` | Field | Pre-move city/town/village name |
| `tentaku_bf_oaztsu_nm` | Field | Pre-move district/ward name |
| `tentaku_bf_azcho_nm` | Field | Pre-move block/street name |
| `tentaku_bf_ad_bnchigo` | Field | Pre-move address reference number |
| `tentaku_bf_adrttm` | Field | Pre-move address supplement — building name |
| `tentaku_bf_adrrm` | Field | Pre-move address supplement — room number |
| `tentaku_saki_ad_cd` | Field | Post-move address code — new address classification after relocation |
| `tentaku_saki_pcd` | Field | Post-move postal code |
| `tentaku_saki_state_nm` | Field | Post-move prefecture name |
| `tentaku_saki_city_nm` | Field | Post-move city/town/village name |
| `tentaku_saki_oaztsu_nm` | Field | Post-move district/ward name |
| `tentaku_saki_azcho_nm` | Field | Post-move block/street name |
| `tentaku_saki_ad_bnchigo` | Field | Post-move address reference number |
| `tentaku_saki_adrttm` | Field | Post-move address supplement — building name |
| `tentaku_saki_adrrm` | Field | Post-move address supplement — room number |
| `newconst_bukken_cd` | Field | New construction building code — type of new construction work |
| `hukkat_anken_flg` | Field | Reactivation case flag — indicates if this is a reactivation case |
| `same_equip_re_mskm_cd` | Field | Same equipment re-order code — code for ordering the same equipment again |
| `koji_scope_cd` | Field | Work scope code — classification of work scope |
| `isetsu_cd` | Field | Relocation code — type of relocation |
| `koji_kibo_ymd` | Field | Desired construction date — customer's preferred construction date |
| `dsl_kibo_ymd` | Field | Desired cancellation date — customer's preferred service cancellation date |
| `shunko_rsv_ymd` | Field | Estimated installation date — scheduled installation date |
| `nyukyo_rsv_ymd` | Field | Estimated occupancy date — expected move-in date |
| `hikiwatashi_rsv_ymd` | Field | Estimated handover date — expected service handover date |
| `epower_soden_rsv_ymd` | Field | Estimated power transmission date — expected date for power restoration/connection |
| `tel_rrk_kibo_ymd` | Field | Desired telephone contact date — preferred date for phone consultation |
| `tel_rrk_kibo_time_cd` | Field | Desired telephone contact time slot code — preferred time window for phone contact |
| `takcho_kibo_apo_kigen_ymd` | Field | Home investigation desired application deadline date — deadline for requesting home inspection |
| `tnkj_kibo_apo_kigen_ymd` | Field | Home work desired application deadline date — deadline for requesting home work |
| `koji_apo_rrks_shitei_cd` | Field | Construction application contact designation code — how the construction team should be contacted |
| `rrk_way_cd` | Field | Contact method code — preferred contact method (phone, email, etc.) |
| `rrk_way_hoki` | Field | Contact method supplement — additional contact instructions |
| `kojiak_biko` | Field | Work order remark 1 — general remark for the work order |
| `kojiak_biko_1` | Field | Work order remark 2 |
| `kojiak_biko_2` | Field | Work order remark 3 |
| `DMPS_ANKEN_NO` | Field | Domain error case number — identifier for domain error cases |
| `DMPSANK_SBT_CD` | Field | Domain error case type code — classification of domain error |
| `KEPCO_CTINFO_JUJU_DOI_UM` | Field | KePCO customer information consent flag — whether customer consented to share data with Kansai Electric Power |
| `TAKNKIKI_SBT_CD_N` | Field | Home appliance type code N — type of home appliance at slot N (1-20) |
| `TAKNKIKI_IDO_CD_N` | Field | Home appliance migration code N — code for appliance migration type |
| `KKTK_SVC_KEI_NO_N` | Field | Equipment-provided service contract number N — service contract ID for appliance at slot N |
| `TAKNKIKI_MODEL_CD_N` | Field | Home appliance model code N — model identifier for appliance at slot N |
| `KKSEIZO_NO_N` | Field | Equipment serial number N — manufacturing serial number for appliance at slot N |
| `STB_ID_N` | Field | STB-ID N — Set-Top Box identifier at slot N |
| `HDD_CAPA_CD_N` | Field | HDD capacity code N — storage capacity classification for appliance at slot N |
| `VONU_BSPT_KH_N` | Field | BS passthrough available N — whether BS (Broadcast Satellite) passthrough is supported at slot N |
| `STB_KEI_TV_COURSE_CD_N` | Field | STB contract TV course code N — TV subscription plan code for appliance at slot N |
| `CHGB_TAKNIKK_MODEL_CD_N` | Field | Pre-change home appliance model code N — model code before appliance change |
| `CHGB_KKSEIZO_NO_N` | Field | Pre-change equipment serial number N — serial number before appliance change |
| `CHGB_STB_ID_N` | Field | Pre-change STB-ID N — Set-Top Box ID before appliance change |
| `CHGB_HDD_CAPA_CD_N` | Field | Pre-change HDD capacity code N — HDD capacity before appliance change |
| `CHGB_VONU_BSPT_KH_N` | Field | Pre-change BS passthrough available N — BS passthrough status before appliance change |
| `CHGB_STB_KEI_TV_COURSE_CD_N` | Field | Pre-change STB contract TV course code N — TV course before appliance change |
| `CHGB_OLD_STB_ID_N` | Field | Pre-change old STB-ID N — legacy Set-Top Box ID before appliance change |
| `MSKMSHA_NM` | Field | Submitter name — name of the person who submitted the work order |
| `KOJI_APO_RRKS_TELNO` | Field | Construction application contact phone number — phone number for contacting the construction team |
| `CUST_SOS_USE_UM` | Field | Customer SOS usage flag — whether the customer uses SOS service |
| `KKTK_SVC_KEI_CHGE_MEMO_N` | Field | Equipment-provided service contract change memo N — memo field for equipment service changes (1-20) |
| `KIKI_CHG_NO_N` | Field | Equipment change number N — change order number for equipment at slot N (1-20) |
| `MOTO_TCASE_NO_N` | Field | Original tone case number N — case number from the original equipment (1-20) |
| `mskm_dtl_no` | Field | Work detail number — secondary identifier for work details extracted from work map |
| EKU0041C010CBSMsg | Class | CBS message class defining the template schema fields for the EKU0041C010 screen |
| CAANMsg | Class | Message template class used to assemble screen input data for CBS processing |
| KKSV0546 | Screen | Work Order e-Hikari TV Line Various Changes screen — the UI screen this method supports |
| KKSV054601SCWORK | Key | Work mapping area key — work area data for screen KKSV0546 |
| TEMPLATE_ID_EKU0041C010 | Constant | Template ID constant = `"EKU0041C010"` — identifies the CBSMsg schema version |
| FTTH | Acronym | Fiber To The Home — fiber-optic broadband service (context: e-Hikari) |
| STB | Acronym | Set-Top Box — digital television receiver equipment |
| BS | Acronym | Broadcast Satellite — satellite broadcasting service (Japanese: 放送衛星) |
| HDD | Acronym | Hard Disk Drive — storage device in STB/DVR equipment |
| KePCO | Acronym | Kansai Electric Power Company (関西電力) — regional utility provider |
| CBS | Acronym | Business Component Service — the backend service layer in this architecture |
| SC | Acronym | Service Component — a service-level processing component |
| CAANMsg | Acronym | Fujitsu custom message class for screen data mapping |
| KKSV | Prefix | Screen class prefix (e-Hikari Screen) |
