# Business Logic — JKKShkaFinJiKikiStaAddCC.callKktkIfChg() [185 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKShkaFinJiKikiStaAddCC` |
| Layer | CC / Common Component (Custom business logic class within the EJB module) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKShkaFinJiKikiStaAddCC.callKktkIfChg()

This method performs the **equipment-provided service contract information update** (機器提供サービス契約情報変更の処理を行う) — a core business operation in the Fujitsu telecom order fulfillment system. It processes updates to equipment-provided (KKT: 機器提供) service contracts after equipment installation or modification, ensuring that the contract record reflects all current service parameters, subscriber details, and delivery information. The method implements a **status-based routing/dispatch pattern**: it reads the current service contract status from the equipment message and branches to one of two CBS (Component-Based Service) update paths depending on whether the contract is in an active "contract change in progress" state (status 110) or any other state. For the in-progress change path, it invokes `EKK0341C231` which updates with the source data extracted from the equipment message (kikiMsg). For the non-change state, it invokes `EKK0341C230` which performs a general service contract info update using the explicitly provided service key number (kktkSvcKeiNo) as the primary identifier. The method also resolves the equipment billing creation date (kikiSoryoSakuseiYmd) based on whether a temporary gold registration scenario (icjknFlg) is active, switching between the base date and the message-derived date. This method is a **shared utility** called by the same class's `addShkaFinJiKiStaAdd()` and `callIcjknAdd()` methods, serving as the central update hub for equipment service contract information across multiple entry flows.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["callKktkIfChg params"])
    START --> S1["SET dtm = updDtm"]
    S1 --> S2["SET kikiSoryoSakuseiYmd = empty"]
    S2 --> R1["READ stat from kikiMsg KKTK_SVC_KEI_STAT"]
    R1 --> ICJCN{"icjknFlg true?"}
    ICJCN -- true --> S3["SET kikiSoryoSakuseiYmd = baseYMD operation date"]
    ICJCN -- false --> S4["SET kikiSoryoSakuseiYmd from kikiMsg KIKI_SORYO_SAKSEI_YMD"]
    S3 --> STAT_CHECK{"stat equals KKTK_STAT_110?"}
    S4 --> STAT_CHECK
    STAT_CHECK -- true status 110 Contract Change --> C231["SET ekk0341c231IN 59 fields"]
    STAT_CHECK -- false not 110 --> C230["SET ekk0341c230InMsg 69 fields"]
    C231 --> EXEC_C231["CALL callSC EKK0341C231 CBS"]
    C230 --> EXEC_C230["CALL callSC EKK0341C230 CBS"]
    EXEC_C231 --> R_C231["READ dtm from ekk0341c231outMsg UPD_DTM"]
    EXEC_C230 --> R_C230["READ dtm from ekk0341c230outMsg UPD_DTM"]
    R_C231 --> RETURN1["RETURN dtm"]
    R_C230 --> RETURN2["RETURN dtm"]
```

**Branch explanations:**

1. **icjknFlg Branch (Temporary Gold Registration Flag)**:
   - `true`: Sets `kikiSoryoSakuseiYmd` to the `baseYMD` parameter (operation date) — used when temporary gold registration is involved
   - `false`: Reads `kikiSoryoSakuseiYmd` from `kikiMsg.getString(KIKI_SORYO_SAKSEI_YMD)` — the equipment billing creation date from the message

2. **stat Branch (Service Contract Status Check)**:
   - `[KKTK_STAT_110 = "110"]` (true, contract change in progress): Builds the `EKK0341C231` input map with 59 fields extracted from `kikiMsg` plus the resolved `kikiSoryoSakuseiYmd`, then calls `callSC` to invoke the contract change info update CBS. The service key number is extracted from `kikiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)`.
   - `false` (any other status): Builds the `EKK0341C230` input map with 69 fields (a superset including forwarding address and item-specific data), using the directly provided `kktkSvcKeiNo` parameter as the service key number, then calls `callSC` to invoke the general info update CBS.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for maintaining the transaction context and database connection during CBS invocations. Provides the persistence layer session. |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Service Component invocation gateway. Used by `callSC` to dispatch CBS requests to the downstream service layer. |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter read-write interface. Carries request-scoped data and parameters through the call chain. |
| 4 | `fixedText` | `String` | Localization text key or fixed message identifier used for error messages and log text formatting in CBS invocations. |
| 5 | `funcCd` | `String` | Function code identifying the business function context. Passed to CBS as `FUC_CODE_1 = "1"` to indicate the update function type. |
| 6 | `kikiMsg` | `CAANMsg` | Equipment-provided service contract message object containing all equipment contract data fields — service status, subscriber info, address, model codes, delivery details, and billing information. This is the primary data source from which fields are extracted. |
| 7 | `kktkSvcKeiNo` | `String` | Equipment-provided service detail number (equipment service line item number). Used as the primary key for updates when status is NOT 110. When status IS 110, the key is instead read from kikiMsg. |
| 8 | `updDtm` | `String` | Update datetime — the current timestamp before CBS invocation. Used as the initial value of the return `dtm` and as `UPD_DTM_BF` (pre-update datetime) passed to the CBS for audit trail. |
| 9 | `baseYMD` | `String` | Base year-month-day (base date). Used as `kikiSoryoSakuseiYmd` (equipment billing creation date) when `icjknFlg` is true (temporary gold registration scenario). |
| 10 | `icjknFlg` | `boolean` | Temporary gold registration flag (一時金フラグ). When true, indicates a temporary fee registration scenario where the operation date (`baseYMD`) should be used as the billing creation date. When false, the billing creation date is read from the equipment message. |

**External state read:**
- None (this method is stateless; all input data comes through parameters)

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSbatFUCaseFileRnkData.getString` | JBSbatFUCaseFileRnkData | - | Calls `getString` in `JBSbatFUCaseFileRnkData` |
| R | `JBSbatFUMoveNaviData.getString` | JBSbatFUMoveNaviData | - | Calls `getString` in `JBSbatFUMoveNaviData` |
| R | `JBSbatZMAdDataSet.getString` | JBSbatZMAdDataSet | - | Calls `getString` in `JBSbatZMAdDataSet` |
| R | `JKKShkaFinJiKikiStaAddCC.callSC` | JKKShkaFinJiKikiStaAddCC | - | Calls `callSC` in `JKKShkaFinJiKikiStaAddCC` |
| R | `JESC0101B010TPMA.getString` | JESC0101B010TPMA | - | Calls `getString` in `JESC0101B010TPMA` |
| R | `JESC0101B020TPMA.getString` | JESC0101B020TPMA | - | Calls `getString` in `JESC0101B020TPMA` |

### Full CRUD analysis for this method:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callSC (EKK0341C231)` | EKK0341C231 | Equipment Service Contract (contract change branch) | **Conditional R/Update**: Invoked when service contract status is "110" (contract change in progress). Reads 59 fields from kikiMsg (equipment message) including subscriber info, address, device model, delivery settings, and billing dates. Sends update to contract change information update CBS with SHKA_FIN_JI_SYRZM_FLG set to "1" (calculated/signed). Returns updated datetime. |
| R | `callSC (EKK0341C230)` | EKK0341C230 | Equipment Service Contract (general info update) | **Conditional R/Update**: Invoked when service contract status is NOT "110". Reads 69 fields from kikiMsg (a superset including forwarding/receiving address and item-specific data). Uses provided kktkSvcKeiNo as primary key. Sends update to general service contract information CBS. Returns updated datetime. |

**Classification rationale:**
- Both branches use `callSC` to invoke a CBS (Component-Based Service). These are service component calls that map to database update operations on the equipment-provided service contract table.
- `EKK0341C231` is the "contract change info update" CBS — used when a contract change is in progress. It extracts the service key number from the message rather than accepting it as a parameter.
- `EKK0341C230` is the "general info update" CBS — used for standard service contract updates. It accepts the service key number directly from the `kktkSvcKeiNo` parameter.
- Both CBS messages include the pre-update datetime (`UPD_DTM_BF`) for audit purposes and set `SHKA_FIN_JI_SYRZM_FLG = SYRZM_FLG_1 = "1"` indicating calculation/signing is enabled.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKShkaFinJiKikiStaAddCC.addShkaFinJiKiStaAdd | `addShkaFinJiKiStaAdd` -> `callKktkIfChg` (L1796: false branch) / `callKktkIfChg` (L1808: false branch) | `EKK0341C231 [R/U] Equipment_Service_Contract` (status=110) / `EKK0341C230 [R/U] Equipment_Service_Contract` (status!=110) |
| 2 | CBS:JKKShkaFinJiKikiStaAddCC.callIcjknAdd | `callIcjknAdd` -> `callKktkIfChg` (L4752: icjknFlg=true) | `EKK0341C231 [R/U] Equipment_Service_Contract` (status=110) / `EKK0341C230 [R/U] Equipment_Service_Contract` (status!=110) |

**Notes:**
- Caller #1 (`addShkaFinJiKiStaAdd`): Calls `callKktkIfChg` with `icjknFlg=false` in two locations (lines 1796 and 1808), within the normal service contract addition flow where equipment is provided but temporary gold registration is not involved. The method is called in the non-`isIcjknAddChk` branch after checking `isstbchokuso`.
- Caller #2 (`callIcjknAdd`): Calls `callKktkIfChg` with `icjknFlg=true` (line 4752), within the temporary gold registration flow where a temporary fee is being registered. This causes `baseYMD` to be used as the equipment billing creation date.
- No screen/batch entry points found within 8 hops. Both callers are CBS methods within the same component class.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize local variables (L5481)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dtm = updDtm` | Initialize return datetime with input update datetime |
| 2 | SET | `kikiSoryoSakuseiYmd = ""` | Initialize equipment billing creation date to empty |

> Briefly initializes the working variables. `dtm` serves as the return value accumulator; `kikiSoryoSakuseiYmd` will hold the resolved billing creation date based on the temporary gold flag.

**Block 2** — [EXEC] Read service contract status from message (L5487)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `stat = kikiMsg.getString(KKTK_SVC_KEI_STAT)` | Read equipment service contract status code from the message — this determines which CBS branch to use |

**Block 3** — [IF/ELSE] Temporary Gold Registration Flag Resolution (L5489–L5494) `[icjknFlg]`

> Determines the source of the equipment billing creation date based on whether temporary gold registration is active.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSoryoSakuseiYmd = baseYMD` [TRUE: `icjknFlg=true` — temporary gold registration uses the operation date] |

**Block 3.1** — [ELSE] `icjknFlg == false` (L5492–L5494)

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSoryoSakuseiYmd = kikiMsg.getString(KIKI_SORYO_SAKSEI_YMD)` [FALSE: read from equipment message — use the equipment-provided billing creation date] |

**Block 4** — [IF/ELSE] Service Contract Status Branch (L5496–L5648) `[KKTK_STAT_110 = "110"]`

> The core branching logic: routes to either the contract change update (status 110) or general info update path.

**Block 4.1** — [IF] Status = 110 (Contract Change In Progress) (L5496–L5599) `[KKTK_STAT_110 = "110"]`

> When the equipment service contract status is "110" (contract change in progress), build the EKK0341C231 input map with fields extracted from kikiMsg and invoke the contract change info update CBS. The service key number is read from the message rather than accepted as a parameter. This is a 59-field update payload.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0341c231IN = new Object[59][2]` | Build input map with 59 field entries |
| 2 | SET | `{TEMPLATEID, TEMPLATE_ID_EKK0341C231}` [-> `TEMPLATE_ID_EKK0341C231 = "EKK0341C231"`] | CBS template ID |
| 3 | SET | `{FUNC_CODE, FUC_CODE_1}` [-> `FUC_CODE_1 = "1"`] | Function code for update |
| 4 | SET | `{KKTK_SVC_KEI_NO, kikiMsg.getString(KKTK_SVC_KEI_NO)}` | Service key number from message |
| 5 | SET | `{GENE_ADD_DTM, kikiMsg.getString(GENE_ADD_DTM)}` | Generation/addition datetime |
| 6 | SET | `{KKTK_SBT_CD, kikiMsg.getString(KKTK_SBT_CD)}` | Equipment service type code |
| 7 | SET | `{HAMBAI_SBT_CD, kikiMsg.getString(HAMBAI_SBT_CD)}` | Sales service type code |
| 8 | SET | `{TAKNKIKI_MODEL_CD, kikiMsg.getString(TAKNKIKI_MODEL_CD)}` | Rented equipment model code |
| 9 | SET | `{KIKI_SEIZO_NO, kikiMsg.getString(KIKI_SEIZO_NO)}` | Equipment serial number |
| 10 | SET | `{HDD_CAPA_CD, kikiMsg.getString(HDD_CAPA_CD)}` | HDD capacity code |
| 11 | SET | `{TSUSHIN_KIKI_SET_CD, kikiMsg.getString(TSUSHIN_KIKI_SET_CD)}` | Communication equipment set code |
| 12 | SET | `{LINK_STB_FLG, kikiMsg.getString(LINK_STB_FLG)}` | Link STB flag |
| 13 | SET | `{KIKI_HKAT_SHITEI_SOKO_CD, kikiMsg.getString(...)}` | Equipment contract designated location code |
| 14 | SET | `{KIKI_HKAT_SHITEI_SKDN_CD, kikiMsg.getString(...)}` | Equipment contract designated SKDN code |
| 15 | SET | `{KIKI_SORYO_UM, kikiMsg.getString(KIKI_SORYO_UM)}` | Equipment billing unit price |
| 16 | SET | `{KIKI_SOHUS_NM, kikiMsg.getString(KIKI_SOHUS_NM)}` | Equipment subscriber name |
| 17 | SET | `{KIKI_SOHUS_KANA, kikiMsg.getString(KIKI_SOHUS_KANA)}` | Equipment subscriber name (kana) |
| 18 | SET | `{KIKI_SOHUS_AD_CD, kikiMsg.getString(KIKI_SOHUS_AD_CD)}` | Equipment subscriber address code |
| 19 | SET | `{KIKI_SOHUS_PCD, kikiMsg.getString(KIKI_SOHUS_PCD)}` | Equipment subscriber postal code |
| 20 | SET | `{KIKI_SOHUS_STATE_NM, kikiMsg.getString(KIKI_SOHUS_STATE_NM)}` | Equipment subscriber state |
| 21 | SET | `{KIKI_SOHUS_CITY_NM, kikiMsg.getString(KIKI_SOHUS_CITY_NM)}` | Equipment subscriber city |
| 22 | SET | `{KIKI_SOHUS_OAZTSU_NM, kikiMsg.getString(KIKI_SOHUS_OAZTSU_NM)}` | Equipment subscriber oaztsu (district) |
| 23 | SET | `{KIKI_SOHUS_AZCHO_NM, kikiMsg.getString(KIKI_SOHUS_AZCHO_NM)}` | Equipment subscriber azcho |
| 24 | SET | `{KIKI_SOHUS_BNCHIGO, kikiMsg.getString(KIKI_SOHUS_BNCHIGO)}` | Equipment subscriber branch code |
| 25 | SET | `{KIKI_SOHUS_ADRTTM, kikiMsg.getString(KIKI_SOHUS_ADRTTM)}` | Equipment subscriber address town |
| 26 | SET | `{KIKI_SOHUS_ADRRM, kikiMsg.getString(KIKI_SOHUS_ADRRM)}` | Equipment subscriber address room |
| 27 | SET | `{KIKI_SOHUS_TELNO, kikiMsg.getString(KIKI_SOHUS_TELNO)}` | Equipment subscriber telephone number |
| 28 | SET | `{KIKI_SOHUS_KSH_AD_SAI_FLG, kikiMsg.getString(...)}` | Equipment subscriber address re-check flag |
| 29 | SET | `{KIKI_SHS_KBT_SHITEI_FLG, kikiMsg.getString(...)}` | Equipment service KBT designation flag |
| 30 | SET | `{AD_MI_FIX_FLG, kikiMsg.getString(AD_MI_FIX_FLG)}` | Address modification fix flag |
| 31 | SET | `{HAISO_DIV, kikiMsg.getString(HAISO_DIV)}` | Delivery classification |
| 32 | SET | `{FTRIAL_KANYU_YMD, kikiMsg.getString(FTRIAL_KANYU_YMD)}` | Free trial insertion date |
| 33 | SET | `{FTRIAL_PRD_ENDYMD, kikiMsg.getString(FTRIAL_PRD_ENDYMD)}` | Free trial period end date |
| 34 | SET | `{HONKANYU_YMD, kikiMsg.getString(HONKANYU_YMD)}` | Full installation date |
| 35 | SET | `{HONKANYU_IKO_KIGEN_YMD, kikiMsg.getString(HONKANYU_IKO_KIGEN_YMD)}` | Full installation deadline date |
| 36 | SET | `{HOSHO_CD, kikiMsg.getString(HOSHO_CD)}` | Guarantee code |
| 37 | SET | `{PNLTY_HASSEI_CD, kikiMsg.getString(PNLTY_HASSEI_CD)}` | Penalty issuance code |
| 38 | SET | `{IDO_DIV, kikiMsg.getString(IDO_DIV)}` | Move classification |
| 39 | SET | `{TAKNKIKI_IDO_CD, kikiMsg.getString(TAKNKIKI_IDO_CD)}` | Rented equipment move code |
| 40 | SET | `{CAS_CARD_USE_KYODAK_YMD, kikiMsg.getString(...)}` | CAS card use request date |
| 41 | SET | `{KIKI_HUKA_INFO_CD, kikiMsg.getString(KIKI_HUKA_INFO_CD)}` | Equipment additional info code |
| 42 | SET | `{HAISO_WAY_CD, kikiMsg.getString(HAISO_WAY_CD)}` | Delivery method code |
| 43 | SET | `{HAISO_REQ_SHITEI_YMD, kikiMsg.getString(...)}` | Delivery requested designated date |
| 44 | SET | `{UPD_DTM_BF, updDtm}` | Pre-update datetime (audit) |
| 45 | SET | `{KIKI_SHS_AD_MAN_INPUT_FLG, kikiMsg.getString(...)}` | Equipment service address manual input flag |
| 46 | SET | `{KIKI_SOHUS_AD_CHK_LV, ""}` | Hardware address check level — empty string for status 110 |
| 47 | SET | `{KIKI_STI_JI_KRIPLACE_SKCD, kikiMsg.getString(...)}` | Equipment installation location SKCD |
| 48 | SET | `{KIKI_STI_JI_KOCOMP_CD, kikiMsg.getString(...)}` | Equipment installation KO compact code |
| 49 | SET | `{KIKI_STI_JI_KOCOMP_SLF_CD, kikiMsg.getString(...)}` | Equipment installation KO compact self code |
| 50 | SET | `{KIKI_STI_JI_YTKSKOF_CD, kikiMsg.getString(...)}` | Equipment installation YTKSKOF code |
| 51 | SET | `{KIKI_STI_JI_YTKSKOF_SLF_CD, kikiMsg.getString(...)}` | Equipment installation YTKSKOF self code |
| 52 | SET | `{SHKA_FIN_JI_SYRZM_FLG, SYRZM_FLG_1}` [-> `SYRZM_FLG_1 = "1"`] | Calculation/signing flag set to 1 |
| 53 | SET | `{EO_TV_KKST_SNN_STAT_CD, kikiMsg.getString(...)}` | EO TV KKST subscription status code |
| 54 | SET | `{KKST_SNN_YMD, kikiMsg.getString(KKST_SNN_YMD)}` | KKST subscription date |
| 55 | SET | `{KIKI_SORYO_SAKSEI_YMD, kikiSoryoSakuseiYmd}` | Equipment billing creation date (resolved from Block 3) |
| 56 | SET | `{SVC_STA_JI_HIS_JOKYO_SKCD, kikiMsg.getString(...)}` | Service status recording situation SKCD |
| 57 | SET | `/* v7.00.53 修正開始/修正終了 */` | Version comment: v7.00.53 fix (KIKI_SORYO_SAKSEI_YMD uncommented) |
| 58 | EXEC | `ekk0341c231outMsg = callSC(handle, scCall, param, fixedText, ekk0341c231IN)` | Invoke CBS EKK0341C231 for contract change update |
| 59 | SET | `dtm = ekk0341c231outMsg.getString(UPD_DTM)` | Read updated datetime from response |

> The v7.00.53 fix comment indicates a change where `KIKI_SORYO_SAKSEI_YMD` was uncommented to be passed from the resolved `kikiSoryoSakuseiYmd` variable instead of being commented out.

**Block 4.2** — [ELSE] Status != 110 (General Info Update) (L5602–L5646)

> When the equipment service contract status is NOT "110" (not in contract change in progress), build the EKK0341C230 input map with a larger set of 69 fields (including forwarding/receiving address data) and invoke the general service contract info update CBS. The service key number is taken directly from the `kktkSvcKeiNo` parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0341c230InMsg = new Object[69][2]` | Build input map with 69 field entries |
| 2 | SET | `{TEMPLATEID, TEMPLATE_ID_EKK0341C230}` [-> `TEMPLATE_ID_EKK0341C230 = "EKK0341C230"`] | CBS template ID |
| 3 | SET | `{FUNC_CODE, FUC_CODE_1}` [-> `FUC_CODE_1 = "1"`] | Function code for update |
| 4 | SET | `{KKTK_SVC_KEI_NO, kktkSvcKeiNo}` | Service key number from parameter (direct — not from message) |
| 5 | SET | `{KKTK_SBT_CD, kikiMsg.getString(...)}` | Equipment service type code |
| 6 | SET | `{HAMBAI_SBT_CD, kikiMsg.getString(...)}` | Sales service type code |
| 7 | SET | `{TAKNKIKI_MODEL_CD, kikiMsg.getString(...)}` | Rented equipment model code |
| 8 | SET | `{KIKI_SEIZO_NO, kikiMsg.getString(...)}` | Equipment serial number |
| 9 | SET | `{HDD_CAPA_CD, kikiMsg.getString(...)}` | HDD capacity code |
| 10 | SET | `{TSUSHIN_KIKI_SET_CD, kikiMsg.getString(...)}` | Communication equipment set code |
| 11 | SET | `{LINK_STB_FLG, kikiMsg.getString(...)}` | Link STB flag |
| 12-13 | SET | `{KIKI_HKAT_SHITEI_SOKO_CD, ...}`, `{KIKI_HKAT_SHITEI_SKDN_CD, ...}` | Equipment contract location/SKDN codes |
| 14 | SET | `{KIKI_SORYO_UM, ...}` | Equipment billing unit price |
| 15-27 | SET | `{KIKI_SOHUS_NM ... KIKI_SHS_KBT_SHITEI_FLG}` | Subscriber name, address (7 fields), telephone, flags — same as Block 4.1 |
| 28 | SET | `{KIKI_STC_SAKI_NM, kikiMsg.getString(KIKI_STC_SAKI_NM)}` | Forwarding/receiving name (new in C230) |
| 29 | SET | `{KIKI_STC_SAKI_KANA, kikiMsg.getString(KIKI_STC_SAKI_KANA)}` | Forwarding/receiving name (kana) |
| 30 | SET | `{KIKI_STC_SAKI_AD_CD, kikiMsg.getString(...)}` | Forwarding/receiving address code |
| 31 | SET | `{KIKI_STC_SAKI_PCD, kikiMsg.getString(...)}` | Forwarding/receiving postal code |
| 32 | SET | `{KIKI_STC_SAKI_STATE_NM, ...}` | Forwarding/receiving state |
| 33 | SET | `{KIKI_STC_SAKI_CITY_NM, ...}` | Forwarding/receiving city |
| 34 | SET | `{KIKI_STC_SAKI_OAZTSU_NM, ...}` | Forwarding/receiving district |
| 35 | SET | `{KIKI_STC_SAKI_AZCHO_NM, ...}` | Forwarding/receiving azcho |
| 36 | SET | `{KIKI_STC_SAKI_BNCHIGO, ...}` | Forwarding/receiving branch code |
| 37 | SET | `{KIKI_STC_SAKI_ADRTTM, ...}` | Forwarding/receiving address town |
| 38 | SET | `{KIKI_STC_SAKI_ADRRM, ...}` | Forwarding/receiving address room |
| 39 | SET | `{KIKI_STC_SK_KSH_AD_SAI_FLG, kikiMsg.getString(...)}` | Forwarding/receiving re-check flag |
| 40 | SET | `{KIKI_STC_SK_TELNO, kikiMsg.getString(...)}` | Forwarding/receiving telephone |
| 41 | SET | `{KIKI_STS_KKK_SEIRI_CHU_FLG, kikiMsg.getString(...)}` | Equipment STS processing middle flag |
| 42-52 | SET | `{AD_MI_FIX_FLG ... KIKI_ITENS_MV_JSSIS_SKCD}` | Same subscriber/address fields as C231 plus item-specific move code |
| 53 | SET | `{UPD_DTM_BF, updDtm}` | Pre-update datetime |
| 54 | SET | `{KIKI_SHS_AD_MAN_INPUT_FLG, ...}` | Equipment service address manual input flag |
| 55 | SET | `{KAISHU_KIKI_UM, kikiMsg.getString(KAISHU_KIKI_UM)}` | Refunded equipment unit price (new in C230) |
| 56 | SET | `{SVC_STA_JI_HIS_JOKYO_SKCD, ...}` | Service status recording situation SKCD |
| 57 | SET | `{KIKI_SOHUS_AD_CHK_LV, "0"}` | Subscriber address check level — "0" for non-110 status |
| 58 | SET | `{KIKI_STC_AD_CHK_LV, "0"}` | Forwarding/receiving address check level — "0" (new in C230) |
| 59-63 | SET | `{KIKI_STI_JI_... SHKA_FIN_JI_SYRZM_FLG, KIKI_SORYO_SAKSEI_YMD, EO_TV_KKST_SNN_STAT_CD, KKST_SNN_YMD, SVC_STA_KISAN_YMD}` | Installation location codes, calculation flag = "1", billing date (from Block 3), EO TV status, service start date |
| 64 | EXEC | `ekk0341c230outMsg = callSC(handle, scCall, param, fixedText, ekk0341c230InMsg)` | Invoke CBS EKK0341C230 for general info update |
| 65 | SET | `dtm = ekk0341c230outMsg.getString(UPD_DTM)` | Read updated datetime from response |

**Block 5** — [RETURN] Return updated datetime (L5648)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return dtm` | Return the updated datetime — either the original `updDtm` if no CBS was called (not possible — one branch always executes), or the datetime returned by the invoked CBS |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `KKTK_SVC_KEI_STAT` | Field | Equipment-provided service contract status — status code of the service contract line item. Value "110" means "Contract Change In Progress" |
| `KKTK_SVC_KEI_NO` | Field | Equipment-provided service detail number — the service line item identifier (primary key for service contracts) |
| `KIKI_SORYO_SAKSEI_YMD` | Field | Equipment billing creation year-month-day — the date when the equipment billing plan was created |
| `SHKA_FIN_JI_SYRZM_FLG` | Field | Calculation/signing flag — when set to "1" (SYRZM_FLG_1), indicates that fee calculation/signing processing is active |
| `KIKI_SOHUS_NM` | Field | Equipment subscriber name — the name of the equipment service subscriber |
| `KIKI_SOHUS_AD_CD` | Field | Equipment subscriber address code — the address code for the subscriber |
| `TAKNKIKI_MODEL_CD` | Field | Rented equipment model code — identifies the model of rented equipment |
| `KIKI_SEIZO_NO` | Field | Equipment serial number — unique serial number of the equipment |
| `HAISO_DIV` | Field | Delivery classification — indicates the type of delivery (e.g., normal, special) |
| `HAISO_WAY_CD` | Field | Delivery method code — specifies the delivery method |
| `FTRIAL_KANYU_YMD` | Field | Free trial insertion date — date when free trial service was inserted |
| `HONKANYU_YMD` | Field | Full installation date — date when the service was fully installed |
| `IDO_DIV` | Field | Move classification — indicates the type of service move/change |
| `KIKI_HUKA_INFO_CD` | Field | Equipment additional information code — codes for supplementary equipment information |
| `KKTK_STAT_110` | Constant | Status code "110" — represents "Contract Change In Progress" (契約変更中) |
| `FUC_CODE_1` | Constant | Function code "1" — indicates the update function type |
| `SYRZM_FLG_1` | Constant | Calculation/signing flag "1" — enables fee calculation and signing processing |
| `TEMPLATE_ID_EKK0341C230` | Constant | "EKK0341C230" — template ID for the general service contract info update CBS |
| `TEMPLATE_ID_EKK0341C231` | Constant | "EKK0341C231" — template ID for the contract change info update CBS |
| `icjknFlg` | Parameter | Temporary gold registration flag (一時金フラグ) — when true, the operation date (baseYMD) is used as the billing creation date |
| `baseYMD` | Parameter | Base year-month-day — the operation date, used when temporary gold registration is active |
| `kktkSvcKeiNo` | Parameter | Equipment-provided service detail number — primary key for service contract updates |
| `updDtm` | Parameter | Update datetime — the timestamp before the CBS update, returned as the updated datetime after CBS execution |
| `kikiMsg` | Parameter | Equipment message (機器メッセージ) — CAANMsg object containing all equipment-provided service contract data extracted from the message flow |
| `callSC` | Method | Service Component invocation helper — wraps the call to the service layer with session handle, request invoker, parameters, and fixed text |
| EKK0341C230 | CBS | General Equipment Service Contract Info Update CBS — updates service contract data when status is NOT in contract change mode |
| EKK0341C231 | CBS | Equipment Service Contract Change Info Update CBS — updates service contract data when status IS in contract change mode (110) |
| KIKI | Acronym | 機器 (Equipment) — refers to equipment-provided services (e.g., rented Set-Top Boxes, routers) |
| KKT | Acronym | 機器提供 (Equipment-Provided) — short form referring to equipment-provided service contracts |
| KIKI_SORYO | Acronym/Field | 機器送料 (Equipment Billing/Shipping) — equipment-related billing amounts and dates |
| KIKI_SOHUS | Acronym/Field | 機器加入者 (Equipment Subscriber) — information about the equipment service subscriber |
| KIKI_STC | Acronym/Field | 機器受取 (Equipment Receiving) — forwarding/receiving address information for equipment |
| KIKI_STI | Acronym/Field | 機器設置 (Equipment Installation) — installation location and compact codes |
| SHKA_FIN_JI | Acronym/Field | 料金変更計算 (Fee Change Calculation) — calculation/signing processing for fee changes |
| SYRZM | Acronym | 計算署名 (Calculation and Signing) — the fee calculation and digital signing process |
| FTRIAL | Acronym | Free Trial — free trial service period fields |
| CAS | Acronym | Card Authentication System — CAS card related fields for payment/authentication |
| STB | Acronym | Set-Top Box — equipment device type, referenced in LINK_STB_FLG |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity (referenced in Javadoc of related methods) |
| CBS | Acronym | Component-Based Service — a service component layer in the Fujitsu architecture that handles business operations |
| SC | Acronym | Service Component — the individual business logic components within the CBS layer |
| TEMP | Acronym | Temporary — refers to temporary gold registration (一時金登録) flow |
