# Business Logic — KKW02701SF02DBean.listKoumokuIds() [17 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16701SF.KKW02701SF02DBean` |
| Layer | Utility (Web View Data Bean) |
| Module | `KKA16701SF` (Package: `eo.web.webview.KKA16701SF`) |

## 1. Role

### KKW02701SF02DBean.listKoumokuIds()

This method serves as a **field label registry** for a course history list view within the telecom order management system. It returns a pre-populated, ordered `ArrayList<String>` containing human-readable Japanese display labels for each column shown in the Course History List screen component. These labels correspond one-to-one with the data columns in the course history table that users interact with when reviewing historical course applications and changes.

The method implements a **static factory / data provider** pattern: it is a static method that creates and returns a new `ArrayList` populated with 11 fixed labels. The returned list is consumed by the framework's data bean routing logic (`KKW02701SFBean.listKoumokuIds(String key)`) when the caller specifies the key `"Course History List"` (Japanese: `コース履歴一覧リスト`), enabling the UI framework to dynamically render table column headers.

Its role in the larger system is as a **shared display metadata provider**. The same pattern is used across multiple `*DBean` classes in the codebase (e.g., `KKW02701SF01DBean`, `FUW00912SF01DBean`, `FUW00959SF*`), providing a consistent, maintainable mechanism for declaring what columns appear in list-based screen components. This is part of the X31 web framework convention where data beans supply column metadata to the view layer.

The method has no conditional branches - it follows a simple sequential flow: create a new list, add 11 item labels in display order, and return. Two additional labels ("New Charge Course Code" and "Old Charge Course Code") were added via ticket ANK-4592-00-00 to support charge course comparison functionality in the course history display.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    INIT["Create new ArrayList<String> koumokuList"]
    ITEM1["Add Service Contract Content Number"]
    ITEM2["Add Generation Registration Timestamp"]
    ITEM3["Add Transfer Reservation Number"]
    ITEM4["Add Application Detail Number"]
    ITEM5["Add Status"]
    ITEM6["Add Course Application Date"]
    ITEM7["Add Course Name"]
    ITEM8["Add Mansion ID"]
    ITEM9["Add Mansion Name"]
    ITEM10["Add New Charge Course Code"]
    ITEM11["Add Old Charge Course Code"]
    RETURN["Return koumokuList"]
    START --> INIT
    INIT --> ITEM1
    ITEM1 --> ITEM2
    ITEM2 --> ITEM3
    ITEM3 --> ITEM4
    ITEM4 --> ITEM5
    ITEM5 --> ITEM6
    ITEM6 --> ITEM7
    ITEM7 --> ITEM8
    ITEM8 --> ITEM9
    ITEM9 --> ITEM10
    ITEM10 --> ITEM11
    ITEM11 --> RETURN
```

**Processing flow summary:**

1. Initialize a new `ArrayList<String>` named `koumokuList` (item list).
2. Sequentially add 11 Japanese display labels representing the columns of the Course History List screen.
3. Items 1 through 9 represent core course/contract identification and metadata fields.
4. Items 10 and 11 (marked with ticket reference ANK-4592-00-00) represent new and old charge course codes, added to support price comparison in the course history view.
5. Return the populated list to the caller.

No conditional branches, loops, or external calls exist in this method. It is a pure data-provider method.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no parameters. It is a static factory method that returns a fixed set of display labels. |

No instance fields or external state is read by this method. It operates purely on local variables.

## 4. CRUD Operations / Called Services

This method performs **no CRUD operations** and calls **no service components** (SC), CBS, or database layer. It is a pure in-memory data assembly method that constructs and returns a list of display label strings.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| N/A | N/A | N/A | N/A | No database or service layer interaction - this method is a UI metadata provider only. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02701SF (KKW02701SFBean) | `KKW02701SFBean.listKoumokuIds(key)` -> `KKW02701SF02DBean.listKoumokuIds()` | None - returns display labels only |

**Additional callers in related modules:**

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 2 | Screen:KKW02701SF (KKW02701SFBean, koptWebB) | `KKW02701SFBean.listKoumokuIds(key)` -> `KKW02701SF02DBean.listKoumokuIds()` | None |

The method is invoked when the framework's data bean routing logic receives the key `"Course History List"` (Japanese: `コース履歴一覧リスト`) to populate column headers for the course history list table.

## 6. Per-Branch Detail Blocks

Since this method contains no conditional branches, loops, or multi-branch control flow, the entire method is a single linear block:

**Block 1** — [SEQUENTIAL] (no branches) (L762)

> Create and populate a list of display labels for the Course History List screen. The 11 items correspond to the column headers shown to users when viewing the course history list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>();` // Initialize new empty list |
| 2 | ADD | `koumokuList.add("サービス契約内容番号");` // Add "Service Contract Content Number" [L763] |
| 3 | ADD | `koumokuList.add("世代登録年月日时分秒");` // Add "Generation Registration Timestamp" [L764] |
| 4 | ADD | `koumokuList.add("異動予約番号");` // Add "Transfer Reservation Number" [L765] |
| 5 | ADD | `koumokuList.add("申込明細番号");` // Add "Application Detail Number" [L766] |
| 6 | ADD | `koumokuList.add("状態");` // Add "Status" [L767] |
| 7 | ADD | `koumokuList.add("コース適用年月日");` // Add "Course Application Date" [L768] |
| 8 | ADD | `koumokuList.add("コース名");` // Add "Course Name" [L769] |
| 9 | ADD | `koumokuList.add("マンションID");` // Add "Mansion ID" [L770] |
| 10 | ADD | `koumokuList.add("マンション名");` // Add "Mansion Name" [L771] |
| 11 | ADD | `koumokuList.add("新料金コースコード");` // ANK-4592-00-00 ADD: Add "New Charge Course Code" [L773] |
| 12 | ADD | `koumokuList.add("旧料金コースコード");` // ANK-4592-00-00 ADD: Add "Old Charge Course Code" [L774] |
| 13 | RETURN | `return koumokuList;` // Return the populated list [L776] |

**Note:** Items 11-12 are enclosed between comment markers `ANK-4592-00-00 ADD START` and `ANK-4592-00-00 ADD END`, indicating they were added by change request ticket ANK-4592-00-00 to support new/old charge course code display in the course history list.

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `サービス契約内容番号` | Field | Service Contract Content Number - unique identifier for a service contract line item in the order management system |
| `世代登録年月日时分秒` | Field | Generation Registration Timestamp - the date and time when this version of the contract record was registered (includes year, month, day, hour, minute, second) |
| `異動予約番号` | Field | Transfer Reservation Number - reservation ID for a service transfer or migration operation |
| `申込明細番号` | Field | Application Detail Number - unique identifier for an order application detail record |
| `状態` | Field | Status - the current state of the record (e.g., active, cancelled, pending) |
| `コース適用年月日` | Field | Course Application Date - the date when a specific service course was applied to the contract |
| `コース名` | Field | Course Name - the human-readable name of the service course or package |
| `マンションID` | Field | Mansion ID - identifier for a multi-unit residential building (mansion/apartment complex) in the telecom service area |
| `マンション名` | Field | Mansion Name - the name of the multi-unit residential building |
| `新料金コースコード` | Field | New Charge Course Code - the service course code after a rate or plan change (added in ANK-4592-00-00) |
| `旧料金コースコード` | Field | Old Charge Course Code - the service course code before a rate or plan change (added in ANK-4592-00-00) |
| `koumokuList` | Field | Item list - local variable holding the ArrayList of display labels; "koumoku" (項目) means "items" or "columns" in Japanese |
| KKW02701SF | Module | Course History and Customer Contract Inheritance screen module - handles course history listing and customer contract succession operations |
| KKW02701SF02DBean | Class | Data bean for the Course History List view - provides column metadata and data instance management |
| ANK-4592-00-00 | Ticket | Change request ticket - added new/old charge course code display columns to the course history list |
| Course History List | Business term | The screen view (Japanese: コース履歴一覧リスト) that displays historical course applications and changes for a customer |
| X31 | Framework | Fuji X31 web application framework - the enterprise web framework used to build this system |
| Data Bean | Pattern | A JavaBean that holds and manages display data for a screen component, including column metadata, list data, and form fields |