# Business Logic — KKW01030SF03DBean.listKoumokuIds() [27 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15101SF.KKW01030SF03DBean` |
| Layer | View / Data Bean (Web Client UI data type definition) |
| Module | `KKA15101SF` (Package: `eo.web.webview.KKA15101SF`) |

## 1. Role

### KKW01030SF03DBean.listKoumokuIds()

This method provides the column headers (display labels) for the **"Selected Campaign List"** (選択キャンペーン一覧) data grid rendered on the campaign management screen. It is a static factory method that returns a pre-defined, ordered `ArrayList<String>` of 23 Japanese strings — each string representing a column header label that appears in a data-type bean table view. The method implements the **data-type bean metadata provider** pattern common in the X33/Futurity web framework: subclasses or companion beans expose item name lists so the framework can dynamically generate table columns, form fields, and list views.

This method plays the role of a **shared UI metadata utility** within the `KKA15101SF` module. It is called by the parent bean `KKW01030SFBean.listKoumokuIds(String key)` when the dispatch key equals `"選択キャンペーン一覧"` (Selected Campaign List). The returned list is consumed by the framework to build the data grid columns for the selected campaign listing screen, which displays contract campaign details including item numbers, campaign metadata, status, billing flags, and penalty information.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds() - Static Entry Point"])
    CREATE_LIST["Create ArrayList<String> koumokuList"]

    ADD0["Add: 番号/件数 (Item No./Document Count)"]
    ADD1["Add: 選択 (Selection)"]
    ADD2["Add: 番号 (Item No.)"]
    ADD3["Add: 契約種別 (Contract Type)"]
    ADD4["Add: 更新年月日时分秒更新前 (Pre-Update DateTime)"]
    ADD5["Add: キャンペーンコード (Campaign Code)"]
    ADD6["Add: キャンペーン名 (Campaign Name)"]
    ADD7["Add: ステータス (Status)"]
    ADD8["Add: ステータス名称 (Status Name)"]
    ADD9["Add: タイプコード (Type Code)"]
    ADD10["Add: タイプコード名称 (Type Code Name)"]
    ADD11["Add: 即時適用フラグ (Immediate Apply Flag)"]
    ADD12["Add: 即時適用フラグ名称 (Immediate Apply Flag Name)"]
    ADD13["Add: 申請年月日 (Application Date)"]
    ADD14["Add: 開始年月日 (Start Date)"]
    ADD15["Add: 終了年月日 (End Date)"]
    ADD16["Add: 割引サービスコード (Discount Service Code)"]
    ADD17["Add: 課金要否フラグ (Billing Flag)"]
    ADD18["Add: 課金要否フラグ名称 (Billing Flag Name)"]
    ADD19["Add: 更新後終了年月日 (Post-Update End Date)"]
    ADD20["Add: 違約金名 (Penalty Name)"]
    ADD21["Add: 違約金コード (Penalty Code)"]
    ADD22["Add: 前月解約 (Previous Month Cancellation)"]

    RETURN["Return koumokuList (ArrayList<String>)"]
    END_NODE(["Return to Caller"])

    START --> CREATE_LIST
    CREATE_LIST --> ADD0
    ADD0 --> 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 --> RETURN
    RETURN --> END_NODE
```

The method follows a **linear sequence pattern** with no conditional branches, loops, or external calls. It:

1. Creates a new `ArrayList<String>` to hold column name strings.
2. Sequentially appends 23 Japanese column header labels via `add()` calls.
3. Returns the fully populated list to the caller.

Each `add()` call corresponds to one column in the "Selected Campaign List" data grid. The order of items determines the left-to-right column order displayed on the screen.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no parameters. It is a stateless static factory that always returns the same ordered list of column labels. |

No instance fields or external state are read by this method.

## 4. CRUD Operations / Called Services

This method does not invoke any service components (SC), call-back services (CBS), or perform any database or entity operations. It is a pure UI metadata provider.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| (none) | — | — | — | This method performs no data access. It is a static factory returning column header labels. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0240 | `KKW01030SFBean.listKoumokuIds(key)` -> `KKW01030SF03DBean.listKoumokuIds()` | — (metadata only, no CRUD) |

**Caller Details:**
- `KKW01030SFBean.java` (line ~1771): The parent bean's `listKoumokuIds(String key)` method dispatches by the `key` parameter. When `key.equals("選択キャンペーン一覧")` (Selected Campaign List), it delegates to `KKW01030SF03DBean.listKoumokuIds()`.
- `KKW01030SFBean.java` (line ~1902): The `addListDataInstance(String key)` method also references `KKW01030SF03DBean` when initializing the `select_campaign_icrn_list` data type bean list. It creates new instances of `KKW01030SF03DBean` for each row in the selected campaign grid.

## 6. Per-Branch Detail Blocks

**Block 1** — [ALWAYS-EXECUTED SEQUENCE] (L1430)

> Create the result list and populate all column header labels in order.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>()` // Initialize result container |
| 2 | SET | `koumokuList.add("番号／件数")` // Column 1: Item number / document count [Japanese: 番号／件数] |
| 3 | SET | `koumokuList.add("選択")` // Column 2: Selection checkbox [Japanese: 選択] |
| 4 | SET | `koumokuList.add("番号")` // Column 3: Item number [Japanese: 番号] |
| 5 | SET | `koumokuList.add("契約種別")` // Column 4: Contract type [Japanese: 契約種別] |
| 6 | SET | `koumokuList.add("更新年月日时分秒更新前")` // Column 5: Pre-update date/time [Japanese: 更新年月日时分秒更新前] |
| 7 | SET | `koumokuList.add("キャンペーンコード")` // Column 6: Campaign code [Japanese: キャンペーンコード] |
| 8 | SET | `koumokuList.add("キャンペーン名")` // Column 7: Campaign name [Japanese: キャンペーン名] |
| 9 | SET | `koumokuList.add("ステータス")` // Column 8: Status [Japanese: ステータス] |
| 10 | SET | `koumokuList.add("ステータス名称")` // Column 9: Status name [Japanese: ステータス名称] |
| 11 | SET | `koumokuList.add("タイプコード")` // Column 10: Type code [Japanese: タイプコード] |
| 12 | SET | `koumokuList.add("タイプコード名称")` // Column 11: Type code name [Japanese: タイプコード名称] |
| 13 | SET | `koumokuList.add("即時適用フラグ")` // Column 12: Immediate apply flag [Japanese: 即時適用フラグ] |
| 14 | SET | `koumokuList.add("即時適用フラグ名称")` // Column 13: Immediate apply flag name [Japanese: 即時適用フラグ名称] |
| 15 | SET | `koumokuList.add("申請年月日")` // Column 14: Application date [Japanese: 申請年月日] |
| 16 | SET | `koumokuList.add("開始年月日")` // Column 15: Start date [Japanese: 開始年月日] |
| 17 | SET | `koumokuList.add("終了年月日")` // Column 16: End date [Japanese: 終了年月日] |
| 18 | SET | `koumokuList.add("割引サービスコード")` // Column 17: Discount service code [Japanese: 割引サービスコード] |
| 19 | SET | `koumokuList.add("課金要否フラグ")` // Column 18: Billing necessity flag [Japanese: 課金要否フラグ] |
| 20 | SET | `koumokuList.add("課金要否フラグ名称")` // Column 19: Billing necessity flag name [Japanese: 課金要否フラグ名称] |
| 21 | SET | `koumokuList.add("更新後終了年月日")` // Column 20: Post-update end date [Japanese: 更新後終了年月日] |
| 22 | SET | `koumokuList.add("違約金名")` // Column 21: Penalty name [Japanese: 違約金名] |
| 23 | SET | `koumokuList.add("違約金コード")` // Column 22: Penalty code [Japanese: 違約金コード] |
| 24 | SET | `koumokuList.add("前月解約")` // Column 23: Previous month cancellation [Japanese: 前月解約] |

**Block 2** — [RETURN] (L1454)

> Return the fully populated list.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return koumokuList` // Returns the 23-item column header list |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| 番号／件数 | Field | Item number / document count — the row index and total document count in the displayed list |
| 選択 | Field | Selection — the checkbox column allowing users to select individual rows for batch operations |
| 番号 | Field | Item number — the unique sequence number for each contract item/line |
| 契約種別 | Field | Contract type — the classification of the service contract (e.g., new, renewal, modification) |
| 更新年月日时分秒更新前 | Field | Pre-update date/time — the timestamp of the record before the current update cycle |
| キャンペーンコード | Field | Campaign code — the unique identifier for a discount/promotional campaign |
| キャンペーン名 | Field | Campaign name — the human-readable name of the promotional campaign |
| ステータス | Field | Status — the current state indicator of the campaign (e.g., active, inactive, expired) |
| ステータス名称 | Field | Status name — the display label for the status code |
| タイプコード | Field | Type code — a code identifying the service type associated with the campaign |
| タイプコード名称 | Field | Type code name — the human-readable name corresponding to the type code |
| 即時適用フラグ | Field | Immediate apply flag — a boolean flag indicating whether campaign changes take effect immediately |
| 即時適用フラグ名称 | Field | Immediate apply flag name — the display label for the immediate apply flag value |
| 申請年月日 | Field | Application date — the date the campaign modification request was submitted |
| 開始年月日 | Field | Start date — the effective beginning date of the campaign |
| 終了年月日 | Field | End date — the effective expiration date of the campaign |
| 割引サービスコード | Field | Discount service code — the code identifying the discount service type (e.g., standard work-hour split discount) |
| 課金要否フラグ | Field | Billing necessity flag — a boolean flag indicating whether billing is applicable to this item |
| 課金要否フラグ名称 | Field | Billing necessity flag name — the display label for the billing flag value |
| 更新後終了年月日 | Field | Post-update end date — the revised end date after a modification is applied |
| 違約金名 | Field | Penalty name — the display label for the contract cancellation penalty |
| 違約金コード | Field | Penalty code — the code representing the cancellation penalty amount/rate |
| 前月解約 | Field | Previous month cancellation — a flag indicating whether the contract was cancelled in the previous month |
| X33 Framework | Technical | Fujitsu's web client framework providing data type beans, list views, and UI metadata management |
| Data Type Bean | Technical | A specialized bean class (`X33VDataTypeBeanInterface`) that defines column metadata, data types, and labels for UI list/grid components |
| KKW01030SF | Module | Campaign management screen module — handles campaign listing, registration, modification, and cancellation |
| SELECT_CAMPAIGN_ICRN | Constant | The item key `"選択キャンペーン一覧"` (Selected Campaign List) used to dispatch to this bean's metadata in the parent bean |
| KKW01030SF03DBean | Class | Data type bean class for the "Selected Campaign List" — defines 23 column metadata fields (update flags, values, enabled states, etc.) |
