# Business Logic — FUW07101SF01DBean.listKoumokuIds() [21 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW07101SF.FUW07101SF01DBean` |
| Layer | Web View DBean (Data Bean) — Presentation layer data transfer object |
| Module | `FUW07101SF` (Package: `eo.web.webview.FUW07101SF`) |

## 1. Role

### FUW07101SF01DBean.listKoumokuIds()

This method serves as a **metadata provider** for the data type bean `FUW07101SF01DBean`, returning the list of 17 human-readable item name labels that correspond to the fields of an equipment-type provision pricing plan entity. Its primary business purpose is to supply the column headers or field labels for UI rendering — specifically for the "Equipment Provision Pricing Plan Equipment Type Candidate List" (機器提供料金プラン別機器型式候補リスト) screen, which presents available equipment models associated with specific pricing plans. The method implements a **static factory pattern**, returning a pre-defined, immutable-order list of field names that ensures consistent presentation of the same data structure across different screens and export operations. As a shared utility method (declared `static`), it is called by the parent screen bean `FUW07101SFBean.listKoumokuIds(String key)` when the dispatch key matches "機器提供料金プラン別機器型式候補リスト". Since this bean is a pure data holder with no conditional branches or external method calls, its role is purely declarative — providing the schema of the domain entity in user-facing label form for dropdowns, tables, and export templates.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds() Entry"])
    CREATE["Create ArrayList\<String\> koumokuList"]
    ADD1["Add: 宅内機器型式コード"]
    ADD2["Add: 機器提供種別コード"]
    ADD3["Add: 機器提供種別コード名称"]
    ADD4["Add: 販売種別コード"]
    ADD5["Add: 販売種別コード名称"]
    ADD6["Add: 料金コースコード"]
    ADD7["Add: 料金コースコード名称"]
    ADD8["Add: 機器型式対象料金コース適用開始年月日"]
    ADD9["Add: 機器型式対象料金コース適用終了年月日"]
    ADD10["Add: 登録年月日時刻秒"]
    ADD11["Add: 登録オペレーターアカウント"]
    ADD12["Add: 更新年月日時刻秒"]
    ADD13["Add: 更新オペレーターアカウント"]
    ADD14["Add: 削除年月日時刻秒"]
    ADD15["Add: 削除オペレーターアカウント"]
    ADD16["Add: 無効フラグ"]
    ADD17["Add: 無効フラグ名称"]
    RETURN["Return koumokuList"]
    END(["listKoumokuIds() Exit"])

    START --> CREATE
    CREATE --> ADD1
    ADD1 --> ADD2
    ADD2 --> ADD3
    ADD3 --> ADD4
    ADD4 --> ADD5
    ADD5 --> ADD6
    ADD6 --> ADD7
    ADD7 --> ADD8
    ADD8 --> ADD9
    ADD9 --> ADD10
    ADD10 --> ADD11
    ADD11 --> ADD12
    ADD12 --> ADD13
    ADD13 --> ADD14
    ADD14 --> ADD15
    ADD15 --> ADD16
    ADD16 --> ADD17
    ADD17 --> RETURN
    RETURN --> END
```

**Processing Description:**

1. **Initialization** (L935): Creates a new `ArrayList<String>` to hold the item name labels.
2. **Sequential Population** (L936–L951): Adds 17 Japanese string literals in a fixed order, each representing a field label for the equipment type provision pricing plan bean. The fields are ordered logically: equipment identification fields first (宅内機器型式コード, 機器提供種別コード), then sales/pricing fields (販売種別コード, 料金コースコード), followed by timestamp fields (登録/更新/削除年月日時刻秒), audit fields (登録/更新/削除オペレーターアカウント), and finally lifecycle flags (無効フラグ).
3. **Return** (L951): Returns the populated list.

No constants are referenced in this method. No conditional branches, loops, or external calls.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a static method with no parameters. |
| - | (implicit) | - | Returns the predefined list of 17 field labels for the equipment type provision pricing plan entity. |

**Note:** This method takes no parameters and reads no instance fields. It is entirely self-contained, depending only on the `ArrayList` standard library class.

## 4. CRUD Operations / Called Services

This method performs **no database operations, no service calls, and no external I/O**. It is a pure data factory method that constructs and returns an in-memory list.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| — | `new ArrayList<String>()` | — | — | In-memory list creation (no DB access) |
| — | `koumokuList.add(...)` | — | — | In-memory list population (no DB access) |

**Classification:** This method is a **UI metadata provider** with zero persistence operations.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:FUW07101SF | `FUW07101SFBean.listKoumokuIds("機器提供料金プラン別機器型式候補リスト")` → `FUW07101SF01DBean.listKoumokuIds()` | `listKoumokuIds() [R] Equipment Type Provision Pricing Plan fields` |

**Notes on callers:**
- The sole caller is `FUW07101SFBean.listKoumokuIds(String key)` at line 6049 of `FUW07101SFBean.java`. It dispatches to `FUW07101SF01DBean.listKoumokuIds()` when the `key` parameter equals "機器提供料金プラン別機器型式候補リスト" (Equipment Provision Pricing Plan Equipment Type Candidate List).
- This method is part of a broader family: all `FUW07101SF0*DBean` classes implement the same `listKoumokuIds()` pattern, providing item name lists for their respective data type beans (01–18DBean). The parent bean dispatches to the appropriate DBean based on the item key.
- This pattern is shared across many modules in the codebase (e.g., `FUW00912SF`, `FUW00926SF`, `FUW00959SF`, `FUW00964SF`), indicating a standard screen data bean convention.

## 6. Per-Branch Detail Blocks

This method contains **no conditional branches, loops, or nested blocks**. It is a linear sequence of operations. The blocks below represent each sequential step.

**Block 1** — [SET] `(ArrayList creation) (L935)`

> Create an empty ArrayList to hold the item name labels.

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

**Block 2** — [EXEC] `(Add item name labels 1–4: Equipment identification) (L936–L939)`

> Add the first four field labels identifying the equipment and its provision type.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("宅内機器型式コード")` // Add: Indoor Equipment Type Code [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("機器提供種別コード")` // Add: Equipment Provision Type Code [-> Japanese label] |
| 3 | EXEC | `koumokuList.add("機器提供種別コード名称")` // Add: Equipment Provision Type Code Name [-> Japanese label] |
| 4 | EXEC | `koumokuList.add("販売種別コード")` // Add: Sales Type Code [-> Japanese label] |

**Block 3** — [EXEC] `(Add item name labels 5–7: Sales and pricing) (L940–L942)`

> Add sales type name and pricing course identifiers.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("販売種別コード名称")` // Add: Sales Type Code Name [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("料金コースコード")` // Add: Pricing Course Code [-> Japanese label] |
| 3 | EXEC | `koumokuList.add("料金コースコード名称")` // Add: Pricing Course Code Name [-> Japanese label] |

**Block 4** — [EXEC] `(Add item name labels 8–9: Pricing course validity period) (L943–L944)`

> Add the start and end dates for when the pricing course applies to the equipment type.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("機器型式対象料金コース適用開始年月日")` // Add: Equipment Type Target Pricing Course Application Start Date [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("機器型式対象料金コース適用終了年月日")` // Add: Equipment Type Target Pricing Course Application End Date [-> Japanese label] |

**Block 5** — [EXEC] `(Add item name labels 10–11: Registration audit) (L945–L946)`

> Add the registration timestamp and registering operator fields.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("登録年月日時刻秒")` // Add: Registration Date/Time (Year/Month/Day/Hours/Minutes/Seconds) [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("登録オペレーターアカウント")` // Add: Registration Operator Account [-> Japanese label] |

**Block 6** — [EXEC] `(Add item name labels 12–13: Update audit) (L947–L948)`

> Add the update timestamp and updating operator fields.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("更新年月日時刻秒")` // Add: Update Date/Time (Year/Month/Day/Hours/Minutes/Seconds) [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("更新オペレーターアカウント")` // Add: Update Operator Account [-> Japanese label] |

**Block 7** — [EXEC] `(Add item name labels 14–15: Deletion audit) (L949–L950)`

> Add the deletion timestamp and deleting operator fields.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("削除年月日時刻秒")` // Add: Deletion Date/Time (Year/Month/Day/Hours/Minutes/Seconds) [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("削除オペレーターアカウント")` // Add: Deletion Operator Account [-> Japanese label] |

**Block 8** — [EXEC] `(Add item name labels 16–17: Invalidation flags) (L951)`

> Add the invalidation flag and its name — lifecycle management fields.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koumokuList.add("無効フラグ")` // Add: Invalidation Flag [-> Japanese label] |
| 2 | EXEC | `koumokuList.add("無効フラグ名称")` // Add: Invalidation Flag Name [-> Japanese label] |

**Block 9** — [RETURN] `(Return list) (L951)`

> Return the fully populated list of 17 item name labels.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return koumokuList` // Return list of 17 item name strings |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| 宅内機器型式コード | Field | Indoor Equipment Type Code — unique identifier for customer-premises networking equipment models (e.g., ONT, router) |
| 機器提供種別コード | Field | Equipment Provision Type Code — classification of how equipment is provided to the customer (sale, lease, free-of-charge) |
| 機器提供種別コード名称 | Field | Equipment Provision Type Code Name — human-readable label for the equipment provision type |
| 販売種別コード | Field | Sales Type Code — classification of the sales channel or method (direct, partner, online) |
| 販売種別コード名称 | Field | Sales Type Code Name — human-readable label for the sales type |
| 料金コースコード | Field | Pricing Course Code — identifier for the pricing plan/course associated with the equipment |
| 料金コースコード名称 | Field | Pricing Course Code Name — human-readable label for the pricing course |
| 機器型式対象料金コース適用開始年月日 | Field | Equipment Type Target Pricing Course Application Start Date — the date from which the pricing course is applicable to this equipment type |
| 機器型式対象料金コース適用終了年月日 | Field | Equipment Type Target Pricing Course Application End Date — the date until which the pricing course is applicable to this equipment type |
| 登録年月日時刻秒 | Field | Registration Date/Time (Year/Month/Day/Hours/Minutes/Seconds) — audit timestamp for when the record was created |
| 登録オペレーターアカウント | Field | Registration Operator Account — the operator ID of the user who created the record |
| 更新年月日時刻秒 | Field | Update Date/Time (Year/Month/Day/Hours/Minutes/Seconds) — audit timestamp for when the record was last modified |
| 更新オペレーターアカウント | Field | Update Operator Account — the operator ID of the user who last updated the record |
| 削除年月日時刻秒 | Field | Deletion Date/Time (Year/Month/Day/Hours/Minutes/Seconds) — audit timestamp for when the record was soft-deleted |
| 削除オペレーターアカウント | Field | Deletion Operator Account — the operator ID of the user who deleted the record |
| 無効フラグ | Field | Invalidation Flag — soft-delete or deactivation indicator for the record |
| 無効フラグ名称 | Field | Invalidation Flag Name — human-readable label describing the invalidation status |
| DBean | Acronym | Data Bean — a web-layer presentation data transfer object holding fields for a single screen's display/export data |
| FUW07101SF | Module | Equipment Type Provision Pricing Plan screen module — manages equipment type selection filtered by pricing plan |
| 機器提供料金プラン別機器型式候補リスト | Japanese term | Equipment Provision Pricing Plan Equipment Type Candidate List — the screen/item that this method provides labels for |
| listKoumokuIds | Japanese-derived method name | "List of field names" — returns the column/field labels for the data type bean |
