# Business Logic — KKW02516SF02DBean.listKoumokuIds() [6 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16801SF.KKW02516SF02DBean` |
| Layer | Data Bean (Webview / View Layer — DBean in X33F framework) |
| Module | `KKA16801SF` (Package: `eo.web.webview.KKA16801SF`) |

## 1. Role

### KKW02516SF02DBean.listKoumokuIds()

This method serves as the **item metadata provider** for the "Movement Reason List" (`異動理由リスト`) data type within the KKW02516 screen — a remote support plan update and billing screen operated by telecom customer service agents. Specifically, it returns the ordered list of column headers (displayed as SelectItem labels in the web UI) for a data-type-bean-based editable list component that captures movement reasons — i.e., the reasons why a service contract record was modified, transferred, or otherwise changed.

The method implements the **factory list pattern** used throughout the X33F (Fujitsu Futurity) framework: static methods on DBean classes that return a typed `ArrayList<String>` of display labels, enabling the parent bean (`KKW02516SFBean`) to dynamically populate form columns without hardcoding field names. It has no conditional branches — it always returns the same fixed pair of labels, making it a pure data-provider utility.

In the larger system, this method is a shared component of the **KKA16801SF module**, which is part of the remote support plan management and billing update workflow. Agents use this screen to review, modify, and confirm remote support service plans and associated billing details; the "Movement Reason" list is one of several editable sub-lists (alongside "Customer Contract Succession List") that capture audit trail metadata for each change made.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    CREATE_AL["Create ArrayList<String> koumokuList"]
    ADD_1["Add movement reason code"]
    ADD_2["Add movement reason memo"]
    RETURN_AL["Return koumokuList"]

    START --> CREATE_AL
    CREATE_AL --> ADD_1
    ADD_1 --> ADD_2
    ADD_2 --> RETURN_AL
```

**Processing Description:**
The method performs a simple sequential construction of a field-label list:
1. Creates a new `ArrayList<String>` to hold the column header strings.
2. Appends the label for the "Movement Reason Code" field (`異動理由コード`) — the system code identifying the type of movement/change.
3. Appends the label for the "Movement Reason Memo" field (`異動理由メモ`) — a free-text memo field for agents to explain the movement.
4. Returns the completed list of 2 elements.

There are no conditional branches, no external calls, and no constant resolution required. The method is a deterministic pure function.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a static method with no parameters. It always returns the same fixed set of column headers for the "Movement Reason List" data type. |

**No external state or instance fields are read by this method.** It operates entirely on local variables and produces a self-contained return value.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| — | (none) | — | — | No database operations, service calls, or CRUD endpoints. This method constructs a pure in-memory display label list. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02516 (koptWebA) | `KKW02516SFBean.listKoumokuIds(key)` where `key.equals("異動理由リスト")` -> `KKW02516SF02DBean.listKoumokuIds()` | None (no downstream calls) |
| 2 | Screen:KKW02516 (koptWebB) | `KKW02516SFBean.listKoumokuIds(key)` where `key.equals("異動理由リスト")` -> `KKW02516SF02DBean.listKoumokuIds()` | None (no downstream calls) |

**Caller Context:**
The method is invoked by the parent bean's `listKoumokuIds(String key)` method (present in both `koptWebA` and `koptWebB` builds of `KKW02516SFBean`) when the incoming `key` parameter matches the string `"異動理由リスト"` (Movement Reason List). This is part of a larger `if/else-if` dispatch chain where different data-type-bean lists are routed to their respective DBean classes.

## 6. Per-Branch Detail Blocks

**Block 1** — [NEW/ALLOCATION] `ArrayList<String> koumokuList = new ArrayList<String>()` (L228)

> Creates the mutable list that will hold the two column header strings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>()` // Initialize empty list to hold display labels |

**Block 2** — [METHOD CALL / ADD] (L229)

> Appends the first column header: "異動理由コード" (Movement reason code).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("異動理由コード")` // Add "Movement reason code" label to list [-> Japanese: 異動 = movement/change, 理由 = reason, コード = code] |

**Block 3** — [METHOD CALL / ADD] (L230)

> Appends the second column header: "異動理由メモ" (Movement reason memo).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("異動理由メモ")` // Add "Movement reason memo" label to list [-> Japanese: 異動 = movement/change, 理由 = reason, メモ = memo] |

**Block 4** — [RETURN] (L231)

> Returns the completed list to the caller.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return koumokuList` // Returns ArrayList with 2 elements: ["異動理由コード", "異動理由メモ"] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `異動理由コード` | Field Label (Japanese) | Movement Reason Code — the system-defined code that classifies the type of change or transfer made to a service contract record |
| `異動理由メモ` | Field Label (Japanese) | Movement Reason Memo — a free-text field allowing the operator to provide additional context for why a record was modified |
| `異動理由リスト` | Field Label (Japanese) | Movement Reason List — the data-type-bean identifier used by the parent bean to dispatch to this DBean for list metadata |
| KKW02516 | Screen ID | Remote Support Plan Update/Billing screen — the primary agent-facing UI for managing remote support service plans and billing adjustments |
| KKA16801SF | Module ID | Remote Support Plan Management module — the web application module containing screen data beans for the KKW02516 screen |
| DBean | Technical term | Data Bean — a view-layer data-holding class in the X33F framework that holds form input fields and provides metadata (column headers, data types, validation rules) for UI rendering |
| X33F | Technical term | Fujitsu Futurity Web 33 Framework — an enterprise Java web application framework used by K-Opticom for building agent-facing telecom service management screens |
| SelectItem | Technical term | JSF UI component type (`javax.faces.model.SelectItem`) — the framework's representation of dropdown options and table column headers |
| koptWebA / koptWebB | Technical term | Two deployment builds of the K-Opticom web platform — identical logic packaged for different server environments |
| ANK-2694-00-00 | Change ticket | WorkTOPS project migration ticket — tracked the migration of K-Opticom modules from koptWebB to koptWebA in 2015 |
