# Business Logic — KKW00127SFLogic.editPrgTkjk() [132 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00127SF.KKW00127SFLogic` |
| Layer | Logic (Service/Business Logic within the web tier) |
| Module | `KKW00127SF` (Package: `eo.web.webview.KKW00127SF`) |

## 1. Role

### KKW00127SFLogic.editPrgTkjk()

This method generates a change-log summary for the "Progress Notes" field (進捗特記事項) during the Application Information Update screen in K-Opticom's customer contract management system. It compares pre-change (変更前) and post-change (変更後) values of service contract fields and assembles a human-readable diff string that describes what was modified and how.

The method routes its processing based on the `ido_div` (異動区分 — migration type) field, which determines which subset of fields should be tracked:

- **ido_div = "00034" (申請情報修正 — Application Information Correction):** Tracks changes to 10 fields including reception number, application number, payment method, service handover status, cancellation document delivery, handling codes (1-1, 1-2, 2-1, 2-2), and intermediary identification number.
- **ido_div = "00040" (バンドル情報変更 — Bundle Information Change):** Tracks changes to service commission type, service commission amount (with special bracket formatting for amount-type commissions), and standard engineering fee. Only the commission tracking applies when the service flag is 01 or 03 (eo Hikari network/home types).
- **Any other value:** The method does nothing (empty registration), as registration content correction changes are not tracked in progress notes.

The method implements a **builder pattern** — it accumulates diff strings into a `StringBuilder` (wkPrgTkjk1) and delegates per-field comparison to a private helper `editPrgTkjk1()`. It also uses **delegation** for pulldown display name resolution via `getPulldownNameNoIndex()` and amount formatting via `setChgAmnt()`.

Its role in the larger system is as a post-update audit trail generator. It is called from `actionUpd()` after the application information has been persisted, and its output (PRG_TKJK_1) is stored into the service form bean for subsequent screen display or database persistence. The result is then truncated to a maximum of 128 characters to fit field length constraints.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editPrgTkjk bean"])

    START --> INIT["Initialize: wkPrgTkjk1 StringBuilder"]

    INIT --> CHECK_IDO["Check ido_div value"]

    CHECK_IDO --> BR_34["ido_div = 00034 Application Info Correction"]
    CHECK_IDO --> BR_40["ido_div = 00040 Bundle Information Change"]
    CHECK_IDO --> BR_ELSE["Other Registration Content Correction"]

    BR_34 --> C1["Compare 受付番号 pre vs post"]
    C1 --> A1["editPrgTkjk1 受付番号"]
    BR_34 --> C2["Compare 申込番号 pre vs post"]
    C2 --> A2["editPrgTkjk1 申込番号"]
    BR_34 --> C3["Compare 支払い方法 pre vs post"]
    C3 --> A3["editPrgTkjk1 支払い方法"]
    BR_34 --> C4["Compare 引継 pre vs post"]
    C4 --> A4["editPrgTkjk1 引継"]
    BR_34 --> C5["Compare 解約書類の送付 pre vs post"]
    C5 --> A5["editPrgTkjk1 解約書類の送付"]
    BR_34 --> C6["Compare 取扱コード1-1 pre vs post"]
    C6 --> A6["editPrgTkjk1 取扱コード1-1"]
    BR_34 --> C7["Compare 取扱コード1-2 pre vs post"]
    C7 --> A7["editPrgTkjk1 取扱コード1-2"]
    BR_34 --> C8["Compare 取扱コード2-1 pre vs post"]
    C8 --> A8["editPrgTkjk1 取扱コード2-1"]
    BR_34 --> C9["Compare 取扱コード2-2 pre vs post"]
    C9 --> A9["editPrgTkjk1 取扱コード2-2"]
    BR_34 --> C10["Compare 紹介者識別番号 pre vs post"]
    C10 --> A10["editPrgTkjk1 紹介者識別番号"]

    A1 --> CON1["Branch 00034 complete"]
    A2 --> CON1
    A3 --> CON1
    A4 --> CON1
    A5 --> CON1
    A6 --> CON1
    A7 --> CON1
    A8 --> CON1
    A9 --> CON1
    A10 --> CON1

    BR_40 --> JIMU["Compare 事務手数料 cd and amount"]
    JIMU --> SVC_FLG["svc_cd is 01 or 03?"]
    SVC_FLG --> AMNT_FMT["Format amounts with () if cd is 04"]
    AMNT_FMT --> APPEND_JIMU["Append 事務手数料 diff string"]
    APPEND_JIMU --> Koji["Compare 標準工事費 pre vs post"]
    Koji --> APPEND_KOJI["Append 標準工事費 diff string"]
    APPEND_KOJI --> CON2["Branch 00040 complete"]

    BR_ELSE --> SKIP["Skip - no tracking"]
    SKIP --> CON3["All branches complete"]
    CON1 --> CON3
    CON2 --> CON3

    CON3 --> TO_STR["prgTkjk1 = toString()"]
    TO_STR --> CHECK_LEN["Length > 128?"]
    CHECK_LEN --> TRUNC["Substring to 128"]
    CHECK_LEN --> KEEP["Keep as-is"]
    TRUNC --> SET_P1["Set PRG_TKJK_1"]
    KEEP --> SET_P1
    SET_P1 --> SET_P2["Set PRG_TKJK_2 to empty"]
    SET_P2 --> END(["Return"])
```

**Branch Descriptions:**

| Branch | Condition | Business Meaning |
|--------|-----------|------------------|
| IF | `ido_div = "00034"` | Application Information Correction — 10 tracked fields, all compared with pre/post values |
| ELSE IF | `ido_div = "00040"` | Bundle Information Change — commission type, commission amount, and standard engineering fee tracked; commission only when `svc_cd` is "01" or "03" |
| ELSE | Other value | Registration Content Correction — no tracking performed, empty string stored |

**Constant Resolution:**
- `JKKCommonConst.IDO_DIV_VALUE_00034` = "00034" (Application Information Correction / 申請情報修正)
- `JKKCommonConst.IDO_DIV_VALUE_00040` = "00040" (Bundle Information Change / バンドル情報変更)
- `KKW00127SFConst.SVC_FLG_01` = "01" (eo Hikari Network/Home service flag / eo光ネットホームタイプ)
- `KKW00127SFConst.SVC_FLG_03` = "03" (eo Hikari TV (Building) service flag / eo光テレビ（戸建）)
- `MAX_LENGTH_PRG_TKJK_1` = 128 (Maximum characters for progress note 1 / 進捗特記事項1の最大文字数)
- `BLANK` = " " (Single space character / 半角スペース)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `bean` | `X31SDataBeanAccess` | The service form data bean carrying all pre-change and post-change values for the application information update screen. It contains fields such as pre-change application numbers, payment method codes, handling codes, intermediary codes, commission codes/amounts, and standard engineering fee codes, as well as pulldown list data for display name resolution. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `ido_div` | `String` | Migration type — determines which set of fields to track for progress note changes ("00034" for application info correction, "00040" for bundle change) |
| `svc_cd` | `String` | Service discrimination code — filters whether commission tracking applies ("01" or "03" for eo Hikari network/home or TV types) |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Utility: string substring operation (generic string manipulation) |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Utility: string substring operation (generic string manipulation) |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Utility: string substring operation (generic string manipulation) |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Utility: string substring operation (generic string manipulation) |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Calls `sendMessageString` in `OneStopDataBeanAccess` |
| U | `KKW00127SFLogic.editPrgTkjk1` | KKW00127SFLogic | - | Private helper — appends diff string to StringBuilder if values differ |
| R | `KKW00127SFLogic.getPulldownNameNoIndex` | KKW00127SFLogic | - | Resolves a pulldown code to its display name by searching the pulldown list |
| - | `KKW00127SFLogic.setChgAmnt` | KKW00127SFLogic | - | Formats a monetary amount as a comma-separated number string |
| R | `OneStopDataBeanAccess.sendMessageString` (GET) | OneStopDataBeanAccess | - | Reads pre-change and post-change values from the service form bean (field-level reads) |
| U | `OneStopDataBeanAccess.sendMessageString` (SET) | OneStopDataBeanAccess | - | Writes the final PRG_TKJK_1 diff string and empty PRG_TKJK_2 back to the service form bean |

**CRUD Classification Rationale:**

- **U (Update) — `editPrgTkjk1`:** Modifies the StringBuilder content by appending change-log text when pre and post values differ.
- **R (Read) — `getPulldownNameNoIndex`:** Queries the pulldown data bean array to find the display name corresponding to a code value.
- **R (Read) — `sendMessageString` with `X31CWebConst.DATABEAN_GET_VALUE`:** Retrieves field values (pre-change and post-change) from the data bean.
- **U (Update) — `sendMessageString` with `X31CWebConst.DATABEAN_SET_VALUE`:** Sets the resulting progress note text and clears PRG_TKJK_2 in the data bean.

## 5. Dependency Trace

### Pre-computed evidence from code analysis graph:

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `editPrgTkjk1` [U], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `getPulldownNameNoIndex` [R], `getPulldownNameNoIndex` [R], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `getPulldownNameNoIndex` [R], `getPulldownNameNoIndex` [R], `setChgAmnt` [-], `setChgAmnt` [-], `sendMessageString` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Logic:KKW00127SFLogic.actionUpd | `actionUpd(svcFormBean)` → `editPrgTkjk(svcFormBean)` | `editPrgTkjk1 [U]`, `sendMessageString [R/U]`, `getPulldownNameNoIndex [R]`, `setChgAmnt [-]` |

**Caller Detail:** The method is called from `actionUpd()` at line 415 of `KKW00127SFLogic.java`, after the application information update processing completes and before the pulldown-to-view conversion. The call chain is self-contained within the logic class — `actionUpd()` is the direct caller.

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(ido_div equals JKKCommonConst.IDO_DIV_VALUE_00034)` [IDO_DIV_VALUE_00034="00034" (Application Information Correction / 申請情報修正)] (L4053)

> If the migration type is "Application Information Correction", compare and record changes for 10 fields: reception number, application number, payment method, service handover, cancellation document delivery, 4 handling codes, and intermediary identification number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkPrgTkjk1 = new StringBuilder()` // Progress note accumulator (進捗特記事項1) |
| 2 | EXEC | `bkMskmshoNo = bean.sendMessageString(BK_MSKMSHO_NO, GET_VALUE)` // Read pre-change reception number (変更前申込書番号) |
| 3 | CALL | `editPrgTkjk1("受付番号", wkPrgTkjk1, bkMskmshoNo, bean.sendMessageString(MSKMSHO_NO_CHANGE, GET_VALUE), bkMskmshoNo)` // Compare pre vs post reception number (受付番号); post value same as pre |
| 4 | EXEC | `bkMskmshoDtlNo = bean.sendMessageString(BK_MSKMSHO_DTL_NO, GET_VALUE)` // Read pre-change application detail number (変更前申込詳細番号) |
| 5 | CALL | `editPrgTkjk1("申込番号", wkPrgTkjk1, bkMskmshoDtlNo, bean.sendMessageString(MSKMSHO_DTL_NO_CHANGE, GET_VALUE), bkMskmshoDtlNo)` // Compare pre vs post application detail number (申込番号); post value same as pre |
| 6 | EXEC | `bfPaywayHktgiCd = bean.sendMessageString(BF_PAYWAY_HKTGI_CD, GET_VALUE)` // Read pre-change payment method code (変更前支払方法) |
| 7 | CALL | `editPrgTkjk1("支払い方法", wkPrgTkjk1, bfPaywayHktgiCd, bean.sendMessageString(PAYWAY_HKTGI, GET_VALUE), getPulldownNameNoIndex(bean, PAYWAY_HKTGI_LIST, bfPaywayHktgiCd))` // Compare pre vs post payment method (支払い方法); post resolved via pulldown list |
| 8 | EXEC | `bfSvcNaiyoHktgiCd = bean.sendMessageString(BF_SVC_NAIYO_HKTGI_CD, GET_VALUE)` // Read pre-change service handover code (変更前引継) |
| 9 | CALL | `editPrgTkjk1("引継", wkPrgTkjk1, bfSvcNaiyoHktgiCd, bean.sendMessageString(SVC_NAIYO_HKTGI, GET_VALUE), getPulldownNameNoIndex(bean, SVC_NAIYO_HKTGI_LIST, bfSvcNaiyoHktgiCd))` // Compare pre vs post service handover (引継); post resolved via pulldown list |
| 10 | EXEC | `bfDslShoruiSohuCd = bean.sendMessageString(BF_DSL_SHORUI_SOHU_CD, GET_VALUE)` // Read pre-change cancellation document delivery code (変更前解約書類の送付) |
| 11 | CALL | `editPrgTkjk1("解約書類の送付", wkPrgTkjk1, bfDslShoruiSohuCd, bean.sendMessageString(DSL_SHORUI_SOHU, GET_VALUE), getPulldownNameNoIndex(bean, DSL_SHORUI_SOHU_LIST, bfDslShoruiSohuCd))` // Compare pre vs post cancellation document delivery (解約書類の送付); post resolved via pulldown list |
| 12 | EXEC | `bfToriatsuCd1 = bean.sendMessageString(BF_TORIATSU_CD_1, GET_VALUE)` // Read pre-change handling code 1-1 (変更前取扱コード1-1) |
| 13 | CALL | `editPrgTkjk1("取扱コード1-1", wkPrgTkjk1, bfToriatsuCd1, bean.sendMessageString(TORIATSU_CD_1, GET_VALUE), bfToriatsuCd1)` // Compare pre vs post handling code 1-1; post value same as pre |
| 14 | EXEC | `bfToriatsuCd2 = bean.sendMessageString(BF_TORIATSU_CD_2, GET_VALUE)` // Read pre-change handling code 1-2 (変更前取扱コード1-2) |
| 15 | CALL | `editPrgTkjk1("取扱コード1-2", wkPrgTkjk1, bfToriatsuCd2, bean.sendMessageString(TORIATSU_CD_2, GET_VALUE), bfToriatsuCd2)` // Compare pre vs post handling code 1-2; post value same as pre |
| 16 | EXEC | `bfToriatsuCd3 = bean.sendMessageString(BF_TORIATSU_CD_3, GET_VALUE)` // Read pre-change handling code 2-1 (変更前取扱コード2-1) |
| 17 | CALL | `editPrgTkjk1("取扱コード2-1", wkPrgTkjk1, bfToriatsuCd3, bean.sendMessageString(TORIATSU_CD_3, GET_VALUE), bfToriatsuCd3)` // Compare pre vs post handling code 2-1; post value same as pre |
| 18 | EXEC | `bfToriatsuCd4 = bean.sendMessageString(BF_TORIATSU_CD_4, GET_VALUE)` // Read pre-change handling code 2-2 (変更前取扱コード2-2) |
| 19 | CALL | `editPrgTkjk1("取扱コード2-2", wkPrgTkjk1, bfToriatsuCd4, bean.sendMessageString(TORIATSU_CD_4, GET_VALUE), bfToriatsuCd4)` // Compare pre vs post handling code 2-2; post value same as pre |
| 20 | EXEC | `bfIntrCd = bean.sendMessageString(BF_INTR_CD, GET_VALUE)` // Read pre-change intermediary identification code (変更前紹介者識別番号) |
| 21 | CALL | `editPrgTkjk1("紹介者識別番号", wkPrgTkjk1, bfIntrCd, bean.sendMessageString(INTR_CD, GET_VALUE), bfIntrCd)` // Compare pre vs post intermediary identification number; post value same as pre |

**Block 1.1** — Helper: `editPrgTkjk1(itemNm, prgTkjk1, bfVal, afVal, addVal)` (L4194)

> Appends a diff description to the StringBuilder if pre and post values differ.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bfVal != null && !bfVal.equals(afVal)` [Values differ] |
| 1.1 | IF | `prgTkjk1.length() > 0` [Non-empty — need separator] |
| 1.1.1 | SET | `prgTkjk1.append(BLANK)` // Append space separator (半角スペースを挿入) |
| 1.2 | EXEC | `prgTkjk1.append(itemNm)` // Append field name (項目名) |
| 1.3 | EXEC | `prgTkjk1.append("変更前")` // Append "(Before)" label |
| 1.4 | EXEC | `prgTkjk1.append(addVal)` // Append display value |

**Block 2** — ELSE IF `(ido_div equals JKKCommonConst.IDO_DIV_VALUE_00040)` [IDO_DIV_VALUE_00040="00040" (Bundle Information Change / バンドル情報変更)] (L4103)

> If the migration type is "Bundle Information Change", track changes to service commission type, service commission amount, and standard engineering fee. Commission changes are only recorded when the service flag is for eo Hikari network/home (01) or eo Hikari TV building (03).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bfJimuCommisionCd = bean.sendMessageString(BF_JIMU_COMMISION_CD, GET_VALUE)` // Read pre-change service commission type (変更前事務手数料) |
| 2 | EXEC | `afJimuCommisionCd = bean.sendMessageString(JIMU_COMMISION_CD, GET_VALUE)` // Read post-change service commission type (変更後事務手数料) |
| 3 | EXEC | `bfJimuCommisionAmnt = bean.sendMessageString(BF_JIMU_COMMISION_AMNT, GET_VALUE)` // Read pre-change service commission amount (変更前事務手数料金額) |
| 4 | EXEC | `afJimuCommisionAmnt = bean.sendMessageString(JIMU_COMMISION_AMNT, GET_VALUE)` // Read post-change service commission amount (変更後事務手数料金額) |

**Block 2.1** — IF `(Commission or Amount changed AND svc_cd is 01 or 03)` [ANK-1785 IT2-2013-0000849 (事務手数料変更 & サービス判定フラグ)] (L4112)

> If service commission type or amount has changed AND the service is eo Hikari network/home (01) or eo Hikari TV building (03), record the commission change details. When the commission type is "04" (指定額 — specified amount), the amount is formatted and wrapped in parentheses.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bfJimuCommisionCd != afJimuCommisionCd OR bfJimuCommisionAmnt != afJimuCommisionAmnt` [Commission or amount changed / 事務手数料が変更された] |
| 1.1 | IF | `SVC_FLG_01.equals(svc_cd) OR SVC_FLG_03.equals(svc_cd)` [svc_cd = "01" or "03" — eo Hikari types / eo光ネットホーム or eo光テレビ（戸建）] |
| 1.1.1 | SET | `prgTkjk1BfAmnt = ""` // Initialize before amount (変更前金額初期化) |
| 1.1.2 | SET | `prgTkjk1AfAmnt = ""` // Initialize after amount (変更後金額初期化) |

**Block 2.1.1** — Nested: Format amounts for specified type (ANK-1785 IT2-2013-0000848 / 指定額の金額変更) (L4123)

> When commission type is "04" (specified amount), wrap the formatted amount in parentheses.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bfJimuCommisionCd == "04"` [指定額 — specified amount type] |
| 1.1 | SET | `prgTkjk1BfAmnt = "(" + setChgAmnt(bfJimuCommisionAmnt) + ")"` // Format and wrap pre-change amount (金額を（）で囲む) |
| 2 | IF | `afJimuCommisionCd == "04"` [指定額 — specified amount type] |
| 2.1 | SET | `prgTkjk1AfAmnt = "(" + setChgAmnt(afJimuCommisionAmnt) + ")"` // Format and wrap post-change amount (金額を（）で囲む) |

**Block 2.1.2** — Append commission change string (L4141)

| # | Type | Code |
|---|------|------|
| 1 | IF | `wkPrgTkjk1.length() > 0` [Non-empty — need separator] |
| 1.1 | SET | `wkPrgTkjk1.append(BLANK)` // Append space separator |
| 2 | SET | `wkPrgTkjk1.append("事務手数料：")` // Append "Service Commission:" label |
| 3 | SET | `wkPrgTkjk1.append("（変更前）")` // Append "(Before)" |
| 4 | SET | `wkPrgTkjk1.append(getPulldownNameNoIndex(bean, JIMU_COMMISION_LIST, bfJimuCommisionCd))` // Resolve commission type display name |
| 5 | SET | `wkPrgTkjk1.append(prgTkjk1BfAmnt)` // Append formatted pre-change amount |
| 6 | SET | `wkPrgTkjk1.append("（変更後）")` // Append "(After)" |
| 7 | SET | `wkPrgTkjk1.append(getPulldownNameNoIndex(bean, JIMU_COMMISION_LIST, afJimuCommisionCd))` // Resolve commission type display name |
| 8 | SET | `wkPrgTkjk1.append(prgTkjk1AfAmnt)` // Append formatted post-change amount |

**Block 2.2** — Track standard engineering fee change (L4156)

> Compare pre and post standard engineering fee (標準工事費) codes and append a diff string if they differ.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `bfStdardKojiHiCd = bean.sendMessageString(BF_STDARD_KOJI_HI_CD, GET_VALUE)` // Read pre-change standard engineering fee code (変更前標準工事費) |
| 2 | EXEC | `afStdardKojiHiCd = bean.sendMessageString(STDARD_KOJI_HI_CD, GET_VALUE)` // Read post-change standard engineering fee code (変更後標準工事費) |
| 3 | IF | `bfStdardKojiHiCd != null && !bfStdardKojiHiCd.equals(afStdardKojiHiCd)` [Standard engineering fee changed / 標準工事費が変更された] |
| 3.1 | IF | `wkPrgTkjk1.length() > 0` [Non-empty — need separator] |
| 3.1.1 | SET | `wkPrgTkjk1.append(BLANK)` // Append space separator |
| 3.2 | SET | `wkPrgTkjk1.append("標準工事費：")` // Append "Standard Engineering Fee:" label |
| 3.3 | SET | `wkPrgTkjk1.append("（変更前）")` // Append "(Before)" |
| 3.4 | SET | `wkPrgTkjk1.append(getPulldownNameNoIndex(bean, STDARD_KOJI_HI_LSIT, bfStdardKojiHiCd))` // Resolve pre-change display name |
| 3.5 | SET | `wkPrgTkjk1.append("（変更後）")` // Append "(After)" |
| 3.6 | SET | `wkPrgTkjk1.append(getPulldownNameNoIndex(bean, STDARD_KOJI_HI_LSIT, afStdardKojiHiCd))` // Resolve post-change display name |

**Block 3** — ELSE (ido_div is neither 00034 nor 00040) [登録内容修正 — Registration Content Correction] (L4170)

> When the migration type does not match either tracked category, no progress note is generated. The method simply skips this section, leaving the StringBuilder empty for this branch.

> 上記以外(異動区分が「登録内容修正」)の場合は編集せず、空で登録する — For other cases (migration type is "Registration Content Correction"), do not edit, register as empty.

**Block 4** — Truncation and final assignment (L4173)

> Convert the StringBuilder to a string and truncate to 128 characters if exceeded. Then set the result to the PRG_TKJK_1 field and clear PRG_TKJK_2.

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgTkjk1 = wkPrgTkjk1.toString()` // Convert StringBuilder to String |
| 2 | IF | `MAX_LENGTH_PRG_TKJK_1 (128) < wkPrgTkjk1.length()` [Exceeds maximum / 最大文字数を超えている] |
| 2.1 | SET | `prgTkjk1 = wkPrgTkjk1.substring(0, MAX_LENGTH_PRG_TKJK_1)` // Truncate to 128 chars (切る — truncate) |
| 3 | EXEC | `bean.sendMessageString(PRG_TKJK_1, SET_VALUE, prgTkjk1)` // Set progress note 1 (進捗特記事項1) |
| 4 | EXEC | `bean.sendMessageString(PRG_TKJK_2, SET_VALUE, "")` // Set progress note 2 to empty (進捗特記事項2) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `prgTkjk1` | Field | Progress note 1 — the first free-text progress tracking field (進捗特記事項1) for recording changes to service contract data |
| `prgTkjk2` | Field | Progress note 2 — a secondary free-text field cleared to empty by this method (進捗特記事項2) |
| `ido_div` | Field | Migration type — classifies what kind of contract change is being performed (異動区分) |
| `svc_cd` | Field | Service discrimination code — identifies the type of telecom service being modified (サービス判別コード) |
| `BK_MSKMSHO_NO` | Constant | Pre-change application document number key — the bean key for the reception number before update (変更前申込書番号) |
| `MSKMSHO_NO_CHANGE` | Constant | Post-change application document number key — the bean key for the reception number after update (申込書番号変更) |
| `MSKMSHO_DTL_NO_CHANGE` | Constant | Post-change application detail number key — the bean key for the application detail number after update (申込詳細番号変更) |
| `BF_PAYWAY_HKTGI_CD` | Constant | Pre-change payment method code key (変更前支払方法) |
| `PAYWAY_HKTGI` | Constant | Post-change payment method code key (支払方法) |
| `PAYWAY_HKTGI_LIST` | Constant | Pulldown list key for payment method display names (支払方法リスト) |
| `BF_SVC_NAIYO_HKTGI_CD` | Constant | Pre-change service handover code key (変更前引継) |
| `SVC_NAIYO_HKTGI` | Constant | Post-change service handover code key (引継) |
| `SVC_NAIYO_HKTGI_LIST` | Constant | Pulldown list key for service handover display names (引継リスト) |
| `BF_DSL_SHORUI_SOHU_CD` | Constant | Pre-change cancellation document delivery code key (変更前解約書類の送付) |
| `DSL_SHORUI_SOHU` | Constant | Post-change cancellation document delivery code key (解約書類の送付) |
| `DSL_SHORUI_SOHU_LIST` | Constant | Pulldown list key for cancellation document delivery display names (解約書類の送付リスト) |
| `BF_TORIATSU_CD_1` through `BF_TORIATSU_CD_4` | Constants | Pre-change handling code keys for 4 handling code fields (変更前取扱コード1-1, 1-2, 2-1, 2-2) |
| `TORIATSU_CD_1` through `TORIATSU_CD_4` | Constants | Post-change handling code keys for the 4 handling code fields (取扱コード1-1, 1-2, 2-1, 2-2) |
| `BF_INTR_CD` | Constant | Pre-change intermediary identification number key (変更前紹介者識別番号) |
| `INTR_CD` | Constant | Post-change intermediary identification number key (紹介者識別番号) |
| `BF_JIMU_COMMISION_CD` | Constant | Pre-change service commission type key (変更前事務手数料) |
| `JIMU_COMMISION_CD` | Constant | Post-change service commission type key (事務手数料) |
| `JIMU_COMMISION_LIST` | Constant | Pulldown list key for service commission type display names (事務手数料リスト) |
| `BF_JIMU_COMMISION_AMNT` | Constant | Pre-change service commission amount key (変更前事務手数料金額) |
| `JIMU_COMMISION_AMNT` | Constant | Post-change service commission amount key (事務手数料金額) |
| `BF_STDARD_KOJI_HI_CD` | Constant | Pre-change standard engineering fee code key (変更前標準工事費) |
| `STDARD_KOJI_HI_CD` | Constant | Post-change standard engineering fee code key (標準工事費) |
| `STDARD_KOJI_HI_LSIT` | Constant | Pulldown list key for standard engineering fee display names (標準工事費リスト) |
| `PRG_TKJK_1` | Constant | Bean key for progress note 1 output (進捗特記事項1) |
| `PRG_TKJK_2` | Constant | Bean key for progress note 2 output (進捗特記事項2) |
| `BK_MSKMSHO_NO` | Constant | Bean key for pre-change application number (変更前申込書番号) |
| `SVC_FLG_01` | Constant | Service flag "01" — eo Hikari Network/Home service type (eo光ネットホームタイプ) |
| `SVC_FLG_03` | Constant | Service flag "03" — eo Hikari TV (Building) service type (eo光テレビ（戸建）) |
| `IDO_DIV_VALUE_00034` | Constant | Migration type "00034" — Application Information Correction (申請情報修正) |
| `IDO_DIV_VALUE_00040` | Constant | Migration type "00040" — Bundle Information Change (バンドル情報変更) |
| `MAX_LENGTH_PRG_TKJK_1` | Constant | Maximum character length for progress note 1 = 128 characters (進捗特記事項1の最大文字数) |
| `BLANK` | Constant | Single space character used as a separator (半角スペース) |
| 受付番号 | Field | Reception number — the acknowledgment/receipt number assigned to the application (受付番号) |
| 申込番号 | Field | Application number — the unique identifier for the application detail record (申込番号) |
| 支払い方法 | Field | Payment method — how the customer will pay (支払い方法) |
| 引継 | Field | Service handover — whether existing service is being transferred/handed over (引継) |
| 解約書類の送付 | Field | Cancellation document delivery — whether cancellation documents have been sent (解約書類の送付) |
| 取扱コード | Field | Handling code — operational classification codes for the service contract (取扱コード) |
| 紹介者識別番号 | Field | Intermediary identification number — ID of the referring channel/agent (紹介者識別番号) |
| 事務手数料 | Field | Service commission/fee — the type and amount of administrative fees (事務手数料) |
| 標準工事費 | Field | Standard engineering fee — the standard installation/construction cost (標準工事費) |
| 指定額 | Field | Specified amount — commission type "04" where a fixed/specified amount is set (指定額) |
| 進捗特記事項 | Field | Progress note — free-text field for tracking progress changes on service contracts (進捗特記事項) |
| 変更前 | Term | "Before change" — the original/previous value before the update operation (変更前) |
| 変更後 | Term | "After change" — the new value after the update operation (変更後) |
| 申請情報修正 | Term | Application Information Correction — migration type 00034, triggers tracking of 10 contract fields (申請情報修正) |
| バンドル情報変更 | Term | Bundle Information Change — migration type 00040, triggers tracking of commission and engineering fee fields (バンドル情報変更) |
| 登録内容修正 | Term | Registration Content Correction — any migration type other than 00034 or 00040, not tracked in progress notes (登録内容修正) |
| eo光 | Business term | eo Hikari — K-Opticom's fiber-optic broadband service brand (eo光) |
| eo光ネットホーム | Business term | eo Hikari Network Home — eo Hikari service for standalone homes (eo光ネットホーム) |
| eo光テレビ（戸建） | Business term | eo Hikari TV (Building) — TV service bundled with eo Hikari for standalone homes (eo光テレビ（戸建）) |
| eo光テレビ（集合住宅） | Business term | eo Hikari TV (Multi-dwelling) — TV service for apartment buildings (eo光テレビ（集合住宅）) |
| SOD | Acronym | Service Order Data — telecom order management entity |
| JKKCommonConst | Class | Shared common constants class (共通定数クラス) containing system-wide constant definitions |
| X31SDataBeanAccess | Type | Service form data bean access class — provides `sendMessageString` for reading/writing field values and `getDataBeanArray` for pulldown lists (サービスフォームBean) |
| X31CWebConst.DATABEAN_GET_VALUE | Constant | Flag to read a value from the data bean (データビーン値取得) |
| X31CWebConst.DATABEAN_SET_VALUE | Constant | Flag to write a value to the data bean (データビーン値設定) |
