# Business Logic — JKKSeikySakiHeigoCC.editInMsg_EKK0491C060() [266 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKSeikySakiHeigoCC` |
| Layer | Common Component (CC) — shared business logic helper |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKSeikySakiHeigoCC.editInMsg_EKK0491C060()

This method creates the inbound CBS (Common Business Service) message for the **Invoice Contract Content Modification** service (EKK0491C060) within the K-Opticom customer core system. It acts as a message **mapper / transformer**, bridging the gap between the screen-layer request parameters and the CBS schema expected by the downstream service component. Specifically, it reads the invoice contract detail data from a child output message (`ekk0491a010outMsg[0]` — produced by the EKK0491A010 query SC) and transfers all relevant fields into a newly constructed `CAANMsg` template of type `EKK0491C060CBSMsg`.

The method implements the **builder** and **delegation** design patterns. It first delegates to the inherited `editInMsg(param)` method to handle common-domain initialization (operator info, operation date/time, etc.), then performs domain-specific field mapping for invoice contract items including: invoice contract number, billing address details (name, postal code, full address components, phone/fax/email), invoice delivery flags, first payment information, and movement/division indicators. For each source field, it applies a consistent null-safety pattern — if the source is null, the target is set to null; otherwise, the source value is copied as a string.

The method also reads the function code from `dataMap` to dynamically override a previously hardcoded value, and reads the application date (tekiyoYmd) from `dataMap` as a version 6.00.00 change. At the end, it assembles the constructed template into an array and places it in the parameter map under the template list key, returning the fully prepared map for the calling CBS execution step.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK0491C060"])
    
    START --> STEP1["Step 1: Call editInMsg(param)"]
    STEP1 --> STEP2["Create EKK0491C060CBSMsg template"]
    STEP2 --> STEP3["Set template ID = TEMPLATE_ID_EKK0491C060"]
    STEP3 --> STEP4["Set FUNC_CODE = 1"]
    STEP4 --> STEP5["Get operator info from param"]
    STEP5 --> STEP6["Get workMap from param"]
    STEP6 --> STEP7["Get childTemplate = ekk0491a010outMsg[0]"]
    STEP7 --> STEP8["Update FUNC_CODE from dataMap"]
    
    STEP8 --> MAP1["Map SEIKY_KEI_NO"]
    MAP1 --> MAP2["Map MSKM_DTL_NO"]
    MAP2 --> MAP3["Map SEIKY_KEI_KANA"]
    MAP3 --> MAP4["Map INFO_DSP_CD"]
    MAP4 --> MAP5["Set SEIKYUS_HAKKO_YH = 0"]
    MAP5 --> MAP6["Map SKS_SHS_KSH_AD_SAI_FLG"]
    MAP6 --> MAP7["Map SKS_SHS_NM_CUST_NM_SAI_FLG"]
    MAP7 --> MAP8["Map SHS_HOJIN_SBT_CD"]
    MAP8 --> MAP9["Map SHS_HOJIN_ZENGO_SHITEI_CD"]
    MAP9 --> MAP10["Map SHS_KANA"]
    MAP10 --> MAP11["Map SOHUS_NM"]
    MAP11 --> MAP12["Map SOHUS_BKM"]
    MAP12 --> MAP13["Map SOHUS_TNTSHA_NM"]
    MAP13 --> MAP14["Map SOHUS_AD_CD"]
    MAP14 --> MAP15["Map SOHUS_PCD"]
    MAP15 --> MAP16["Map SOHUS_STATE_NM"]
    MAP16 --> MAP17["Map SOHUS_CITY_NM"]
    MAP17 --> MAP18["Map SOHUS_OAZTSU_NM"]
    MAP18 --> MAP19["Map SOHUS_AZCHO_NM"]
    MAP19 --> MAP20["Map SOHUS_ADRTTM"]
    MAP20 --> MAP21["Map SOHUS_ADRRM"]
    MAP21 --> MAP22["Map SOHUS_BNCHIGO"]
    MAP22 --> MAP23["Map SOHUS_TELNO"]
    MAP23 --> MAP24["Map SOHUS_FAX_NO"]
    MAP24 --> MAP25["Map SOHUS_MLAD"]
    MAP25 --> MAP26["Map SEIKYUS_SOHUS_CHGE_YMD"]
    MAP26 --> MAP27["Map SEIKY_WAY_APLY_ADJ_YMD"]
    MAP27 --> MAP28["Map RSV_TSTA_KIBO_YMD"]
    MAP28 --> MAP29["Map RSV_APLY_YMD from dataMap tekiyoYmd"]
    MAP29 --> MAP30["Map IDO_DIV"]
    MAP30 --> MAP31["Map FIRST_SEIKY_YM"]
    MAP31 --> MAP32["Map FIRST_PAY_MSKMSHO_SOHU_YH"]
    MAP32 --> MAP33["Map FIRST_PAY_MSKMSHO_SOHU_YMD"]
    MAP33 --> MAP34["Map FIRST_PAY_MSKMSHO_RCP_YMD"]
    MAP34 --> MAP35["Map UPD_DTM_BF from LAST_UPD_DTM"]
    MAP35 --> MAP36["Map SOHUS_AD_MAN_INPUT_FLG"]
    MAP36 --> MAP37["Set SOHUS_AD_CHK_LV = null"]
    MAP37 --> ARRANGE["Arrange templates array"]
    ARRANGE --> MAP_PUT["paramMap.put TEMPLATE_LIST_KEY"]
    MAP_PUT --> END_NODE(["Return paramMap"])
```

**Constant Resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|-----------------|
| `TEMPLATE_ID_EKK0491C060` | `"EKK0491C060"` | CBS service ID for invoice contract content modification |
| `FUNC_CODE` | `"1"` | Initially set to 1, then overridden from `dataMap` |
| `SEIKYUS_HAKKO_YH` | `"0"` | Invoice issuance necessity — hardcoded to "0" (not issuing) |
| `RSV_APLY_YMD` | from `dataMap.get("tekiyoYmd")` | Application application date — version 6.00.00 change |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying screen input data, control map data (operator ID, operation date/time), and the work mapping area. It is the primary conduit for passing session-level context and user interaction data into the business logic layer. |
| 2 | `dataMap` | `Map<String, Object>` | A map of process-level data shared across the business logic chain. Specifically provides `FUNC_CODE` (function code) and `tekiyoYmd` (application application date — version 6.00.00 addition). These values supplement or override defaults derived from other sources. |
| 3 | `ekk0491a010outMsg` | `CAANMsg[]` | The output message array from the EKK0491A010 query service component. Index [0] contains the invoice contract detail detail rows (EKK0491A010CBSMsg1List), serving as the primary data source for all field-to-field mappings. This is the "child" message containing the queried contract data. |

**Inherited/External State Read:**

| Source | Description |
|--------|-------------|
| `editInMsg(param)` | Inherited/common method that initializes the parameter map with common-domain settings (operator info, operation date/time, access group control item). |
| `param.getMappingWorkArea()` | Retrieves the work mapping area from the parameter object (declared but not actively used in this method — the value is stored in a local variable `workMap`). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JACBatCommon.isNull` | JACBatCommon | - | Calls `isNull` in `JACBatCommon` (pre-computed graph evidence) |
| - | `JACbatRknBusinessUtil.isNull` | JACbatRknBusiness | - | Calls `isNull` in `JACbatRknBusinessUtil` (pre-computed graph evidence) |
| - | `JCHbatSeikyKaknoBusinessUtil.isNull` | JCHbatSeikyKaknoBusiness | - | Calls `isNull` in `JCHbatSeikyKaknoBusinessUtil` (pre-computed graph evidence) |
| - | `JBSbatACInsentetivePrcInfoSaksei.isNull` | JBSbatACInsentetivePrcInfoSaksei | - | Calls `isNull` in `JBSbatACInsentetivePrcInfoSaksei` (pre-computed graph evidence) |
| - | `JBSbatAKCHSeikyYsoInfMake.isNull` | JBSbatAKCHSeikyYsoInfMake | - | Calls `isNull` in `JBSbatAKCHSeikyYsoInfMake` (pre-computed graph evidence) |
| R | `JBSbatFUCaseFileRnkData.getString` | JBSbatFUCaseFileRnkData | - | Calls `getString` in `JBSbatFUCaseFileRnkData` (pre-computed graph evidence) |
| R | `JBSbatFUMoveNaviData.getString` | JBSbatFUMoveNaviData | - | Calls `getString` in `JBSbatFUMoveNaviData` (pre-computed graph evidence) |
| R | `JBSbatZMAdDataSet.getString` | JBSbatZMAdDataSet | - | Calls `getString` in `JBSbatZMAdDataSet` (pre-computed graph evidence) |
| - | `JCKMvnoCustInfoAddCC.setNull` | JCKMvnoCustInfoAddCC | - | Calls `setNull` in `JCKMvnoCustInfoAddCC` (pre-computed graph evidence) |
| - | `JKKKapKeiInfoCancelCC.setNull` | JKKKapKeiInfoCancelCC | - | Calls `setNull` in `JKKKapKeiInfoCancelCC` (pre-computed graph evidence) |
| - | `JKKKikiModelKappuInfoCC.setNull` | JKKKikiModelKappuInfoCC | - | Calls `setNull` in `JKKKikiModelKappuInfoCC` (pre-computed graph evidence) |
| - | `JKKKisnUwHmdkAddCC.setNull` | JKKKisnUwHmdkAddCC | - | Calls `setNull` in `JKKKisnUwHmdkAddCC` (pre-computed graph evidence) |
| - | `JKKMvnoSvcKeiStaAddCC.setNull` | JKKMvnoSvcKeiStaAddCC | - | Calls `setNull` in `JKKMvnoSvcKeiStaAddCC` (pre-computed graph evidence) |
| U | `JKKSeikySakiHeigoCC.editInMsg` | JKKSeikySakiHeigoCC | - | Calls `editInMsg` — common-domain parameter map initialization |
| R | `JESC0101B010TPMA.getString` | JESC0101B010TPMA | - | Calls `getString` in `JESC0101B010TPMA` (pre-computed graph evidence) |
| R | `JESC0101B020TPMA.getString` | JESC0101B020TPMA | - | Calls `getString` in `JESC0101B020TPMA` (pre-computed graph evidence) |
| R | `SCW00701SFLogic.getName` | SCW00701SFLogic | - | Calls `getName` in `SCW00701SFLogic` (pre-computed graph evidence) |

### Methods directly invoked in source code:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `editInMsg(IRequestParameterReadWrite)` | - | - | Initializes parameter map with common-domain settings (operator ID, operation date/time, access group). Called once at method entry. |
| R | `CAANMsg constructor` | - | - | Creates a new `CAANMsg` instance of type `EKK0491C060CBSMsg` to serve as the message template. |
| R | `childTemplate.isNull(...)` | - | - | Checks null status of fields in the source message (EKK0491A010CBSMsg1List) — 35+ field checks. |
| R | `childTemplate.getString(...)` | - | - | Reads string value from source message for non-null fields — 35+ field reads. |
| U | `template.set(...)` / `template.setNull(...)` | - | - | Sets values (or nulls) in the output template for all mapped fields — 37+ field writes. |
| U | `paramMap.put(...)` | - | - | Places the constructed template array into the parameter map under `JCMConstants.TEMPLATE_LIST_KEY`. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class:JKKSeikySakiHeigoCC | `execEKK0491C060(handle, param, scCall, dataMap, ekk0491a010outMsg)` -> `editInMsg_EKK0491C060(param, dataMap, ekk0491a010outMsg)` | `editInMsg[U]`, `childTemplate.getString[R]`(35 fields), `template.setNull[U]`(multiple), `template.set[U]`(37 fields), `paramMap.put[U]` |

**Details:** The method is called exclusively by `execEKK0491C060`, which is the execution entry point for the EKK0491C060 Invoice Contract Content Modification business logic. `execEKK0491C060` runs three phases: (1) calls this method to build the inbound message map, (2) invokes the SC via `scCall.run(paramMap, handle)` to persist the contract modification, and (3) calls `editOutMsg_EKK0491C060` to map the SC response back to the screen parameters.

## 6. Per-Branch Detail Blocks

**Block 1** — COMMON INITIALIZATION (L13592)

> Initializes the common-domain parameter map and creates the CBS message template.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `HashMap<String, Object> paramMap = editInMsg(param)` | Delegated call to inherited/common method that initializes the parameter map with common-domain settings (operator info, operation date/time). (共通領域の設定 — Common domain initialization) |
| 2 | SET | `CAANMsg template = new CAANMsg(EKK0491C060CBSMsg.class.getName())` | Creates a new CAANMsg instance of type EKK0491C060CBSMsg. (テンプレートID — Template ID) |
| 3 | SET | `template.set(EKK0491C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491C060)` | Sets template ID to `"EKK0491C060"`. |
| 4 | SET | `template.set(EKK0491C060CBSMsg.FUNC_CODE, "1")` | Sets initial FUNC_CODE to `"1"`. |
| 5 | EXEC | `param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` | Retrieves operator ID from control map. (オペレータID) |
| 6 | SET | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` | Sets operator ID in template. |
| 7 | EXEC | `param.getControlMapData(SCControlMapKeys.OPE_DATE)` | Retrieves operation date. (運用日付) |
| 8 | SET | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` | Sets operation date in template. |
| 9 | EXEC | `param.getControlMapData(SCControlMapKeys.OPE_TIME)` | Retrieves operation time. (運用日時) |
| 10 | SET | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` | Sets operation datetime in template. |
| 11 | SET | `CAANMsg[] templateArray = null` | Declares template array (unused local variable). |
| 12 | SET | `HashMap inMap = null` | Declares local HashMap (unused). |
| 13 | SET | `ArrayList inList = null` | Declares ArrayList (unused). |
| 14 | SET | `Map<Object, Object> workMap = param.getMappingWorkArea()` | Retrieves work mapping area from param. (作業領域の取得 — Retrieve work area) |
| 15 | SET | `CAANMsg childTemplate = ekk0491a010outMsg[0]` | Gets the child output message from index 0, containing invoice contract details queried by EKK0491A010. |
| 16 | SET | `template.set(EKK0491C060CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY))` | Overrides FUNC_CODE from dataMap (may differ from the initial "1"). |

**Block 2** — SEIKY_KEI_NO (INVOICE CONTRACT NUMBER) (L13612–L13616)

> Transfers the invoice contract number from the source child message to the output template.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_NO)` | Checks if source invoice contract number is null. (請求契約番号) |
| 1.1 | SET (true branch) | `template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_NO)` | Sets null in output when source is null. |
| 1.2 | SET (false branch) | `template.set(EKK0491C060CBSMsg.SEIKY_KEI_NO, childTemplate.getString(...))` | Copies source value to output template. |

**Block 3** — MSKM_DTL_NO (BILLING DETAIL NUMBER) (L13617–L13621)

> Transfers the billing detail number (申明文細番号) to the output template.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.MSKM_DTL_NO)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.MSKM_DTL_NO)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.MSKM_DTL_NO, childTemplate.getString(...))` |

**Block 4** — SEIKY_KEI_KANA (INVOICE CONTRACT KANA NAME) (L13622–L13626)

> Transfers the invoice contract Kana name (請求契約カナ名) to the output template.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_KANA)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_KANA)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SEIKY_KEI_KANA, childTemplate.getString(...))` |

**Block 5** — INFO_DSP_CD (INFORMATION DISPLAY CODE) (L13627–L13631)

> Transfers the information display code (情報表示コード) to the output template.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.INFO_DSP_CD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.INFO_DSP_CD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.INFO_DSP_CD, childTemplate.getString(...))` |

**Block 6** — SEIKYUS_HAKKO_YH (INVOICE ISSUANCE NECESSITY) (L13632)

> Hardcoded setting of invoice issuance necessity flag.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.set(EKK0491C060CBSMsg.SEIKYUS_HAKKO_YH, "0")` | Sets invoice issuance necessity to "0" (not issuing). (請求書発行要不要 — Invoice issuance necessity) |

**Block 7** — SKS_SHS_KSH_AD_SAI_FLG (DELIVERY ADDRESS / CONTRACTOR ADDRESS MISMATCH FLAG) (L13633–L13637)

> Transfers the delivery address vs. contractor address mismatch flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SKS_SHS_KSH_AD_SAI_FLG)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG, childTemplate.getString(...))` |

**Block 8** — SKS_SHS_NM_CUST_NM_SAI_FLG (DELIVERY ADDRESS NAME / CUSTOMER NAME MISMATCH FLAG) (L13638–L13642)

> Transfers the delivery address name vs. customer name mismatch flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SKS_SHS_NM_CUST_NM_SAI_FLG)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG, childTemplate.getString(...))` |

**Block 9** — SHS_HOJIN_SBT_CD (DELIVERY LEGAL ENTITY TYPE CODE) (L13643–L13647)

> Transfers the delivery recipient legal entity type code (送付先法人格種類コード).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_HOJIN_SBT_CD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD, childTemplate.getString(...))` |

**Block 10** — SHS_HOJIN_ZENGO_SHITEI_CD (DELIVERY LEGAL ENTITY PRIORITY DESIGNATION CODE) (L13648–L13652)

> Transfers the delivery recipient legal entity priority designation code (送付先法人格前後指定コード).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_HOJIN_ZENGO_SHITEI_CD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD, childTemplate.getString(...))` |

**Block 11** — SHS_KANA (DELIVERY KANA NAME) (L13653–L13657)

> Transfers the delivery recipient Kana name (送付先カナ名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_KANA)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SHS_KANA)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SHS_KANA, childTemplate.getString(...))` |

**Block 12** — SOHUS_NM (DELIVERY RECIPIENT NAME) (L13658–L13662)

> Transfers the delivery recipient name (送付先名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_NM, childTemplate.getString(...))` |

**Block 13** — SOHUS_BKM (DELIVERY DEPARTMENT NAME) (L13663–L13667)

> Transfers the delivery recipient department name (送付先部課名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_BKM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_BKM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_BKM, childTemplate.getString(...))` |

**Block 14** — SOHUS_TNTSHA_NM (DELIVERY RESPONSIBLE PERSON NAME) (L13668–L13672)

> Transfers the delivery responsible person name (送付先担当者名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_TNTSHA_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_TNTSHA_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_TNTSHA_NM, childTemplate.getString(...))` |

**Block 15** — SOHUS_AD_CD (DELIVERY ADDRESS CODE) (L13673–L13677)

> Transfers the delivery recipient address code (送付先住所コード).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AD_CD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_AD_CD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_AD_CD, childTemplate.getString(...))` |

**Block 16** — SOHUS_PCD (DELIVERY POSTAL CODE) (L13678–L13682)

> Transfers the delivery recipient postal code (送付先郵便番号).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_PCD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_PCD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_PCD, childTemplate.getString(...))` |

**Block 17** — SOHUS_STATE_NM (DELIVERY PREFECTURE NAME) (L13683–L13687)

> Transfers the delivery recipient prefecture name (送付先都道府県名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_STATE_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_STATE_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_STATE_NM, childTemplate.getString(...))` |

**Block 18** — SOHUS_CITY_NM (DELIVERY CITY/TOWN/VILLAGE NAME) (L13688–L13692)

> Transfers the delivery recipient city/town/village name (送付先市区町村名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_CITY_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_CITY_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_CITY_NM, childTemplate.getString(...))` |

**Block 19** — SOHUS_OAZTSU_NM (DELIVERY OAZTSU NAME) (L13693–L13697)

> Transfers the delivery recipient district name (送付先大字通称名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_OAZTSU_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_OAZTSU_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_OAZTSU_NM, childTemplate.getString(...))` |

**Block 20** — SOHUS_AZCHO_NM (DELIVERY CHOME NAME) (L13698–L13702)

> Transfers the delivery recipient block/chome name (送付先字丁目名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AZCHO_NM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_AZCHO_NM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_AZCHO_NM, childTemplate.getString(...))` |

**Block 21** — SOHUS_ADRTTM (DELIVERY ADDRESS ADDITION — BUILDING NAME) (L13703–L13707)

> Transfers the delivery recipient address supplement: building name (送付先住所補記・建物名).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_ADRTTM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_ADRTTM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_ADRTTM, childTemplate.getString(...))` |

**Block 22** — SOHUS_ADRRM (DELIVERY ADDRESS ADDITION — ROOM NUMBER) (L13708–L13712)

> Transfers the delivery recipient address supplement: room number (送付先住所補記・部屋番号).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_ADRRM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_ADRRM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_ADRRM, childTemplate.getString(...))` |

**Block 23** — SOHUS_BNCHIGO (DELIVERY SUB-REGION CODE) (L13713–L13717)

> Transfers the delivery recipient sub-region code (送付先番地区号).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_BNCHIGO)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_BNCHIGO)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_BNCHIGO, childTemplate.getString(...))` |

**Block 24** — SOHUS_TELNO (DELIVERY PHONE NUMBER) (L13718–L13722)

> Transfers the delivery recipient phone number (送付先電話番号).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_TELNO)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_TELNO)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_TELNO, childTemplate.getString(...))` |

**Block 25** — SOHUS_FAX_NO (DELIVERY FAX NUMBER) (L13723–L13727)

> Transfers the delivery recipient fax number (送付先FAX番号).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_FAX_NO)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_FAX_NO)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_FAX_NO, childTemplate.getString(...))` |

**Block 26** — SOHUS_MLAD (DELIVERY EMAIL ADDRESS) (L13728–L13732)

> Transfers the delivery recipient email address (送付先メールアドレス).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_MLAD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_MLAD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_MLAD, childTemplate.getString(...))` |

**Block 27** — SEIKYUS_SOHUS_CHGE_YMD (INVOICE DELIVERY CHANGE DATE) (L13733–L13737)

> Transfers the invoice delivery address change year/month/day (請求書送付先変更年月日).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKYUS_SOHUS_CHGE_YMD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD, childTemplate.getString(...))` |

**Block 28** — SEIKY_WAY_APLY_ADJ_YMD (INVOICE METHOD APPLICATION ADJUSTMENT DATE) (L13738–L13742)

> Transfers the invoice method application adjustment date (請求方法適用調整年月日).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_WAY_APLY_ADJ_YMD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD, childTemplate.getString(...))` |

**Block 29** — RSV_TSTA_KIBO_YMD (RESERVATION APPLICATION START DESIRED DATE) (L13743–L13747)

> Transfers the reservation application start desired date (予約適用開始希望年月日).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.RSV_TSTA_KIBO_YMD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD, childTemplate.getString(...))` |

**Block 30** — RSV_APLY_YMD (RESERVATION APPLICATION DATE — VERSION 6.00.00 CHANGE) (L13749)

> **v6.00.00 change:** Previously copied from childTemplate via the if/else null-safety pattern (now commented out). Now reads directly from `dataMap.get("tekiyoYmd")`.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.set(EKK0491C060CBSMsg.RSV_APLY_YMD, (String)dataMap.get("tekiyoYmd"))` | Reads application date (適用年月日) from dataMap. Previously used childTemplate source with null-safety. (v6.00.00 変更開始 — Version 6.00.00 change start) |
| 2 | SET (commented out) | `// if (childTemplate.isNull(EKK0491A010CBSMsg1List.RSV_APLY_YMD))` | Previously copied from child template with null-safety check. |

**Block 31** — IDO_DIV (MOVEMENT DIVISION) (L13754–L13758)

> Transfers the movement/division indicator (異動区分) — indicates if this is a relocation or transfer.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.IDO_DIV)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.IDO_DIV)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.IDO_DIV, childTemplate.getString(...))` |

**Block 32** — FIRST_SEIKY_YM (FIRST INVOICE MONTH) (L13759–L13763)

> Transfers the first invoice year/month (初回請求年月).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.FIRST_SEIKY_YM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.FIRST_SEIKY_YM)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.FIRST_SEIKY_YM, childTemplate.getString(...))` |

**Block 33** — FIRST_PAY_MSKMSHO_SOHU_YH (FIRST PAYMENT INVOICE DELIVERY NECESSITY) (L13764–L13768)

> Transfers the first payment billing document delivery necessity flag (初回払申込書送付要不要).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.FIRST_PAY_MSKMSHO_SOHU_YH)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH, childTemplate.getString(...))` |

**Block 34** — FIRST_PAY_MSKMSHO_SOHU_YMD (FIRST PAYMENT INVOICE DELIVERY DATE) (L13769–L13773)

> Transfers the first payment billing document delivery date (初回払申込書送付年月日).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.FIRST_PAY_MSKMSHO_SOHU_YMD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YMD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YMD, childTemplate.getString(...))` |

**Block 35** — FIRST_PAY_MSKMSHO_RCP_YMD (FIRST PAYMENT INVOICE RECEIPT DATE) (L13774–L13778)

> Transfers the first payment billing document receipt date (初回払申込書受領年月日).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.FIRST_PAY_MSKMSHO_RCP_YMD)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD, childTemplate.getString(...))` |

**Block 36** — UPD_DTM_BF (UPDATE TIMESTAMP BEFORE — from LAST_UPD_DTM) (L13779–L13783)

> Transfers the last update datetime from source as the "before update" timestamp. The source field is `LAST_UPD_DTM` but maps to `UPD_DTM_BF` in the output.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.LAST_UPD_DTM)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.UPD_DTM_BF)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.UPD_DTM_BF, childTemplate.getString(...))` |

**Block 37** — SOHUS_AD_MAN_INPUT_FLG (DELIVERY ADDRESS MANUAL INPUT FLAG) (L13784–L13788)

> Transfers the delivery address manual input flag (送付先住所手入力フラグ).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AD_MAN_INPUT_FLG)` |
| 1.1 | SET (true) | `template.setNull(EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG)` |
| 1.2 | SET (false) | `template.set(EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG, childTemplate.getString(...))` |

**Block 38** — SOHUS_AD_CHK_LV (DELIVERY ADDRESS CHECK LEVEL) (L13791)

> Hardcoded null assignment — the address check level is cleared/reset.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.setNull(EKK0491C060CBSMsg.SOHUS_AD_CHK_LV)` | Sets address check level to null. (送付先住所チェックレベル — Delivery address check level) |

**Block 39** — FINALIZATION (L13793–L13797)

> Assembles the templates array and returns the parameter map.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `CAANMsg[] templates = new CAANMsg[1]` | Creates a single-element template array. |
| 2 | SET | `templates[0] = template` | Places the constructed template at index 0. |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` | Stores template array in paramMap under the template list key. |
| 4 | RETURN | `return paramMap` | Returns the fully prepared parameter map to the caller (`execEKK0491C060`). |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `seiky_kei_no` | Field | Invoice contract number — unique identifier for a billing contract line item |
| `mskm_dtl_no` | Field | Billing detail number (申明文細番号) — internal sequence/detail number for billing documentation |
| `seiky_kei_kana` | Field | Invoice contract Kana name (請求契約カナ名) — phonetic reading of the contract holder's name in Kana |
| `info_dsp_cd` | Field | Information display code (情報表示コード) — code controlling display of information on screens/reports |
| `seikyus_hakko_yh` | Field | Invoice issuance necessity (請求書発行要不要) — flag indicating whether an invoice should be generated ("0" = not issuing) |
| `sks_shs_ksh_ad_sai_flg` | Field | Delivery address vs. contractor address mismatch flag (請求書送付先_契約者住所差異フラグ) — indicates if delivery address differs from contract address |
| `sks_shs_nm_cust_nm_sai_flg` | Field | Delivery address name vs. customer name mismatch flag (請求書送付先名_お客様名差異フラグ) — indicates if delivery recipient name differs from customer name |
| `shs_hojin_sbt_cd` | Field | Delivery recipient legal entity type code (送付先法人格種類コード) — classifies the legal entity type of the delivery recipient |
| `shs_hojin_zengo_shitei_cd` | Field | Delivery recipient legal entity priority designation code (送付先法人格前後指定コード) — specifies priority ordering for legal entity display |
| `shs_kana` | Field | Delivery recipient Kana name (送付先カナ名) — phonetic reading of the delivery recipient's name |
| `sohus_nm` | Field | Delivery recipient name (送付先名) — name of the entity/individual receiving the invoice |
| `sohus_bkm` | Field | Delivery recipient department name (送付先部課名) — department name for the delivery recipient |
| `sohus_tntsha_nm` | Field | Delivery recipient responsible person name (送付先担当者名) — name of the specific contact person |
| `sohus_ad_cd` | Field | Delivery recipient address code (送付先住所コード) — address lookup code |
| `sohus_pcd` | Field | Delivery recipient postal code (送付先郵便番号) — Japanese postal code for delivery |
| `sohus_state_nm` | Field | Delivery recipient prefecture name (送付先都道府県名) — prefecture/region name |
| `sohus_city_nm` | Field | Delivery recipient city/town/village name (送付先市区町村名) — municipal-level address component |
| `sohus_oaztsu_nm` | Field | Delivery recipient district/aza name (送付先大字通称名) — large district name in Japanese addresses |
| `sohus_azcho_nm` | Field | Delivery recipient block/chome name (送付先字丁目名) — chome/block-level address component |
| `sohus_adrttm` | Field | Delivery recipient address supplement — building name (送付先住所補記・建物名) |
| `sohus_adrrm` | Field | Delivery recipient address supplement — room number (送付先住所補記・部屋番号) |
| `sohus_bnchigo` | Field | Delivery recipient sub-region code (送付先番地区号) — sub-regional address code |
| `sohus_telno` | Field | Delivery recipient phone number (送付先電話番号) |
| `sohus_fax_no` | Field | Delivery recipient fax number (送付先FAX番号) |
| `sohus_mlad` | Field | Delivery recipient email address (送付先メールアドレス) |
| `seikyus_sohus_chge_ymd` | Field | Invoice delivery address change date (請求書送付先変更年月日) |
| `seiky_way_aply_adj_ymd` | Field | Invoice method application adjustment date (請求方法適用調整年月日) |
| `rsv_tsta_kibo_ymd` | Field | Reservation application start desired date (予約適用開始希望年月日) — customer's desired start date |
| `rsv_aply_ymd` | Field | Reservation application date (予約適用年月日) — effective date for the reservation/application |
| `ido_div` | Field | Movement/division indicator (異動区分) — indicates type of change (relocation, transfer, etc.) |
| `first_seiky_ym` | Field | First invoice year/month (初回請求年月) — month of the first invoice generation |
| `first_pay_mskmsho_sohu_yh` | Field | First payment billing document delivery necessity (初回払申込書送付要不要) |
| `first_pay_mskmsho_sohu_ymd` | Field | First payment billing document delivery date (初回払申込書送付年月日) |
| `first_pay_mskmsho_rcp_ymd` | Field | First payment billing document receipt date (初回払申込書受領年月日) |
| `upd_dtm_bf` | Field | Update datetime before (更新年月日時分秒(更新前)) — timestamp before the current update |
| `sohus_ad_man_input_flg` | Field | Delivery address manual input flag (送付先住所手入力フラグ) — indicates if the address was manually entered |
| `sohus_ad_chk_lv` | Field | Delivery address check level (送付先住所チェックレベル) — validation level for the delivery address |
| EKK0491C060 | CBS Code | Invoice Contract Content Modification — CBS service for modifying invoice contract details |
| EKK0491A010 | SC Code | Invoice Contract Inquiry — query service component that provides source data |
| EKK0491A010CBSMsg1List | Message Schema | Invoice contract agreement detail schema — the list-level message containing individual contract line items |
| EKK0491C060CBSMsg | Message Schema | Invoice contract modification CBS message schema — the message schema for the modification operation |
| CAANMsg | Framework Class | Fujitsu's messaging framework class for CBS message handling (schema-based message container) |
| IRequestParameterReadWrite | Framework Interface | Request parameter read/write interface — contract for passing structured data between layers |
| TEMPLATE_ID_EKK0491C060 | Constant | Template identifier `"EKK0491C060"` — identifies this message's CBS schema |
| FUNC_CODE | Field | Function code (機能コード) — identifies the specific function being executed |
| dataMap | Framework Map | Process-scoped data map shared across the business logic chain |
| workMap | Framework Map | Work mapping area (作業領域) — temporary data storage within the request parameter |
| SCControlMapKeys | Constant Class | Control map key constants — defines keys for OPERATOR_ID, OPE_DATE, OPE_TIME, FUNC_CODE |
| JCMConstants | Constant Class | Java Common Module constants — defines keys for TEMPLATE_LIST_KEY, OPERATOR_ID_KEY, etc. |
| K-Opticom | Business entity | Japanese telecommunications provider (K-Opticom) — the domain being modeled |
| CBS | Acronym | Common Business Service — shared service layer for business operations |
| SC | Acronym | Service Component — the data access/query layer in the application architecture |
| CC | Acronym | Common Component — shared business logic component used across multiple screens/flows |
| YM | Abbreviation | Year/Month (年月) — date format representing year and month only |
| YMD | Abbreviation | Year/Month/Day (年月日) — date format representing full date |
