# Business Logic — KKW01030SF02DBean.listKoumokuIds() [29 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15101SF.KKW01030SF02DBean` |
| Layer | Data Bean (View Data Model — webview layer, implements `X33VDataTypeBeanInterface` and `X33VListedBeanInterface`) |
| Module | `KKA15101SF` (Package: `eo.web.webview.KKA15101SF`) |

## 1. Role

### KKW01030SF02DBean.listKoumokuIds()

This method serves as the field metadata provider for the **campaign list data-type bean** in the K-Opticom web application. It returns a static, ordered `ArrayList<String>` containing 23 Japanese column labels that define the structure of the campaign (キャンペーン) list displayed on a web screen. These labels represent all the fields visible in the campaign list view, including identifiers, flags, descriptive names, timestamps, dates, and discount/penalty codes. The method implements the **registry/factory pattern** for the Futurity X33 web framework's data-type bean architecture — the parent bean (`KKW01030SFBean`) delegates to this method via its `listKoumokuIds(String key)` routing logic when the request key matches "キャンペーン一覧" (Campaign List) or "キャンペーン一覧（全件）" (Campaign List — All Items). It acts as a **shared utility** within the screen's data layer, called by the framework during list initialization to determine which columns to render and in what order. No conditional logic, database access, or dynamic computation is performed — the list is entirely static and hardcoded.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    CREATE["Create ArrayList<String> koumokuList"]
    ADD1["Add item 1: 番号／件数"]
    ADD2["Add item 2: 選択"]
    ADD3["Add item 3: 課金可否フラグ"]
    ADD4["Add item 4: 課金可否フラグ名称"]
    ADD5["Add item 5: 番号"]
    ADD6["Add item 6: 契約種別"]
    ADD7["Add item 7: 更新年月日時分秒更新前"]
    ADD8["Add item 8: キャンペーンコード"]
    ADD9["Add item 9: キャンペーン名"]
    ADD10["Add item 10: ステータス"]
    ADD11["Add item 11: ステータス名称"]
    ADD12["Add item 12: タイプコード"]
    ADD13["Add item 13: タイプコード名称"]
    ADD14["Add item 14: 即時適用フラグ"]
    ADD15["Add item 15: 即時適用フラグ名称"]
    ADD16["Add item 16: 申込年月日"]
    ADD17["Add item 17: 開始年月日"]
    ADD18["Add item 18: 終了年月日"]
    ADD19["Add item 19: 割引サービスコード"]
    ADD20["Add item 20: 違約金コード"]
    ADD21["Add item 21: 前月解約"]
    ADD22["Add item 22: 前月解約フラグ"]
    ADD23["Add item 23: 同一回線フラグ"]
    RETURN["Return koumokuList"]
    END(["Next"])

    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 --> ADD18
    ADD18 --> ADD19
    ADD19 --> ADD20
    ADD20 --> ADD21
    ADD21 --> ADD22
    ADD22 --> ADD23
    ADD23 --> RETURN
    RETURN --> END
```

The method contains **no branching** — it is a straight-line sequence of initialization, population, and return. The "同一回線フラグ" (Same Line Flag) item at position 23 was added via change ticket IT1-2018-0000125, which synchronized koptWebA with koptWebB.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a `static` method with no parameters. It returns a pre-defined list of column labels for the campaign list view. |

No instance fields or external state are read by this method — it is entirely self-contained.

## 4. CRUD Operations / Called Services

This method performs **no CRUD operations** and calls **no services** or database methods. It is a pure data-provider that constructs an in-memory list of display labels.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | - | - | - | No data access — static field metadata provider only |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKA15101SF | `KKW01030SFBean.listKoumokuIds(key)` -> `KKW01030SF02DBean.listKoumokuIds` | (none — static metadata only) |
| 2 | Screen:KKA15101SF | `KKW01030SFBean.addListDataInstance(key)` -> `KKW01030SF02DBean.listKoumokuIds` | (none — static metadata only) |
| 3 | Screen:KKA15101SF | `KKW01030SFBean.tableModelData(key, subkey)` -> `KKW01030SF02DBean.listKoumokuIds` | (none — static metadata only) |

**Details:**
- **Call #1**: The parent bean `KKW01030SFBean` invokes `listKoumokuIds(key)` when the request key is `"キャンペーン一覧"` (Campaign List) or `"キャンペーン一覧（全件）"` (Campaign List — All Items). This is the standard framework delegation pattern for data-type beans.
- **Call #2**: `addListDataInstance(key)` in the parent bean creates instances of the `KKW01030SF02DBean` data-type bean for the campaign list field, using the same routing logic.
- **Call #3**: `tableModelData(key, subkey)` resolves data type information for individual fields within the campaign list view.

## 6. Per-Branch Detail Blocks

This method contains **no control-flow branches** (no `if`, `else`, `switch`, `for`, `while`, or `try/catch`). It is a linear sequence of operations.

**Block 1** — [LINEAR SEQUENCE] (L1433)

> Initializes a mutable `ArrayList<String>` and populates it with 23 fixed campaign list column labels in display order.

| # | Type | Code |
|---|------|------|
| 1 | CREATE | `ArrayList<String> koumokuList = new ArrayList<String>()` |
| 2 | SET | `koumokuList.add("番号／件数")` — Item ID / Record Count |
| 3 | SET | `koumokuList.add("選択")` — Selection |
| 4 | SET | `koumokuList.add("課金可否フラグ")` — Billing Eligibility Flag |
| 5 | SET | `koumokuList.add("課金可否フラグ名称")` — Billing Eligibility Flag Name |
| 6 | SET | `koumokuList.add("番号")` — Number |
| 7 | SET | `koumokuList.add("契約種別")` — Contract Type |
| 8 | SET | `koumokuList.add("更新年月日時分秒更新前")` — Update Timestamp (Before Update) |
| 9 | SET | `koumokuList.add("キャンペーンコード")` — Campaign Code |
| 10 | SET | `koumokuList.add("キャンペーン名")` — Campaign Name |
| 11 | SET | `koumokuList.add("ステータス")` — Status |
| 12 | SET | `koumokuList.add("ステータス名称")` — Status Name |
| 13 | SET | `koumokuList.add("タイプコード")` — Type Code |
| 14 | SET | `koumokuList.add("タイプコード名称")` — Type Code Name |
| 15 | SET | `koumokuList.add("即時適用フラグ")` — Immediate Application Flag |
| 16 | SET | `koumokuList.add("即時適用フラグ名称")` — Immediate Application Flag Name |
| 17 | SET | `koumokuList.add("申込年月日")` — Application Date |
| 18 | SET | `koumokuList.add("開始年月日")` — Start Date |
| 19 | SET | `koumokuList.add("終了年月日")` — End Date |
| 20 | SET | `koumokuList.add("割引サービスコード")` — Discount Service Code |
| 21 | SET | `koumokuList.add("違約金コード")` — Penalty Code |
| 22 | SET | `koumokuList.add("前月解約")` — Previous Month Cancellation |
| 23 | SET | `koumokuList.add("前月解約フラグ")` — Previous Month Cancellation Flag |
| 24 | SET | `koumokuList.add("同一回線フラグ")` — Same Line Flag (`// IT1-2018-0000125 ADD`) |
| 25 | RETURN | `return koumokuList` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `番号／件数` (no_cnt / kensuu) | Field | Item ID / Record Count — internal record identifier and total item count for the campaign list entry |
| `選択` (sentaku) | Field | Selection — checkbox or selection indicator for the row |
| `課金可否フラグ` (kinno_kahi_flag) | Field | Billing Eligibility Flag — indicates whether the service is eligible for billing (chargeable) |
| `契約種別` (keiyaku_shubetsu) | Field | Contract Type — classification of the contract (e.g., new, renewal, change) |
| `更新年月日時分秒更新前` (koushin_nengetsunichijifunbyou_kousinmae) | Field | Update Timestamp (Before Update) — timestamp before the last modification was applied |
| `キャンペーンコード` (kyanpeen_code) | Field | Campaign Code — unique identifier for the promotional campaign |
| `キャンペーン名` (kyanpeen_mei) | Field | Campaign Name — human-readable name of the campaign |
| `ステータス` (suteetasu) | Field | Status — current processing or lifecycle status of the campaign entry |
| `タイプコード` (taipu_code) | Field | Type Code — classification code for the campaign/service type |
| `即時適用フラグ` (sokuteki tekyou_flag) | Field | Immediate Application Flag — indicates whether the campaign takes effect immediately upon approval |
| `申込年月日` (moushikomi_nengetsunichi) | Field | Application Date — the date the service/campaign was applied for |
| `開始年月日` (kaishi_nengetsunichi) | Field | Start Date — the effective start date of the service or campaign |
| `終了年月日` (shuuryou_nengetsunichi) | Field | End Date — the effective end date of the service or campaign |
| `割引サービスコード` (waribiki_saabisu_code) | Field | Discount Service Code — code identifying the discount service applicable to the contract |
| `違約金コード` (i'yakkin_code) | Field | Penalty Code — code for early termination / breach of contract penalty |
| `前月解約` (maesetsu_kaiyaku) | Field | Previous Month Cancellation — indicates whether cancellation occurred in the previous billing month |
| `前月解約フラグ` (maesetsu_kaiyaku_flag) | Field | Previous Month Cancellation Flag — boolean flag for previous month cancellation status |
| `同一回線フラグ` (doui_kaisen_flag) | Field | Same Line Flag — indicates whether the service/share is on the same telephone line (added in IT1-2018-0000125) |
| X33 | Acronym | Fujitsu Futurity X33 — the web application framework used for the K-Opticom system |
| Data-type Bean | Pattern | A bean implementing `X33VDataTypeBeanInterface` that defines column labels and data types for tabular list views |
| Campaign (キャンペーン) | Business term | A promotional service offer in the K-Opticom business — typically a discounted or bundled telecommunication service package |
