# (DD14) Business Logic — JFUSetVariTsushinKikiMskmCC.setInMapPrgRegist() [35 LOC]

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

## 1. Role

### JFUSetVariTsushinKikiMskmCC.setInMapPrgRegist()

This method performs **progress registration mapping** (進捗登録) — it populates an in-map data structure with standardized fields required to register a progress status update for a service contract detail line item. The business operation centers on recording that a specific progress milestone has been registered for a given service order detail, capturing the service contract number, the progress status code (always set to "3501" — Registered), the movement/transfer classification code, the exact timestamp of the movement, and two optional free-text progress memo fields.

The method implements the **builder/data-filling pattern**: it retrieves a HashMap from the request parameter object, populates it with CBS message key-value pairs conforming to the `EKK1091D010CBSMsg` schema, and appends a child list containing movement reason detail records using the `EKK1091D010CBSMsg1List` schema. It always writes the movement reason code as "F3" (reason for transfer) with no additional memo, indicating this is a standard automated transfer event rather than a user-initiated one.

This is a **shared utility method** called by multiple screen-related classes (e.g., `JFUSetVariTsushinKikiMskmCC`, `JFUEoMusenRtMskmCC`) during the service provisioning registration workflow. It is the common entry point for constructing the progress registration data payload that will subsequently be consumed by CBS (Backend Service) layers.

The method has no conditional branches — it is a deterministic, linear data-filling routine. It always performs the same sequence of operations regardless of input values.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setInMapPrgRegist param, fixedText, svcKeiNo, mskmDtlNo, prgTkjk1, prgTkjk2, idoDiv"]) --> S1["setFuncCode param, fixedText, FUNC_CD_1"]
    S1 --> S2["HashMap inMap = param.getData fixedText"]
    S2 --> S3["inMap.put SVC_KEI_NO = svcKeiNo"]
    S3 --> S4["inMap.put PRG_STAT = CD00647_3501"]
    S4 --> S5["inMap.put MSKM_DTL_NO = mskmDtlNo"]
    S5 --> S6["inMap.put IDO_DIV = idoDiv"]
    S6 --> S7["inMap.put IDO_DTM = getSysDateTimeStamp"]
    S7 --> S8["inMap.put PRG_TKJK_1 = prgTkjk1"]
    S8 --> S9["inMap.put PRG_TKJK_2 = prgTkjk2"]
    S9 --> S10["ArrayList list = new ArrayList"]
    S10 --> S11["HashMap childMap = new HashMap"]
    S11 --> S12["childMap.put IDO_RSN_CD = CD00846_F3"]
    S12 --> S13["childMap.put IDO_RSN_MEMO = null"]
    S13 --> S14["list.add childMap"]
    S14 --> S15["inMap.put EKK1091D010CBSMSG1LIST = list"]
    S15 --> END(["Return void"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | Request parameter holder carrying the request-scoped data map. Serves as both the source for retrieving the working HashMap (`getData`) and the target for setting the function code (`setFuncCode`). |
| 2 | `fixedText` | `String` | Service message identifier key used to extract the correct data map from `param`. Acts as the lookup key for `param.getData()` to retrieve the working `HashMap` instance. |
| 3 | `svcKeiNo` | `String` | Service contract number (サービス契約番号) — the unique identifier for the service contract line item being registered. Carries the primary business entity key for the progress registration. |
| 4 | `mskmDtlNo` | `String` | Application detail number (申込明細番号) — the detail line item number within the service order, identifying the specific sub-order for which progress is being registered. |
| 5 | `prgTkjk1` | `String` | Progress memo field 1 (進捗特記事項1) — free-text field capturing supplementary progress notes, such as equipment type context (e.g., "【Ｅ−ＰＯＮ計画巻取り】案件立ち上げ" — E-PON plan withdrawal project startup). |
| 6 | `prgTkjk2` | `String` | Progress memo field 2 (進捗特記事項2) — secondary free-text field for additional progress notes, such as equipment change context (e.g., "【ＧＥ−ＰＯＮ→ＧＥ−ＰＯＮ設備切替】" — GEPON to GEPON equipment swap). |
| 7 | `idoDiv` | `String` | Movement/transfer classification code (異動区分) — classifies the type of service contract change or transfer being performed. Affects downstream routing and processing logic in CBS layers. |

**External state / instance fields read:** None directly. The method operates entirely on parameters and local variables. However, it delegates to static utility methods that read system state:
- `JPCModelConstant.FUNC_CD_1` — Function code constant for "Check & Register" [-> `FUNC_CD_1` (JPCModelConstant.java)]
- `JFUStrConst.CD00647_3501` — Progress status constant with value "3501" meaning "Registered" [-> `CD00647_3501 = "3501"` (JFUStrConst.java:4515)]
- `JFUStrConst.CD00846_F3` — Movement reason code constant with value "F3" meaning "Reason for transfer" [-> `CD00846_F3 = "F3"` (JFUStrConst.java:5895)]
- `JCCBPCommon.getSysDateTimeStamp()` — System date/time stamp utility [calls `getSysDateTimeStamp` (JCCBPCommon)]

## 4. CRUD Operations / Called Services

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

All method calls within `setInMapPrgRegist` are classified below. The method is primarily a **data population utility** — it does not directly interact with databases. All its called methods are data access or utility methods in other components.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JFUBaseCC.setFuncCode` | - | - | Calls `setFuncCode` to set the function code FUNC_CD_1 (Check & Register) on the request parameter |
| R | `param.getData` | - | - | Retrieves the HashMap data map from the request parameter using the fixedText key |
| R | `JCCBPCommon.getSysDateTimeStamp` | JCCBPCommon | - | Calls `getSysDateTimeStamp` to obtain the current system date/time timestamp for the movement datetime field |
| - | `JFUBPCommon.setFuncCode` | JFUBPCommon | - | Calls `setFuncCode` in `JFUBPCommon` (delegated by the `setFuncCode` call on param) |

The method performs **zero direct database operations**. It constructs and populates an in-memory data structure (`HashMap`) that serves as the request payload for downstream CBS (Service Component) processing. The `setFuncCode` call sets a metadata flag on the parameter object for audit/trace purposes. The `getSysDateTimeStamp` call is a timestamping utility that reads system clock state.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `setFuncCode` [-], `getData` [R], `getSysDateTimeStamp` [R], `setFuncCode` [-].

The method is a private utility called internally by other components. It is not a public entry point. Below are all direct callers that invoke the 7-parameter signature of this method:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class:JFUSetVariTsushinKikiMskmCC | `Caller` -> `JFUSetVariTsushinKikiMskmCC.setInMapPrgRegist` (self-class, line 1623) | `setFuncCode [-]`, `param.getData [R]`, `getSysDateTimeStamp [R]` |
| 2 | Class:JFUEoMusenRtMskmCC | `Caller` -> `JFUEoMusenRtMskmCC.setInMapPrgRegist` (own overloaded method, line 601) | `setFuncCode [-]`, `param.getData [R]`, `getSysDateTimeStamp [R]` |

**Note:** Several other classes (`JFUFixipadCC`, `JFUSmartLinkAddCC`, `JFUHTPlanChgCC`, `JFUAdslNinshoIdPwdChgCC`, `JFUWribSvcKeiAutoAddCC`, `JFUFamipaRouterCC`) define their **own overloaded versions** of `setInMapPrgRegist` with different parameter signatures, but they are not callers of the `JFUSetVariTsushinKikiMskmCC` variant. Each class has its own private implementation.

The terminal operations this method ultimately produces are all **Read/No-Op** — it sets metadata (`setFuncCode`), retrieves data (`getData`), and captures a timestamp (`getSysDateTimeStamp`). The populated `inMap` is passed downstream to CBS consumers not traced within this method's scope.

## 6. Per-Branch Detail Blocks

This method has no conditional branches (no if/else, switch, loops). It executes linearly from start to end. All operations are sequential SET and CALL statements.

**Block 1** — [TOP-LEVEL] Function code setup (L2331)

> Sets the function code on the request parameter. FUNC_CD_1 corresponds to "Check & Register" mode, indicating this registration will perform validation followed by data persistence in downstream layers.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1)` // Set function code — Check and Register mode [-> `FUNC_CD_1` (JPCModelConstant.java)] |

**Block 2** — [TOP-LEVEL] User data retrieval (L2334)

> Retrieves the working HashMap from the request parameter object using the fixedText key. This map is the central data carrier for all subsequent progress registration fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap inMap = (HashMap)param.getData(fixedText)` // Retrieve working data map from request parameter |

**Block 3** — [TOP-LEVEL] Populate inMap with progress registration data (L2337–2351)

> Populates the inMap with 7 fields conforming to the `EKK1091D010CBSMsg` CBS message schema. These fields collectively identify the service contract, the detail line item, the progress status, the movement classification, the movement timestamp, and two free-text progress memo fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap.put(EKK1091D010CBSMsg.SVC_KEI_NO, svcKeiNo)` // Set service contract number [-> `SVC_KEI_NO = "svc_kei_no"` (EKK1091D010CBSMsg.java)] |
| 2 | SET | `inMap.put(EKK1091D010CBSMsg.PRG_STAT, JFUStrConst.CD00647_3501)` // Set progress status to "3501" (Registered) [-> `CD00647_3501 = "3501"` (JFUStrConst.java:4515)] |
| 3 | SET | `inMap.put(EKK1091D010CBSMsg.MSKM_DTL_NO, mskmDtlNo)` // Set application detail number [-> `MSKM_DTL_NO = "mskm_dtl_no"` (EKK1091D010CBSMsg.java)] |
| 4 | SET | `inMap.put(EKK1091D010CBSMsg.IDO_DIV, idoDiv)` // Set movement/transfer classification code [-> `IDO_DIV = "ido_div"` (EKK1091D010CBSMsg.java)] |
| 5 | SET | `inMap.put(EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getSysDateTimeStamp())` // Set movement datetime to current system timestamp |
| 6 | SET | `inMap.put(EKK1091D010CBSMsg.PRG_TKJK_1, prgTkjk1)` // Set progress memo field 1 [-> `PRG_TKJK_1 = "prg_tkjk_1"` (EKK1091D010CBSMsg.java)] |
| 7 | SET | `inMap.put(EKK1091D010CBSMsg.PRG_TKJK_2, prgTkjk2)` // Set progress memo field 2 [-> `PRG_TKJK_2 = "prg_tkjk_2"` (EKK1091D010CBSMsg.java)] |

**Block 4** — [TOP-LEVEL] Create child list for movement reason detail (L2353–2360)

> Constructs a child list (`EKK1091D010CBSMsg1List`) containing a single movement reason record. The movement reason code is hardcoded to "F3" (reason for transfer) with no memo, indicating this is a standard automated transfer event. The list is then attached to the inMap under the `EKK1091D010CBSMSG1LIST` key, establishing a parent-child relationship where the progress registration header contains its associated movement reason details.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList list = new ArrayList()` // Create empty list for movement reason details |
| 2 | SET | `HashMap childMap = new HashMap()` // Create child map for a single movement reason record |
| 3 | SET | `childMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, JFUStrConst.CD00846_F3)` // Set movement reason code to "F3" (Reason for transfer) [-> `CD00846_F3 = "F3"` (JFUStrConst.java:5895), [-> `IDO_RSN_CD = "ido_rsn_cd"` (EKK1091D010CBSMsg1List.java)] |
| 4 | SET | `childMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, null)` // Set movement reason memo to null [-> `IDO_RSN_MEMO = "ido_rsn_memo"` (EKK1091D010CBSMsg1List.java)] |
| 5 | SET | `list.add(childMap)` // Add the child map to the list |
| 6 | SET | `inMap.put(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, list)` // Attach movement reason detail list to inMap [-> `EKK1091D010CBSMSG1LIST = "EKK1091D010CBSMsg1List"` (EKK1091D010CBSMsg.java:57)] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number (サービス契約番号) — the unique identifier for a service contract line item in the provisioning system. Serves as the primary key for linking progress records to specific service orders. |
| `mskm_dtl_no` | Field | Application detail number (申込明細番号) — the detail line item number within a service order, identifying the specific sub-order or product line for which progress is being registered. |
| `ido_div` | Field | Movement/transfer classification code (異動区分) — classifies the type of service contract change (e.g., new installation, transfer, cancellation). Used by downstream CBS layers to route processing appropriately. |
| `ido_dtm` | Field | Movement datetime (異動年月日時分秒) — the exact timestamp when the service contract movement/transfer occurred, captured as the system date/time stamp at registration time. |
| `prg_stat` | Field | Progress status (進捗ステータス) — indicates the current state of the progress registration. Value "3501" means the progress has been registered/recorded. |
| `prg_tkjk_1` | Field | Progress memo field 1 (進捗特記事項1) — free-text supplementary field for progress notes, often used to capture equipment type or project context. |
| `prg_tkjk_2` | Field | Progress memo field 2 (進捗特記事項2) — secondary free-text field for additional progress details, such as equipment change descriptions. |
| `ido_rsn_cd` | Field | Movement reason code (異動理由コード) — the code explaining why a service contract movement occurred. Value "F3" indicates a standard reason for transfer. |
| `ido_rsn_memo` | Field | Movement reason memo (異動理由メモ) — free-text comment field for the movement reason, typically null for automated events. |
| EKK1091D010CBSMsg | Schema | CBS Message class for service contract progress registration — defines the field layout for the parent progress registration data payload, including service contract number, detail number, progress status, movement classification, and movement reason detail list. |
| EKK1091D010CBSMsg1List | Schema | CBS Message child list class for movement reason details — defines the field layout for child records under the progress registration, containing the movement reason code and memo. |
| FUNC_CD_1 | Constant | Function code "1" — Check & Register mode (チェック＆登録). Indicates the operation performs validation checks before registering/persisting data. |
| CD00647_3501 | Constant | Value "3501" — Progress status code meaning "Registered" (進捗登録). Set by this method to indicate the progress milestone has been recorded. |
| CD00846_F3 | Constant | Value "F3" — Movement reason code meaning "Reason for transfer" (異動理由). Hardcoded in this method to indicate a standard automated transfer event. |
| PRG_STAT | Field | Progress status identifier key (進捗ステータス) — the map key constant for storing the progress status code in the inMap data carrier. |
| SVC_KEI_NO | Field | Service contract number identifier key (サービス契約番号) — the map key constant for storing the service contract number in the inMap data carrier. |
| setFuncCode | Method | Sets the function code metadata on the request parameter. Used for audit trail and to indicate the type of operation (Check & Register). |
| getSysDateTimeStamp | Method | Utility method that returns the current system date/time as a formatted string. Used to timestamp the movement datetime field. |
| CC | Acronym | Common Component — a layer of shared utility classes providing cross-cutting functionality (data mapping, constant definitions, timestamping) used by multiple screen and business classes. |
| CBS | Acronym | Center Business System — the backend service component layer that processes service order data and persists it to the database. |
| inMap | Field | In-map data carrier — a HashMap used within the request flow to hold CBS message fields for downstream processing and registration. |
| fixedText | Parameter | Service message key — used as the lookup key to retrieve the correct data map from the request parameter object. |
