# Business Logic — KKW02301SF01DBean.listKoumokuIds() [33 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02301SF.KKW02301SF01DBean` |
| Layer | Utility / Data Bean (Webview layer — data carrier for JSP view rendering) |
| Module | `KKW02301SF` (Package: `eo.web.webview.KKW02301SF`) |

## 1. Role

### KKW02301SF01DBean.listKoumokuIds()

This method is a static factory that returns a predefined, ordered list of display column labels used on the Option Service Contract data grid screen. It acts as the metadata provider for the web view — specifically, it enumerates every visible field name that should appear as a column header in the "Option Service Contract" (オプションサービス契約) tab of the KKW02301SF01 screen. The method implements the **Builder** design pattern: it constructs an `ArrayList<String>` by sequentially appending literal Japanese strings, each representing a business entity attribute. The ordered list is consumed by the parent bean's dispatcher method `KKW02301SFBean.listKoumokuIds(String key)` when the key parameter equals "オプションサービス契約", which delegates to this method. In the larger system, this is a shared, static utility called by multiple DBean variants (KKW02301SF01D through KKW02301SF14D) and remote viewer beans (FUW* series) to populate dropdowns, table headers, and validation lookups without any database access or conditional logic — it is a pure data supplier with a fixed output determined entirely by the screen's business requirements at the time of the IT1-2014-0000122 and OM-2014-0001976 enhancement projects.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    STEP1["Create ArrayList<String> koumokuList"]
    STEP2["Add: Option Service Contract Number"]
    STEP3["Add: Option Service Contract Status"]
    STEP4["Add: Option Service Contract Status Name"]
    STEP5["Add: Option Service Code"]
    STEP6["Add: Option Service Code Name"]
    STEP7["Add: Option Content"]
    STEP8["Add: Service Start Year/Month/Day/Time/Min/Sec"]
    STEP9["Add: Estimated Application Start Date"]
    STEP10["Add: Service Usage Start Desired Date"]
    STEP11["Add: Service End Year/Month/Day/Time/Min/Sec"]
    STEP12["Add: Usage Start Date"]
    STEP13["Add: Application Number"]
    STEP14["Add: Application Detail Number"]
    STEP15["Add: Display Flag"]
    STEP16["Add: Sub-Option Service Contract Number"]
    STEP17["Add: Sub-Option Service Code"]
    STEP18["Add: Usage End Estimated Date"]
    STEP19["Add: Display Service Provision Start Date"]
    STEP20["Add: Fault Provider Code"]
    STEP21["Add: Max Option Services"]
    STEP22["Add: Recovery Period"]
    STEP23["Add: Service Billing Start Date"]
    STEP24["Add: Service Billing End Date"]
    STEP25["Add: Cost Code"]
    STEP26["Add: Plan Code"]
    STEP27["Return koumokuList"]
    END(["End"])

    START --> STEP1
    STEP1 --> STEP2
    STEP2 --> STEP3
    STEP3 --> STEP4
    STEP4 --> STEP5
    STEP5 --> STEP6
    STEP6 --> STEP7
    STEP7 --> STEP8
    STEP8 --> STEP9
    STEP9 --> STEP10
    STEP10 --> STEP11
    STEP11 --> STEP12
    STEP12 --> STEP13
    STEP13 --> STEP14
    STEP14 --> STEP15
    STEP15 --> STEP16
    STEP16 --> STEP17
    STEP17 --> STEP18
    STEP18 --> STEP19
    STEP19 --> STEP20
    STEP20 --> STEP21
    STEP21 --> STEP22
    STEP22 --> STEP23
    STEP23 --> STEP24
    STEP24 --> STEP25
    STEP25 --> STEP26
    STEP26 --> STEP27
    STEP27 --> END
```

**Note:** This method has no conditional branches. It follows a strictly linear execution path: create an empty `ArrayList<String>`, sequentially add 25 Japanese label strings, and return. The linear flow is intentionally flat — each `add` call corresponds to one column in the Option Service Contract data table.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a static method with no parameters. It requires no input to produce its fixed output list. |

The method does not read any instance fields or external state — it is entirely self-contained and deterministic. Its sole output is the ordered list of 25 field labels.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `listKoumokuIds()` | - | - | Read (View Metadata) — Returns static column labels for the Option Service Contract screen. No database or service component interaction occurs. |

This method performs zero database reads, creates, updates, or deletes. It is a pure presentation-layer metadata supplier.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02301SF | `KKW02301SFBean.listKoumokuIds(key)` with key="オプションサービス契約" -> `KKW02301SF01DBean.listKoumokuIds()` | None (pure metadata, no CRUD) |

The primary caller is `KKW02301SFBean.listKoumokuIds(String key)` at line 3793. When the dispatcher receives the key `"オプションサービス契約"` (Option Service Contract), it delegates to this method. No further downstream calls exist within this method — it returns directly.

## 6. Per-Branch Detail Blocks

This method has no control flow branching (no if/else, switch, loops, or conditional logic). It is a single linear block.

**Block 1** — [SEQUENTIAL] (L1450)

> Create the list and populate it with Option Service Contract display labels in the exact order the columns should appear on the screen.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>();` // Create empty list [L1450] |
| 2 | EXEC | `koumokuList.add("オプションサービス契約番号")` // Add: Option Service Contract Number [L1451] |
| 3 | EXEC | `koumokuList.add("オプションサービス契約ステータス")` // Add: Option Service Contract Status [L1452] |
| 4 | EXEC | `koumokuList.add("オプションサービス契約ステータス名")` // Add: Option Service Contract Status Name [L1453] |
| 5 | EXEC | `koumokuList.add("オプションサービスコード")` // Add: Option Service Code [L1454] |
| 6 | EXEC | `koumokuList.add("オプションサービスコード名")` // Add: Option Service Code Name [L1455] |
| 7 | EXEC | `koumokuList.add("オプション内容")` // Add: Option Content [L1456] |
| 8 | EXEC | `koumokuList.add("サービス開始年月日时分秒")` // Add: Service Start Year/Month/Day Time/Min/Sec [L1457] |
| 9 | EXEC | `koumokuList.add("予約適用開始希望年月日")` // Add: Estimated Application Start Date [L1458] |
| 10 | EXEC | `koumokuList.add("サービス利用開始希望年月日")` // Add: Service Usage Start Desired Date (OM-2014-0001976 addition) [L1460] |
| 11 | EXEC | `koumokuList.add("サービス終了年月日时分秒")` // Add: Service End Year/Month/Day Time/Min/Sec [L1462] |
| 12 | EXEC | `koumokuList.add("利用開始日")` // Add: Usage Start Date [L1463] |
| 13 | EXEC | `koumokuList.add("申請番号")` // Add: Application Number [L1464] |
| 14 | EXEC | `koumokuList.add("申請明細番号")` // Add: Application Detail Number [L1465] |
| 15 | EXEC | `koumokuList.add("表示フラグ")` // Add: Display Flag [L1466] |
| 16 | EXEC | `koumokuList.add("サブオプションサービス契約番号")` // Add: Sub-Option Service Contract Number [L1467] |
| 17 | EXEC | `koumokuList.add("サブオプションサービスコード")` // Add: Sub-Option Service Code [L1468] |
| 18 | EXEC | `koumokuList.add("利用終了予定日")` // Add: Usage End Estimated Date [L1469] |
| 19 | EXEC | `koumokuList.add("表示用サービス提供開始年月日")` // Add: Display Service Provision Start Date [L1470] |
| 20 | EXEC | `koumokuList.add("フェムトセル事業者コード")` // Add: Femtocell Provider Code [L1471] |
| 21 | EXEC | `koumokuList.add("最大オプションサービス数")` // Add: Max Option Services [L1472] |
| 22 | EXEC | `koumokuList.add("回復可能期間")` // Add: Recovery Period [L1473] |
| 23 | EXEC | `koumokuList.add("サービス課金開始年月日")` // Add: Service Billing Start Date [L1474] |
| 24 | EXEC | `koumokuList.add("サービス課金終了年月日")` // Add: Service Billing End Date [L1475] |
| 25 | EXEC | `koumokuList.add("料金コースコード")` // Add: Cost Code (IT1-2014-0000122 addition) [L1477] |
| 26 | EXEC | `koumokuList.add("料金プランコード")` // Add: Plan Code (IT1-2014-0000122 addition) [L1478] |
| 27 | RETURN | `return koumokuList;` // Return the populated list [L1480] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `koumokuList` | Field | Item/column list — the ArrayList holding display label strings for the Option Service Contract screen |
| `koumoku` (項目) | Japanese term | Item / field / column — refers to a displayable data column on a screen |
| オプションサービス契約番号 | Field | Option Service Contract Number — the unique identifier for an option service contract |
| オプションサービス契約ステータス | Field | Option Service Contract Status — the current state of the contract (e.g., active, cancelled) |
| オプションサービス契約ステータス名 | Field | Option Service Contract Status Name — human-readable name of the status |
| オプションサービスコード | Field | Option Service Code — internal code identifying the option service type |
| オプションサービスコード名 | Field | Option Service Code Name — human-readable name of the option service code |
| オプション内容 | Field | Option Content — descriptive content/details of the option service |
| サービス開始年月日时分秒 | Field | Service Start Date/Time — the year, month, day, hour, minute, and second when the service activation begins |
| 予約適用開始希望年月日 | Field | Estimated Application Start Date — the desired start date for the reserved service application |
| サービス利用開始希望年月日 | Field | Service Usage Start Desired Date — the customer's desired start date for service usage (added via OM-2014-0001976) |
| サービス終了年月日时分秒 | Field | Service End Date/Time — the year, month, day, hour, minute, and second when the service terminates |
| 利用開始日 | Field | Usage Start Date — the actual date service usage begins |
| 申請番号 | Field | Application Number — the unique identifier for the service application |
| 申請明細番号 | Field | Application Detail Number — the sub-identifier within an application |
| 表示フラグ | Field | Display Flag — a flag controlling whether this item is shown on the screen |
| サブオプションサービス契約番号 | Field | Sub-Option Service Contract Number — identifier for a sub-service contract |
| サブオプションサービスコード | Field | Sub-Option Service Code — code identifying a sub-service contract |
| 利用終了予定日 | Field | Usage End Estimated Date — the planned end date for service usage |
| 表示用サービス提供開始年月日 | Field | Display Service Provision Start Date — the date used for display purposes for service provision start |
| フェムトセル事業者コード | Field | Femtocell Provider Code — the code identifying the femtocell service provider (added via IT1-2014-0000122) |
| 最大オプションサービス数 | Field | Max Option Services — the maximum number of option services allowed |
| 回復可能期間 | Field | Recovery Period — the time window during which service can be recovered/restored |
| サービス課金開始年月日 | Field | Service Billing Start Date — the date when billing for the service begins |
| サービス課金終了年月日 | Field | Service Billing End Date — the date when billing for the service ends |
| 料金コースコード | Field | Cost Code — the code identifying the pricing/course plan (added via IT1-2014-0000122) |
| 料金プランコード | Field | Plan Code — the code identifying the pricing plan (added via IT1-2014-0000122) |
| KKW02301SF | Module | The web screen module for Option Service Contract management — a telecom order fulfillment screen |
| DBean | Acronym | Data Bean — a view-layer data carrier class that supplies display data to JSP pages |
| OM-2014-0001976 | Change ID | Enhancement project code for adding "Service Usage Start Desired Date" column |
| IT1-2014-0000122 | Change ID | Enhancement project code for adding the Fiber Optic Select Option Pack (adding Cost Code and Plan Code columns) |
| 光電気レコメンドオプションパック | Business term | Fiber Optic Select Option Pack — a bundled option service package for fiber-optic services |
