---

# Business Logic — JKKPauseReceptCC.makeProgress() [32 LOC]

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

## 1. Role

### JKKPauseReceptCC.makeProgress()

This method is responsible for **registering progress status records** during a service contract pause reception (休止受付) workflow. In the K-Opticom telecom billing system, when a customer requests to suspend (pause) their service contract, the system must record intermediate progress milestones in the database to track which stages of the pause process have been completed. The method implements a **conditional routing pattern**: it inspects the service contract status from the prior step (EKK0081C070 — service contract pause reception S-IF) and determines which progress codes to register. If the contract status is "210" (SVC_KEI_STAT_PAUSE — suspended/interrupted), both progress codes "1931" (pause reception registration complete) and "2401" (pause start complete) are registered. Otherwise, only "1931" (pause reception registration complete) is registered. This method plays a central role in the overall pause reception business transaction (`pauseReceptTran`), acting as a shared utility within the CC (Common Component) tier that bridges the service contract status check with the actual progress registration service component (EKK1091D010). It also respects a **check mode** guard (`isCheckMode`) — when check mode is active, no actual progress registration occurs, enabling dry-run testing.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["makeProgress handle, param, fixedText, rsltEKK0081C070, tmpMskmDtlNo, idoDtm"])
    INIT["prgStatList = null"]
    GET_WORK["getWorkCAANMsg rsltEKK0081C070 to msgEKK0081C070"]
    GET_STAT["msgEKK0081C070.getString SVC_KEI_STAT to svcKeiStat"]
    COND{SVC_KEI_STAT_PAUSE equals svcKeiStat?}
    BRANCH1["prgStatList = 1931 + 2401<br/>1931: Pause reception reg complete<br/>2401: Pause start complete"]
    BRANCH2["prgStatList = 1931<br/>1931: Pause reception reg complete"]
    LOOP_START["i = 0; !isCheckMode AND i < prgStatList.length"]
    CALL["callEKK1091D010 handle, param, fixedText, prgStatList[i], idoDtm, tmpMskmDtlNo"]
    GET_WORK2["getWorkCAANMsg rsltEKK1091D010 to workEKK1091D010"]
    GET_PRG_DTM["workEKK1091D010.getString PRG_DTM to prgDtm"]
    INC["i++"]
    END_NODE(["Return / Next"])

    START --> INIT
    INIT --> GET_WORK
    GET_WORK --> GET_STAT
    GET_STAT --> COND
    COND -->|true| BRANCH1
    COND -->|false| BRANCH2
    BRANCH1 --> LOOP_START
    BRANCH2 --> LOOP_START
    LOOP_START --> CALL
    CALL --> GET_WORK2
    GET_WORK2 --> GET_PRG_DTM
    GET_PRG_DTM --> INC
    INC --> LOOP_START
    LOOP_START -->|false| END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for the current business transaction. Used to execute service component calls and manage the transactional context for progress registration. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying the screen input data and working maps. Used as input to the EKK1091D010 SC call for progress registration and as a storage medium for result data. |
| 3 | `fixedText` | `String` | Map key string used to identify/nest data structures within the request parameter. Acts as a namespace prefix for accessing and storing business data maps (e.g., `param.getData(fixedText)`). |
| 4 | `rsltEKK0081C070` | `Map<?, ?>` | Execution result map from the service contract pause reception S-IF (EKK0081C070). Contains the service contract status (`svc_kei_stat`) that determines which progress codes to register. This is the critical input that drives the conditional branch logic. |
| 5 | `tmpMskmDtlNo` | `String` | Temporary application detail number — the unique identifier for the specific line item/detail of the service contract application being processed. Used to correlate progress records with the correct application detail. |
| 6 | `idoDtm` | `String` | Transfer date/time (異動日時) — the timestamp of the business operation. Used as the effective date for progress registration, ensuring audit trail consistency. |

**Instance fields read by this method:**

| Field Name | Type | Business Description |
|------------|------|---------------------|
| `isCheckMode` | `boolean` | Check mode flag. When `true`, the progress registration loop is skipped entirely (dry-run mode). Default value is `true`. Set by the parent transaction based on function code (`JPCModelConstant.FUNC_CD_2`). |
| `prgDtm` | `String` | Progress date/time field. Stores the latest progress registration timestamp returned by EKK1091D010. This field is set by the method and later used by callers to populate downstream data maps (e.g., format change transfer info, settlement transfer info). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getWorkCAANMsg` | JKKPauseReceptCC | - | Reads the `CAANMsg` work data from the EKK0081C070 result map to extract service contract status |
| R | `msgEKK0081C070.getString` | EKK0081C070CBSMsg | - | Reads `svc_kei_stat` (service contract status) from the work message — value "210" means suspended/interrupted |
| C | `callEKK1091D010` | EKK1091D010SC | - | Registers progress status (進捗登録). Calls the progress registration SC via `scCall.run()`, internally mapping input via `editInMsgEKK1091D010` and editing results via `editResultRPEKK1091D010` |
| R | `getWorkCAANMsg` | JKKPauseReceptCC | - | Reads the `CAANMsg` work data from the EKK1091D010 result map after progress registration |
| R | `workEKK1091D010.getString` | EKK1091D010CBSMsg | - | Reads `prg_dtm` (progress date/time) from the SC response to update the instance field |

**CRUD Analysis:**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `callEKK1091D010` | EKK1091D010SC | Progress registration entity/table | Registers progress status code ("1931" and optionally "2401") with the application detail number, transfer date/time, and progress status. Called once per progress code in the list. Internally invokes `scCall.run()` which delegates to the service component layer. |
| R | `getWorkCAANMsg` / `getString` | EKK0081C070CBSMsg | - | Reads service contract status from the prior pause reception S-IF result to determine conditional routing. |
| R | `getWorkCAANMsg` / `getString` | EKK1091D010CBSMsg | - | Reads back the progress date/time (`prg_dtm`) from the SC response after registration to update the instance field for downstream use. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `JKKPauseReceptCC.pauseReceptTran()` | `pauseReceptTran(handle, param, fixedText, resultHash)` -> `makeProgress(handle, param, fixedText, msgEKK0081C070, tmpMskmDtlNo, idoDtm)` | `callEKK1091D010 [C] EKK1091D010SC`, `getString [R] EKK0081C070CBSMsg.svc_kei_stat`, `getString [R] EKK1091D010CBSMsg.prg_dtm`, `getWorkCAANMsg [-] work message extraction`, `editInMsgEKK1091D010 [C] input mapping`, `editResultRPEKK1091D010 [-] result mapping`, `errChk [-] error checking` |

**Note:** `makeProgress` is a `private` method, so it is only called internally within `JKKPauseReceptCC`. The only direct caller is `pauseReceptTran()` (line ~517), which orchestrates the full service contract pause reception transaction flow. Screen-level entry points (e.g., KKSVxxxx screens) would reach this method indirectly through the CBS/transaction layer, but no direct screen entry points were found within 8 hops in the code analysis graph.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] (L538)

> Initialize the progress status list array variable.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String[] prgStatList = null` // Local variable to hold progress status codes to be registered |

**Block 2** — [EXEC] (L539)

> Extract the work message (CAANMsg) from the EKK0081C070 result map. The work message contains structured business data returned by the service contract pause reception S-IF.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `CAANMsg msgEKK0081C070 = getWorkCAANMsg(rsltEKK0081C070)` // Extract work message from prior S-IF result |

**Block 3** — [EXEC] (L540)

> Read the service contract status from the work message. This determines which progress codes to register in the subsequent conditional branch.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `String svcKeiStat = msgEKK0081C070.getString(EKK0081C070CBSMsg.SVC_KEI_STAT)` // Read service contract status — "210" means suspended/interrupted |

**Block 4** — [IF] `(SVC_KEI_STAT_PAUSE.equals(svcKeiStat))` [SVC_KEI_STAT_PAUSE = "210"] (L542)

> Conditional branch: Check if the service contract status is "210" (休止・中断中 — suspended/interrupted). If true, the pause reception process has reached a stage where both the pause reception registration AND the pause start need to be confirmed as complete. This applies to Netflix-style bundle services where a pause involves both stopping reception and beginning the pause period.

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgStatList = new String[]{"1931", "2401"}` // Register two progress codes: 1931 (休止受付登録完了 — pause reception registration complete), 2401 (休止開始完了 — pause start complete) [-> SVC_KEI_STAT_PAUSE="210"] |

**Block 5** — [ELSE] (L546)

> The service contract status is NOT "210" (not suspended/interrupted). Only the basic pause reception registration complete code is registered. This path handles cases where the service contract is in a different status (e.g., "100" — active, "220" — stopped, "910" — terminated, "920" — cancelled).

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgStatList = new String[]{"1931"}` // Register one progress code: 1931 (休止受付登録完了 — pause reception registration complete) |

**Block 6** — [FOR LOOP] `(!isCheckMode && i < prgStatList.length)` (L548)

> Iterate over each progress status code in `prgStatList`. The loop is guarded by `!isCheckMode` — if check mode is active (`isCheckMode == true`), the entire loop body is skipped, allowing the parent transaction to run in a validation-only mode without side effects. Each iteration registers one progress status by calling the EKK1091D010 service component.

**Block 6.1** — [EXEC — loop body] (L550)

> Call the progress registration service component (EKK1091D010) with the current progress status code. The SC internally maps the input parameters, executes the registration against the database, and returns a result map. The `fixedText` parameter serves as the map key namespace, `prgStatList[i]` is the specific progress status code being registered, `idoDtm` is the transfer date/time, and `tmpMskmDtlNo` identifies the application detail.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `Map<?, ?> rsltEKK1091D010 = callEKK1091D010(handle, param, fixedText, prgStatList[i], idoDtm, tmpMskmDtlNo)` // Register progress status; internally: maps input -> calls SC -> edits result -> error checks [-> callEKK1091D010 uses mapper.editInMsgEKK1091D010 -> scCall.run -> mapper.editResultRPEKK1091D010 -> errChk] |

**Block 6.2** — [EXEC] (L553)

> Extract the work message from the EKK1091D010 registration result, preparing to read back the registered progress date/time.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `CAANMsg workEKK1091D010 = getWorkCAANMsg(rsltEKK1091D010)` // Extract work message from progress registration result |

**Block 6.3** — [EXEC] (L554)

> Read the progress date/time from the SC response and store it in the instance field `prgDtm`. This value is later used by `pauseReceptTran` to populate downstream data maps for format change transfer info (`JKKFmtcelIdoInfAddConstCC.PRG_DTM`) and settlement transfer info (`JKKSmtvlIdoInfAddConstCC.PRG_DTM`). The last iteration's value overwrites previous ones, so this field holds the most recent progress registration timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgDtm = workEKK1091D010.getString(EKK1091D010CBSMsg.PRG_DTM)` // Store progress date/time from SC response to instance field for downstream use [-> PRG_DTM="prg_dtm"] |

---

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_stat` | Field | Service contract status — a status code indicating the current state of a service contract. "100" = 提供中 (in service/active), "210" = 休止・中断中 (suspended/interrupted), "220" = 停止中 (stopped), "910" = 解約済 (terminated), "920" = キャンセル済 (cancelled). |
| `prg_dtm` | Field | Progress date/time — the timestamp recorded when a progress status is registered. Used for audit trail and temporal consistency across business operations. |
| `ido_dtm` | Field | Transfer date/time (異動日時) — the effective date/time of a business operation (e.g., service contract change, suspension). |
| `tmp_mskm_dtl_no` | Field | Temporary application detail number (申込明細番号) — unique identifier for a specific line item within a service contract application. |
| `fixedText` | Field | Map key string (マップキー文字列) — a namespace identifier used to locate and store data maps within the request parameter object. |
| `rsltEKK0081C070` | Field | Result map from service contract pause reception S-IF — the output of the EKK0081C070 service component, containing the service contract status and other business data. |
| `rsltEKK1091D010` | Field | Result map from progress registration S-IF — the output of the EKK1091D010 service component, containing the registered progress date/time and status confirmation. |
| SVC_KEI_STAT_PAUSE | Constant | Service contract status: suspended/interrupted (休止・中断中) — value "210". Indicates the service contract has been placed on hold. |
| SVC_KEI_STAT_TKC | Constant | Service contract status: in service (サービス提供中) — value "100". |
| SVC_KEI_STAT_STP | Constant | Service contract status: stopped (停止中) — value "220". |
| SVC_KEI_STAT_DSL | Constant | Service contract status: terminated (解約済) — value "910". |
| SVC_KEI_STAT_CANCEL | Constant | Service contract status: cancelled (キャンセル済) — value "920". |
| 1931 | SC Code | Progress status code: pause reception registration complete (休止受付登録完了) — confirms the pause reception has been registered in the system. |
| 2401 | SC Code | Progress status code: pause start complete (休止開始完了) — confirms the pause has started. Only registered when service contract status is "210" (suspended). |
| isCheckMode | Field | Check mode flag — when `true`, prevents actual database modifications. Set to `true` by default and overridden based on function code. Enables dry-run validation. |
| prgDtm | Field | Instance field storing the latest progress date/time across iterations. Later used to populate downstream transfer info data maps. |
| SOD_HAKKO_FLG_FUYO | Constant | SOD issuance flag: no SOD issuance required (SOD発行不要) — value "0". |
| SOD_HAKKO_FLG_YO | Constant | SOD issuance flag: SOD issuance required (SOD発行要) — value "1". |
| SOD | Acronym | Service Order Data — telecom order fulfillment data entity used in service provisioning workflows. |
| CAANMsg | Technical | Common message class — the standard message container used throughout the system for passing structured business data between components and service components. |
| SC | Acronym | Service Component — the service tier component that handles specific business operations (e.g., EKK1091D010SC for progress registration). |
| S-IF | Acronym | System Interface — the interface layer connecting the business process layer (BP) to the service component (SC) layer. |
| EKK0081C070 | SC Code | Service contract pause reception S-IF — registers and retrieves service contract pause reception data. |
| EKK1091D010 | SC Code | Progress registration S-IF — registers progress status records for business transaction tracking. |
| JKKPauseReceptCC | Class | Pause reception Common Component — the shared component containing all business logic for the service contract pause reception workflow. |
| pauseReceptTran | Method | Pause reception transaction — the main orchestrating method that coordinates the full service contract pause reception flow, calling makeProgress as a sub-step. |
| Netflix導入 | Business term | Netflix introduction (Netflix導入対応) — a feature addition (ANK-3987-00-00) enabling pause processing for Netflix bundle services, which include third-party vendor bundle divisions. |

---