# Business Logic — JKKPauseChgRsvClCC.pauseChgRsvClCtrlTran() [227 LOC]

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

## 1. Role

### JKKPauseChgRsvClCC.pauseChgRsvClCtrlTran()

This method is the central controller for **pause change and reservation cancellation** processing in the K-Opticom telecom service contract management system. It handles the complete lifecycle of a customer request to temporarily suspend (pause) their service contract, modify the suspension terms, or cancel a pending reservation. The method implements a **routing/dispatch design pattern**: based on the `kido_cd` (start source code) field, it branches between **online** (real-time screen-driven) and **batch** (scheduled background) processing, each with its own flow of service contract agreement checks, suspension detail resolution, and downstream processing.

For online requests, the method first fetches the current service contract agreement status, then performs reservation suspension list resolution and reservation suspension release list resolution (both via `EKK1681B001`). If the service contract status is already "Suspended" (220), "Terminated" (910), or "Cancelled" (920), the method skips further processing and returns success immediately. Otherwise, it branches further: if the request targets a "cancellation-only" scenario (service in "Service Provision" status 100 with no pause dates set), it invokes `pauseRsvClTran` to cancel the reservation; otherwise it invokes `pauseChgTranOn` for the online pause change flow, with an additional `pauseTokiPrdChgTran` step for telco (eo light phone) services. For batch requests, it invokes `pauseChgTranBat` and similarly handles telco pause period changes.

After processing, if a Service Order Data (SOD) issuance is required (i.e., the service contract status is "Service Provision" with matching pause start date, or "Suspension/Interruption" with matching pause release date for online update-confirm mode, or any case for batch), the method calls `callEKK0161B004` to fetch the service contract details list, then delegates to `executeHakkoSodCC` to issue the SOD. In check mode (online function code 2), the method re-executes the service contract agreement and updates business liaison remarks via `callEKK0081C014`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["pauseChgRsvClCtrlTran"])
    INIT["init param, fixedText"]
    GET_TRGT["Get trgtMap from param.getData"]
    GET_INMAP["Get inMap from trgtMap.get PAUSE_RECEPT_MAP"]
    GET_OPE_DATE["Get tmpOpeDate = JCCBPCommon.getOpeDate"]
    INIT_SOD["Set sod_hakko_flg = SOD_HAKKO_FLG_FUYO 0"]
    GET_KIDO["Get kido_cd from inMap KIDO_CD"]
    GET_IDO_DIV["Get hakkoSodIdoDiv from inMap IDO_DIV"]
    CALL_AGREEMENT["callEKK0081A010 handle param fixedText"]
    GET_WORK1["getWorkCAANMsg rsltEKK0081A010"]
    CHECK_LIST1["msgEKK0081A010List.length == 0"]
    THROW1["Throw SCCallException"]
    SET_RESULT1["Set resultHash RESULT_KEY_EKK0081A010"]
    GET_SVC_STAT["Get svc_kei_stat from msgEKK0081A010"]
    CHECK_STAT["svc_kei_stat == STP 220 or DSL 910 or CANCEL 920"]
    SET_RETURN_OK["Set return code 0000"]
    CALL_RESV_SUSP["callEKK1681B001 handle param fixedText 005"]
    WORK_RESV_SUSP["getWorkCAANMsg rsltEKK1681B001_005"]
    CALL_RESV_RELS["callEKK1681B001 handle param fixedText 006"]
    WORK_RESV_RELS["getWorkCAANMsg rsltEKK1681B001_006"]
    CHECK_KIDO["kido_cd == KIDO_CD_ONLINE 01"]
    CHECK_KIDO_BATCH["kido_cd == KIDO_CD_BATCH 02"]
    CALL_ON_CMN["onCmnTran handle param fixedText resultHash"]
    GET_MSG2["Get msgEKK0081A010 from resultHash"]
    GET_SVC2["Get svc_kei_stat and svc_cd"]
    CHECK_SVC_TKC["svc_kei_stat == TKC 100 AND svc_pause_ymd null AND svc_pause_rls_ymd null AND pause_prc_tk_ym null"]
    CALL_RSVC["pauseRsvClTran handle param fixedText resultHash"]
    CALL_PAUSECHG["pauseChgTranOn handle param fixedText resultHash"]
    CHECK_SVC_CD_TEL["svc_cd == SVC_CD_TEL 02"]
    CALL_TOKI["pauseTokiPrdChgTran handle param fixedText resultHash"]
    CHECK_ODR_FLG["SVC_KEI_STAT_TKC 100 AND tmpOpeDate equals svc_pause_ymd OR SVC_KEI_STAT_KYUS 210 AND tmpOpeDate equals svc_pause_rls_ymd"]
    SET_SOD_YO["Set sod_hakko_flg = SOD_HAKKO_FLG_YO 1"]
    SET_IDO_DIV_PAUSE["Set hakkoSodIdoDiv = CD00576_PAUSE_UK"]
    CHECK_CHECKMODE["!isCheckMode"]
    CALL_AGREEMENT2["callEKK0081A010 handle param fixedText"]
    CALL_BIKO["callEKK0081C014 handle param fixedText eKK0081A010Msg1"]
    CALL_PAUSECHG_BAT["pauseChgTranBat handle param fixedText resultHash"]
    GET_SVC_CD_BAT["Get svc_cd from msgEKK0081A010"]
    CHECK_SVC_CD_TEL_BAT["svc_cd == SVC_CD_TEL 02"]
    SET_SOD_YO_BAT["Set sod_hakko_flg = SOD_HAKKO_FLG_YO 1"]
    THROW_INV["Throw SCCallException INVALID_RETURN_MESSAGE"]
    CHECK_ODR_FINAL["sod_hakko_flg != FUYO 0 AND msgEKK0081A010 != null AND KIDO_BATCH 02 OR KIDO_ONLINE 01 AND !isCheckMode"]
    CALL_DETAILS["callEKK0161B004 handle param fixedText"]
    GET_WORK_DETAILS["getWorkCAANMsg rsltEKK0161B004"]
    CALL_SOD["executeHakkoSodCC handle param msgEKK0081A010 msgEKK0161B004List hakkoSodIdoDiv"]
    SET_RETURN["Set returnCode 0000"]
    RETURN["Return param"]

    START --> INIT --> GET_TRGT --> GET_INMAP --> GET_OPE_DATE --> INIT_SOD --> GET_KIDO --> GET_IDO_DIV --> CALL_AGREEMENT --> GET_WORK1 --> CHECK_LIST1
    CHECK_LIST1 -- "true" --> THROW1
    CHECK_LIST1 -- "false" --> SET_RESULT1 --> GET_SVC_STAT --> CHECK_STAT
    CHECK_STAT -- "true" --> SET_RETURN_OK
    CHECK_STAT -- "false" --> CALL_RESV_SUSP --> WORK_RESV_SUSP --> CALL_RESV_RELS --> WORK_RESV_RELS --> CHECK_KIDO
    CHECK_KIDO -- "true" --> CALL_ON_CMN --> GET_MSG2 --> GET_SVC2 --> CHECK_SVC_TKC
    CHECK_SVC_TKC -- "true" --> CALL_RSVC
    CHECK_SVC_TKC -- "false" --> CALL_PAUSECHG --> CHECK_SVC_CD_TEL
    CHECK_SVC_CD_TEL -- "true" --> CALL_TOKI
    CHECK_SVC_CD_TEL -- "false" --> CHECK_ODR_FLG
    CALL_TOKI --> CHECK_ODR_FLG
    CHECK_ODR_FLG -- "true" --> SET_SOD_YO --> SET_IDO_DIV_PAUSE
    CHECK_ODR_FLG -- "false" --> CHECK_CHECKMODE
    SET_IDO_DIV_PAUSE --> CHECK_CHECKMODE
    CHECK_CHECKMODE -- "true" --> CHECK_AGREEMENT2_SKIP["skip re-execute"]
    CHECK_CHECKMODE -- "false" --> CHECK_ODR_FINAL
    CALL_AGREEMENT2_SKIP --> CHECK_ODR_FINAL
    CALL_RSVC --> CHECK_CHECKMODE
    CHECK_SVC_CD_TEL -- "false" --> CHECK_ODR_FLG
    CALL_PAUSECHG --> CHECK_SVC_CD_TEL
    CHECK_KIDO -- "false" --> CHECK_KIDO_BATCH
    CHECK_KIDO_BATCH -- "true" --> CALL_PAUSECHG_BAT --> GET_SVC_CD_BAT --> CHECK_SVC_CD_TEL_BAT
    CHECK_SVC_CD_TEL_BAT -- "true" --> CALL_TOKI_BAT["pauseTokiPrdChgTran handle param fixedText resultHash"]
    CALL_TOKI_BAT --> SET_SOD_YO_BAT
    CHECK_SVC_CD_TEL_BAT -- "false" --> SET_SOD_YO_BAT
    CHECK_KIDO_BATCH -- "false" --> THROW_INV
    SET_SOD_YO_BAT --> CHECK_ODR_FINAL
    SET_SOD_YO --> CHECK_CHECKMODE
    CHECK_CHECKMODE -- "true" --> CALL_AGREEMENT2 --> CALL_BIKO --> CHECK_ODR_FINAL
    CALL_AGREEMENT2 --> CALL_BIKO
    CHECK_ODR_FINAL -- "true" --> CALL_DETAILS --> GET_WORK_DETAILS --> CALL_SOD
    CHECK_ODR_FINAL -- "false" --> SET_RETURN
    CALL_SOD --> SET_RETURN --> RETURN
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle providing transaction and connection context for SC invocations and data access |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing the model group data and control map; holds the pause reception map with all input fields (service contract number, start source code, movement classification, pause dates, memo, movement reason list, etc.), and receives the return code on completion |
| 3 | `fixedText` | `String` | User-specified string used as the map key to retrieve target data from `param.getData()`; typically identifies the data block name (e.g., `"KKSV020401CC"` from the screen operation) |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `mapper` | `JKKPauseChgRsvClMapperCC` | Data mapper for converting between request parameters and SC input messages (e.g., `editInMsgEKK0081A010`) |
| `scCall` | `ServiceComponentRequestInvoker` | Service component invocation utility for calling SC methods |
| `isCheckMode` | `boolean` | Flag indicating whether the system is in check (preview) mode (function code 2) vs. actual execution mode (function code 1); controls whether re-execution of service contract agreement and business liaison remarks update is performed |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callEKK0081A010` | EKK0081A010SC | Service contract agreement information | Fetches the current service contract agreement status (contract status code, service code) - called twice (pre-processing and re-execution in non-check mode) |
| R | `callEKK1681B001(handle, param, fixedText, "005")` | EKK1681B001SC | Reservation suspension list | Fetches the reservation suspension list (service suspension) - code 005 |
| R | `callEKK1681B001(handle, param, fixedText, "006")` | EKK1681B001SC | Reservation suspension list | Fetches the reservation suspension release list - code 006 |
| R | `callEKK0161B004` | EKK0161B004SC | Service contract details list | Fetches the service contract details list for SOD issuance (SVC contract item details) |
| R | `getWorkCAANMsg` (x4) | Internal | - | Extracts CAANMsg work object from SC return map results |
| R | `JCCBPCommon.getOpeDate` | JCCBPCommon | - | Retrieves the current operation date from system settings |
| R | `getString` | Internal | - | Extracts string fields from CAANMsg (SVC_KEI_STAT, SVC_CD) |

### Internal method calls:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `onCmnTran` | JKKPauseChgRsvClCC | - | Online common processing - performs shared online-side business logic (data mapping, preliminary updates) |
| C/U | `pauseRsvClTran` | JKKPauseChgRsvClCC | - | Reservation cancellation processing - cancels a pending reservation when the service is in "Service Provision" status with no pause dates set |
| C/U | `pauseChgTranOn` | JKKPauseChgRsvClCC | - | Online pause change processing - executes the core pause change flow for online (screen) requests |
| C/U | `pauseChgTranBat` | JKKPauseChgRsvClCC | - | Batch pause change processing - executes the pause change flow for batch (scheduled) requests |
| C/U | `pauseTokiPrdChgTran` | JKKPauseChgRsvClCC | - | Pause period change processing - modifies the temporary period (toki-ki) for telco (eo light phone) services |
| C | `executeHakkoSodCC` | JKKPauseChgRsvClCC | Service Order Data | Issues a Service Order Data (SOD) - creates order data for external provider notification; receives the movement classification for pause reception vs. pause change |
| U | `callEKK0081C014` | EKK0081C014SC | Service contract business liaison remarks | Updates business liaison remarks for the service contract - called in non-check mode after re-executing the agreement |
| U | `callEKK0081C080` | EKK0081C080SC | - | (Referenced by RESULT_HASH_KEY constant; used to complete EKK0081C080 execution result in resultHash buffer) |

## 5. Dependency Trace

### Callers:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch:JKKIdoRsvHanei | `pauseReceptu()` -> `pauseChgRsvCl.pauseChgRsvClCtrlTran(handle, param, tmpWorkMapKey)` | `callEKK0081A010 [R] Service Contract Agreement`, `callEKK1681B001 [R] Reservation Suspension List`, `callEKK0161B004 [R] Service Contract Details`, `pauseChgTranBat [C/U] Pause Change`, `pauseTokiPrdChgTran [C/U] Pause Period`, `executeHakkoSodCC [C] SOD` |
| 2 | Screen:KKSV0204 | `KKSV0204OPOperation.target9` -> CCRequestBroker("JKKPauseChgRsvClCC", "pauseChgRsvClCtrlTran", "KKSV020401CC", ...) | `callEKK0081A010 [R] Service Contract Agreement`, `callEKK1681B001 [R] Reservation Suspension List`, `onCmnTran [U] Online Common`, `pauseRsvClTran [C/U] Reservation Cancel`, `pauseChgTranOn [C/U] Pause Change`, `pauseTokiPrdChgTran [C/U] Pause Period`, `executeHakkoSodCC [C] SOD`, `callEKK0081C014 [U] Business Liaison Remarks` |

### Terminal operations from this method:

`executeHakkoSodCC` [C], `getWorkCAANMsg` [R], `callEKK0161B004` [R], `pauseTokiPrdChgTran` [C/U], `getString` [R], `pauseChgTranBat` [C/U], `callEKK0081C014` [U], `getWorkCAANMsg` [R], `callEKK0081A010` [R], `pauseTokiPrdChgTran` [C/U], `pauseChgTranOn` [C/U], `pauseRsvClTran` [C/U], `isNull` [R]

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] (L267-269)
> Initializes result buffer and null message reference.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultHash = new HashMap<String, Object>()` |
| 2 | SET | `msgEKK0081A010 = null` |

**Block 2** — [EXEC] (L272)
> Initial processing - initializes mapper, SC invoker, control map error info, and sets `isCheckMode` based on function code.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `init(param, fixedText)` // Initial processing |

**Block 3** — [SET] (L275-276)
> Retrieves the target data map and the pause reception map from it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `trgtMap = (HashMap) param.getData(fixedText)` // Retrieve request parameter data |
| 2 | SET | `inMap = (HashMap) trgtMap.get(JKKPauseChgRsvClConstCC.PAUSE_RECEPT_MAP)` [-> PAUSE_RECEPT_MAP="pause_recept_map"] (JKKPauseChgRsvClConstCC.java:87) |

**Block 4** — [SET] (L279-280)
> Retrieves the current operation date from system settings and stores it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpOpeDate = JCCBPCommon.getOpeDate(null)` |
| 2 | SET | `resultHash.put(OPEDATE_KEY, tmpOpeDate)` [-> OPEDATE_KEY="OPEDATE"] |

**Block 5** — [SET] (L283)
> Initializes the SOD issuance flag to "not required" (0 = FUYO).

| # | Type | Code |
|---|------|------|
| 1 | SET | `sod_hakko_flg = SOD_HAKKO_FLG_FUYO` [-> "0"] |

**Block 6** — [SET] (L286-291)
> Retrieves the start source code (online/batch discriminator) and the movement classification for SOD issuance.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kido_cd = (String) inMap.get(JKKPauseChgRsvClConstCC.KIDO_CD)` [-> KIDO_CD="kido_cd"] (JKKPauseChgRsvClConstCC.java:27) |
| 2 | SET | `hakkoSodIdoDiv = (String) inMap.get(JKKPauseChgRsvClConstCC.IDO_DIV)` [-> IDO_DIV="ido_div"] (JKKPauseChgRsvClConstCC.java:35) // Movement classification |

**Block 7** — [CALL] (L296)
> Service contract agreement execution processing. Calls the SC to fetch the current service contract agreement status.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `rsltEKK0081A010 = callEKK0081A010(handle, param, fixedText)` // Service contract agreement execution |

**Block 8** — [SET] (L298-300)
> Extracts the work message and the message list; validates the result is non-empty.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workEKK0081A010 = getWorkCAANMsg(rsltEKK0081A010)` |
| 2 | SET | `msgEKK0081A010List = workEKK0081A010.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)` |
| 3 | SET | `errMsg = "INVALID_RETURN_MESSAGE"` |

**Block 9** — [IF/ELSE] (L302) `msgEKK0081A010List.length == 0`

| # | Type | Code |
|---|------|------|
| 1 | THROW | `throw new SCCallException(errMsg, "0", -1)` // Invalid return message |
| 2 | SET | `msgEKK0081A010 = msgEKK0081A010List[0]` |
| 3 | SET | `resultHash.put(RESULT_KEY_EKK0081A010, msgEKK0081A010)` [-> RESULT_KEY_EKK0081A010="EKK0081A010"] |

**Block 10** — [SET] (L312)
> Retrieves the service contract status from the agreement result.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_stat = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT)` |

**Block 11** — [IF/ELSE] (L315) `svc_kei_stat == STP "220" || svc_kei_stat == DSL "910" || svc_kei_stat == CANCEL "920"`

> If the service contract is already suspended, terminated, or cancelled, skip further processing. The comment says "no processing needed" and the return code is set to "0000".

| # | Type | Code |
|---|------|------|
| 1 | SET | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, "0000")` |

**Block 12** — [CALL] (L323)
> Reservation suspension list resolution (service suspension). Calls SC with code "005" for service suspension.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `rsltEKK1681B001_005 = callEKK1681B001(handle, param, fixedText, "005")` // Reservation suspension list resolution (Service Suspension) |

**Block 13** — [SET] (L326-330)
> Extracts work message and stores the first element of the list in resultHash if non-null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workEKK1681B001_005 = getWorkCAANMsg(rsltEKK1681B001_005)` |
| 2 | SET | `msgEKK1681B001_005List = workEKK1681B001_005.getCAANMsgList(...)` |
| 3 | SET | `resultHash.put("EKK1681B001_005", msgEKK1681B001_005List[0])` (if list != null && length > 0) |

**Block 14** — [CALL] (L333)
> Reservation suspension release list resolution. Calls SC with code "006" for service suspension release.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `rsltEKK1681B001_006 = callEKK1681B001(handle, param, fixedText, "006")` // Reservation suspension list resolution (Service Suspension Release) |

**Block 15** — [SET] (L336-340)
> Extracts work message and stores the first element of the list in resultHash if non-null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workEKK1681B001_006 = getWorkCAANMsg(rsltEKK1681B001_006)` |
| 2 | SET | `msgEKK1681B001_006List = workEKK1681B001_006.getCAANMsgList(...)` |
| 3 | SET | `resultHash.put("EKK1681B001_006", msgEKK1681B001_006List[0])` (if list != null && length > 0) |

**Block 16** — [IF/ELSE-IF/ELSE] (L343) `kido_cd == KIDO_CD_ONLINE "01"`

> Branches processing based on the start source: Online, Batch, or invalid.

| # | Type | Code |
|---|------|------|
| 1 | (Online branch) See Block 17 | |
| 2 | (Batch branch) See Block 27 | |
| 3 | THROW | `throw new SCCallException("INVALID_RETURN_MESSAGE", "0", -1)` // Invalid start source code |

**Block 17** — [EXEC] `kido_cd == KIDO_CD_ONLINE "01"` (L347)
> Online processing: common processing for online requests.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `onCmnTran(handle, param, fixedText, resultHash)` // Online common processing |
| 2 | SET | `msgEKK0081A010 = (CAANMsg) resultHash.get(RESULT_KEY_EKK0081A010)` |
| 3 | SET | `svc_kei_stat = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT)` |
| 4 | SET | `svc_cd = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_CD)` |

**Block 18** — [IF/ELSE] (L359) `svc_kei_stat == TKC "100" && svc_pause_ymd null && svc_pause_rls_ymd null && pause_prc_tk_ym null`

> Reservation cancellation dependency: service in "Service Provision" status with no pause dates set. This indicates a pure reservation cancellation request.
> - `svc_kei_stat == SVC_KEI_STAT_TKC` [-> "100"] (JKKPauseChgRsvClCC.java:88)
> - `isNull(inMap.get(SVC_PAUSE_YMD))` [-> SVC_PAUSE_YMD="svc_pause_ymd"] (JKKPauseChgRsvClConstCC.java:47)
> - `isNull(inMap.get(SVC_PAUSE_RLS_YMD))` [-> SVC_PAUSE_RLS_YMD="svc_pause_rls_ymd"] (JKKPauseChgRsvClConstCC.java:50)
> - `isNull(inMap.get(PAUSE_PRC_TK_YM))` [-> PAUSE_PRC_TK_YM="pause_prc_tk_ym"] (JKKPauseChgRsvClConstCC.java:53)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `pauseRsvClTran(handle, param, fixedText, resultHash)` // Pause reservation cancellation processing |

**Block 19** — [ELSE] (L374)
> Non-cancellation dependency: pause change processing for online.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `pauseChgTranOn(handle, param, fixedText, resultHash)` // Pause change processing (Online) |

**Block 20** — [IF/ELSE] (L377) `svc_cd == SVC_CD_TEL "02"`

> For eo light phone (telco) services, additionally process the pause period (toki-ki) change.
> - `svc_cd == SVC_CD_TEL` [-> "02"] (JKKPauseChgRsvClCC.java:82)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `pauseTokiPrdChgTran(handle, param, fixedText, resultHash)` // Pause period change processing |

**Block 21** — [IF] (L391) `(svc_kei_stat == TKC "100" && tmpOpeDate.equals(svc_pause_ymd)) || (svc_kei_stat == KYUS "210" && tmpOpeDate.equals(svc_pause_rls_ymd))`

> SOD issuance determination: Service Order Data issuance is needed when:
> - (Service Provision "100" AND operation date matches pause start date) OR
> - (Suspension/Interruption "210" AND operation date matches pause release date)
> - `svc_kei_stat == SVC_KEI_STAT_TKC` [-> "100"]
> - `svc_kei_stat == SVC_KEI_STAT_KYUS` [-> "210"] (JKKPauseChgRsvClCC.java:90)
> - `inMap.get(SVC_PAUSE_YMD)` [-> "svc_pause_ymd"]
> - `inMap.get(SVC_PAUSE_RLS_YMD)` [-> "svc_pause_rls_ymd"]

| # | Type | Code |
|---|------|------|
| 1 | SET | `sod_hakko_flg = SOD_HAKKO_FLG_YO` [-> "1"] // Set SOD issuance flag (SOD required) |
| 2 | IF | `!(svc_kei_stat == KYUS "210" && tmpOpeDate.equals(svc_pause_rls_ymd))` // If NOT a pause release case |
| 3 | SET | `hakkoSodIdoDiv = JKKStrConst.CD00576_PAUSE_UK` [-> "CD00576_PAUSE_UK"] // Movement classification: Pause Reception |

> When the condition is true (not a pause release case), the SOD issuance CC will issue SOD for pause change/reservation cancellation rather than for release.

**Block 22** — [IF] (L411) `!isCheckMode`

> Re-execute service contract agreement and update business liaison remarks (in actual execution mode only). Check mode is set to true for function code 2 (preview), false for function code 1 (actual execution).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `rsltEKK0081A010 = callEKK0081A010(handle, param, fixedText)` // Service contract agreement execution (re-execute) |
| 2 | SET | `eKK0081A010Msg = getWorkCAANMsg(rsltEKK0081A010)` |
| 3 | SET | `eKK0081A010Msg1List = eKK0081A010Msg.getCAANMsgList(...)` |
| 4 | SET | `eKK0081A010Msg1 = eKK0081A010Msg1List[0]` |
| 5 | CALL | `callEKK0081C014(handle, param, fixedText, eKK0081A010Msg1)` // Service contract business liaison remarks update |

**Block 23** — [IF/ELSE] (L424) `sod_hakko_flg != SOD_HAKKO_FLG_FUYO "0" && msgEKK0081A010 != null && (kido_cd == BATCH "02" || (kido_cd == ONLINE "01" && !isCheckMode))`

> SOD issuance condition: SOD is required AND agreement result exists AND (batch start OR online start with non-check mode).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `rsltEKK0161B004 = callEKK0161B004(handle, param, fixedText)` // Service contract content details list resolution |
| 2 | SET | `workEKK0161B004 = getWorkCAANMsg(rsltEKK0161B004)` |
| 3 | SET | `msgEKK0161B004List = workEKK0161B004.getCAANMsgList(...)` |
| 4 | CALL | `executeHakkoSodCC(handle, param, msgEKK0081A010, msgEKK0161B004List, hakkoSodIdoDiv)` // SOD issuance CC invocation |

**Block 24** — [SET] (L443-445)
> Sets the return code to "0000" (normal end) and returns the parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `returnCode = String.format("%1$04d", 0)` // "0000" |
| 2 | EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, returnCode)` |
| 3 | RETURN | `return param` |

**Block 25** — [IF/ELSE-IF/ELSE] (L420) `kido_cd == KIDO_CD_BATCH "02"`

> Batch processing branch.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `pauseChgTranBat(handle, param, fixedText, resultHash)` // Pause change processing (Batch) |
| 2 | SET | `msgEKK0081A010 = (CAANMsg) resultHash.get(RESULT_KEY_EKK0081A010)` |
| 3 | SET | `svc_cd = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_CD)` |

**Block 26** — [IF/ELSE] (L427) `svc_cd == SVC_CD_TEL "02"`

> For eo light phone services in batch mode, also process the pause period change.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `pauseTokiPrdChgTran(handle, param, fixedText, resultHash)` // Pause period change processing |
| 2 | SET | `sod_hakko_flg = SOD_HAKKO_FLG_YO` [-> "1"] // Set SOD flag (SOD required) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_stat` | Field | Service contract status — indicates the current state of a service contract line item |
| SVC_KEI_STAT_TKC | Constant | Service Provision ("100") — the service is actively being provided |
| SVC_KEI_STAT_KYUS | Constant | Suspension/Interruption ("210") — the service is currently in a paused state |
| SVC_KEI_STAT_STP | Constant | Suspended ("220") — the service has been suspended (e.g., due to non-payment) |
| SVC_KEI_STAT_DSL | Constant | Terminated ("910") — the service contract has been terminated |
| SVC_KEI_STAT_CANCEL | Constant | Cancelled ("920") — the service contract has been cancelled |
| `svc_cd` | Field | Service code — identifies the type of service (Internet, Phone, TV) |
| SVC_CD_NET | Constant | Internet service ("01") |
| SVC_CD_TEL | Constant | Phone service ("02") — specifically eo light phone (eo light denwa) |
| SVC_CD_TV | Constant | TV service ("03") |
| `kido_cd` | Field | Start source code — identifies whether processing is triggered from online (screen) or batch |
| KIDO_CD_ONLINE | Constant | Online start ("01") — triggered by a screen operation |
| KIDO_CD_BATCH | Constant | Batch start ("02") — triggered by a scheduled batch job |
| `ido_div` | Field | Movement classification — classifies the type of data migration/change for SOD issuance |
| CD00576_PAUSE_UK | Constant | Pause Reception — SOD issuance movement classification for pause reception |
| `sod_hakko_flg` | Field | SOD issuance flag — "0" = SOD not required, "1" = SOD required |
| SOD | Acronym | Service Order Data — order data sent to external service providers for service fulfillment |
| SOD_HAKKO_FLG_FUYO | Constant | SOD not required ("0") |
| SOD_HAKKO_FLG_YO | Constant | SOD required ("1") |
| PAUSE_RECEPT_MAP | Constant | "pause_recept_map" — the map key for pause reception input data within the target data map |
| `svc_pause_ymd` | Field | Service pause year/month/date — the date when service suspension starts |
| `svc_pause_rls_ymd` | Field | Service pause release year/month/date — the date when service suspension is released |
| `pause_prc_tk_ym` | Field | Pause charge provision year/month — the year/month when pause charges begin |
| `opa_dtm_bf` | Field | Update date-time before (pre-update timestamp) |
| OPEDATE_KEY | Constant | "OPEDATE" — key for storing operation date in result hash |
| `hakkoSodIdoDiv` | Field | SOD issuance movement classification — determines what type of SOD to issue (pause reception vs. pause change vs. release) |
| EKK0081A010 | CBS | Service contract agreement CBS — fetches the current service contract agreement information |
| EKK0081C014 | CBS | Service contract business liaison remarks CBS — updates remarks for service contracts |
| EKK0161B004 | CBS | Service contract details list CBS — fetches the service contract details list for SOD |
| EKK1681B001 | CBS | Reservation suspension list CBS — resolves reservation suspension/release lists (codes 005 for suspension, 006 for release) |
| onCmnTran | Method | Online common processing — shared processing logic for online requests |
| pauseRsvClTran | Method | Pause reservation cancellation processing — cancels a pending reservation |
| pauseChgTranOn | Method | Online pause change processing — executes the pause change flow for online requests |
| pauseChgTranBat | Method | Batch pause change processing — executes the pause change flow for batch requests |
| pauseTokiPrdChgTran | Method | Pause period change processing — modifies the temporary period for telco services |
| executeHakkoSodCC | Method | SOD issuance CC — issues Service Order Data for external provider notification |
| callEKK0081A010 | Method | Service contract agreement SC invocation |
| callEKK1681B001 | Method | Reservation suspension list SC invocation |
| callEKK0161B004 | Method | Service contract details list SC invocation |
| callEKK0081C014 | Method | Business liaison remarks SC invocation |
| getWorkCAANMsg | Method | Extracts the CAANMsg work object from an SC return map |
| isCheckMode | Field | Check mode flag — true when function code is 2 (preview/confirmation), false for actual execution |
| check mode | Business term | Preview mode where the system validates data without committing actual changes; re-execution of agreement is skipped |
| eo light phone | Business term | eo Kidenwa — Fujitsu/K-Opticom's VoIP phone service (service code "02") |
| CAANMsg | Class | Common Application Architecture ANdMsg — the message object used throughout the framework for business data exchange |
| SCCallException | Exception | Service Component Call Exception — thrown when an SC call fails or returns invalid results |
| JKKPauseChgRsvClCC | Class | Pause Change / Reservation Cancel Common Component — the main orchestration class for pause and cancellation processing |
| isNull | Method | Null-check utility method — returns true if the given object is null |
| init | Method | Initial processing — initializes mapper, SC invoker, control map, and determines check mode |
| SCControlMapKeys.RETURN_CODE | Constant | Control map key for setting the return code on the parameter |
