# Business Logic — JBSbatKKAdChgSodUpd.isTelRlsAdd() [82 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKAdChgSodUpd` |
| Layer | Service |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKAdChgSodUpd.isTelRlsAdd()

The `isTelRlsAdd` method is a business utility that identifies and flags special discount phone service contracts (Tel RLS = Telecom Release) associated with a given address change operation. This method implements a multi-phase routing/dispatch pattern: it queries three distinct address change detail record types (`"01"`, `"02"`, and `"10"` — each corresponding to service contract numbers, service contract detail numbers, and phone option discount service contract numbers respectively) and cross-references them to discover which discount phone service lines qualify for special handling (e.g., inheritance or cancellation). The core business purpose is to detect discount phone service contracts whose service numbers remain unchanged across an address change AND whose associated service details have been re-issued to a different detail number — a scenario indicative of service line inheritance. When such a contract is found, and the discount service contract status is "terminated" (`910`) or "canceled" (`920`), the method issues a business error log (`EKB2420GW`) to alert downstream processing. This method is called internally by the batch's `execute()` entry point as part of the address-change service order update workflow.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["isTelRlsAdd inAdchgNo, svcKeiNo"])
    SQ1["Select from KK_T_ADCHG_DTL2
where ADCHG_NO=inAdchgNo
AND SBT_CD='01'"]
    LOOP1{"Iterate adchgDtlInfo
from selectNext()"}
    READ1["oldSvcKeiNo=CHBF_SKBT_NO
newSvcKeiNo=CHAF_SKBT_NO"]
    COND1{"oldSvcKeiNo equals
newSvcKeiNo AND
oldSvcKeiNo equals svcKeiNo"}
    SQ2["Select from KK_T_SVKEIUW
where SVC_KEI_NO=svcKeiNo
AND OPE_DATE=opeDate"]
    LOOP2{"Iterate svcKeiUwInfo
from db_KK_T_SVKEIUW.selectNext()"}
    ADD1["svcKeiUtwkNoKeiZokuList.add
svcKeiUwInfo.SVC_KEI_UCWK_NO"]
    SQ3["Select from KK_T_ADCHG_DTL2
where ADCHG_NO=inAdchgNo
AND SBT_CD='02'"]
    LOOP3{"Iterate adchgDtlUtwkInfo
from selectNext()"}
    READ2["oldSvcKeiUtwkNo=CHBF_SKBT_NO
newSvcKeiUtwkNo=CHAF_SKBT_NO"]
    COND2{"svcKeiUtwkNoKeiZokuList
.contains(oldSvcKeiUtwkNo)
AND old!=new"}
    ADD2["svcKeiUtwkNoTelList.add
oldSvcKeiUtwkNo"]
    SQ4["Select from KK_T_ADCHG_DTL2
where ADCHG_NO=inAdchgNo
AND SBT_CD='10'"]
    LOOP4{"Iterate adchgOptionWrbkInfo
from selectNext()"}
    READ3["oldOptionNo=CHBF_SKBT_NO
newOptionNo=CHAF_SKBT_NO"]
    LOOP5{"Iterate svcKeiUtwkNoTel
from svcKeiUtwkNoTelList"}
    SQ5["Select from KK_T_WRISVC_TG_KEI
where SVC_KEI_NO=svcKeiUtwkNoTel
AND OPE_DATE=opeDate"]
    READ4["wribSvcKeiNo=WRIB_SVC_KEI_NO
wrbikStst=WRIB_SVC_KEI_STAT
wrbikCd=WRIB_SVC_CD"]
    COND3{"wribSvcKeiNo equals
oldOptionNo AND
oldOptionNo equals newOptionNo"}
    COND4{"wrbikCd in
{W00000007,W00000008,W00000023}
AND wrbikStst in
{910,920}"}
    ERRLOG["printBusinessErrorLog
EKB2420GW inAdchgNo,wribSvcKeiNo"]
    END_NODE(["Return"])

    START --> SQ1
    SQ1 --> LOOP1
    LOOP1 --> READ1
    READ1 --> COND1
    COND1 -->|Yes| SQ2
    COND1 -->|No| LOOP1
    SQ2 --> LOOP2
    LOOP2 --> ADD1
    ADD1 --> LOOP2
    SQ3 --> LOOP3
    LOOP3 --> READ2
    READ2 --> COND2
    COND2 -->|Yes| ADD2
    COND2 -->|No| LOOP3
    ADD2 --> LOOP3
    SQ4 --> LOOP4
    LOOP4 --> READ3
    READ3 --> LOOP5
    LOOP5 --> SQ5
    SQ5 --> READ4
    READ4 --> COND3
    COND3 -->|Yes| COND4
    COND3 -->|No| LOOP5
    COND4 -->|Yes| ERRLOG
    COND4 -->|No| LOOP5
    ERRLOG --> LOOP5
    LOOP5 --> END_NODE
```

**Phase 1 — Collect inherited service detail numbers:** The method queries address change detail records of type `"01"` (address change detail type code: **service contract number**) to find records where the old and new service contract numbers are identical AND match the input `svcKeiNo`. For each match, it queries the `KK_T_SVKEIUW` (Service Contract Work) table to collect all associated service detail work numbers (`SVC_KEI_UCWK_NO`) into the `svcKeiUtwkNoKeiZokuList`. This list represents the service detail numbers tied to the original service contract for inheritance.

**Phase 2 — Collect changed service detail numbers with re-issuance:** The method queries address change detail records of type `"02"` (address change detail type code: **service contract detail number**) to find records where the old detail number exists in the previously collected `svcKeiUtwkNoKeiZokuList` AND the old and new detail numbers differ (indicating re-issuance). Each such old detail number is added to `svcKeiUtwkNoTelList`.

**Phase 3 — Cross-reference discount phone options and issue alerts:** The method queries address change detail records of type `"10"` (address change detail type code: **phone option discount service contract number**) to obtain old and new option numbers. For each option record, it iterates through `svcKeiUtwkNoTelList`, querying the `KK_T_WRISVC_TG_KEI` (Writedown Service Target Service) table for each collected service detail number. If the discount service contract number matches the old option number AND the option numbers are identical (indicating inheritance), AND the discount service contract code is one of the recognized phone packs (W00000007 / W00000008 / W00000023 — Pack 3, Pack 7, or Ans Shin Denwa Pack 7) AND the status is `910` (terminated) or `920` (canceled), a business error log is printed to flag the condition.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `inAdchgNo` | `String` | Address change detail number — the unique identifier for the address change operation record being processed. This ID is used to query the `KK_T_ADCHG_DTL2` table across all three detail type phases to narrow results to a specific address change event. |
| 2 | `svcKeiNo` | `String` | Service contract number — the identifier of the telecom service contract under consideration. Used in Phase 1 to filter address change records and to query the `KK_T_SVKEIUW` table for associated service detail work numbers. |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `db_KK_T_ADCHG_DTL2` | `JBSbatCommonDBInterface` | Database cursor object for the `KK_T_ADCHG_DTL2` table (address change detail records). Populated via `executeKK_T_ADCHG_DTL_KK_SELECT_003` before iteration. |
| `db_KK_T_SVKEIUW` | `JBSbatCommonDBInterface` | Database cursor object for the `KK_T_SVKEIUW` table (service contract work / service detail records). Populated via `executeKK_T_SVC_KEI_UCWK_KK_SELECT_079`. |
| `db_KK_T_WRISVC_TG_KEI` | `JBSbatCommonDBInterface` | Database cursor object for the `KK_T_WRISVC_TG_KEI` table (writedown service target service — discount phone option records). Populated via `executeKK_T_WRISVC_TG_KEI_KK_SELECT_067`. |
| `opeDate` | `String` | Operation date — the date used as a filter parameter for service contract and discount phone option queries to ensure only records current as of the operation date are considered. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `executeKK_T_ADCHG_DTL_KK_SELECT_003` | — | `KK_T_ADCHG_DTL2` | Select address change detail records filtered by `inAdchgNo` and `ADCHG_DTL_SBT_CD`. Called 3 times with type codes `"01"`, `"02"`, and `"10"`. |
| R | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_079` | — | `KK_T_SVKEIUW` | Select service contract work (service detail work numbers) for a given `svcKeiNo` and `opeDate`. |
| R | `executeKK_T_WRISVC_TG_KEI_KK_SELECT_067` | — | `KK_T_WRISVC_TG_KEI` | Select discount phone option target service records for a given `svcKeiUtwkNoTel` and `opeDate`. |
| R | `JBSbatCommonDBInterface.getString` | — | — | Read a string value from a database interface record by column name. |
| - | `JBSbatKKAdChgSodUpd.nullToBlank` | — | — | Utility: converts null to blank string to prevent NullPointerExceptions. |
| - | `commonItem.getLogPrint().printBusinessErrorLog` | — | — | Logs a business error message (`EKB2420GW`) with `inAdchgNo` and discount service contract number. |
| R | `JBSbatCommonDBInterface.selectNext` | — | — | Fetches the next row from an open database cursor. |
| C | `new ArrayList<String>()` | — | — | Creates a new ArrayList instance for collecting service detail numbers. |
| R | `List.contains` | — | — | Checks if a list contains a given element (used to match old detail numbers against inherited list). |
| C | `List.add` | — | — | Appends elements to the service detail number collection lists. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKAdChgSodUpd | `JBSbatKKAdChgSodUpd.execute()` → `isTelRlsAdd(inAdchgNo, svcKeiNo)` | `printBusinessErrorLog [-]`, `nullToBlank [-]`, `getString [R]`, `selectNext [R]` |

**Notes:** This method is a private utility called directly from the `execute()` method of the same class (`JBSbatKKAdChgSodUpd`). It has no screen (KKSV*) entry points and no CBS intermediary layers. The call originates from the batch processing entry point, indicating this is a batch-only internal utility.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Variable Declarations (L3231)

> Initialize two ArrayLists that will serve as intermediate collections across processing phases.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiUtwkNoKeiZokuList = new ArrayList<String>()` // List for inherited service contract detail numbers |
| 2 | SET | `svcKeiUtwkNoTelList = new ArrayList<String>()` // List for phone change service contract detail numbers |

**Block 2** — [PHASE 1 QUERY] `executeKK_T_ADCHG_DTL_KK_SELECT_003` (L3238) [ADCHG_DTL_SBT_CD_SVC_KEI="01"]

> Query address change detail records of type "01" — address change detail type code: service contract number. The method retrieves records where the address change detail type code is `ADCHG_DTL_SBT_CD_SVC_KEI = "01"` (address change detail type code — service contract number).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_ADCHG_DTL_KK_SELECT_003(new String[]{inAdchgNo, ADCHG_DTL_SBT_CD_SVC_KEI})` // Query KK_T_ADCHG_DTL2 by ADCHG_NO and SBT_CD="01" [ADCHG_DTL_SBT_CD_SVC_KEI="01"] |
| 2 | SET | `adchgDtlInfo = null` // Initialize database cursor variable |

**Block 3** — [FOR LOOP] Iterate over `KK_T_ADCHG_DTL2` result set (L3240)

> Iterate through each address change detail record matching the "01" type code.

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `for (adchgDtlInfo = db_KK_T_ADCHG_DTL2.selectNext(); adchgDtlInfo != null; adchgDtlInfo = db_KK_T_ADCHG_DTL2.selectNext())` |

**Block 3.1** — [READ + SET] Extract old and new service contract numbers (L3242–3243)

| # | Type | Code |
|---|------|------|
| 1 | SET | `oldSvcKeiNo = nullToBlank(adchgDtlInfo.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO))` // Before-change service contract detail number |
| 2 | SET | `newSvcKeiNo = nullToBlank(adchgDtlInfo.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO))` // After-change service contract detail number |

**Block 3.2** — [IF] Check for identical service contract numbers matching input (L3246) [oldSvcKeiNo.equals(newSvcKeiNo) && oldSvcKeiNo.equals(svcKeiNo)]

> The service contract before and after change numbers are identical (indicating no change) AND the service contract number matches the input `svcKeiNo`. Japanese comment: 「サービス契約の変更前識別番号と変更後識別番号が同一（継続の場合）かつ電話の場合」 — "The service contract number before and after change are the same (in case of continuation) and it is a phone service."

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiUwInfo = null` // Initialize database cursor variable |
| 2 | CALL | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_079(new String[]{svcKeiNo, opeDate})` // Query KK_T_SVKEIUW by SVC_KEI_NO and OPE_DATE |

**Block 3.2.1** — [FOR LOOP] Iterate over service contract work results (L3248)

> Iterate through each service contract work record associated with the service contract number.

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `for (svcKeiUwInfo = db_KK_T_SVKEIUW.selectNext(); svcKeiUwInfo != null; svcKeiUwInfo = db_KK_T_SVKEIUW.selectNext())` |

**Block 3.2.1.1** — [READ + ADD] Collect service detail work numbers (L3250–3252)

> Get the service detail work number and add it to the inheritance collection list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiUtwkNo = svcKeiUwInfo.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO)` // Service contract detail work number |
| 2 | EXEC | `svcKeiUtwkNoKeiZokuList.add(svcKeiUtwkNo)` // Add to inherited service contract detail numbers list |

**Block 4** — [PHASE 2 QUERY] `executeKK_T_ADCHG_DTL_KK_SELECT_003` (L3259) [ADCHG_DTL_SBT_CD_UCWK="02"]

> Query address change detail records of type "02" — address change detail type code: service contract detail number. Japanese comment: 「住所変更明細番号と種類コード」02」に該当するレコード取得」 — "Fetch records matching address change detail number and type code '02'."

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_ADCHG_DTL_KK_SELECT_003(new String[]{inAdchgNo, ADCHG_DTL_SBT_CD_UCWK})` // Query KK_T_ADCHG_DTL2 by ADCHG_NO and SBT_CD="02" [ADCHG_DTL_SBT_CD_UCWK="02"] |
| 2 | SET | `adchgDtlUtwkInfo = null` // Initialize database cursor variable |

**Block 5** — [FOR LOOP] Iterate over KK_T_ADCHG_DTL2 result set (type "02") (L3261)

> Iterate through each address change detail record of type "02".

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `for (adchgDtlUtwkInfo = db_KK_T_ADCHG_DTL2.selectNext(); adchgDtlUtwkInfo != null; adchgDtlUtwkInfo = db_KK_T_ADCHG_DTL2.selectNext())` |

**Block 5.1** — [READ + SET] Extract old and new service contract detail numbers (L3263–3264)

| # | Type | Code |
|---|------|------|
| 1 | SET | `oldSvcKeiUtwkNo = nullToBlank(adchgDtlUtwkInfo.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO))` // Before-change service contract detail number |
| 2 | SET | `newSvcKeiUtwkNo = nullToBlank(adchgDtlUtwkInfo.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO))` // After-change service contract detail number |

**Block 5.2** — [IF] Check if old detail number is in inherited list AND numbers differ (L3267) [svcKeiUtwkNoKeiZokuList.contains(oldSvcKeiUtwkNo) && !oldSvcKeiUtwkNo.equals(newSvcKeiUtwkNo)]

> The old service contract detail number exists in the inheritance collection list AND the old and new detail numbers are not the same (indicating re-issuance). Japanese comment: 「サービス契約内細番号保持用リストに変更前のサービス契約内細番号が存在する。かつ変更前識別番号と変更後識別番号が同一ではない」 — "The old service contract detail number exists in the detail number preservation list, and the before/after change identifiers are not identical."

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcKeiUtwkNoTelList.add(oldSvcKeiUtwkNo)` // Add old detail number to phone-change list |

**Block 6** — [PHASE 3 QUERY] `executeKK_T_ADCHG_DTL_KK_SELECT_003` (L3274) [ADCHG_DTL_SBT_CD_TEL_WRIB="10"]

> Query address change detail records of type "10" — address change detail type code: phone option discount service contract number. Japanese comment: 「住所変更明細番号と種類コード」10」に該当するレコード取得」 — "Fetch records matching address change detail number and type code '10'."

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_ADCHG_DTL_KK_SELECT_003(new String[]{inAdchgNo, ADCHG_DTL_SBT_CD_TEL_WRIB})` // Query KK_T_ADCHG_DTL2 by ADCHG_NO and SBT_CD="10" [ADCHG_DTL_SBT_CD_TEL_WRIB="10"] |
| 2 | SET | `adchgOptionWrbkInfo = null` // Initialize database cursor variable |

**Block 7** — [FOR LOOP] Iterate over KK_T_ADCHG_DTL2 result set (type "10") (L3276)

> Iterate through each address change detail record of type "10" (phone option discount service contracts).

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `for (adchgOptionWrbkInfo = db_KK_T_ADCHG_DTL2.selectNext(); adchgOptionWrbkInfo != null; adchgOptionWrbkInfo = db_KK_T_ADCHG_DTL2.selectNext())` |

**Block 7.1** — [READ + SET] Extract old and new option numbers (L3278–3279)

| # | Type | Code |
|---|------|------|
| 1 | SET | `oldOptionNo = nullToBlank(adchgOptionWrbkInfo.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO))` // Before-change option number |
| 2 | SET | `newOptionNo = nullToBlank(adchgOptionWrbkInfo.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO))` // After-change option number |

**Block 7.2** — [FOR LOOP] Iterate over `svcKeiUtwkNoTelList` (L3281)

> For each collected service detail number (from the inheritance/re-issuance analysis in Phases 1 and 2).

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `for (String svcKeiUtwkNoTel : svcKeiUtwkNoTelList)` |

**Block 7.2.1** — [READ] Query discount phone option target service record (L3283–3285)

> Query the `KK_T_WRISVC_TG_KEI` table for the discount phone option service details.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_WRISVC_TG_KEI_KK_SELECT_067(new String[]{svcKeiUtwkNoTel, opeDate, opeDate, opeDate})` // Query KK_T_WRISVC_TG_KEI by SVC_KEI_NO and OPE_DATE |
| 2 | SET | `wrbikTgKei = db_KK_T_WRISVC_TG_KEI.selectNext()` // Get single discount phone option record |
| 3 | SET | `wribSvcKeiNo = nullToBlank(wrbikTgKei.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO))` // Discount service contract number |
| 4 | SET | `wrbikStst = nullToBlank(wrbikTgKei.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_STAT))` // Discount service status |
| 5 | SET | `wrbikCd = nullToBlank(wrbikTgKei.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_CD))` // Discount service contract code |

**Block 7.2.2** — [IF] Check discount service contract match with inheritance (L3288) [wribSvcKeiNo.equals(oldOptionNo) && oldOptionNo.equals(newOptionNo)]

> The discount service contract number matches the old option number AND the old and new option numbers are the same (indicating inheritance of the discount phone contract). Japanese comment: 「割引サービス契約番号と変更前識別番号が同一かつ変更前識別番号と変更後識別番号が同一（引継ぎの場合）」 — "Discount service contract number is same as before-change ID and before-change ID is same as after-change ID (in case of inheritance)."

| # | Type | Code |
|---|------|------|
| 1 | [COND] | Proceed to Block 7.2.2.1 |

**Block 7.2.2.1** — [IF] Check if discount phone pack and status match (L3291) [(WRBK_CD_3 OR WRBK_CD_7 OR WRBK_CD_ANSN) AND (WRBK_STAT_KIYK OR WRBK_STAT_CANCEL)] [WRBK_CD_3="W00000007", WRBK_CD_7="W00000008", WRBK_CD_ANSN="W00000023", WRBK_STAT_KIYK="910", WRBK_STAT_CANCEL="920"]

> The discount service contract code is one of the recognized phone packs (Pack 3, Pack 7, or Ans Shin Denwa Pack 7) AND the status is terminated or canceled. Japanese comment: 「割引サービスがパック3・パック7・あんしん電話パック　かつ　ステータスが解約済み・キャンセル済みの場合」 — "Discount service is Pack 3/Pack 7/Ans Shin Denwa Pack AND status is terminated/canceled."

| # | Type | Code |
|---|------|------|
| 1 | SET | `conditionCd = WRBK_CD_3.equals(wrbikCd) || WRBK_CD_7.equals(wrbikCd) || WRBK_CD_ANSN.equals(wrbikCd)` // Check if phone pack code is recognized [WRBK_CD_3="W00000007", WRBK_CD_7="W00000008", WRBK_CD_ANSN="W00000023"] |
| 2 | SET | `conditionStst = WRBK_STAT_KIYK.equals(wrbikStst) || WRBK_STAT_CANCEL.equals(wrbikStst)` // Check if status is terminated or canceled [WRBK_STAT_KIYK="910", WRBK_STAT_CANCEL="920"] |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB2420GW, new String[]{inAdchgNo, wribSvcKeiNo.toString()})` // Issue business error log [EKB2420GW] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `adchgNo` / `inAdchgNo` | Field | Address change detail number — the unique identifier for an address change event, used to query related change detail records. |
| `svcKeiNo` | Field | Service contract number — the unique identifier for a telecom service contract (line). |
| `svcKeiUtwkNo` | Field | Service contract detail work number — internal tracking ID for a service contract detail / line item. |
| `CHBF_SKBT_NO` | Field | Before-change service contract/booking number — the original value before the address change was applied. |
| `CHAF_SKBT_NO` | Field | After-change service contract/booking number — the new value after the address change was applied. |
| `opeDate` | Field | Operation date — the date on which the service contract or address change operation is effective, used as a filter for database queries. |
| `SBT_CD` | Field | Service type detail code — a classification code indicating the type of address change detail record (e.g., service contract number, service contract detail number, phone option discount). |
| ADCHG_DTL_SBT_CD_SVC_KEI | Constant | Address change detail type code = "01" — Service contract number. Queries records where the service contract number itself is being changed. |
| ADCHG_DTL_SBT_CD_UCWK | Constant | Address change detail type code = "02" — Service contract detail number. Queries records where the service contract detail (line item) number is being changed. |
| ADCHG_DTL_SBT_CD_TEL_WRIB | Constant | Address change detail type code = "10" — Phone option discount service contract number. Queries records for phone-related discount options (Tel RLS). |
| WRBK_CD_3 | Constant | Phone selection option pack: "W00000007" — eo Hikari Denwa Pack 3. A discount phone service pack offer. |
| WRBK_CD_7 | Constant | Phone selection option pack: "W00000008" — eo Hikari Denwa Pack 7. A discount phone service pack offer. |
| WRBK_CD_ANSN | Constant | Phone selection option pack: "W00000023" — Ans Shin Denwa Pack 7 (安心電話パック7). A discount phone service pack offer from Ans Shin Denwa. |
| WRBK_STAT_KIYK | Constant | Discount service status = "910" — Terminated (解約済み). The discount service has been formally terminated. |
| WRBK_STAT_CANCEL | Constant | Discount service status = "920" — Canceled (キャンセル済み). The discount service has been canceled. |
| `KK_T_ADCHG_DTL2` | Table | Address Change Detail table — stores records of address change operations including before/after service contract and detail numbers. |
| `KK_T_SVKEIUW` | Table | Service Contract Work (Service Contract Detail) table — stores service detail work numbers associated with service contracts. |
| `KK_T_WRISVC_TG_KEI` | Table | Writedown Service Target Service table — stores discount phone option target service records including contract codes and statuses. |
| `KK_T_WRIB_SVC_KEI` | Entity | Writedown Service Contract entity — the domain model for discount service contracts (WRIB = discount/writedown). |
| `KK_T_SVC_KEI_UCWK` | Entity | Service Contract Work entity — the domain model for service contract detail work records. |
| `KK_T_ADCHG_DTL` | Entity | Address Change Detail entity — the domain model for address change detail records (CHBF = before-change, CHAF = after-change). |
| EKB2420GW | Error Code | Business error message key — issued when a discount phone service contract qualifies for inheritance handling but has a terminated or canceled status, alerting downstream processing. |
| Tel RLS | Business term | Telecom Release — short for "telephone release", referring to the handling of phone service contracts during address change operations. |
| WRIB | Abbreviation | Writedown/Discount — refers to discounted or promotional service contracts (e.g., discount phone packs). |
| SVC_KEI_UCWK_NO | Field | Service contract detail work number — the unique identifier for a service contract detail record. |
| WRIB_SVC_KEI_NO | Field | Writedown (discount) service contract number — the identifier for a discount service contract line. |
| WRIB_SVC_CD | Field | Writedown service contract code — the code identifying which discount phone pack is associated with the contract. |
| WRIB_SVC_KEI_STAT | Field | Writedown service contract status — the current status of the discount service contract (e.g., 910=terminated, 920=canceled). |
